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 2018/09/22 14:51:04 UTC

[01/43] hbase-site git commit: Published site at 7ab77518a2569e2416a50020393aa386e7734501.

Repository: hbase-site
Updated Branches:
  refs/heads/asf-site a54d31a8f -> bbe517ae5


http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/testdevapidocs/src-html/org/apache/hadoop/hbase/util/LoadTestTool.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/util/LoadTestTool.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/util/LoadTestTool.html
index c598165..fe5e7d2 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/util/LoadTestTool.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/util/LoadTestTool.html
@@ -127,834 +127,852 @@
 <span class="sourceLineNo">119</span>  protected static final String OPT_VERBOSE = "verbose";<a name="line.119"></a>
 <span class="sourceLineNo">120</span><a name="line.120"></a>
 <span class="sourceLineNo">121</span>  public static final String OPT_BLOOM = "bloom";<a name="line.121"></a>
-<span class="sourceLineNo">122</span>  public static final String OPT_COMPRESSION = "compression";<a name="line.122"></a>
-<span class="sourceLineNo">123</span>  public static final String OPT_DEFERRED_LOG_FLUSH = "deferredlogflush";<a name="line.123"></a>
-<span class="sourceLineNo">124</span>  public static final String OPT_DEFERRED_LOG_FLUSH_USAGE = "Enable deferred log flush.";<a name="line.124"></a>
-<span class="sourceLineNo">125</span><a name="line.125"></a>
-<span class="sourceLineNo">126</span>  public static final String OPT_INMEMORY = "in_memory";<a name="line.126"></a>
-<span class="sourceLineNo">127</span>  public static final String OPT_USAGE_IN_MEMORY = "Tries to keep the HFiles of the CF " +<a name="line.127"></a>
-<span class="sourceLineNo">128</span>      "inmemory as far as possible.  Not guaranteed that reads are always served from inmemory";<a name="line.128"></a>
-<span class="sourceLineNo">129</span><a name="line.129"></a>
-<span class="sourceLineNo">130</span>  public static final String OPT_GENERATOR = "generator";<a name="line.130"></a>
-<span class="sourceLineNo">131</span>  public static final String OPT_GENERATOR_USAGE = "The class which generates load for the tool."<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      + " Any args for this class can be passed as colon separated after class name";<a name="line.132"></a>
-<span class="sourceLineNo">133</span><a name="line.133"></a>
-<span class="sourceLineNo">134</span>  public static final String OPT_WRITER = "writer";<a name="line.134"></a>
-<span class="sourceLineNo">135</span>  public static final String OPT_WRITER_USAGE = "The class for executing the write requests";<a name="line.135"></a>
-<span class="sourceLineNo">136</span><a name="line.136"></a>
-<span class="sourceLineNo">137</span>  public static final String OPT_UPDATER = "updater";<a name="line.137"></a>
-<span class="sourceLineNo">138</span>  public static final String OPT_UPDATER_USAGE = "The class for executing the update requests";<a name="line.138"></a>
-<span class="sourceLineNo">139</span><a name="line.139"></a>
-<span class="sourceLineNo">140</span>  public static final String OPT_READER = "reader";<a name="line.140"></a>
-<span class="sourceLineNo">141</span>  public static final String OPT_READER_USAGE = "The class for executing the read requests";<a name="line.141"></a>
-<span class="sourceLineNo">142</span><a name="line.142"></a>
-<span class="sourceLineNo">143</span>  protected static final String OPT_KEY_WINDOW = "key_window";<a name="line.143"></a>
-<span class="sourceLineNo">144</span>  protected static final String OPT_WRITE = "write";<a name="line.144"></a>
-<span class="sourceLineNo">145</span>  protected static final String OPT_MAX_READ_ERRORS = "max_read_errors";<a name="line.145"></a>
-<span class="sourceLineNo">146</span>  public static final String OPT_MULTIPUT = "multiput";<a name="line.146"></a>
-<span class="sourceLineNo">147</span>  public static final String OPT_MULTIGET = "multiget_batchsize";<a name="line.147"></a>
-<span class="sourceLineNo">148</span>  protected static final String OPT_NUM_KEYS = "num_keys";<a name="line.148"></a>
-<span class="sourceLineNo">149</span>  protected static final String OPT_READ = "read";<a name="line.149"></a>
-<span class="sourceLineNo">150</span>  protected static final String OPT_START_KEY = "start_key";<a name="line.150"></a>
-<span class="sourceLineNo">151</span>  public static final String OPT_TABLE_NAME = "tn";<a name="line.151"></a>
-<span class="sourceLineNo">152</span>  public static final String OPT_COLUMN_FAMILIES = "families";<a name="line.152"></a>
-<span class="sourceLineNo">153</span>  protected static final String OPT_ZK_QUORUM = "zk";<a name="line.153"></a>
-<span class="sourceLineNo">154</span>  protected static final String OPT_ZK_PARENT_NODE = "zk_root";<a name="line.154"></a>
-<span class="sourceLineNo">155</span>  protected static final String OPT_SKIP_INIT = "skip_init";<a name="line.155"></a>
-<span class="sourceLineNo">156</span>  protected static final String OPT_INIT_ONLY = "init_only";<a name="line.156"></a>
-<span class="sourceLineNo">157</span>  protected static final String NUM_TABLES = "num_tables";<a name="line.157"></a>
-<span class="sourceLineNo">158</span>  protected static final String OPT_BATCHUPDATE = "batchupdate";<a name="line.158"></a>
-<span class="sourceLineNo">159</span>  protected static final String OPT_UPDATE = "update";<a name="line.159"></a>
-<span class="sourceLineNo">160</span><a name="line.160"></a>
-<span class="sourceLineNo">161</span>  public static final String OPT_ENCRYPTION = "encryption";<a name="line.161"></a>
-<span class="sourceLineNo">162</span>  protected static final String OPT_ENCRYPTION_USAGE =<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    "Enables transparent encryption on the test table, one of " +<a name="line.163"></a>
-<span class="sourceLineNo">164</span>    Arrays.toString(Encryption.getSupportedCiphers());<a name="line.164"></a>
-<span class="sourceLineNo">165</span><a name="line.165"></a>
-<span class="sourceLineNo">166</span>  public static final String OPT_NUM_REGIONS_PER_SERVER = "num_regions_per_server";<a name="line.166"></a>
-<span class="sourceLineNo">167</span>  protected static final String OPT_NUM_REGIONS_PER_SERVER_USAGE<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    = "Desired number of regions per region server. Defaults to 5.";<a name="line.168"></a>
-<span class="sourceLineNo">169</span>  public static int DEFAULT_NUM_REGIONS_PER_SERVER = 5;<a name="line.169"></a>
-<span class="sourceLineNo">170</span><a name="line.170"></a>
-<span class="sourceLineNo">171</span>  public static final String OPT_REGION_REPLICATION = "region_replication";<a name="line.171"></a>
-<span class="sourceLineNo">172</span>  protected static final String OPT_REGION_REPLICATION_USAGE =<a name="line.172"></a>
-<span class="sourceLineNo">173</span>      "Desired number of replicas per region";<a name="line.173"></a>
-<span class="sourceLineNo">174</span><a name="line.174"></a>
-<span class="sourceLineNo">175</span>  public static final String OPT_REGION_REPLICA_ID = "region_replica_id";<a name="line.175"></a>
-<span class="sourceLineNo">176</span>  protected static final String OPT_REGION_REPLICA_ID_USAGE =<a name="line.176"></a>
-<span class="sourceLineNo">177</span>      "Region replica id to do the reads from";<a name="line.177"></a>
-<span class="sourceLineNo">178</span><a name="line.178"></a>
-<span class="sourceLineNo">179</span>  public static final String OPT_MOB_THRESHOLD = "mob_threshold";<a name="line.179"></a>
-<span class="sourceLineNo">180</span>  protected static final String OPT_MOB_THRESHOLD_USAGE =<a name="line.180"></a>
-<span class="sourceLineNo">181</span>      "Desired cell size to exceed in bytes that will use the MOB write path";<a name="line.181"></a>
-<span class="sourceLineNo">182</span><a name="line.182"></a>
-<span class="sourceLineNo">183</span>  protected static final long DEFAULT_START_KEY = 0;<a name="line.183"></a>
-<span class="sourceLineNo">184</span><a name="line.184"></a>
-<span class="sourceLineNo">185</span>  /** This will be removed as we factor out the dependency on command line */<a name="line.185"></a>
-<span class="sourceLineNo">186</span>  protected CommandLine cmd;<a name="line.186"></a>
-<span class="sourceLineNo">187</span><a name="line.187"></a>
-<span class="sourceLineNo">188</span>  protected MultiThreadedWriter writerThreads = null;<a name="line.188"></a>
-<span class="sourceLineNo">189</span>  protected MultiThreadedReader readerThreads = null;<a name="line.189"></a>
-<span class="sourceLineNo">190</span>  protected MultiThreadedUpdater updaterThreads = null;<a name="line.190"></a>
-<span class="sourceLineNo">191</span><a name="line.191"></a>
-<span class="sourceLineNo">192</span>  protected long startKey, endKey;<a name="line.192"></a>
-<span class="sourceLineNo">193</span><a name="line.193"></a>
-<span class="sourceLineNo">194</span>  protected boolean isVerbose, isWrite, isRead, isUpdate;<a name="line.194"></a>
-<span class="sourceLineNo">195</span>  protected boolean deferredLogFlush;<a name="line.195"></a>
-<span class="sourceLineNo">196</span><a name="line.196"></a>
-<span class="sourceLineNo">197</span>  // Column family options<a name="line.197"></a>
-<span class="sourceLineNo">198</span>  protected DataBlockEncoding dataBlockEncodingAlgo;<a name="line.198"></a>
-<span class="sourceLineNo">199</span>  protected Compression.Algorithm compressAlgo;<a name="line.199"></a>
-<span class="sourceLineNo">200</span>  protected BloomType bloomType;<a name="line.200"></a>
-<span class="sourceLineNo">201</span>  private boolean inMemoryCF;<a name="line.201"></a>
-<span class="sourceLineNo">202</span><a name="line.202"></a>
-<span class="sourceLineNo">203</span>  private User userOwner;<a name="line.203"></a>
-<span class="sourceLineNo">204</span>  // Writer options<a name="line.204"></a>
-<span class="sourceLineNo">205</span>  protected int numWriterThreads = DEFAULT_NUM_THREADS;<a name="line.205"></a>
-<span class="sourceLineNo">206</span>  protected int minColsPerKey, maxColsPerKey;<a name="line.206"></a>
-<span class="sourceLineNo">207</span>  protected int minColDataSize = DEFAULT_DATA_SIZE, maxColDataSize = DEFAULT_DATA_SIZE;<a name="line.207"></a>
-<span class="sourceLineNo">208</span>  protected boolean isMultiPut;<a name="line.208"></a>
-<span class="sourceLineNo">209</span><a name="line.209"></a>
-<span class="sourceLineNo">210</span>  // Updater options<a name="line.210"></a>
-<span class="sourceLineNo">211</span>  protected int numUpdaterThreads = DEFAULT_NUM_THREADS;<a name="line.211"></a>
-<span class="sourceLineNo">212</span>  protected int updatePercent;<a name="line.212"></a>
-<span class="sourceLineNo">213</span>  protected boolean ignoreConflicts = false;<a name="line.213"></a>
-<span class="sourceLineNo">214</span>  protected boolean isBatchUpdate;<a name="line.214"></a>
-<span class="sourceLineNo">215</span><a name="line.215"></a>
-<span class="sourceLineNo">216</span>  // Reader options<a name="line.216"></a>
-<span class="sourceLineNo">217</span>  private int numReaderThreads = DEFAULT_NUM_THREADS;<a name="line.217"></a>
-<span class="sourceLineNo">218</span>  private int keyWindow = MultiThreadedReader.DEFAULT_KEY_WINDOW;<a name="line.218"></a>
-<span class="sourceLineNo">219</span>  private int multiGetBatchSize = MultiThreadedReader.DEFAULT_BATCH_SIZE;<a name="line.219"></a>
-<span class="sourceLineNo">220</span>  private int maxReadErrors = MultiThreadedReader.DEFAULT_MAX_ERRORS;<a name="line.220"></a>
-<span class="sourceLineNo">221</span>  private int verifyPercent;<a name="line.221"></a>
-<span class="sourceLineNo">222</span><a name="line.222"></a>
-<span class="sourceLineNo">223</span>  private int numTables = 1;<a name="line.223"></a>
-<span class="sourceLineNo">224</span><a name="line.224"></a>
-<span class="sourceLineNo">225</span>  private String superUser;<a name="line.225"></a>
-<span class="sourceLineNo">226</span><a name="line.226"></a>
-<span class="sourceLineNo">227</span>  private String userNames;<a name="line.227"></a>
-<span class="sourceLineNo">228</span>  //This file is used to read authentication information in secure clusters.<a name="line.228"></a>
-<span class="sourceLineNo">229</span>  private String authnFileName;<a name="line.229"></a>
-<span class="sourceLineNo">230</span><a name="line.230"></a>
-<span class="sourceLineNo">231</span>  private int numRegionsPerServer = DEFAULT_NUM_REGIONS_PER_SERVER;<a name="line.231"></a>
-<span class="sourceLineNo">232</span>  private int regionReplication = -1; // not set<a name="line.232"></a>
-<span class="sourceLineNo">233</span>  private int regionReplicaId = -1; // not set<a name="line.233"></a>
-<span class="sourceLineNo">234</span><a name="line.234"></a>
-<span class="sourceLineNo">235</span>  private int mobThreshold = -1; // not set<a name="line.235"></a>
-<span class="sourceLineNo">236</span><a name="line.236"></a>
-<span class="sourceLineNo">237</span>  // TODO: refactor LoadTestToolImpl somewhere to make the usage from tests less bad,<a name="line.237"></a>
-<span class="sourceLineNo">238</span>  //       console tool itself should only be used from console.<a name="line.238"></a>
-<span class="sourceLineNo">239</span>  protected boolean isSkipInit = false;<a name="line.239"></a>
-<span class="sourceLineNo">240</span>  protected boolean isInitOnly = false;<a name="line.240"></a>
-<span class="sourceLineNo">241</span><a name="line.241"></a>
-<span class="sourceLineNo">242</span>  protected Cipher cipher = null;<a name="line.242"></a>
-<span class="sourceLineNo">243</span><a name="line.243"></a>
-<span class="sourceLineNo">244</span>  protected String[] splitColonSeparated(String option,<a name="line.244"></a>
-<span class="sourceLineNo">245</span>      int minNumCols, int maxNumCols) {<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    String optVal = cmd.getOptionValue(option);<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    String[] cols = optVal.split(COLON);<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    if (cols.length &lt; minNumCols || cols.length &gt; maxNumCols) {<a name="line.248"></a>
-<span class="sourceLineNo">249</span>      throw new IllegalArgumentException("Expected at least "<a name="line.249"></a>
-<span class="sourceLineNo">250</span>          + minNumCols + " columns but no more than " + maxNumCols +<a name="line.250"></a>
-<span class="sourceLineNo">251</span>          " in the colon-separated value '" + optVal + "' of the " +<a name="line.251"></a>
-<span class="sourceLineNo">252</span>          "-" + option + " option");<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    }<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    return cols;<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>  protected int getNumThreads(String numThreadsStr) {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    return parseInt(numThreadsStr, 1, Short.MAX_VALUE);<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>  public byte[][] getColumnFamilies() {<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    return families;<a name="line.262"></a>
-<span class="sourceLineNo">263</span>  }<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">266</span>   * Apply column family options such as Bloom filters, compression, and data<a name="line.266"></a>
-<span class="sourceLineNo">267</span>   * block encoding.<a name="line.267"></a>
-<span class="sourceLineNo">268</span>   */<a name="line.268"></a>
-<span class="sourceLineNo">269</span>  protected void applyColumnFamilyOptions(TableName tableName,<a name="line.269"></a>
-<span class="sourceLineNo">270</span>      byte[][] columnFamilies) throws IOException {<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.271"></a>
-<span class="sourceLineNo">272</span>        Admin admin = conn.getAdmin()) {<a name="line.272"></a>
-<span class="sourceLineNo">273</span>      TableDescriptor tableDesc = admin.getDescriptor(tableName);<a name="line.273"></a>
-<span class="sourceLineNo">274</span>      LOG.info("Disabling table " + tableName);<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      admin.disableTable(tableName);<a name="line.275"></a>
-<span class="sourceLineNo">276</span>      for (byte[] cf : columnFamilies) {<a name="line.276"></a>
-<span class="sourceLineNo">277</span>        ColumnFamilyDescriptor columnDesc = tableDesc.getColumnFamily(cf);<a name="line.277"></a>
-<span class="sourceLineNo">278</span>        boolean isNewCf = columnDesc == null;<a name="line.278"></a>
-<span class="sourceLineNo">279</span>        ColumnFamilyDescriptorBuilder columnDescBuilder = isNewCf ?<a name="line.279"></a>
-<span class="sourceLineNo">280</span>            ColumnFamilyDescriptorBuilder.newBuilder(cf) :<a name="line.280"></a>
-<span class="sourceLineNo">281</span>            ColumnFamilyDescriptorBuilder.newBuilder(columnDesc);<a name="line.281"></a>
-<span class="sourceLineNo">282</span>        if (bloomType != null) {<a name="line.282"></a>
-<span class="sourceLineNo">283</span>          columnDescBuilder.setBloomFilterType(bloomType);<a name="line.283"></a>
-<span class="sourceLineNo">284</span>        }<a name="line.284"></a>
-<span class="sourceLineNo">285</span>        if (compressAlgo != null) {<a name="line.285"></a>
-<span class="sourceLineNo">286</span>          columnDescBuilder.setCompressionType(compressAlgo);<a name="line.286"></a>
-<span class="sourceLineNo">287</span>        }<a name="line.287"></a>
-<span class="sourceLineNo">288</span>        if (dataBlockEncodingAlgo != null) {<a name="line.288"></a>
-<span class="sourceLineNo">289</span>          columnDescBuilder.setDataBlockEncoding(dataBlockEncodingAlgo);<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        }<a name="line.290"></a>
-<span class="sourceLineNo">291</span>        if (inMemoryCF) {<a name="line.291"></a>
-<span class="sourceLineNo">292</span>          columnDescBuilder.setInMemory(inMemoryCF);<a name="line.292"></a>
-<span class="sourceLineNo">293</span>        }<a name="line.293"></a>
-<span class="sourceLineNo">294</span>        if (cipher != null) {<a name="line.294"></a>
-<span class="sourceLineNo">295</span>          byte[] keyBytes = new byte[cipher.getKeyLength()];<a name="line.295"></a>
-<span class="sourceLineNo">296</span>          new SecureRandom().nextBytes(keyBytes);<a name="line.296"></a>
-<span class="sourceLineNo">297</span>          columnDescBuilder.setEncryptionType(cipher.getName());<a name="line.297"></a>
-<span class="sourceLineNo">298</span>          columnDescBuilder.setEncryptionKey(<a name="line.298"></a>
-<span class="sourceLineNo">299</span>              EncryptionUtil.wrapKey(conf,<a name="line.299"></a>
-<span class="sourceLineNo">300</span>                  User.getCurrent().getShortName(),<a name="line.300"></a>
-<span class="sourceLineNo">301</span>                  new SecretKeySpec(keyBytes,<a name="line.301"></a>
-<span class="sourceLineNo">302</span>                      cipher.getName())));<a name="line.302"></a>
-<span class="sourceLineNo">303</span>        }<a name="line.303"></a>
-<span class="sourceLineNo">304</span>        if (mobThreshold &gt;= 0) {<a name="line.304"></a>
-<span class="sourceLineNo">305</span>          columnDescBuilder.setMobEnabled(true);<a name="line.305"></a>
-<span class="sourceLineNo">306</span>          columnDescBuilder.setMobThreshold(mobThreshold);<a name="line.306"></a>
-<span class="sourceLineNo">307</span>        }<a name="line.307"></a>
-<span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>        if (isNewCf) {<a name="line.309"></a>
-<span class="sourceLineNo">310</span>          admin.addColumnFamily(tableName, columnDescBuilder.build());<a name="line.310"></a>
-<span class="sourceLineNo">311</span>        } else {<a name="line.311"></a>
-<span class="sourceLineNo">312</span>          admin.modifyColumnFamily(tableName, columnDescBuilder.build());<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>      LOG.info("Enabling table " + tableName);<a name="line.315"></a>
-<span class="sourceLineNo">316</span>      admin.enableTable(tableName);<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    }<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  }<a name="line.318"></a>
-<span class="sourceLineNo">319</span><a name="line.319"></a>
-<span class="sourceLineNo">320</span>  @Override<a name="line.320"></a>
-<span class="sourceLineNo">321</span>  protected void addOptions() {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    addOptNoArg("v", OPT_VERBOSE, "Will display a full readout of logs, including ZooKeeper");<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    addOptWithArg(OPT_ZK_QUORUM, "ZK quorum as comma-separated host names " +<a name="line.323"></a>
-<span class="sourceLineNo">324</span>        "without port numbers");<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    addOptWithArg(OPT_ZK_PARENT_NODE, "name of parent znode in zookeeper");<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    addOptWithArg(OPT_TABLE_NAME, "The name of the table to read or write");<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    addOptWithArg(OPT_COLUMN_FAMILIES, "The name of the column families to use separated by comma");<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    addOptWithArg(OPT_WRITE, OPT_USAGE_LOAD);<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    addOptWithArg(OPT_READ, OPT_USAGE_READ);<a name="line.329"></a>
-<span class="sourceLineNo">330</span>    addOptWithArg(OPT_UPDATE, OPT_USAGE_UPDATE);<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    addOptNoArg(OPT_INIT_ONLY, "Initialize the test table only, don't do any loading");<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    addOptWithArg(OPT_BLOOM, OPT_USAGE_BLOOM);<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    addOptWithArg(OPT_COMPRESSION, OPT_USAGE_COMPRESSION);<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    addOptWithArg(HFileTestUtil.OPT_DATA_BLOCK_ENCODING, HFileTestUtil.OPT_DATA_BLOCK_ENCODING_USAGE);<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    addOptWithArg(OPT_MAX_READ_ERRORS, "The maximum number of read errors " +<a name="line.335"></a>
-<span class="sourceLineNo">336</span>        "to tolerate before terminating all reader threads. The default is " +<a name="line.336"></a>
-<span class="sourceLineNo">337</span>        MultiThreadedReader.DEFAULT_MAX_ERRORS + ".");<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    addOptWithArg(OPT_MULTIGET, "Whether to use multi-gets as opposed to " +<a name="line.338"></a>
-<span class="sourceLineNo">339</span>        "separate gets for every column in a row");<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    addOptWithArg(OPT_KEY_WINDOW, "The 'key window' to maintain between " +<a name="line.340"></a>
-<span class="sourceLineNo">341</span>        "reads and writes for concurrent write/read workload. The default " +<a name="line.341"></a>
-<span class="sourceLineNo">342</span>        "is " + MultiThreadedReader.DEFAULT_KEY_WINDOW + ".");<a name="line.342"></a>
-<span class="sourceLineNo">343</span><a name="line.343"></a>
-<span class="sourceLineNo">344</span>    addOptNoArg(OPT_MULTIPUT, "Whether to use multi-puts as opposed to " +<a name="line.344"></a>
-<span class="sourceLineNo">345</span>        "separate puts for every column in a row");<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    addOptNoArg(OPT_BATCHUPDATE, "Whether to use batch as opposed to " +<a name="line.346"></a>
-<span class="sourceLineNo">347</span>        "separate updates for every column in a row");<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    addOptNoArg(OPT_INMEMORY, OPT_USAGE_IN_MEMORY);<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    addOptWithArg(OPT_GENERATOR, OPT_GENERATOR_USAGE);<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    addOptWithArg(OPT_WRITER, OPT_WRITER_USAGE);<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    addOptWithArg(OPT_UPDATER, OPT_UPDATER_USAGE);<a name="line.351"></a>
-<span class="sourceLineNo">352</span>    addOptWithArg(OPT_READER, OPT_READER_USAGE);<a name="line.352"></a>
-<span class="sourceLineNo">353</span><a name="line.353"></a>
-<span class="sourceLineNo">354</span>    addOptWithArg(OPT_NUM_KEYS, "The number of keys to read/write");<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    addOptWithArg(OPT_START_KEY, "The first key to read/write " +<a name="line.355"></a>
-<span class="sourceLineNo">356</span>        "(a 0-based index). The default value is " +<a name="line.356"></a>
-<span class="sourceLineNo">357</span>        DEFAULT_START_KEY + ".");<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    addOptNoArg(OPT_SKIP_INIT, "Skip the initialization; assume test table "<a name="line.358"></a>
-<span class="sourceLineNo">359</span>        + "already exists");<a name="line.359"></a>
-<span class="sourceLineNo">360</span><a name="line.360"></a>
-<span class="sourceLineNo">361</span>    addOptWithArg(NUM_TABLES,<a name="line.361"></a>
-<span class="sourceLineNo">362</span>      "A positive integer number. When a number n is specified, load test "<a name="line.362"></a>
-<span class="sourceLineNo">363</span>          + "tool  will load n table parallely. -tn parameter value becomes "<a name="line.363"></a>
-<span class="sourceLineNo">364</span>          + "table name prefix. Each table name is in format &lt;tn&gt;_1...&lt;tn&gt;_n");<a name="line.364"></a>
-<span class="sourceLineNo">365</span><a name="line.365"></a>
-<span class="sourceLineNo">366</span>    addOptWithArg(OPT_ENCRYPTION, OPT_ENCRYPTION_USAGE);<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    addOptNoArg(OPT_DEFERRED_LOG_FLUSH, OPT_DEFERRED_LOG_FLUSH_USAGE);<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    addOptWithArg(OPT_NUM_REGIONS_PER_SERVER, OPT_NUM_REGIONS_PER_SERVER_USAGE);<a name="line.368"></a>
-<span class="sourceLineNo">369</span>    addOptWithArg(OPT_REGION_REPLICATION, OPT_REGION_REPLICATION_USAGE);<a name="line.369"></a>
-<span class="sourceLineNo">370</span>    addOptWithArg(OPT_REGION_REPLICA_ID, OPT_REGION_REPLICA_ID_USAGE);<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    addOptWithArg(OPT_MOB_THRESHOLD, OPT_MOB_THRESHOLD_USAGE);<a name="line.371"></a>
-<span class="sourceLineNo">372</span>  }<a name="line.372"></a>
-<span class="sourceLineNo">373</span><a name="line.373"></a>
-<span class="sourceLineNo">374</span>  @Override<a name="line.374"></a>
-<span class="sourceLineNo">375</span>  protected CommandLineParser newParser() {<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    // Commons-CLI lacks the capability to handle combinations of options, so we do it ourselves<a name="line.376"></a>
-<span class="sourceLineNo">377</span>    // Validate in parse() to get helpful error messages instead of exploding in processOptions()<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    return new DefaultParser() {<a name="line.378"></a>
-<span class="sourceLineNo">379</span>      @Override<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      public CommandLine parse(Options opts, String[] args, Properties props, boolean stop)<a name="line.380"></a>
-<span class="sourceLineNo">381</span>          throws ParseException {<a name="line.381"></a>
-<span class="sourceLineNo">382</span>        CommandLine cl = super.parse(opts, args, props, stop);<a name="line.382"></a>
-<span class="sourceLineNo">383</span><a name="line.383"></a>
-<span class="sourceLineNo">384</span>        boolean isReadWriteUpdate = cmd.hasOption(OPT_READ)<a name="line.384"></a>
-<span class="sourceLineNo">385</span>            || cmd.hasOption(OPT_WRITE)<a name="line.385"></a>
-<span class="sourceLineNo">386</span>            || cmd.hasOption(OPT_UPDATE);<a name="line.386"></a>
-<span class="sourceLineNo">387</span>        boolean isInitOnly = cmd.hasOption(OPT_INIT_ONLY);<a name="line.387"></a>
-<span class="sourceLineNo">388</span><a name="line.388"></a>
-<span class="sourceLineNo">389</span>        if (!isInitOnly &amp;&amp; !isReadWriteUpdate) {<a name="line.389"></a>
-<span class="sourceLineNo">390</span>          throw new MissingOptionException("Must specify either -" + OPT_INIT_ONLY<a name="line.390"></a>
-<span class="sourceLineNo">391</span>              + " or at least one of -" + OPT_READ + ", -" + OPT_WRITE + ", -" + OPT_UPDATE);<a name="line.391"></a>
-<span class="sourceLineNo">392</span>        }<a name="line.392"></a>
-<span class="sourceLineNo">393</span><a name="line.393"></a>
-<span class="sourceLineNo">394</span>        if (isInitOnly &amp;&amp; isReadWriteUpdate) {<a name="line.394"></a>
-<span class="sourceLineNo">395</span>          throw new AlreadySelectedException(OPT_INIT_ONLY + " cannot be specified with any of -"<a name="line.395"></a>
-<span class="sourceLineNo">396</span>              + OPT_READ + ", -" + OPT_WRITE + ", -" + OPT_UPDATE);<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>        if (isReadWriteUpdate &amp;&amp; !cmd.hasOption(OPT_NUM_KEYS)) {<a name="line.399"></a>
-<span class="sourceLineNo">400</span>          throw new MissingOptionException(OPT_NUM_KEYS + " must be specified in read/write mode.");<a name="line.400"></a>
-<span class="sourceLineNo">401</span>        }<a name="line.401"></a>
-<span class="sourceLineNo">402</span><a name="line.402"></a>
-<span class="sourceLineNo">403</span>        return cl;<a name="line.403"></a>
-<span class="sourceLineNo">404</span>      }<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    };<a name="line.405"></a>
-<span class="sourceLineNo">406</span>  }<a name="line.406"></a>
-<span class="sourceLineNo">407</span><a name="line.407"></a>
-<span class="sourceLineNo">408</span>  @Override<a name="line.408"></a>
-<span class="sourceLineNo">409</span>  protected void processOptions(CommandLine cmd) {<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    this.cmd = cmd;<a name="line.410"></a>
-<span class="sourceLineNo">411</span><a name="line.411"></a>
-<span class="sourceLineNo">412</span>    tableName = TableName.valueOf(cmd.getOptionValue(OPT_TABLE_NAME,<a name="line.412"></a>
-<span class="sourceLineNo">413</span>        DEFAULT_TABLE_NAME));<a name="line.413"></a>
-<span class="sourceLineNo">414</span><a name="line.414"></a>
-<span class="sourceLineNo">415</span>    if (cmd.hasOption(OPT_COLUMN_FAMILIES)) {<a name="line.415"></a>
-<span class="sourceLineNo">416</span>      String[] list = cmd.getOptionValue(OPT_COLUMN_FAMILIES).split(",");<a name="line.416"></a>
-<span class="sourceLineNo">417</span>      families = new byte[list.length][];<a name="line.417"></a>
-<span class="sourceLineNo">418</span>      for (int i = 0; i &lt; list.length; i++) {<a name="line.418"></a>
-<span class="sourceLineNo">419</span>        families[i] = Bytes.toBytes(list[i]);<a name="line.419"></a>
-<span class="sourceLineNo">420</span>      }<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    } else {<a name="line.421"></a>
-<span class="sourceLineNo">422</span>      families = HFileTestUtil.DEFAULT_COLUMN_FAMILIES;<a name="line.422"></a>
-<span class="sourceLineNo">423</span>    }<a name="line.423"></a>
-<span class="sourceLineNo">424</span><a name="line.424"></a>
-<span class="sourceLineNo">425</span>    isVerbose = cmd.hasOption(OPT_VERBOSE);<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    isWrite = cmd.hasOption(OPT_WRITE);<a name="line.426"></a>
-<span class="sourceLineNo">427</span>    isRead = cmd.hasOption(OPT_READ);<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    isUpdate = cmd.hasOption(OPT_UPDATE);<a name="line.428"></a>
-<span class="sourceLineNo">429</span>    isInitOnly = cmd.hasOption(OPT_INIT_ONLY);<a name="line.429"></a>
-<span class="sourceLineNo">430</span>    deferredLogFlush = cmd.hasOption(OPT_DEFERRED_LOG_FLUSH);<a name="line.430"></a>
-<span class="sourceLineNo">431</span><a name="line.431"></a>
-<span class="sourceLineNo">432</span>    if (!isInitOnly) {<a name="line.432"></a>
-<span class="sourceLineNo">433</span>      startKey = parseLong(cmd.getOptionValue(OPT_START_KEY,<a name="line.433"></a>
-<span class="sourceLineNo">434</span>          String.valueOf(DEFAULT_START_KEY)), 0, Long.MAX_VALUE);<a name="line.434"></a>
-<span class="sourceLineNo">435</span>      long numKeys = parseLong(cmd.getOptionValue(OPT_NUM_KEYS), 1,<a name="line.435"></a>
-<span class="sourceLineNo">436</span>          Long.MAX_VALUE - startKey);<a name="line.436"></a>
-<span class="sourceLineNo">437</span>      endKey = startKey + numKeys;<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      isSkipInit = cmd.hasOption(OPT_SKIP_INIT);<a name="line.438"></a>
-<span class="sourceLineNo">439</span>      System.out.println("Key range: [" + startKey + ".." + (endKey - 1) + "]");<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    }<a name="line.440"></a>
-<span class="sourceLineNo">441</span><a name="line.441"></a>
-<span class="sourceLineNo">442</span>    parseColumnFamilyOptions(cmd);<a name="line.442"></a>
+<span class="sourceLineNo">122</span>  public static final String OPT_BLOOM_PARAM = "bloom_param";<a name="line.122"></a>
+<span class="sourceLineNo">123</span>  public static final String OPT_COMPRESSION = "compression";<a name="line.123"></a>
+<span class="sourceLineNo">124</span>  public static final String OPT_DEFERRED_LOG_FLUSH = "deferredlogflush";<a name="line.124"></a>
+<span class="sourceLineNo">125</span>  public static final String OPT_DEFERRED_LOG_FLUSH_USAGE = "Enable deferred log flush.";<a name="line.125"></a>
+<span class="sourceLineNo">126</span><a name="line.126"></a>
+<span class="sourceLineNo">127</span>  public static final String OPT_INMEMORY = "in_memory";<a name="line.127"></a>
+<span class="sourceLineNo">128</span>  public static final String OPT_USAGE_IN_MEMORY = "Tries to keep the HFiles of the CF " +<a name="line.128"></a>
+<span class="sourceLineNo">129</span>      "inmemory as far as possible.  Not guaranteed that reads are always served from inmemory";<a name="line.129"></a>
+<span class="sourceLineNo">130</span><a name="line.130"></a>
+<span class="sourceLineNo">131</span>  public static final String OPT_GENERATOR = "generator";<a name="line.131"></a>
+<span class="sourceLineNo">132</span>  public static final String OPT_GENERATOR_USAGE = "The class which generates load for the tool."<a name="line.132"></a>
+<span class="sourceLineNo">133</span>      + " Any args for this class can be passed as colon separated after class name";<a name="line.133"></a>
+<span class="sourceLineNo">134</span><a name="line.134"></a>
+<span class="sourceLineNo">135</span>  public static final String OPT_WRITER = "writer";<a name="line.135"></a>
+<span class="sourceLineNo">136</span>  public static final String OPT_WRITER_USAGE = "The class for executing the write requests";<a name="line.136"></a>
+<span class="sourceLineNo">137</span><a name="line.137"></a>
+<span class="sourceLineNo">138</span>  public static final String OPT_UPDATER = "updater";<a name="line.138"></a>
+<span class="sourceLineNo">139</span>  public static final String OPT_UPDATER_USAGE = "The class for executing the update requests";<a name="line.139"></a>
+<span class="sourceLineNo">140</span><a name="line.140"></a>
+<span class="sourceLineNo">141</span>  public static final String OPT_READER = "reader";<a name="line.141"></a>
+<span class="sourceLineNo">142</span>  public static final String OPT_READER_USAGE = "The class for executing the read requests";<a name="line.142"></a>
+<span class="sourceLineNo">143</span><a name="line.143"></a>
+<span class="sourceLineNo">144</span>  protected static final String OPT_KEY_WINDOW = "key_window";<a name="line.144"></a>
+<span class="sourceLineNo">145</span>  protected static final String OPT_WRITE = "write";<a name="line.145"></a>
+<span class="sourceLineNo">146</span>  protected static final String OPT_MAX_READ_ERRORS = "max_read_errors";<a name="line.146"></a>
+<span class="sourceLineNo">147</span>  public static final String OPT_MULTIPUT = "multiput";<a name="line.147"></a>
+<span class="sourceLineNo">148</span>  public static final String OPT_MULTIGET = "multiget_batchsize";<a name="line.148"></a>
+<span class="sourceLineNo">149</span>  protected static final String OPT_NUM_KEYS = "num_keys";<a name="line.149"></a>
+<span class="sourceLineNo">150</span>  protected static final String OPT_READ = "read";<a name="line.150"></a>
+<span class="sourceLineNo">151</span>  protected static final String OPT_START_KEY = "start_key";<a name="line.151"></a>
+<span class="sourceLineNo">152</span>  public static final String OPT_TABLE_NAME = "tn";<a name="line.152"></a>
+<span class="sourceLineNo">153</span>  public static final String OPT_COLUMN_FAMILIES = "families";<a name="line.153"></a>
+<span class="sourceLineNo">154</span>  protected static final String OPT_ZK_QUORUM = "zk";<a name="line.154"></a>
+<span class="sourceLineNo">155</span>  protected static final String OPT_ZK_PARENT_NODE = "zk_root";<a name="line.155"></a>
+<span class="sourceLineNo">156</span>  protected static final String OPT_SKIP_INIT = "skip_init";<a name="line.156"></a>
+<span class="sourceLineNo">157</span>  protected static final String OPT_INIT_ONLY = "init_only";<a name="line.157"></a>
+<span class="sourceLineNo">158</span>  protected static final String NUM_TABLES = "num_tables";<a name="line.158"></a>
+<span class="sourceLineNo">159</span>  protected static final String OPT_BATCHUPDATE = "batchupdate";<a name="line.159"></a>
+<span class="sourceLineNo">160</span>  protected static final String OPT_UPDATE = "update";<a name="line.160"></a>
+<span class="sourceLineNo">161</span><a name="line.161"></a>
+<span class="sourceLineNo">162</span>  public static final String OPT_ENCRYPTION = "encryption";<a name="line.162"></a>
+<span class="sourceLineNo">163</span>  protected static final String OPT_ENCRYPTION_USAGE =<a name="line.163"></a>
+<span class="sourceLineNo">164</span>    "Enables transparent encryption on the test table, one of " +<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    Arrays.toString(Encryption.getSupportedCiphers());<a name="line.165"></a>
+<span class="sourceLineNo">166</span><a name="line.166"></a>
+<span class="sourceLineNo">167</span>  public static final String OPT_NUM_REGIONS_PER_SERVER = "num_regions_per_server";<a name="line.167"></a>
+<span class="sourceLineNo">168</span>  protected static final String OPT_NUM_REGIONS_PER_SERVER_USAGE<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    = "Desired number of regions per region server. Defaults to 5.";<a name="line.169"></a>
+<span class="sourceLineNo">170</span>  public static int DEFAULT_NUM_REGIONS_PER_SERVER = 5;<a name="line.170"></a>
+<span class="sourceLineNo">171</span><a name="line.171"></a>
+<span class="sourceLineNo">172</span>  public static final String OPT_REGION_REPLICATION = "region_replication";<a name="line.172"></a>
+<span class="sourceLineNo">173</span>  protected static final String OPT_REGION_REPLICATION_USAGE =<a name="line.173"></a>
+<span class="sourceLineNo">174</span>      "Desired number of replicas per region";<a name="line.174"></a>
+<span class="sourceLineNo">175</span><a name="line.175"></a>
+<span class="sourceLineNo">176</span>  public static final String OPT_REGION_REPLICA_ID = "region_replica_id";<a name="line.176"></a>
+<span class="sourceLineNo">177</span>  protected static final String OPT_REGION_REPLICA_ID_USAGE =<a name="line.177"></a>
+<span class="sourceLineNo">178</span>      "Region replica id to do the reads from";<a name="line.178"></a>
+<span class="sourceLineNo">179</span><a name="line.179"></a>
+<span class="sourceLineNo">180</span>  public static final String OPT_MOB_THRESHOLD = "mob_threshold";<a name="line.180"></a>
+<span class="sourceLineNo">181</span>  protected static final String OPT_MOB_THRESHOLD_USAGE =<a name="line.181"></a>
+<span class="sourceLineNo">182</span>      "Desired cell size to exceed in bytes that will use the MOB write path";<a name="line.182"></a>
+<span class="sourceLineNo">183</span><a name="line.183"></a>
+<span class="sourceLineNo">184</span>  protected static final long DEFAULT_START_KEY = 0;<a name="line.184"></a>
+<span class="sourceLineNo">185</span><a name="line.185"></a>
+<span class="sourceLineNo">186</span>  /** This will be removed as we factor out the dependency on command line */<a name="line.186"></a>
+<span class="sourceLineNo">187</span>  protected CommandLine cmd;<a name="line.187"></a>
+<span class="sourceLineNo">188</span><a name="line.188"></a>
+<span class="sourceLineNo">189</span>  protected MultiThreadedWriter writerThreads = null;<a name="line.189"></a>
+<span class="sourceLineNo">190</span>  protected MultiThreadedReader readerThreads = null;<a name="line.190"></a>
+<span class="sourceLineNo">191</span>  protected MultiThreadedUpdater updaterThreads = null;<a name="line.191"></a>
+<span class="sourceLineNo">192</span><a name="line.192"></a>
+<span class="sourceLineNo">193</span>  protected long startKey, endKey;<a name="line.193"></a>
+<span class="sourceLineNo">194</span><a name="line.194"></a>
+<span class="sourceLineNo">195</span>  protected boolean isVerbose, isWrite, isRead, isUpdate;<a name="line.195"></a>
+<span class="sourceLineNo">196</span>  protected boolean deferredLogFlush;<a name="line.196"></a>
+<span class="sourceLineNo">197</span><a name="line.197"></a>
+<span class="sourceLineNo">198</span>  // Column family options<a name="line.198"></a>
+<span class="sourceLineNo">199</span>  protected DataBlockEncoding dataBlockEncodingAlgo;<a name="line.199"></a>
+<span class="sourceLineNo">200</span>  protected Compression.Algorithm compressAlgo;<a name="line.200"></a>
+<span class="sourceLineNo">201</span>  protected BloomType bloomType;<a name="line.201"></a>
+<span class="sourceLineNo">202</span>  private boolean inMemoryCF;<a name="line.202"></a>
+<span class="sourceLineNo">203</span><a name="line.203"></a>
+<span class="sourceLineNo">204</span>  private User userOwner;<a name="line.204"></a>
+<span class="sourceLineNo">205</span>  // Writer options<a name="line.205"></a>
+<span class="sourceLineNo">206</span>  protected int numWriterThreads = DEFAULT_NUM_THREADS;<a name="line.206"></a>
+<span class="sourceLineNo">207</span>  protected int minColsPerKey, maxColsPerKey;<a name="line.207"></a>
+<span class="sourceLineNo">208</span>  protected int minColDataSize = DEFAULT_DATA_SIZE, maxColDataSize = DEFAULT_DATA_SIZE;<a name="line.208"></a>
+<span class="sourceLineNo">209</span>  protected boolean isMultiPut;<a name="line.209"></a>
+<span class="sourceLineNo">210</span><a name="line.210"></a>
+<span class="sourceLineNo">211</span>  // Updater options<a name="line.211"></a>
+<span class="sourceLineNo">212</span>  protected int numUpdaterThreads = DEFAULT_NUM_THREADS;<a name="line.212"></a>
+<span class="sourceLineNo">213</span>  protected int updatePercent;<a name="line.213"></a>
+<span class="sourceLineNo">214</span>  protected boolean ignoreConflicts = false;<a name="line.214"></a>
+<span class="sourceLineNo">215</span>  protected boolean isBatchUpdate;<a name="line.215"></a>
+<span class="sourceLineNo">216</span><a name="line.216"></a>
+<span class="sourceLineNo">217</span>  // Reader options<a name="line.217"></a>
+<span class="sourceLineNo">218</span>  private int numReaderThreads = DEFAULT_NUM_THREADS;<a name="line.218"></a>
+<span class="sourceLineNo">219</span>  private int keyWindow = MultiThreadedReader.DEFAULT_KEY_WINDOW;<a name="line.219"></a>
+<span class="sourceLineNo">220</span>  private int multiGetBatchSize = MultiThreadedReader.DEFAULT_BATCH_SIZE;<a name="line.220"></a>
+<span class="sourceLineNo">221</span>  private int maxReadErrors = MultiThreadedReader.DEFAULT_MAX_ERRORS;<a name="line.221"></a>
+<span class="sourceLineNo">222</span>  private int verifyPercent;<a name="line.222"></a>
+<span class="sourceLineNo">223</span><a name="line.223"></a>
+<span class="sourceLineNo">224</span>  private int numTables = 1;<a name="line.224"></a>
+<span class="sourceLineNo">225</span><a name="line.225"></a>
+<span class="sourceLineNo">226</span>  private String superUser;<a name="line.226"></a>
+<span class="sourceLineNo">227</span><a name="line.227"></a>
+<span class="sourceLineNo">228</span>  private String userNames;<a name="line.228"></a>
+<span class="sourceLineNo">229</span>  //This file is used to read authentication information in secure clusters.<a name="line.229"></a>
+<span class="sourceLineNo">230</span>  private String authnFileName;<a name="line.230"></a>
+<span class="sourceLineNo">231</span><a name="line.231"></a>
+<span class="sourceLineNo">232</span>  private int numRegionsPerServer = DEFAULT_NUM_REGIONS_PER_SERVER;<a name="line.232"></a>
+<span class="sourceLineNo">233</span>  private int regionReplication = -1; // not set<a name="line.233"></a>
+<span class="sourceLineNo">234</span>  private int regionReplicaId = -1; // not set<a name="line.234"></a>
+<span class="sourceLineNo">235</span><a name="line.235"></a>
+<span class="sourceLineNo">236</span>  private int mobThreshold = -1; // not set<a name="line.236"></a>
+<span class="sourceLineNo">237</span><a name="line.237"></a>
+<span class="sourceLineNo">238</span>  // TODO: refactor LoadTestToolImpl somewhere to make the usage from tests less bad,<a name="line.238"></a>
+<span class="sourceLineNo">239</span>  //       console tool itself should only be used from console.<a name="line.239"></a>
+<span class="sourceLineNo">240</span>  protected boolean isSkipInit = false;<a name="line.240"></a>
+<span class="sourceLineNo">241</span>  protected boolean isInitOnly = false;<a name="line.241"></a>
+<span class="sourceLineNo">242</span><a name="line.242"></a>
+<span class="sourceLineNo">243</span>  protected Cipher cipher = null;<a name="line.243"></a>
+<span class="sourceLineNo">244</span><a name="line.244"></a>
+<span class="sourceLineNo">245</span>  protected String[] splitColonSeparated(String option,<a name="line.245"></a>
+<span class="sourceLineNo">246</span>      int minNumCols, int maxNumCols) {<a name="line.246"></a>
+<span class="sourceLineNo">247</span>    String optVal = cmd.getOptionValue(option);<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    String[] cols = optVal.split(COLON);<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    if (cols.length &lt; minNumCols || cols.length &gt; maxNumCols) {<a name="line.249"></a>
+<span class="sourceLineNo">250</span>      throw new IllegalArgumentException("Expected at least "<a name="line.250"></a>
+<span class="sourceLineNo">251</span>          + minNumCols + " columns but no more than " + maxNumCols +<a name="line.251"></a>
+<span class="sourceLineNo">252</span>          " in the colon-separated value '" + optVal + "' of the " +<a name="line.252"></a>
+<span class="sourceLineNo">253</span>          "-" + option + " option");<a name="line.253"></a>
+<span class="sourceLineNo">254</span>    }<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    return cols;<a name="line.255"></a>
+<span class="sourceLineNo">256</span>  }<a name="line.256"></a>
+<span class="sourceLineNo">257</span><a name="line.257"></a>
+<span class="sourceLineNo">258</span>  protected int getNumThreads(String numThreadsStr) {<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    return parseInt(numThreadsStr, 1, Short.MAX_VALUE);<a name="line.259"></a>
+<span class="sourceLineNo">260</span>  }<a name="line.260"></a>
+<span class="sourceLineNo">261</span><a name="line.261"></a>
+<span class="sourceLineNo">262</span>  public byte[][] getColumnFamilies() {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    return families;<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">266</span>  /**<a name="line.266"></a>
+<span class="sourceLineNo">267</span>   * Apply column family options such as Bloom filters, compression, and data<a name="line.267"></a>
+<span class="sourceLineNo">268</span>   * block encoding.<a name="line.268"></a>
+<span class="sourceLineNo">269</span>   */<a name="line.269"></a>
+<span class="sourceLineNo">270</span>  protected void applyColumnFamilyOptions(TableName tableName,<a name="line.270"></a>
+<span class="sourceLineNo">271</span>      byte[][] columnFamilies) throws IOException {<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.272"></a>
+<span class="sourceLineNo">273</span>        Admin admin = conn.getAdmin()) {<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      TableDescriptor tableDesc = admin.getDescriptor(tableName);<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      LOG.info("Disabling table " + tableName);<a name="line.275"></a>
+<span class="sourceLineNo">276</span>      admin.disableTable(tableName);<a name="line.276"></a>
+<span class="sourceLineNo">277</span>      for (byte[] cf : columnFamilies) {<a name="line.277"></a>
+<span class="sourceLineNo">278</span>        ColumnFamilyDescriptor columnDesc = tableDesc.getColumnFamily(cf);<a name="line.278"></a>
+<span class="sourceLineNo">279</span>        boolean isNewCf = columnDesc == null;<a name="line.279"></a>
+<span class="sourceLineNo">280</span>        ColumnFamilyDescriptorBuilder columnDescBuilder = isNewCf ?<a name="line.280"></a>
+<span class="sourceLineNo">281</span>            ColumnFamilyDescriptorBuilder.newBuilder(cf) :<a name="line.281"></a>
+<span class="sourceLineNo">282</span>            ColumnFamilyDescriptorBuilder.newBuilder(columnDesc);<a name="line.282"></a>
+<span class="sourceLineNo">283</span>        if (bloomType != null) {<a name="line.283"></a>
+<span class="sourceLineNo">284</span>          columnDescBuilder.setBloomFilterType(bloomType);<a name="line.284"></a>
+<span class="sourceLineNo">285</span>        }<a name="line.285"></a>
+<span class="sourceLineNo">286</span>        if (compressAlgo != null) {<a name="line.286"></a>
+<span class="sourceLineNo">287</span>          columnDescBuilder.setCompressionType(compressAlgo);<a name="line.287"></a>
+<span class="sourceLineNo">288</span>        }<a name="line.288"></a>
+<span class="sourceLineNo">289</span>        if (dataBlockEncodingAlgo != null) {<a name="line.289"></a>
+<span class="sourceLineNo">290</span>          columnDescBuilder.setDataBlockEncoding(dataBlockEncodingAlgo);<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        }<a name="line.291"></a>
+<span class="sourceLineNo">292</span>        if (inMemoryCF) {<a name="line.292"></a>
+<span class="sourceLineNo">293</span>          columnDescBuilder.setInMemory(inMemoryCF);<a name="line.293"></a>
+<span class="sourceLineNo">294</span>        }<a name="line.294"></a>
+<span class="sourceLineNo">295</span>        if (cipher != null) {<a name="line.295"></a>
+<span class="sourceLineNo">296</span>          byte[] keyBytes = new byte[cipher.getKeyLength()];<a name="line.296"></a>
+<span class="sourceLineNo">297</span>          new SecureRandom().nextBytes(keyBytes);<a name="line.297"></a>
+<span class="sourceLineNo">298</span>          columnDescBuilder.setEncryptionType(cipher.getName());<a name="line.298"></a>
+<span class="sourceLineNo">299</span>          columnDescBuilder.setEncryptionKey(<a name="line.299"></a>
+<span class="sourceLineNo">300</span>              EncryptionUtil.wrapKey(conf,<a name="line.300"></a>
+<span class="sourceLineNo">301</span>                  User.getCurrent().getShortName(),<a name="line.301"></a>
+<span class="sourceLineNo">302</span>                  new SecretKeySpec(keyBytes,<a name="line.302"></a>
+<span class="sourceLineNo">303</span>                      cipher.getName())));<a name="line.303"></a>
+<span class="sourceLineNo">304</span>        }<a name="line.304"></a>
+<span class="sourceLineNo">305</span>        if (mobThreshold &gt;= 0) {<a name="line.305"></a>
+<span class="sourceLineNo">306</span>          columnDescBuilder.setMobEnabled(true);<a name="line.306"></a>
+<span class="sourceLineNo">307</span>          columnDescBuilder.setMobThreshold(mobThreshold);<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 (isNewCf) {<a name="line.310"></a>
+<span class="sourceLineNo">311</span>          admin.addColumnFamily(tableName, columnDescBuilder.build());<a name="line.311"></a>
+<span class="sourceLineNo">312</span>        } else {<a name="line.312"></a>
+<span class="sourceLineNo">313</span>          admin.modifyColumnFamily(tableName, columnDescBuilder.build());<a name="line.313"></a>
+<span class="sourceLineNo">314</span>        }<a name="line.314"></a>
+<span class="sourceLineNo">315</span>      }<a name="line.315"></a>
+<span class="sourceLineNo">316</span>      LOG.info("Enabling table " + tableName);<a name="line.316"></a>
+<span class="sourceLineNo">317</span>      admin.enableTable(tableName);<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    }<a name="line.318"></a>
+<span class="sourceLineNo">319</span>  }<a name="line.319"></a>
+<span class="sourceLineNo">320</span><a name="line.320"></a>
+<span class="sourceLineNo">321</span>  @Override<a name="line.321"></a>
+<span class="sourceLineNo">322</span>  protected void addOptions() {<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    addOptNoArg("v", OPT_VERBOSE, "Will display a full readout of logs, including ZooKeeper");<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    addOptWithArg(OPT_ZK_QUORUM, "ZK quorum as comma-separated host names " +<a name="line.324"></a>
+<span class="sourceLineNo">325</span>        "without port numbers");<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    addOptWithArg(OPT_ZK_PARENT_NODE, "name of parent znode in zookeeper");<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    addOptWithArg(OPT_TABLE_NAME, "The name of the table to read or write");<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    addOptWithArg(OPT_COLUMN_FAMILIES, "The name of the column families to use separated by comma");<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    addOptWithArg(OPT_WRITE, OPT_USAGE_LOAD);<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    addOptWithArg(OPT_READ, OPT_USAGE_READ);<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    addOptWithArg(OPT_UPDATE, OPT_USAGE_UPDATE);<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    addOptNoArg(OPT_INIT_ONLY, "Initialize the test table only, don't do any loading");<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    addOptWithArg(OPT_BLOOM, OPT_USAGE_BLOOM);<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    addOptWithArg(OPT_BLOOM_PARAM, "the parameter of bloom filter type");<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    addOptWithArg(OPT_COMPRESSION, OPT_USAGE_COMPRESSION);<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    addOptWithArg(HFileTestUtil.OPT_DATA_BLOCK_ENCODING, HFileTestUtil.OPT_DATA_BLOCK_ENCODING_USAGE);<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    addOptWithArg(OPT_MAX_READ_ERRORS, "The maximum number of read errors " +<a name="line.337"></a>
+<span class="sourceLineNo">338</span>        "to tolerate before terminating all reader threads. The default is " +<a name="line.338"></a>
+<span class="sourceLineNo">339</span>        MultiThreadedReader.DEFAULT_MAX_ERRORS + ".");<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    addOptWithArg(OPT_MULTIGET, "Whether to use multi-gets as opposed to " +<a name="line.340"></a>
+<span class="sourceLineNo">341</span>        "separate gets for every column in a row");<a name="line.341"></a>
+<span class="sourceLineNo">342</span>    addOptWithArg(OPT_KEY_WINDOW, "The 'key window' to maintain between " +<a name="line.342"></a>
+<span class="sourceLineNo">343</span>        "reads and writes for concurrent write/read workload. The default " +<a name="line.343"></a>
+<span class="sourceLineNo">344</span>        "is " + MultiThreadedReader.DEFAULT_KEY_WINDOW + ".");<a name="line.344"></a>
+<span class="sourceLineNo">345</span><a name="line.345"></a>
+<span class="sourceLineNo">346</span>    addOptNoArg(OPT_MULTIPUT, "Whether to use multi-puts as opposed to " +<a name="line.346"></a>
+<span class="sourceLineNo">347</span>        "separate puts for every column in a row");<a name="line.347"></a>
+<span class="sourceLineNo">348</span>    addOptNoArg(OPT_BATCHUPDATE, "Whether to use batch as opposed to " +<a name="line.348"></a>
+<span class="sourceLineNo">349</span>        "separate updates for every column in a row");<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    addOptNoArg(OPT_INMEMORY, OPT_USAGE_IN_MEMORY);<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    addOptWithArg(OPT_GENERATOR, OPT_GENERATOR_USAGE);<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    addOptWithArg(OPT_WRITER, OPT_WRITER_USAGE);<a name="line.352"></a>
+<span class="sourceLineNo">353</span>    addOptWithArg(OPT_UPDATER, OPT_UPDATER_USAGE);<a name="line.353"></a>
+<span class="sourceLineNo">354</span>    addOptWithArg(OPT_READER, OPT_READER_USAGE);<a name="line.354"></a>
+<span class="sourceLineNo">355</span><a name="line.355"></a>
+<span class="sourceLineNo">356</span>    addOptWithArg(OPT_NUM_KEYS, "The number of keys to read/write");<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    addOptWithArg(OPT_START_KEY, "The first key to read/write " +<a name="line.357"></a>
+<span class="sourceLineNo">358</span>        "(a 0-based index). The default value is " +<a name="line.358"></a>
+<span class="sourceLineNo">359</span>        DEFAULT_START_KEY + ".");<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    addOptNoArg(OPT_SKIP_INIT, "Skip the initialization; assume test table "<a name="line.360"></a>
+<span class="sourceLineNo">361</span>        + "already exists");<a name="line.361"></a>
+<span class="sourceLineNo">362</span><a name="line.362"></a>
+<span class="sourceLineNo">363</span>    addOptWithArg(NUM_TABLES,<a name="line.363"></a>
+<span class="sourceLineNo">364</span>      "A positive integer number. When a number n is specified, load test "<a name="line.364"></a>
+<span class="sourceLineNo">365</span>          + "tool  will load n table parallely. -tn parameter value becomes "<a name="line.365"></a>
+<span class="sourceLineNo">366</span>          + "table name prefix. Each table name is in format &lt;tn&gt;_1...&lt;tn&gt;_n");<a name="line.366"></a>
+<span class="sourceLineNo">367</span><a name="line.367"></a>
+<span class="sourceLineNo">368</span>    addOptWithArg(OPT_ENCRYPTION, OPT_ENCRYPTION_USAGE);<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    addOptNoArg(OPT_DEFERRED_LOG_FLUSH, OPT_DEFERRED_LOG_FLUSH_USAGE);<a name="line.369"></a>
+<span class="sourceLineNo">370</span>    addOptWithArg(OPT_NUM_REGIONS_PER_SERVER, OPT_NUM_REGIONS_PER_SERVER_USAGE);<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    addOptWithArg(OPT_REGION_REPLICATION, OPT_REGION_REPLICATION_USAGE);<a name="line.371"></a>
+<span class="sourceLineNo">372</span>    addOptWithArg(OPT_REGION_REPLICA_ID, OPT_REGION_REPLICA_ID_USAGE);<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    addOptWithArg(OPT_MOB_THRESHOLD, OPT_MOB_THRESHOLD_USAGE);<a name="line.373"></a>
+<span class="sourceLineNo">374</span>  }<a name="line.374"></a>
+<span class="sourceLineNo">375</span><a name="line.375"></a>
+<span class="sourceLineNo">376</span>  @Override<a name="line.376"></a>
+<span class="sourceLineNo">377</span>  protected CommandLineParser newParser() {<a name="line.377"></a>
+<span class="sourceLineNo">378</span>    // Commons-CLI lacks the capability to handle combinations of options, so we do it ourselves<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    // Validate in parse() to get helpful error messages instead of exploding in processOptions()<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    return new DefaultParser() {<a name="line.380"></a>
+<span class="sourceLineNo">381</span>      @Override<a name="line.381"></a>
+<span class="sourceLineNo">382</span>      public CommandLine parse(Options opts, String[] args, Properties props, boolean stop)<a name="line.382"></a>
+<span class="sourceLineNo">383</span>          throws ParseException {<a name="line.383"></a>
+<span class="sourceLineNo">384</span>        CommandLine cl = super.parse(opts, args, props, stop);<a name="line.384"></a>
+<span class="sourceLineNo">385</span><a name="line.385"></a>
+<span class="sourceLineNo">386</span>        boolean isReadWriteUpdate = cmd.hasOption(OPT_READ)<a name="line.386"></a>
+<span class="sourceLineNo">387</span>            || cmd.hasOption(OPT_WRITE)<a name="line.387"></a>
+<span class="sourceLineNo">388</span>            || cmd.hasOption(OPT_UPDATE);<a name="line.388"></a>
+<span class="sourceLineNo">389</span>        boolean isInitOnly = cmd.hasOption(OPT_INIT_ONLY);<a name="line.389"></a>
+<span class="sourceLineNo">390</span><a name="line.390"></a>
+<span class="sourceLineNo">391</span>        if (!isInitOnly &amp;&amp; !isReadWriteUpdate) {<a name="line.391"></a>
+<span class="sourceLineNo">392</span>          throw new MissingOptionException("Must specify either -" + OPT_INIT_ONLY<a name="line.392"></a>
+<span class="sourceLineNo">393</span>              + " or at least one of -" + OPT_READ + ", -" + OPT_WRITE + ", -" + OPT_UPDATE);<a name="line.393"></a>
+<span class="sourceLineNo">394</span>        }<a name="line.394"></a>
+<span class="sourceLineNo">395</span><a name="line.395"></a>
+<span class="sourceLineNo">396</span>        if (isInitOnly &amp;&amp; isReadWriteUpdate) {<a name="line.396"></a>
+<span class="sourceLineNo">397</span>          throw new AlreadySelectedException(OPT_INIT_ONLY + " cannot be specified with any of -"<a name="line.397"></a>
+<span class="sourceLineNo">398</span>              + OPT_READ + ", -" + OPT_WRITE + ", -" + OPT_UPDATE);<a name="line.398"></a>
+<span class="sourceLineNo">399</span>        }<a name="line.399"></a>
+<span class="sourceLineNo">400</span><a name="line.400"></a>
+<span class="sourceLineNo">401</span>        if (isReadWriteUpdate &amp;&amp; !cmd.hasOption(OPT_NUM_KEYS)) {<a name="line.401"></a>
+<span class="sourceLineNo">402</span>          throw new MissingOptionException(OPT_NUM_KEYS + " must be specified in read/write mode.");<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>        return cl;<a name="line.405"></a>
+<span class="sourceLineNo">406</span>      }<a name="line.406"></a>
+<span class="sourceLineNo">407</span>    };<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>  protected void processOptions(CommandLine cmd) {<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    this.cmd = cmd;<a name="line.412"></a>
+<span class="sourceLineNo">413</span><a name="line.413"></a>
+<span class="sourceLineNo">414</span>    tableName = TableName.valueOf(cmd.getOptionValue(OPT_TABLE_NAME,<a name="line.414"></a>
+<span class="sourceLineNo">415</span>        DEFAULT_TABLE_NAME));<a name="line.415"></a>
+<span class="sourceLineNo">416</span><a name="line.416"></a>
+<span class="sourceLineNo">417</span>    if (cmd.hasOption(OPT_COLUMN_FAMILIES)) {<a name="line.417"></a>
+<span class="sourceLineNo">418</span>      String[] list = cmd.getOptionValue(OPT_COLUMN_FAMILIES).split(",");<a name="line.418"></a>
+<span class="sourceLineNo">419</span>      families = new byte[list.length][];<a name="line.419"></a>
+<span class="sourceLineNo">420</span>      for (int i = 0; i &lt; list.length; i++) {<a name="line.420"></a>
+<span class="sourceLineNo">421</span>        families[i] = Bytes.toBytes(list[i]);<a name="line.421"></a>
+<span class="sourceLineNo">422</span>      }<a name="line.422"></a>
+<span class="sourceLineNo">423</span>    } else {<a name="line.423"></a>
+<span class="sourceLineNo">424</span>      families = HFileTestUtil.DEFAULT_COLUMN_FAMILIES;<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>    isVerbose = cmd.hasOption(OPT_VERBOSE);<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    isWrite = cmd.hasOption(OPT_WRITE);<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    isRead = cmd.hasOption(OPT_READ);<a name="line.429"></a>
+<span class="sourceLineNo">430</span>    isUpdate = cmd.hasOption(OPT_UPDATE);<a name="line.430"></a>
+<span class="sourceLineNo">431</span>    isInitOnly = cmd.hasOption(OPT_INIT_ONLY);<a name="line.431"></a>
+<span class="sourceLineNo">432</span>    deferredLogFlush = cmd.hasOption(OPT_DEFERRED_LOG_FLUSH);<a name="line.432"></a>
+<span class="sourceLineNo">433</span><a name="line.433"></a>
+<span class="sourceLineNo">434</span>    if (!isInitOnly) {<a name="line.434"></a>
+<span class="sourceLineNo">435</span>      startKey = parseLong(cmd.getOptionValue(OPT_START_KEY,<a name="line.435"></a>
+<span class="sourceLineNo">436</span>          String.valueOf(DEFAULT_START_KEY)), 0, Long.MAX_VALUE);<a name="line.436"></a>
+<span class="sourceLineNo">437</span>      long numKeys = parseLong(cmd.getOptionValue(OPT_NUM_KEYS), 1,<a name="line.437"></a>
+<span class="sourceLineNo">438</span>          Long.MAX_VALUE - startKey);<a name="line.438"></a>
+<span class="sourceLineNo">439</span>      endKey = startKey + numKeys;<a name="line.439"></a>
+<span class="sourceLineNo">440</span>      isSkipInit = cmd.hasOption(OPT_SKIP_INIT);<a name="line.440"></a>
+<span class="sourceLineNo">441</span>      System.out.println("Key range: [" + startKey + ".." + (endKey - 1) + "]");<a name="line.441"></a>
+<span class="sourceLineNo">442</span>    }<a name="line.442"></a>
 <span class="sourceLineNo">443</span><a name="line.443"></a>
-<span class="sourceLineNo">444</span>    if (isWrite) {<a name="line.444"></a>
-<span class="sourceLineNo">445</span>      String[] writeOpts = splitColonSeparated(OPT_WRITE, 2, 3);<a name="line.445"></a>
-<span class="sourceLineNo">446</span><a name="line.446"></a>
-<span class="sourceLineNo">447</span>      int colIndex = 0;<a name="line.447"></a>
-<span class="sourceLineNo">448</span>      minColsPerKey = 1;<a name="line.448"></a>
-<span class="sourceLineNo">449</span>      maxColsPerKey = 2 * Integer.parseInt(writeOpts[colIndex++]);<a name="line.449"></a>
-<span class="sourceLineNo">450</span>      int avgColDataSize =<a name="line.450"></a>
-<span class="sourceLineNo">451</span>          parseInt(writeOpts[colIndex++], 1, Integer.MAX_VALUE);<a name="line.451"></a>
-<span class="sourceLineNo">452</span>      minColDataSize = avgColDataSize / 2;<a name="line.452"></a>
-<span class="sourceLineNo">453</span>      maxColDataSize = avgColDataSize * 3 / 2;<a name="line.453"></a>
-<span class="sourceLineNo">454</span><a name="line.454"></a>
-<span class="sourceLineNo">455</span>      if (colIndex &lt; writeOpts.length) {<a name="line.455"></a>
-<span class="sourceLineNo">456</span>        numWriterThreads = getNumThreads(writeOpts[colIndex++]);<a name="line.456"></a>
-<span class="sourceLineNo">457</span>      }<a name="line.457"></a>
-<span class="sourceLineNo">458</span><a name="line.458"></a>
-<span class="sourceLineNo">459</span>      isMultiPut = cmd.hasOption(OPT_MULTIPUT);<a name="line.459"></a>
+<span class="sourceLineNo">444</span>    parseColumnFamilyOptions(cmd);<a name="line.444"></a>
+<span class="sourceLineNo">445</span><a name="line.445"></a>
+<span class="sourceLineNo">446</span>    if (isWrite) {<a name="line.446"></a>
+<span class="sourceLineNo">447</span>      String[] writeOpts = splitColonSeparated(OPT_WRITE, 2, 3);<a name="line.447"></a>
+<span class="sourceLineNo">448</span><a name="line.448"></a>
+<span class="sourceLineNo">449</span>      int colIndex = 0;<a name="line.449"></a>
+<span class="sourceLineNo">450</span>      minColsPerKey = 1;<a name="line.450"></a>
+<span class="sourceLineNo">451</span>      maxColsPerKey = 2 * Integer.parseInt(writeOpts[colIndex++]);<a name="line.451"></a>
+<span class="sourceLineNo">452</span>      int avgColDataSize =<a name="line.452"></a>
+<span class="sourceLineNo">453</span>          parseInt(writeOpts[colIndex++], 1, Integer.MAX_VALUE);<a name="line.453"></a>
+<span class="sourceLineNo">454</span>      minColDataSize = avgColDataSize / 2;<a name="line.454"></a>
+<span class="sourceLineNo">455</span>      maxColDataSize = avgColDataSize * 3 / 2;<a name="line.455"></a>
+<span class="sourceLineNo">456</span><a name="line.456"></a>
+<span class="sourceLineNo">457</span>      if (colIndex &lt; writeOpts.length) {<a name="line.457"></a>
+<span class="sourceLineNo">458</span>        numWriterThreads = getNumThreads(writeOpts[colIndex++]);<a name="line.458"></a>
+<span class="sourceLineNo">459</span>      }<a name="line.459"></a>
 <span class="sourceLineNo">460</span><a name="line.460"></a>
-<span class="sourceLineNo">461</span>      mobThreshold = -1;<a name="line.461"></a>
-<span class="sourceLineNo">462</span>      if (cmd.hasOption(OPT_MOB_THRESHOLD)) {<a name="line.462"></a>
-<span class="sourceLineNo">463</span>        mobThreshold = Integer.parseInt(cmd.getOptionValue(OPT_MOB_THRESHOLD));<a name="line.463"></a>
-<span class="sourceLineNo">464</span>      }<a name="line.464"></a>
-<span class="sourceLineNo">465</span><a name="line.465"></a>
-<span class="sourceLineNo">466</span>      System.out.println("Multi-puts: " + isMultiPut);<a name="line.466"></a>
-<span class="sourceLineNo">467</span>      System.out.println("Columns per key: " + minColsPerKey + ".."<a name="line.467"></a>
-<span class="sourceLineNo">468</span>          + maxColsPerKey);<a name="line.468"></a>
-<span class="sourceLineNo">469</span>      System.out.println("Data size per column: " + minColDataSize + ".."<a name="line.469"></a>
-<span class="sourceLineNo">470</span>          + maxColDataSize);<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>    if (isUpdate) {<a name="line.473"></a>
-<span class="sourceLineNo">474</span>      String[] mutateOpts = splitColonSeparated(OPT_UPDATE, 1, 3);<a name="line.474"></a>
-<span class="sourceLineNo">475</span>      int colIndex = 0;<a name="line.475"></a>
-<span class="sourceLineNo">476</span>      updatePercent = parseInt(mutateOpts[colIndex++], 0, 100);<a name="line.476"></a>
-<span class="sourceLineNo">477</span>      if (colIndex &lt; mutateOpts.length) {<a name="line.477"></a>
-<span class="sourceLineNo">478</span>        numUpdaterThreads = getNumThreads(mutateOpts[colIndex++]);<a name="line.478"></a>
-<span class="sourceLineNo">479</span>      }<a name="line.479"></a>
-<span class="sourceLineNo">480</span>      if (colIndex &lt; mutateOpts.length) {<a name="line.480"></a>
-<span class="sourceLineNo">481</span>        ignoreConflicts = parseInt(mutateOpts[colIndex++], 0, 1) == 1;<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>      isBatchUpdate = cmd.hasOption(OPT_BATCHUPDATE);<a name="line.484"></a>
+<span class="sourceLineNo">461</span>      isMultiPut = cmd.hasOption(OPT_MULTIPUT);<a name="line.461"></a>
+<span class="sourceLineNo">462</span><a name="line.462"></a>
+<span class="sourceLineNo">463</span>      mobThreshold = -1;<a name="line.463"></a>
+<span class="sourceLineNo">464</span>      if (cmd.hasOption(OPT_MOB_THRESHOLD)) {<a name="line.464"></a>
+<span class="sourceLineNo">465</span>        mobThreshold = Integer.parseInt(cmd.getOptionValue(OPT_MOB_THRESHOLD));<a name="line.465"></a>
+<span class="sourceLineNo">466</span>      }<a name="line.466"></a>
+<span class="sourceLineNo">467</span><a name="line.467"></a>
+<span class="sourceLineNo">468</span>      System.out.println("Multi-puts: " + isMultiPut);<a name="line.468"></a>
+<span class="sourceLineNo">469</span>      System.out.println("Columns per key: " + minColsPerKey + ".."<a name="line.469"></a>
+<span class="sourceLineNo">470</span>          + maxColsPerKey);<a name="line.470"></a>
+<span class="sourceLineNo">471</span>      System.out.println("Data size per column: " + minColDataSize + ".."<a name="line.471"></a>
+<span class="sourceLineNo">472</span>          + maxColDataSize);<a name="line.472"></a>
+<span class="sourceLineNo">473</span>    }<a name="line.473"></a>
+<span class="sourceLineNo">474</span><a name="line.474"></a>
+<span class="sourceLineNo">475</span>    if (isUpdate) {<a name="line.475"></a>
+<span class="sourceLineNo">476</span>      String[] mutateOpts = splitColonSeparated(OPT_UPDATE, 1, 3);<a name="line.476"></a>
+<span class="sourceLineNo">477</span>      int colIndex = 0;<a name="line.477"></a>
+<span class="sourceLineNo">478</span>      updatePercent = parseInt(mutateOpts[colIndex++], 0, 100);<a name="line.478"></a>
+<span class="sourceLineNo">479</span>      if (colIndex &lt; mutateOpts.length) {<a name="line.479"></a>
+<span class="sourceLineNo">480</span>        numUpdaterThreads = getNumThreads(mutateOpts[colIndex++]);<a name="line.480"></a>
+<span class="sourceLineNo">481</span>      }<a name="line.481"></a>
+<span class="sourceLineNo">482</span>      if (colIndex &lt; mutateOpts.length) {<a name="line.482"></a>
+<span class="sourceLineNo">483</span>        ignoreConflicts = parseInt(mutateOpts[colIndex++], 0, 1) == 1;<a name="line.483"></a>
+<span class="sourceLineNo">484</span>      }<a name="line.484"></a>
 <span class="sourceLineNo">485</span><a name="line.485"></a>
-<span class="sourceLineNo">486</span>      System.out.println("Batch updates: " + isBatchUpdate);<a name="line.486"></a>
-<span class="sourceLineNo">487</span>      System.out.println("Percent of keys to update: " + updatePercent);<a name="line.487"></a>
-<span class="sourceLineNo">488</span>      System.out.println("Updater threads: " + numUpdaterThreads);<a name="line.488"></a>
-<span class="sourceLineNo">489</span>      System.out.println("Ignore nonce conflicts: " + ignoreConflicts);<a name="line.489"></a>
-<span class="sourceLineNo">490</span>    }<a name="line.490"></a>
-<span class="sourceLineNo">491</span><a name="line.491"></a>
-<span class="sourceLineNo">492</span>    if (isRead) {<a name="line.492"></a>
-<span class="sourceLineNo">493</span>      String[] readOpts = splitColonSeparated(OPT_READ, 1, 2);<a name="line.493"></a>
-<span class="sourceLineNo">494</span>      int colIndex = 0;<a name="line.494"></a>
-<span class="sourceLineNo">495</span>      verifyPercent = parseInt(readOpts[colIndex++], 0, 100);<a name="line.495"></a>
-<span class="sourceLineNo">496</span>      if (colIndex &lt; readOpts.length) {<a name="line.496"></a>
-<span class="sourceLineNo">497</span>        numReaderThreads = getNumThreads(readOpts[colIndex++]);<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>      if (cmd.hasOption(OPT_MAX_READ_ERRORS)) {<a name="line.500"></a>
-<span class="sourceLineNo">501</span>        maxReadErrors = parseInt(cmd.getOptionValue(OPT_MAX_READ_ERRORS),<a name="line.501"></a>
-<span class="sourceLineNo">502</span>            0, Integer.MAX_VALUE);<a name="line.502"></a>
-<span class="sourceLineNo">503</span>      }<a name="line.503"></a>
-<span class="sourceLineNo">504</span><a name="line.504"></a>
-<span class="sourceLineNo">505</span>      if (cmd.hasOption(OPT_KEY_WINDOW)) {<a name="line.505"></a>
-<span class="sourceLineNo">506</span>        keyWindow = parseInt(cmd.getOptionValue(OPT_KEY_WINDOW),<a name="line.506"></a>
-<span class="sourceLineNo">507</span>            0, Integer.MAX_VALUE);<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>      if (cmd.hasOption(OPT_MULTIGET)) {<a name="line.510"></a>
-<span class="sourceLineNo">511</span>        multiGetBatchSize = parseInt(cmd.getOptionValue(OPT_MULTIGET),<a name="line.511"></a>
-<span class="sourceLineNo">512</span>            0, Integer.MAX_VALUE);<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>      System.out.println("Multi-gets (value of 1 means no multigets): " + multiGetBatchSize);<a name="line.515"></a>
-<span class="sourceLineNo">516</span>      System.out.println("Percent of keys to verify: " + verifyPercent);<a name="line.516"></a>
-<span class="sourceLineNo">517</span>      System.out.println("Reader threads: " + numReaderThreads);<a name="line.517"></a>
-<span class="sourceLineNo">518</span>    }<a name="line.518"></a>
-<span class="sourceLineNo">519</span><a name="line.519"></a>
-<span class="sourceLineNo">520</span>    numTables = 1;<a name="line.520"></a>
-<span class="sourceLineNo">521</span>    if (cmd.hasOption(NUM_TABLES)) {<a name="line.521"></a>
-<span class="sourceLineNo">522</span>      numTables = parseInt(cmd.getOptionValue(NUM_TABLES), 1, Short.MAX_VALUE);<a name="line.522"></a>
-<span class="sourceLineNo">523</span>    }<a name="line.523"></a>
-<span class="sourceLineNo">524</span><a name="line.524"></a>
-<span class="sourceLineNo">525</span>    numRegionsPerServer = DEFAULT_NUM_REGIONS_PER_SERVER;<a name="line.525"></a>
-<span class="sourceLineNo">526</span>    if (cmd.hasOption(OPT_NUM_REGIONS_PER_SERVER)) {<a name="line.526"></a>
-<span class="sourceLineNo">527</span>      numRegionsPerServer = Integer.parseInt(cmd.getOptionValue(OPT_NUM_REGIONS_PER_SERVER));<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>    regionReplication = 1;<a name="line.530"></a>
-<span class="sourceLineNo">531</span>    if (cmd.hasOption(OPT_REGION_REPLICATION)) {<a name="line.531"></a>
-<span class="sourceLineNo">532</span>      regionReplication = Integer.parseInt(cmd.getOptionValue(OPT_REGION_REPLICATION));<a name="line.532"></a>
-<span class="sourceLineNo">533</span>    }<a name="line.533"></a>
-<span class="sourceLineNo">534</span><a name="line.534"></a>
-<span class="sourceLineNo">535</span>    regionReplicaId = -1;<a name="line.535"></a>
-<span class="sourceLineNo">536</span>    if (cmd.hasOption(OPT_REGION_REPLICA_ID)) {<a name="line.536"></a>
-<span class="sourceLineNo">537</span>      regionReplicaId = Integer.parseInt(cmd.getOptionValue(OPT_REGION_REPLICA_ID));<a name="line.537"></a>
-<span class="sourceLineNo">538</span>    }<a name="line.538"></a>
-<span class="sourceLineNo">539</span>  }<a name="line.539"></a>
-<span class="sourceLineNo">540</span><a name="line.540"></a>
-<span class="sourceLineNo">541</span>  private void parseColumnFamilyOptions(CommandLine cmd) {<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    String dataBlockEncodingStr = cmd.getOptionValue(HFileTestUtil.OPT_DATA_BLOCK_ENCODING);<a name="line.542"></a>
-<span class="sourceLineNo">543</span>    dataBlockEncodingAlgo = dataBlockEncodingStr == null ? null :<a name="line.543"></a>
-<span class="sourceLineNo">544</span>        DataBlockEncoding.valueOf(dataBlockEncodingStr);<a name="line.544"></a>
-<span class="sourceLineNo">545</span><a name="line.545"></a>
-<span class="sourceLineNo">546</span>    String compressStr = cmd.getOptionValue(OPT_COMPRESSION);<a name="line.546"></a>
-<span class="sourceLineNo">547</span>    compressAlgo = compressStr == null ? Compression.Algorithm.NONE :<a name="line.547"></a>
-<span class="sourceLineNo">548</span>        Compression.Algorithm.valueOf(compressStr);<a name="line.548"></a>
-<span class="sourceLineNo">549</span><a name="line.549"></a>
-<span class="sourceLineNo">550</span>    String bloomStr = cmd.getOptionValue(OPT_BLOOM);<a name="line.550"></a>
-<span class="sourceLineNo">551</span>    bloomType = bloomStr == null ? BloomType.ROW :<a name="line.551"></a>
-<span class="sourceLineNo">552</span>        BloomType.valueOf(bloomStr);<a name="line.552"></a>
-<span class="sourceLineNo">553</span><a name="line.553"></a>
-<span class="sourceLineNo">554</span>    inMemoryCF = cmd.hasOption(OPT_INMEMORY);<a name="line.554"></a>
-<span class="sourceLineNo">555</span>    if (cmd.hasOption(OPT_ENCRYPTION)) {<a name="line.555"></a>
-<span class="sourceLineNo">556</span>      cipher = Encryption.getCipher(conf, cmd.getOptionValue(OPT_ENCRYPTION));<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>  }<a name="line.559"></a>
-<span class="sourceLineNo">560</span><a name="line.560"></a>
-<span class="sourceLineNo">561</span>  public void initTestTable() throws IOException {<a name="line.561"></a>
-<span class="sourceLineNo">562</span>    Durability durability = Durability.USE_DEFAULT;<a name="line.562"></a>
-<span class="sourceLineNo">563</span>    if (deferredLogFlush) {<a name="line.563"></a>
-<span class="sourceLineNo">564</span>      durability = Durability.ASYNC_WAL;<a name="line.564"></a>
-<span class="sourceLineNo">565</span>    }<a name="line.565"></a>
-<span class="sourceLineNo">566</span><a name="line.566"></a>
-<span class="sourceLineNo">567</span>    HBaseTestingUtility.createPreSplitLoadTestTable(conf, tableName,<a name="line.567"></a>
-<span class="sourceLineNo">568</span>      getColumnFamilies(), compressAlgo, dataBlockEncodingAlgo, numRegionsPerServer,<a name="line.568"></a>
-<span class="sourceLineNo">569</span>        regionReplication, durability);<a name="line.569"></a>
-<span class="sourceLineNo">570</span>    applyColumnFamilyOptions(tableName, getColumnFamilies());<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>  @Override<a name="line.573"></a>
-<span class="sourceLineNo">574</span>  protected int doWork() throws IOException {<a name="line.574"></a>
-<span class="sourceLineNo">575</span>    if (!isVerbose) {<a name="line.575"></a>
-<span class="sourceLineNo">576</span>        LogManager.getLogger(ZooKeeper.class.getName()).setLevel(Level.WARN);<a name="line.576"></a>
-<span class="sourceLineNo">577</span>    }<a name="line.577"></a>
-<span class="sourceLineNo">578</span>    if (numTables &gt; 1) {<a name="line.578"></a>
-<span class="sourceLineNo">579</span>      return parallelLoadTables();<a name="line.579"></a>
-<span class="sourceLineNo">580</span>    } else {<a name="line.580"></a>
-<span class="sourceLineNo">581</span>      return loadTable();<a name="line.581"></a>
-<span class="sourceLineNo">582</span>    }<a name="line.582"></a>
-<span class="sourceLineNo">583</span>  }<a name="line.583"></a>
+<span class="sourceLineNo">486</span>      isBatchUpdate = cmd.hasOption(OPT_BATCHUPDATE);<a name="line.486"></a>
+<span class="sourceLineNo">487</span><a name="line.487"></a>
+<span class="sourceLineNo">488</span>      System.out.println("Batch updates: " + isBatchUpdate);<a name="line.488"></a>
+<span class="sourceLineNo">489</span>      System.out.println("Percent of keys to update: " + updatePercent);<a name="line.489"></a>
+<span class="sourceLineNo">490</span>      System.out.println("Updater threads: " + numUpdaterThreads);<a name="line.490"></a>
+<span class="sourceLineNo">491</span>      System.out.println("Ignore nonce conflicts: " + ignoreConflicts);<a name="line.491"></a>
+<span class="sourceLineNo">492</span>    }<a name="line.492"></a>
+<span class="sourceLineNo">493</span><a name="line.493"></a>
+<span class="sourceLineNo">494</span>    if (isRead) {<a name="line.494"></a>
+<span class="sourceLineNo">495</span>      String[] readOpts = splitColonSeparated(OPT_READ, 1, 2);<a name="line.495"></a>
+<span class="sourceLineNo">496</span>      int colIndex = 0;<a name="line.496"></a>
+<span class="sourceLineNo">497</span>      verifyPercent = parseInt(readOpts[colIndex++], 0, 100);<a name="line.497"></a>
+<span class="sourceLineNo">498</span>      if (colIndex &lt; readOpts.length) {<a name="line.498"></a>
+<span class="sourceLineNo">499</span>        numReaderThreads = getNumThreads(readOpts[colIndex++]);<a name="line.499"></a>
+<span class="sourceLineNo">500</span>      }<a name="line.500"></a>
+<span class="sourceLineNo">501</span><a name="line.501"></a>
+<span class="sourceLineNo">502</span>      if (cmd.hasOption(OPT_MAX_READ_ERRORS)) {<a name="line.502"></a>
+<span class="sourceLineNo">503</span>        maxReadErrors = parseInt(cmd.getOptionValue(OPT_MAX_READ_ERRORS),<a name="line.503"></a>
+<span class="sourceLineNo">504</span>            0, Integer.MAX_VALUE);<a name="line.504"></a>
+<span class="sourceLineNo">505</span>      }<a name="line.505"></a>
+<span class="sourceLineNo">506</span><a name="line.506"></a>
+<span class="sourceLineNo">507</span>      if (cmd.hasOption(OPT_KEY_WINDOW)) {<a name="line.507"></a>
+<span class="sourceLineNo">508</span>        keyWindow = parseInt(cmd.getOptionValue(OPT_KEY_WINDOW),<a name="line.508"></a>
+<span class="sourceLineNo">509</span>            0, Integer.MAX_VALUE);<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>      if (cmd.hasOption(OPT_MULTIGET)) {<a name="line.512"></a>
+<span class="sourceLineNo">513</span>        multiGetBatchSize = parseInt(cmd.getOptionValue(OPT_MULTIGET),<a name="line.513"></a>
+<span class="sourceLineNo">514</span>            0, Integer.MAX_VALUE);<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>      System.out.println("Multi-gets (value of 1 means no multigets): " + multiGetBatchSize);<a name="line.517"></a>
+<span class="sourceLineNo">518</span>      System.out.println("Percent of keys to verify: " + verifyPercent);<a name="line.518"></a>
+<span class="sourceLineNo">519</span>      System.out.println("Reader threads: " + numReaderThreads);<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>    numTables = 1;<a name="line.522"></a>
+<span class="sourceLineNo">523</span>    if (cmd.hasOption(NUM_TABLES)) {<a name="line.523"></a>
+<span class="sourceLineNo">524</span>      numTables = parseInt(cmd.getOptionValue(NUM_TABLES), 1, Short.MAX_VALUE);<a name="line.524"></a>
+<span class="sourceLineNo">525</span>    }<a name="line.525"></a>
+<span class="sourceLineNo">526</span><a name="line.526"></a>
+<span class="sourceLineNo">527</span>    numRegionsPerServer = DEFAULT_NUM_REGIONS_PER_SERVER;<a name="line.527"></a>
+<span class="sourceLineNo">528</s

<TRUNCATED>

[30/43] hbase-site git commit: Published site at 7ab77518a2569e2416a50020393aa386e7734501.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/devapidocs/org/apache/hadoop/hbase/util/package-frame.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/util/package-frame.html b/devapidocs/org/apache/hadoop/hbase/util/package-frame.html
index 13c20a2..274d602 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/package-frame.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/package-frame.html
@@ -195,6 +195,8 @@
 <li><a href="RowBloomHashKey.html" title="class in org.apache.hadoop.hbase.util" target="classFrame">RowBloomHashKey</a></li>
 <li><a href="RowColBloomContext.html" title="class in org.apache.hadoop.hbase.util" target="classFrame">RowColBloomContext</a></li>
 <li><a href="RowColBloomHashKey.html" title="class in org.apache.hadoop.hbase.util" target="classFrame">RowColBloomHashKey</a></li>
+<li><a href="RowPrefixDelimiterBloomContext.html" title="class in org.apache.hadoop.hbase.util" target="classFrame">RowPrefixDelimiterBloomContext</a></li>
+<li><a href="RowPrefixFixedLengthBloomContext.html" title="class in org.apache.hadoop.hbase.util" target="classFrame">RowPrefixFixedLengthBloomContext</a></li>
 <li><a href="ServerCommandLine.html" title="class in org.apache.hadoop.hbase.util" target="classFrame">ServerCommandLine</a></li>
 <li><a href="ServerRegionReplicaUtil.html" title="class in org.apache.hadoop.hbase.util" target="classFrame">ServerRegionReplicaUtil</a></li>
 <li><a href="ShutdownHookManager.html" title="class in org.apache.hadoop.hbase.util" target="classFrame">ShutdownHookManager</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/devapidocs/org/apache/hadoop/hbase/util/package-summary.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/util/package-summary.html b/devapidocs/org/apache/hadoop/hbase/util/package-summary.html
index 6065723..e90e875 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/package-summary.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/package-summary.html
@@ -1158,6 +1158,18 @@
 </td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/RowPrefixDelimiterBloomContext.html" title="class in org.apache.hadoop.hbase.util">RowPrefixDelimiterBloomContext</a></td>
+<td class="colLast">
+<div class="block">Handles ROWPREFIX_DELIMITED bloom related context.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/RowPrefixFixedLengthBloomContext.html" title="class in org.apache.hadoop.hbase.util">RowPrefixFixedLengthBloomContext</a></td>
+<td class="colLast">
+<div class="block">Handles ROWPREFIX bloom related context.</div>
+</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/util/ServerCommandLine.html" title="class in org.apache.hadoop.hbase.util">ServerCommandLine</a></td>
 <td class="colLast">
 <div class="block">Base class for command lines that start up various HBase daemons.</div>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/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 adb78e4..a5d292d 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
@@ -147,7 +147,12 @@
 <li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/AvlUtil.AvlTreeIterator.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">AvlUtil.AvlTreeIterator</span></a>&lt;TNode&gt; (implements java.util.<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</a>&lt;E&gt;)</li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/BloomContext.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">BloomContext</span></a>
 <ul>
-<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/RowBloomContext.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">RowBloomContext</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/RowBloomContext.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">RowBloomContext</span></a>
+<ul>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/RowPrefixDelimiterBloomContext.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">RowPrefixDelimiterBloomContext</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/RowPrefixFixedLengthBloomContext.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">RowPrefixFixedLengthBloomContext</span></a></li>
+</ul>
+</li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/RowColBloomContext.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">RowColBloomContext</span></a></li>
 </ul>
 </li>
@@ -515,14 +520,14 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/IdReadWriteLock.ReferenceType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">IdReadWriteLock.ReferenceType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/ChecksumType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">ChecksumType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/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/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/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.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/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/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/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/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/ChecksumType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">ChecksumType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/devapidocs/org/apache/hadoop/hbase/util/package-use.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/util/package-use.html b/devapidocs/org/apache/hadoop/hbase/util/package-use.html
index b9f4205..f69c69c 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/package-use.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/package-use.html
@@ -2044,20 +2044,25 @@ service.</div>
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/util/class-use/RetryCounterFactory.html#org.apache.hadoop.hbase.util">RetryCounterFactory</a>&nbsp;</td>
 </tr>
 <tr class="altColor">
+<td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/util/class-use/RowBloomContext.html#org.apache.hadoop.hbase.util">RowBloomContext</a>
+<div class="block">Handles ROW bloom related context.</div>
+</td>
+</tr>
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/util/class-use/ShutdownHookManager.html#org.apache.hadoop.hbase.util">ShutdownHookManager</a>
 <div class="block">This class provides ShutdownHookManager shims for HBase to interact with the Hadoop 1.0.x and the
  Hadoop 2.0+ series.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/util/class-use/Threads.PrintThreadInfoHelper.html#org.apache.hadoop.hbase.util">Threads.PrintThreadInfoHelper</a>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/util/class-use/Triple.html#org.apache.hadoop.hbase.util">Triple</a>
 <div class="block">Utility class to manage a triple.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/util/class-use/WeakObjectPool.html#org.apache.hadoop.hbase.util">WeakObjectPool</a>
 <div class="block">A <code>WeakReference</code> based shared object pool.</div>
 </td>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/devapidocs/org/apache/hadoop/hbase/wal/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/wal/package-tree.html b/devapidocs/org/apache/hadoop/hbase/wal/package-tree.html
index bcb1724..c6caa9b 100644
--- a/devapidocs/org/apache/hadoop/hbase/wal/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/wal/package-tree.html
@@ -191,8 +191,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/RegionGroupingProvider.Strategies.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">RegionGroupingProvider.Strategies</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/WALFactory.Providers.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">WALFactory.Providers</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/RegionGroupingProvider.Strategies.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">RegionGroupingProvider.Strategies</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/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 6611401..19ecdc9 100644
--- a/devapidocs/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html
+++ b/devapidocs/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html
@@ -587,7 +587,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>startup</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#line.181">startup</a>(<a href="https://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)
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#line.183">startup</a>(<a href="https://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)
             throws <a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <dl>
@@ -603,7 +603,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>startup</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#line.197">startup</a>(<a href="https://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,
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#line.199">startup</a>(<a href="https://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)
             throws <a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
@@ -626,7 +626,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>createDir</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#line.286">createDir</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true" title="class or interface in java.io">File</a>&nbsp;dir)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#line.288">createDir</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true" title="class or interface in java.io">File</a>&nbsp;dir)
                 throws <a href="https://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>
@@ -640,7 +640,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>shutdown</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#line.299">shutdown</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#line.301">shutdown</a>()
               throws <a href="https://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>
@@ -654,7 +654,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>killCurrentActiveZooKeeperServer</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#line.333">killCurrentActiveZooKeeperServer</a>()
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#line.335">killCurrentActiveZooKeeperServer</a>()
                                      throws <a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <dl>
@@ -673,7 +673,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>killOneBackupZooKeeperServer</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#line.373">killOneBackupZooKeeperServer</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#line.375">killOneBackupZooKeeperServer</a>()
                                   throws <a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <div class="block">Kill one back up ZK servers.</div>
@@ -690,7 +690,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>waitForServerDown</h4>
-<pre>private static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#line.400">waitForServerDown</a>(int&nbsp;port,
+<pre>private static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#line.402">waitForServerDown</a>(int&nbsp;port,
                                          long&nbsp;timeout)
                                   throws <a href="https://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>
@@ -705,7 +705,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>waitForServerUp</h4>
-<pre>private static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#line.429">waitForServerUp</a>(int&nbsp;port,
+<pre>private static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#line.431">waitForServerUp</a>(int&nbsp;port,
                                        long&nbsp;timeout)
                                 throws <a href="https://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>
@@ -720,7 +720,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <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.469">getClientPort</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#line.471">getClientPort</a>()</pre>
 </li>
 </ul>
 <a name="getZooKeeperServers--">
@@ -729,7 +729,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getZooKeeperServers</h4>
-<pre><a href="https://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.474">getZooKeeperServers</a>()</pre>
+<pre><a href="https://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.476">getZooKeeperServers</a>()</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/devapidocs/overview-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/overview-tree.html b/devapidocs/overview-tree.html
index 19b564e..c83ea97 100644
--- a/devapidocs/overview-tree.html
+++ b/devapidocs/overview-tree.html
@@ -776,7 +776,12 @@
 <li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="org/apache/hadoop/hbase/io/hfile/BlockWithScanInfo.html" title="class in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">BlockWithScanInfo</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/BloomContext.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">BloomContext</span></a>
 <ul>
-<li type="circle">org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/RowBloomContext.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">RowBloomContext</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/RowBloomContext.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">RowBloomContext</span></a>
+<ul>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/RowPrefixDelimiterBloomContext.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">RowPrefixDelimiterBloomContext</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/RowPrefixFixedLengthBloomContext.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">RowPrefixFixedLengthBloomContext</span></a></li>
+</ul>
+</li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/RowColBloomContext.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">RowColBloomContext</span></a></li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/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 4a9a310..af8aab0 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 = "ddd30a2241ce625e178571bb7fc8984846b5432b";<a name="line.11"></a>
+<span class="sourceLineNo">011</span>  public static final String revision = "7ab77518a2569e2416a50020393aa386e7734501";<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 = "Fri Sep 21 14:44:27 UTC 2018";<a name="line.13"></a>
+<span class="sourceLineNo">013</span>  public static final String date = "Sat Sep 22 14:42:20 UTC 2018";<a name="line.13"></a>
 <span class="sourceLineNo">014</span>  public static final String url = "git://jenkins-websites1.apache.org/home/jenkins/jenkins-slave/workspace/hbase_generate_website/hbase";<a name="line.14"></a>
-<span class="sourceLineNo">015</span>  public static final String srcChecksum = "7f7a5aabd917d013e4527cc35a966c99";<a name="line.15"></a>
+<span class="sourceLineNo">015</span>  public static final String srcChecksum = "40cfe40c509b5c9b75784418a7a88604";<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/bbe517ae/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/CompoundBloomFilterWriter.MetaWriter.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/CompoundBloomFilterWriter.MetaWriter.html b/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/CompoundBloomFilterWriter.MetaWriter.html
index dfdf595..3531de3 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/CompoundBloomFilterWriter.MetaWriter.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/CompoundBloomFilterWriter.MetaWriter.html
@@ -182,12 +182,12 @@
 <span class="sourceLineNo">174</span>            + Bytes.toStringBinary(firstKeyInChunk));<a name="line.174"></a>
 <span class="sourceLineNo">175</span>      }<a name="line.175"></a>
 <span class="sourceLineNo">176</span>      // This will be done only once per chunk<a name="line.176"></a>
-<span class="sourceLineNo">177</span>      if (bloomType == BloomType.ROW) {<a name="line.177"></a>
-<span class="sourceLineNo">178</span>        firstKeyInChunk = CellUtil.copyRow(cell);<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      } else {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>        firstKeyInChunk =<a name="line.180"></a>
-<span class="sourceLineNo">181</span>            PrivateCellUtil<a name="line.181"></a>
-<span class="sourceLineNo">182</span>                .getCellKeySerializedAsKeyValueKey(PrivateCellUtil.createFirstOnRowCol(cell));<a name="line.182"></a>
+<span class="sourceLineNo">177</span>      if (bloomType == BloomType.ROWCOL) {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>        firstKeyInChunk =<a name="line.178"></a>
+<span class="sourceLineNo">179</span>            PrivateCellUtil<a name="line.179"></a>
+<span class="sourceLineNo">180</span>                .getCellKeySerializedAsKeyValueKey(PrivateCellUtil.createFirstOnRowCol(cell));<a name="line.180"></a>
+<span class="sourceLineNo">181</span>      } else {<a name="line.181"></a>
+<span class="sourceLineNo">182</span>        firstKeyInChunk = CellUtil.copyRow(cell);<a name="line.182"></a>
 <span class="sourceLineNo">183</span>      }<a name="line.183"></a>
 <span class="sourceLineNo">184</span>      allocateNewChunk();<a name="line.184"></a>
 <span class="sourceLineNo">185</span>    }<a name="line.185"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/CompoundBloomFilterWriter.ReadyChunk.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/CompoundBloomFilterWriter.ReadyChunk.html b/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/CompoundBloomFilterWriter.ReadyChunk.html
index dfdf595..3531de3 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/CompoundBloomFilterWriter.ReadyChunk.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/CompoundBloomFilterWriter.ReadyChunk.html
@@ -182,12 +182,12 @@
 <span class="sourceLineNo">174</span>            + Bytes.toStringBinary(firstKeyInChunk));<a name="line.174"></a>
 <span class="sourceLineNo">175</span>      }<a name="line.175"></a>
 <span class="sourceLineNo">176</span>      // This will be done only once per chunk<a name="line.176"></a>
-<span class="sourceLineNo">177</span>      if (bloomType == BloomType.ROW) {<a name="line.177"></a>
-<span class="sourceLineNo">178</span>        firstKeyInChunk = CellUtil.copyRow(cell);<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      } else {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>        firstKeyInChunk =<a name="line.180"></a>
-<span class="sourceLineNo">181</span>            PrivateCellUtil<a name="line.181"></a>
-<span class="sourceLineNo">182</span>                .getCellKeySerializedAsKeyValueKey(PrivateCellUtil.createFirstOnRowCol(cell));<a name="line.182"></a>
+<span class="sourceLineNo">177</span>      if (bloomType == BloomType.ROWCOL) {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>        firstKeyInChunk =<a name="line.178"></a>
+<span class="sourceLineNo">179</span>            PrivateCellUtil<a name="line.179"></a>
+<span class="sourceLineNo">180</span>                .getCellKeySerializedAsKeyValueKey(PrivateCellUtil.createFirstOnRowCol(cell));<a name="line.180"></a>
+<span class="sourceLineNo">181</span>      } else {<a name="line.181"></a>
+<span class="sourceLineNo">182</span>        firstKeyInChunk = CellUtil.copyRow(cell);<a name="line.182"></a>
 <span class="sourceLineNo">183</span>      }<a name="line.183"></a>
 <span class="sourceLineNo">184</span>      allocateNewChunk();<a name="line.184"></a>
 <span class="sourceLineNo">185</span>    }<a name="line.185"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/CompoundBloomFilterWriter.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/CompoundBloomFilterWriter.html b/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/CompoundBloomFilterWriter.html
index dfdf595..3531de3 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/CompoundBloomFilterWriter.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/CompoundBloomFilterWriter.html
@@ -182,12 +182,12 @@
 <span class="sourceLineNo">174</span>            + Bytes.toStringBinary(firstKeyInChunk));<a name="line.174"></a>
 <span class="sourceLineNo">175</span>      }<a name="line.175"></a>
 <span class="sourceLineNo">176</span>      // This will be done only once per chunk<a name="line.176"></a>
-<span class="sourceLineNo">177</span>      if (bloomType == BloomType.ROW) {<a name="line.177"></a>
-<span class="sourceLineNo">178</span>        firstKeyInChunk = CellUtil.copyRow(cell);<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      } else {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>        firstKeyInChunk =<a name="line.180"></a>
-<span class="sourceLineNo">181</span>            PrivateCellUtil<a name="line.181"></a>
-<span class="sourceLineNo">182</span>                .getCellKeySerializedAsKeyValueKey(PrivateCellUtil.createFirstOnRowCol(cell));<a name="line.182"></a>
+<span class="sourceLineNo">177</span>      if (bloomType == BloomType.ROWCOL) {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>        firstKeyInChunk =<a name="line.178"></a>
+<span class="sourceLineNo">179</span>            PrivateCellUtil<a name="line.179"></a>
+<span class="sourceLineNo">180</span>                .getCellKeySerializedAsKeyValueKey(PrivateCellUtil.createFirstOnRowCol(cell));<a name="line.180"></a>
+<span class="sourceLineNo">181</span>      } else {<a name="line.181"></a>
+<span class="sourceLineNo">182</span>        firstKeyInChunk = CellUtil.copyRow(cell);<a name="line.182"></a>
 <span class="sourceLineNo">183</span>      }<a name="line.183"></a>
 <span class="sourceLineNo">184</span>      allocateNewChunk();<a name="line.184"></a>
 <span class="sourceLineNo">185</span>    }<a name="line.185"></a>


[12/43] hbase-site git commit: Published site at 7ab77518a2569e2416a50020393aa386e7734501.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseClassTestRule.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseClassTestRule.html b/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseClassTestRule.html
index 15ad685..1e08329 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseClassTestRule.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseClassTestRule.html
@@ -4695,310 +4695,314 @@
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestScannerWithBulkload.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerWithBulkload.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRowPrefixBloomFilter.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestDefaultStoreEngine.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestDefaultStoreEngine.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestScannerWithBulkload.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerWithBulkload.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestHMobStore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHMobStore.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestDefaultStoreEngine.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestDefaultStoreEngine.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestSplitTransactionOnCluster.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestHMobStore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHMobStore.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestMetricsRegion.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMetricsRegion.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestSplitTransactionOnCluster.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestMiniBatchOperationInProgress.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMiniBatchOperationInProgress.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestMetricsRegion.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMetricsRegion.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestStoreFileScannerWithTagCompression.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreFileScannerWithTagCompression.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestMiniBatchOperationInProgress.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMiniBatchOperationInProgress.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestScannerWithCorruptHFile.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerWithCorruptHFile.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestStoreFileScannerWithTagCompression.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreFileScannerWithTagCompression.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestCompactingMemStore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactingMemStore.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestScannerWithCorruptHFile.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerWithCorruptHFile.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestEndToEndSplitTransaction.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestEndToEndSplitTransaction.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestCompactingMemStore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactingMemStore.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestScannerHeartbeatMessages.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerHeartbeatMessages.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestEndToEndSplitTransaction.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestEndToEndSplitTransaction.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestIsDeleteFailure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestIsDeleteFailure.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestScannerHeartbeatMessages.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerHeartbeatMessages.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestStoreFileRefresherChore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreFileRefresherChore.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestIsDeleteFailure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestIsDeleteFailure.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestRegionMove.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionMove.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestStoreFileRefresherChore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreFileRefresherChore.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestRegionServerMetrics.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerMetrics.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRegionMove.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionMove.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestSwitchToStreamRead.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSwitchToStreamRead.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRegionServerMetrics.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerMetrics.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestKeepDeletes.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestKeepDeletes.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestSwitchToStreamRead.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSwitchToStreamRead.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestResettingCounters.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestResettingCounters.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestKeepDeletes.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestKeepDeletes.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestCacheOnWriteInSchema.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCacheOnWriteInSchema.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestResettingCounters.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestResettingCounters.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestFSErrorsExposed.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestFSErrorsExposed.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestCacheOnWriteInSchema.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCacheOnWriteInSchema.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestMetricsTableLatencies.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMetricsTableLatencies.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestFSErrorsExposed.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestFSErrorsExposed.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestCellFlatSet.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCellFlatSet.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestMetricsTableLatencies.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMetricsTableLatencies.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestSettingTimeoutOnBlockingPoint.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSettingTimeoutOnBlockingPoint.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestCellFlatSet.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCellFlatSet.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestHRegionReplayEvents.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestSettingTimeoutOnBlockingPoint.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSettingTimeoutOnBlockingPoint.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestMetricsTableAggregate.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMetricsTableAggregate.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestHRegionReplayEvents.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestParallelPut.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestParallelPut.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestMetricsTableAggregate.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMetricsTableAggregate.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestRegionReplicasWithModifyTable.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionReplicasWithModifyTable.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestParallelPut.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestParallelPut.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestDateTieredCompactionPolicy.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestDateTieredCompactionPolicy.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRegionReplicasWithModifyTable.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionReplicasWithModifyTable.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestKeyValueHeap.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestKeyValueHeap.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestDateTieredCompactionPolicy.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestDateTieredCompactionPolicy.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestRegionReplicasAreDistributed.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionReplicasAreDistributed.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestKeyValueHeap.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestKeyValueHeap.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestRemoveRegionMetrics.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRemoveRegionMetrics.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRegionReplicasAreDistributed.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionReplicasAreDistributed.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestCompactingToCellFlatMapMemStore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRemoveRegionMetrics.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRemoveRegionMetrics.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestRecoveredEdits.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRecoveredEdits.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestCompactingToCellFlatMapMemStore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestHRegionOnCluster.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionOnCluster.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRecoveredEdits.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRecoveredEdits.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestHStore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHStore.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestHRegionOnCluster.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionOnCluster.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestSplitLogWorker.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSplitLogWorker.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestHStore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHStore.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestMetricsHeapMemoryManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMetricsHeapMemoryManager.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestSplitLogWorker.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSplitLogWorker.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestRegionServerHostname.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerHostname.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestMetricsHeapMemoryManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMetricsHeapMemoryManager.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestServerNonceManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestServerNonceManager.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRegionServerHostname.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerHostname.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestSyncTimeRangeTracker.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSyncTimeRangeTracker.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestServerNonceManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestServerNonceManager.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestEncryptionRandomKeying.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestEncryptionRandomKeying.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestSyncTimeRangeTracker.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSyncTimeRangeTracker.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestPerColumnFamilyFlush.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestPerColumnFamilyFlush.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestEncryptionRandomKeying.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestEncryptionRandomKeying.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestSeekOptimizations.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestPerColumnFamilyFlush.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestPerColumnFamilyFlush.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestReversibleScanners.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestReversibleScanners.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestSeekOptimizations.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestRegionServerOnlineConfigChange.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerOnlineConfigChange.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestReversibleScanners.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestReversibleScanners.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestMasterAddressTracker.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMasterAddressTracker.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRegionServerOnlineConfigChange.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerOnlineConfigChange.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestGetClosestAtOrBefore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestGetClosestAtOrBefore.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestMasterAddressTracker.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMasterAddressTracker.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestMinVersions.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMinVersions.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestGetClosestAtOrBefore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestGetClosestAtOrBefore.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestMemStoreChunkPool.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMemStoreChunkPool.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestMinVersions.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMinVersions.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestAtomicOperation.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestMemStoreChunkPool.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMemStoreChunkPool.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestCompactionArchiveIOException.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactionArchiveIOException.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestAtomicOperation.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestHdfsSnapshotHRegion.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHdfsSnapshotHRegion.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestCompactionArchiveIOException.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactionArchiveIOException.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestCompactionLifeCycleTracker.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactionLifeCycleTracker.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestHdfsSnapshotHRegion.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHdfsSnapshotHRegion.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestClearRegionBlockCache.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestClearRegionBlockCache.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestCompactionLifeCycleTracker.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactionLifeCycleTracker.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestRegionSplitPolicy.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionSplitPolicy.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestClearRegionBlockCache.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestClearRegionBlockCache.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestDateTieredCompactionPolicyOverflow.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestDateTieredCompactionPolicyOverflow.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRegionSplitPolicy.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionSplitPolicy.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestRSKilledWhenInitializing.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRSKilledWhenInitializing.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestDateTieredCompactionPolicyOverflow.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestDateTieredCompactionPolicyOverflow.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestRegionServerAccounting.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerAccounting.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRSKilledWhenInitializing.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRSKilledWhenInitializing.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestCompactionWithCoprocessor.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactionWithCoprocessor.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRegionServerAccounting.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerAccounting.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestCompactionInDeadRegionServer.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactionInDeadRegionServer.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestCompactionWithCoprocessor.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactionWithCoprocessor.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestScannerRetriableFailure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerRetriableFailure.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestCompactionInDeadRegionServer.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactionInDeadRegionServer.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestRegionServerReadRequestMetrics.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerReadRequestMetrics.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestScannerRetriableFailure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerRetriableFailure.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestTimestampFilterSeekHint.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestTimestampFilterSeekHint.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRegionServerReadRequestMetrics.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerReadRequestMetrics.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestCleanupCompactedFileOnRegionClose.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCleanupCompactedFileOnRegionClose.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestTimestampFilterSeekHint.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestTimestampFilterSeekHint.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestMemstoreLABWithoutPool.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMemstoreLABWithoutPool.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestCleanupCompactedFileOnRegionClose.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCleanupCompactedFileOnRegionClose.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestMultiVersionConcurrencyControl.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMultiVersionConcurrencyControl.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestMemstoreLABWithoutPool.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMemstoreLABWithoutPool.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestScanWithBloomError.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScanWithBloomError.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestMultiVersionConcurrencyControl.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMultiVersionConcurrencyControl.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestRSStatusServlet.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRSStatusServlet.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestScanWithBloomError.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScanWithBloomError.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestClusterId.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestClusterId.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRSStatusServlet.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRSStatusServlet.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestStripeStoreFileManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStripeStoreFileManager.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestClusterId.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestClusterId.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestMetricsRegionServer.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMetricsRegionServer.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestStripeStoreFileManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStripeStoreFileManager.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestRegionReplicasWithRestartScenarios.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionReplicasWithRestartScenarios.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestMetricsRegionServer.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMetricsRegionServer.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestWideScanner.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestWideScanner.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRegionReplicasWithRestartScenarios.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionReplicasWithRestartScenarios.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestHRegionServerBulkLoadWithOldClient.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionServerBulkLoadWithOldClient.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestWideScanner.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestWideScanner.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestEncryptionKeyRotation.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestEncryptionKeyRotation.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestHRegionServerBulkLoadWithOldClient.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionServerBulkLoadWithOldClient.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestHRegionServerBulkLoadWithOldSecureEndpoint.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionServerBulkLoadWithOldSecureEndpoint.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestEncryptionKeyRotation.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestEncryptionKeyRotation.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
+<td class="colLast"><span class="typeNameLabel">TestHRegionServerBulkLoadWithOldSecureEndpoint.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionServerBulkLoadWithOldSecureEndpoint.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestServerCustomProtocol.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestServerCustomProtocol.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 </tbody>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseTestingUtility.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseTestingUtility.html b/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseTestingUtility.html
index 41dc62c..fb4590a 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseTestingUtility.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseTestingUtility.html
@@ -2909,237 +2909,241 @@
 </tr>
 <tr class="rowColor">
 <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"><span class="typeNameLabel">TestScannerWithBulkload.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerWithBulkload.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRowPrefixBloomFilter.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
 <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"><span class="typeNameLabel">TestHMobStore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHMobStore.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestScannerWithBulkload.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerWithBulkload.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <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"><span class="typeNameLabel">TestStoreFileScannerWithTagCompression.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreFileScannerWithTagCompression.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestHMobStore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHMobStore.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
 <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"><span class="typeNameLabel">TestScannerWithCorruptHFile.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerWithCorruptHFile.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestStoreFileScannerWithTagCompression.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreFileScannerWithTagCompression.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <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"><span class="typeNameLabel">TestEndToEndSplitTransaction.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestEndToEndSplitTransaction.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestScannerWithCorruptHFile.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerWithCorruptHFile.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
 <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"><span class="typeNameLabel">TestScannerHeartbeatMessages.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerHeartbeatMessages.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestEndToEndSplitTransaction.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestEndToEndSplitTransaction.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <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"><span class="typeNameLabel">TestIsDeleteFailure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestIsDeleteFailure.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestScannerHeartbeatMessages.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerHeartbeatMessages.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
 <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"><span class="typeNameLabel">TestIsDeleteFailure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestIsDeleteFailure.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestStoreFileRefresherChore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreFileRefresherChore.html#TEST_UTIL">TEST_UTIL</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"><span class="typeNameLabel">TestRegionMove.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionMove.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <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"><span class="typeNameLabel">TestRegionServerMetrics.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerMetrics.html#TEST_UTIL">TEST_UTIL</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"><span class="typeNameLabel">TestCacheOnWriteInSchema.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCacheOnWriteInSchema.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <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"><span class="typeNameLabel">TestSettingTimeoutOnBlockingPoint.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSettingTimeoutOnBlockingPoint.html#TEST_UTIL">TEST_UTIL</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"><span class="typeNameLabel">TestHRegionReplayEvents.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <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"><span class="typeNameLabel">TestRemoveRegionMetrics.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRemoveRegionMetrics.html#TEST_UTIL">TEST_UTIL</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"><span class="typeNameLabel">TestRecoveredEdits.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRecoveredEdits.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <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"><span class="typeNameLabel">TestHRegionOnCluster.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionOnCluster.html#TEST_UTIL">TEST_UTIL</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"><span class="typeNameLabel">TestHStore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHStore.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <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"><span class="typeNameLabel">TestSplitLogWorker.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSplitLogWorker.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestRegionServerHostname.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerHostname.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <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"><span class="typeNameLabel">TestEncryptionRandomKeying.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestEncryptionRandomKeying.html#TEST_UTIL">TEST_UTIL</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"><span class="typeNameLabel">TestPerColumnFamilyFlush.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestPerColumnFamilyFlush.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <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"><span class="typeNameLabel">TestSeekOptimizations.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>(package private) <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestReversibleScanners.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestReversibleScanners.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <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"><span class="typeNameLabel">TestMasterAddressTracker.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMasterAddressTracker.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestAtomicOperation.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <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"><span class="typeNameLabel">TestHdfsSnapshotHRegion.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHdfsSnapshotHRegion.html#TEST_UTIL">TEST_UTIL</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"><span class="typeNameLabel">TestRegionServerReadRequestMetrics.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerReadRequestMetrics.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <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"><span class="typeNameLabel">TestTimestampFilterSeekHint.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestTimestampFilterSeekHint.html#TEST_UTIL">TEST_UTIL</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"><span class="typeNameLabel">TestScanWithBloomError.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScanWithBloomError.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestClusterId.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestClusterId.html#TEST_UTIL">TEST_UTIL</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"><span class="typeNameLabel">TestStripeStoreFileManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStripeStoreFileManager.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <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"><span class="typeNameLabel">TestEncryptionKeyRotation.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestEncryptionKeyRotation.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>(package private) static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestMutateRowsRecovery.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMutateRowsRecovery.html#TESTING_UTIL">TESTING_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>(package private) static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestSplitTransactionOnCluster.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.html#TESTING_UTIL">TESTING_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">EncodedSeekPerformanceTest.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/EncodedSeekPerformanceTest.html#testingUtility">testingUtility</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestCompactionArchiveConcurrentClose.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactionArchiveConcurrentClose.html#testUtil">testUtil</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestRegionServerAbort.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerAbort.html#testUtil">testUtil</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestSplitWalDataLoss.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSplitWalDataLoss.html#testUtil">testUtil</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestRegionServerReportForDuty.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerReportForDuty.html#testUtil">testUtil</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestCompactionArchiveIOException.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactionArchiveIOException.html#testUtil">testUtil</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"><span class="typeNameLabel">TestCompactionFileNotFound.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactionFileNotFound.html#util">util</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>(package private) <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestFSErrorsExposed.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestFSErrorsExposed.html#util">util</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"><span class="typeNameLabel">TestCleanupCompactedFileOnRegionClose.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCleanupCompactedFileOnRegionClose.html#util">util</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <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"><span class="typeNameLabel">TestServerCustomProtocol.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestServerCustomProtocol.html#util">util</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"><span class="typeNameLabel">TestShutdownWhileWALBroken.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestShutdownWhileWALBroken.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <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"><span class="typeNameLabel">TestHeapMemoryManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHeapMemoryManager.html#UTIL">UTIL</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"><span class="typeNameLabel">TestMajorCompaction.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMajorCompaction.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <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"><span class="typeNameLabel">TestFlushLifeCycleTracker.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestFlushLifeCycleTracker.html#UTIL">UTIL</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"><span class="typeNameLabel">TestMinorCompaction.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMinorCompaction.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <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"><span class="typeNameLabel">TestRegionServerCrashDisableWAL.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerCrashDisableWAL.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestHRegionServerBulkLoad.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionServerBulkLoad.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <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"><span class="typeNameLabel">TestOpenSeqNumUnexpectedIncrease.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestOpenSeqNumUnexpectedIncrease.html#UTIL">UTIL</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"><span class="typeNameLabel">TestMobStoreCompaction.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMobStoreCompaction.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <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"><span class="typeNameLabel">TestCompaction.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompaction.html#UTIL">UTIL</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"><span class="typeNameLabel">TestSwitchToStreamRead.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSwitchToStreamRead.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <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"><span class="typeNameLabel">TestGetClosestAtOrBefore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestGetClosestAtOrBefore.html#UTIL">UTIL</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"><span class="typeNameLabel">TestCompactionLifeCycleTracker.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactionLifeCycleTracker.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <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"><span class="typeNameLabel">TestCompactionInDeadRegionServer.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactionInDeadRegionServer.html#UTIL">UTIL</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"><span class="typeNameLabel">TestScannerRetriableFailure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerRetriableFailure.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>


[23/43] hbase-site git commit: Published site at 7ab77518a2569e2416a50020393aa386e7734501.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.TableDescriptorGetter.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.TableDescriptorGetter.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.TableDescriptorGetter.html
index e5feb84..0cf012a 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.TableDescriptorGetter.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.TableDescriptorGetter.html
@@ -72,3861 +72,3875 @@
 <span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.ClusterMetrics;<a name="line.64"></a>
 <span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.ClusterMetrics.Option;<a name="line.65"></a>
 <span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.ClusterMetricsBuilder;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.HBaseIOException;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.HBaseInterfaceAudience;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.HConstants;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.InvalidFamilyOperationException;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.MasterNotRunningException;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.MetaTableAccessor;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.PleaseHoldException;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.ReplicationPeerNotFoundException;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.ServerName;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.TableDescriptors;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.TableName;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.TableNotDisabledException;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.TableNotFoundException;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.UnknownRegionException;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.client.MasterSwitchType;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.client.RegionInfoBuilder;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.client.Result;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.client.TableState;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.coprocessor.CoprocessorHost;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.exceptions.MergeRegionException;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.executor.ExecutorType;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.favored.FavoredNodesManager;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.favored.FavoredNodesPromoter;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.http.InfoServer;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcUtils;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.ipc.ServerNotRunningYetException;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.log.HBaseMarkers;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.master.MasterRpcServices.BalanceSwitchMode;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.master.assignment.AssignProcedure;<a name="line.104"></a>
-<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.master.assignment.AssignmentManager;<a name="line.105"></a>
-<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.master.assignment.MergeTableRegionsProcedure;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.master.assignment.MoveRegionProcedure;<a name="line.107"></a>
-<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.master.assignment.RegionStateNode;<a name="line.108"></a>
-<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.master.assignment.RegionStates;<a name="line.109"></a>
-<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.master.assignment.TransitRegionStateProcedure;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.master.assignment.UnassignProcedure;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.master.balancer.BalancerChore;<a name="line.112"></a>
-<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.master.balancer.BaseLoadBalancer;<a name="line.113"></a>
-<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.master.balancer.ClusterStatusChore;<a name="line.114"></a>
-<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.master.balancer.LoadBalancerFactory;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.master.cleaner.CleanerChore;<a name="line.116"></a>
-<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.master.cleaner.HFileCleaner;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.master.cleaner.LogCleaner;<a name="line.118"></a>
-<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.master.cleaner.ReplicationBarrierCleaner;<a name="line.119"></a>
-<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.master.locking.LockManager;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.master.normalizer.NormalizationPlan;<a name="line.121"></a>
-<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.master.normalizer.NormalizationPlan.PlanType;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizer;<a name="line.123"></a>
-<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizerChore;<a name="line.124"></a>
-<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizerFactory;<a name="line.125"></a>
-<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.master.procedure.CreateTableProcedure;<a name="line.126"></a>
-<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.master.procedure.DeleteNamespaceProcedure;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.master.procedure.DeleteTableProcedure;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.master.procedure.DisableTableProcedure;<a name="line.129"></a>
-<span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.master.procedure.EnableTableProcedure;<a name="line.130"></a>
-<span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.master.procedure.InitMetaProcedure;<a name="line.131"></a>
-<span class="sourceLineNo">132</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureConstants;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv;<a name="line.133"></a>
-<span class="sourceLineNo">134</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureScheduler;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureUtil;<a name="line.135"></a>
-<span class="sourceLineNo">136</span>import org.apache.hadoop.hbase.master.procedure.ModifyTableProcedure;<a name="line.136"></a>
-<span class="sourceLineNo">137</span>import org.apache.hadoop.hbase.master.procedure.ProcedurePrepareLatch;<a name="line.137"></a>
-<span class="sourceLineNo">138</span>import org.apache.hadoop.hbase.master.procedure.RecoverMetaProcedure;<a name="line.138"></a>
-<span class="sourceLineNo">139</span>import org.apache.hadoop.hbase.master.procedure.ServerCrashProcedure;<a name="line.139"></a>
-<span class="sourceLineNo">140</span>import org.apache.hadoop.hbase.master.procedure.TruncateTableProcedure;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.master.replication.AbstractPeerProcedure;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.master.replication.AddPeerProcedure;<a name="line.142"></a>
-<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.master.replication.DisablePeerProcedure;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.master.replication.EnablePeerProcedure;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.master.replication.RemovePeerProcedure;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.master.replication.ReplicationPeerManager;<a name="line.146"></a>
-<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.master.replication.SyncReplicationReplayWALManager;<a name="line.147"></a>
-<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.master.replication.TransitPeerSyncReplicationStateProcedure;<a name="line.148"></a>
-<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.master.replication.UpdatePeerConfigProcedure;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.master.snapshot.SnapshotManager;<a name="line.150"></a>
-<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.master.zksyncer.MasterAddressSyncer;<a name="line.151"></a>
-<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.master.zksyncer.MetaLocationSyncer;<a name="line.152"></a>
-<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.mob.MobConstants;<a name="line.153"></a>
-<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.monitoring.MemoryBoundedLogMessageBuffer;<a name="line.154"></a>
-<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.155"></a>
-<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.156"></a>
-<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.procedure.MasterProcedureManagerHost;<a name="line.157"></a>
-<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.procedure.flush.MasterFlushTableProcedureManager;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.procedure2.LockedResource;<a name="line.159"></a>
-<span class="sourceLineNo">160</span>import org.apache.hadoop.hbase.procedure2.Procedure;<a name="line.160"></a>
-<span class="sourceLineNo">161</span>import org.apache.hadoop.hbase.procedure2.ProcedureEvent;<a name="line.161"></a>
-<span class="sourceLineNo">162</span>import org.apache.hadoop.hbase.procedure2.ProcedureExecutor;<a name="line.162"></a>
-<span class="sourceLineNo">163</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureDispatcher.RemoteProcedure;<a name="line.163"></a>
-<span class="sourceLineNo">164</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureException;<a name="line.164"></a>
-<span class="sourceLineNo">165</span>import org.apache.hadoop.hbase.procedure2.store.wal.WALProcedureStore;<a name="line.165"></a>
-<span class="sourceLineNo">166</span>import org.apache.hadoop.hbase.quotas.MasterQuotaManager;<a name="line.166"></a>
-<span class="sourceLineNo">167</span>import org.apache.hadoop.hbase.quotas.MasterQuotasObserver;<a name="line.167"></a>
-<span class="sourceLineNo">168</span>import org.apache.hadoop.hbase.quotas.QuotaObserverChore;<a name="line.168"></a>
-<span class="sourceLineNo">169</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.169"></a>
-<span class="sourceLineNo">170</span>import org.apache.hadoop.hbase.quotas.SnapshotQuotaObserverChore;<a name="line.170"></a>
-<span class="sourceLineNo">171</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifier;<a name="line.171"></a>
-<span class="sourceLineNo">172</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifierFactory;<a name="line.172"></a>
-<span class="sourceLineNo">173</span>import org.apache.hadoop.hbase.regionserver.DefaultStoreEngine;<a name="line.173"></a>
-<span class="sourceLineNo">174</span>import org.apache.hadoop.hbase.regionserver.HRegionServer;<a name="line.174"></a>
-<span class="sourceLineNo">175</span>import org.apache.hadoop.hbase.regionserver.HStore;<a name="line.175"></a>
-<span class="sourceLineNo">176</span>import org.apache.hadoop.hbase.regionserver.RSRpcServices;<a name="line.176"></a>
-<span class="sourceLineNo">177</span>import org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost;<a name="line.177"></a>
-<span class="sourceLineNo">178</span>import org.apache.hadoop.hbase.regionserver.RegionSplitPolicy;<a name="line.178"></a>
-<span class="sourceLineNo">179</span>import org.apache.hadoop.hbase.regionserver.compactions.ExploringCompactionPolicy;<a name="line.179"></a>
-<span class="sourceLineNo">180</span>import org.apache.hadoop.hbase.regionserver.compactions.FIFOCompactionPolicy;<a name="line.180"></a>
-<span class="sourceLineNo">181</span>import org.apache.hadoop.hbase.replication.ReplicationException;<a name="line.181"></a>
-<span class="sourceLineNo">182</span>import org.apache.hadoop.hbase.replication.ReplicationLoadSource;<a name="line.182"></a>
-<span class="sourceLineNo">183</span>import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;<a name="line.183"></a>
-<span class="sourceLineNo">184</span>import org.apache.hadoop.hbase.replication.ReplicationPeerDescription;<a name="line.184"></a>
-<span class="sourceLineNo">185</span>import org.apache.hadoop.hbase.replication.ReplicationUtils;<a name="line.185"></a>
-<span class="sourceLineNo">186</span>import org.apache.hadoop.hbase.replication.SyncReplicationState;<a name="line.186"></a>
-<span class="sourceLineNo">187</span>import org.apache.hadoop.hbase.replication.master.ReplicationHFileCleaner;<a name="line.187"></a>
-<span class="sourceLineNo">188</span>import org.apache.hadoop.hbase.replication.master.ReplicationLogCleaner;<a name="line.188"></a>
-<span class="sourceLineNo">189</span>import org.apache.hadoop.hbase.replication.master.ReplicationPeerConfigUpgrader;<a name="line.189"></a>
-<span class="sourceLineNo">190</span>import org.apache.hadoop.hbase.security.AccessDeniedException;<a name="line.190"></a>
-<span class="sourceLineNo">191</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.191"></a>
-<span class="sourceLineNo">192</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.192"></a>
-<span class="sourceLineNo">193</span>import org.apache.hadoop.hbase.util.Addressing;<a name="line.193"></a>
-<span class="sourceLineNo">194</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.194"></a>
-<span class="sourceLineNo">195</span>import org.apache.hadoop.hbase.util.CompressionTest;<a name="line.195"></a>
-<span class="sourceLineNo">196</span>import org.apache.hadoop.hbase.util.EncryptionTest;<a name="line.196"></a>
-<span class="sourceLineNo">197</span>import org.apache.hadoop.hbase.util.HBaseFsck;<a name="line.197"></a>
-<span class="sourceLineNo">198</span>import org.apache.hadoop.hbase.util.HFileArchiveUtil;<a name="line.198"></a>
-<span class="sourceLineNo">199</span>import org.apache.hadoop.hbase.util.HasThread;<a name="line.199"></a>
-<span class="sourceLineNo">200</span>import org.apache.hadoop.hbase.util.IdLock;<a name="line.200"></a>
-<span class="sourceLineNo">201</span>import org.apache.hadoop.hbase.util.ModifyRegionUtils;<a name="line.201"></a>
-<span class="sourceLineNo">202</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.202"></a>
-<span class="sourceLineNo">203</span>import org.apache.hadoop.hbase.util.RetryCounter;<a name="line.203"></a>
-<span class="sourceLineNo">204</span>import org.apache.hadoop.hbase.util.RetryCounterFactory;<a name="line.204"></a>
-<span class="sourceLineNo">205</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.205"></a>
-<span class="sourceLineNo">206</span>import org.apache.hadoop.hbase.util.VersionInfo;<a name="line.206"></a>
-<span class="sourceLineNo">207</span>import org.apache.hadoop.hbase.zookeeper.LoadBalancerTracker;<a name="line.207"></a>
-<span class="sourceLineNo">208</span>import org.apache.hadoop.hbase.zookeeper.MasterAddressTracker;<a name="line.208"></a>
-<span class="sourceLineNo">209</span>import org.apache.hadoop.hbase.zookeeper.MasterMaintenanceModeTracker;<a name="line.209"></a>
-<span class="sourceLineNo">210</span>import org.apache.hadoop.hbase.zookeeper.RegionNormalizerTracker;<a name="line.210"></a>
-<span class="sourceLineNo">211</span>import org.apache.hadoop.hbase.zookeeper.ZKClusterId;<a name="line.211"></a>
-<span class="sourceLineNo">212</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.212"></a>
-<span class="sourceLineNo">213</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.213"></a>
-<span class="sourceLineNo">214</span>import org.apache.hadoop.hbase.zookeeper.ZNodePaths;<a name="line.214"></a>
-<span class="sourceLineNo">215</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.215"></a>
-<span class="sourceLineNo">216</span>import org.apache.zookeeper.KeeperException;<a name="line.216"></a>
-<span class="sourceLineNo">217</span>import org.eclipse.jetty.server.Server;<a name="line.217"></a>
-<span class="sourceLineNo">218</span>import org.eclipse.jetty.server.ServerConnector;<a name="line.218"></a>
-<span class="sourceLineNo">219</span>import org.eclipse.jetty.servlet.ServletHolder;<a name="line.219"></a>
-<span class="sourceLineNo">220</span>import org.eclipse.jetty.webapp.WebAppContext;<a name="line.220"></a>
-<span class="sourceLineNo">221</span>import org.slf4j.Logger;<a name="line.221"></a>
-<span class="sourceLineNo">222</span>import org.slf4j.LoggerFactory;<a name="line.222"></a>
-<span class="sourceLineNo">223</span><a name="line.223"></a>
-<span class="sourceLineNo">224</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.224"></a>
-<span class="sourceLineNo">225</span>import org.apache.hbase.thirdparty.com.google.common.collect.ImmutableSet;<a name="line.225"></a>
-<span class="sourceLineNo">226</span>import org.apache.hbase.thirdparty.com.google.common.collect.Lists;<a name="line.226"></a>
-<span class="sourceLineNo">227</span>import org.apache.hbase.thirdparty.com.google.common.collect.Maps;<a name="line.227"></a>
-<span class="sourceLineNo">228</span><a name="line.228"></a>
-<span class="sourceLineNo">229</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.229"></a>
-<span class="sourceLineNo">230</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoResponse.CompactionState;<a name="line.230"></a>
-<span class="sourceLineNo">231</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.Quotas;<a name="line.231"></a>
-<span class="sourceLineNo">232</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.SpaceViolationPolicy;<a name="line.232"></a>
-<span class="sourceLineNo">233</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;<a name="line.233"></a>
-<span class="sourceLineNo">234</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos;<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> * HMaster is the "master server" for HBase. An HBase cluster has one active<a name="line.237"></a>
-<span class="sourceLineNo">238</span> * master.  If many masters are started, all compete.  Whichever wins goes on to<a name="line.238"></a>
-<span class="sourceLineNo">239</span> * run the cluster.  All others park themselves in their constructor until<a name="line.239"></a>
-<span class="sourceLineNo">240</span> * master or cluster shutdown or until the active master loses its lease in<a name="line.240"></a>
-<span class="sourceLineNo">241</span> * zookeeper.  Thereafter, all running master jostle to take over master role.<a name="line.241"></a>
-<span class="sourceLineNo">242</span> *<a name="line.242"></a>
-<span class="sourceLineNo">243</span> * &lt;p&gt;The Master can be asked shutdown the cluster. See {@link #shutdown()}.  In<a name="line.243"></a>
-<span class="sourceLineNo">244</span> * this case it will tell all regionservers to go down and then wait on them<a name="line.244"></a>
-<span class="sourceLineNo">245</span> * all reporting in that they are down.  This master will then shut itself down.<a name="line.245"></a>
-<span class="sourceLineNo">246</span> *<a name="line.246"></a>
-<span class="sourceLineNo">247</span> * &lt;p&gt;You can also shutdown just this master.  Call {@link #stopMaster()}.<a name="line.247"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.CompoundConfiguration;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.HBaseIOException;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.HBaseInterfaceAudience;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.HConstants;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.InvalidFamilyOperationException;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.MasterNotRunningException;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.MetaTableAccessor;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.PleaseHoldException;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.ReplicationPeerNotFoundException;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.ServerName;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.TableDescriptors;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.TableName;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.TableNotDisabledException;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.TableNotFoundException;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.UnknownRegionException;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.client.MasterSwitchType;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.client.RegionInfoBuilder;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.client.Result;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.client.TableState;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.coprocessor.CoprocessorHost;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.exceptions.MergeRegionException;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.executor.ExecutorType;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.favored.FavoredNodesManager;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.favored.FavoredNodesPromoter;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.http.InfoServer;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcUtils;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.101"></a>
+<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.ipc.ServerNotRunningYetException;<a name="line.102"></a>
+<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.log.HBaseMarkers;<a name="line.103"></a>
+<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.master.MasterRpcServices.BalanceSwitchMode;<a name="line.104"></a>
+<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.master.assignment.AssignProcedure;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.master.assignment.AssignmentManager;<a name="line.106"></a>
+<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.master.assignment.MergeTableRegionsProcedure;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.master.assignment.MoveRegionProcedure;<a name="line.108"></a>
+<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.master.assignment.RegionStateNode;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.master.assignment.RegionStates;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.master.assignment.TransitRegionStateProcedure;<a name="line.111"></a>
+<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.master.assignment.UnassignProcedure;<a name="line.112"></a>
+<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.master.balancer.BalancerChore;<a name="line.113"></a>
+<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.master.balancer.BaseLoadBalancer;<a name="line.114"></a>
+<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.master.balancer.ClusterStatusChore;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.master.balancer.LoadBalancerFactory;<a name="line.116"></a>
+<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.master.cleaner.CleanerChore;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.master.cleaner.HFileCleaner;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.master.cleaner.LogCleaner;<a name="line.119"></a>
+<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.master.cleaner.ReplicationBarrierCleaner;<a name="line.120"></a>
+<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.master.locking.LockManager;<a name="line.121"></a>
+<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.master.normalizer.NormalizationPlan;<a name="line.122"></a>
+<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.master.normalizer.NormalizationPlan.PlanType;<a name="line.123"></a>
+<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizer;<a name="line.124"></a>
+<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizerChore;<a name="line.125"></a>
+<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizerFactory;<a name="line.126"></a>
+<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.master.procedure.CreateTableProcedure;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.master.procedure.DeleteNamespaceProcedure;<a name="line.128"></a>
+<span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.master.procedure.DeleteTableProcedure;<a name="line.129"></a>
+<span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.master.procedure.DisableTableProcedure;<a name="line.130"></a>
+<span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.master.procedure.EnableTableProcedure;<a name="line.131"></a>
+<span class="sourceLineNo">132</span>import org.apache.hadoop.hbase.master.procedure.InitMetaProcedure;<a name="line.132"></a>
+<span class="sourceLineNo">133</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureConstants;<a name="line.133"></a>
+<span class="sourceLineNo">134</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureScheduler;<a name="line.135"></a>
+<span class="sourceLineNo">136</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureUtil;<a name="line.136"></a>
+<span class="sourceLineNo">137</span>import org.apache.hadoop.hbase.master.procedure.ModifyTableProcedure;<a name="line.137"></a>
+<span class="sourceLineNo">138</span>import org.apache.hadoop.hbase.master.procedure.ProcedurePrepareLatch;<a name="line.138"></a>
+<span class="sourceLineNo">139</span>import org.apache.hadoop.hbase.master.procedure.RecoverMetaProcedure;<a name="line.139"></a>
+<span class="sourceLineNo">140</span>import org.apache.hadoop.hbase.master.procedure.ServerCrashProcedure;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.master.procedure.TruncateTableProcedure;<a name="line.141"></a>
+<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.master.replication.AbstractPeerProcedure;<a name="line.142"></a>
+<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.master.replication.AddPeerProcedure;<a name="line.143"></a>
+<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.master.replication.DisablePeerProcedure;<a name="line.144"></a>
+<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.master.replication.EnablePeerProcedure;<a name="line.145"></a>
+<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.master.replication.RemovePeerProcedure;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.master.replication.ReplicationPeerManager;<a name="line.147"></a>
+<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.master.replication.SyncReplicationReplayWALManager;<a name="line.148"></a>
+<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.master.replication.TransitPeerSyncReplicationStateProcedure;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.master.replication.UpdatePeerConfigProcedure;<a name="line.150"></a>
+<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.master.snapshot.SnapshotManager;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.master.zksyncer.MasterAddressSyncer;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.master.zksyncer.MetaLocationSyncer;<a name="line.153"></a>
+<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.mob.MobConstants;<a name="line.154"></a>
+<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.monitoring.MemoryBoundedLogMessageBuffer;<a name="line.155"></a>
+<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.156"></a>
+<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.157"></a>
+<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.procedure.MasterProcedureManagerHost;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.procedure.flush.MasterFlushTableProcedureManager;<a name="line.159"></a>
+<span class="sourceLineNo">160</span>import org.apache.hadoop.hbase.procedure2.LockedResource;<a name="line.160"></a>
+<span class="sourceLineNo">161</span>import org.apache.hadoop.hbase.procedure2.Procedure;<a name="line.161"></a>
+<span class="sourceLineNo">162</span>import org.apache.hadoop.hbase.procedure2.ProcedureEvent;<a name="line.162"></a>
+<span class="sourceLineNo">163</span>import org.apache.hadoop.hbase.procedure2.ProcedureExecutor;<a name="line.163"></a>
+<span class="sourceLineNo">164</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureDispatcher.RemoteProcedure;<a name="line.164"></a>
+<span class="sourceLineNo">165</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureException;<a name="line.165"></a>
+<span class="sourceLineNo">166</span>import org.apache.hadoop.hbase.procedure2.store.wal.WALProcedureStore;<a name="line.166"></a>
+<span class="sourceLineNo">167</span>import org.apache.hadoop.hbase.quotas.MasterQuotaManager;<a name="line.167"></a>
+<span class="sourceLineNo">168</span>import org.apache.hadoop.hbase.quotas.MasterQuotasObserver;<a name="line.168"></a>
+<span class="sourceLineNo">169</span>import org.apache.hadoop.hbase.quotas.QuotaObserverChore;<a name="line.169"></a>
+<span class="sourceLineNo">170</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.170"></a>
+<span class="sourceLineNo">171</span>import org.apache.hadoop.hbase.quotas.SnapshotQuotaObserverChore;<a name="line.171"></a>
+<span class="sourceLineNo">172</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifier;<a name="line.172"></a>
+<span class="sourceLineNo">173</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifierFactory;<a name="line.173"></a>
+<span class="sourceLineNo">174</span>import org.apache.hadoop.hbase.regionserver.DefaultStoreEngine;<a name="line.174"></a>
+<span class="sourceLineNo">175</span>import org.apache.hadoop.hbase.regionserver.HRegionServer;<a name="line.175"></a>
+<span class="sourceLineNo">176</span>import org.apache.hadoop.hbase.regionserver.HStore;<a name="line.176"></a>
+<span class="sourceLineNo">177</span>import org.apache.hadoop.hbase.regionserver.RSRpcServices;<a name="line.177"></a>
+<span class="sourceLineNo">178</span>import org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost;<a name="line.178"></a>
+<span class="sourceLineNo">179</span>import org.apache.hadoop.hbase.regionserver.RegionSplitPolicy;<a name="line.179"></a>
+<span class="sourceLineNo">180</span>import org.apache.hadoop.hbase.regionserver.compactions.ExploringCompactionPolicy;<a name="line.180"></a>
+<span class="sourceLineNo">181</span>import org.apache.hadoop.hbase.regionserver.compactions.FIFOCompactionPolicy;<a name="line.181"></a>
+<span class="sourceLineNo">182</span>import org.apache.hadoop.hbase.replication.ReplicationException;<a name="line.182"></a>
+<span class="sourceLineNo">183</span>import org.apache.hadoop.hbase.replication.ReplicationLoadSource;<a name="line.183"></a>
+<span class="sourceLineNo">184</span>import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;<a name="line.184"></a>
+<span class="sourceLineNo">185</span>import org.apache.hadoop.hbase.replication.ReplicationPeerDescription;<a name="line.185"></a>
+<span class="sourceLineNo">186</span>import org.apache.hadoop.hbase.replication.ReplicationUtils;<a name="line.186"></a>
+<span class="sourceLineNo">187</span>import org.apache.hadoop.hbase.replication.SyncReplicationState;<a name="line.187"></a>
+<span class="sourceLineNo">188</span>import org.apache.hadoop.hbase.replication.master.ReplicationHFileCleaner;<a name="line.188"></a>
+<span class="sourceLineNo">189</span>import org.apache.hadoop.hbase.replication.master.ReplicationLogCleaner;<a name="line.189"></a>
+<span class="sourceLineNo">190</span>import org.apache.hadoop.hbase.replication.master.ReplicationPeerConfigUpgrader;<a name="line.190"></a>
+<span class="sourceLineNo">191</span>import org.apache.hadoop.hbase.security.AccessDeniedException;<a name="line.191"></a>
+<span class="sourceLineNo">192</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.192"></a>
+<span class="sourceLineNo">193</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.193"></a>
+<span class="sourceLineNo">194</span>import org.apache.hadoop.hbase.util.Addressing;<a name="line.194"></a>
+<span class="sourceLineNo">195</span>import org.apache.hadoop.hbase.util.BloomFilterUtil;<a name="line.195"></a>
+<span class="sourceLineNo">196</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.196"></a>
+<span class="sourceLineNo">197</span>import org.apache.hadoop.hbase.util.CompressionTest;<a name="line.197"></a>
+<span class="sourceLineNo">198</span>import org.apache.hadoop.hbase.util.EncryptionTest;<a name="line.198"></a>
+<span class="sourceLineNo">199</span>import org.apache.hadoop.hbase.util.HBaseFsck;<a name="line.199"></a>
+<span class="sourceLineNo">200</span>import org.apache.hadoop.hbase.util.HFileArchiveUtil;<a name="line.200"></a>
+<span class="sourceLineNo">201</span>import org.apache.hadoop.hbase.util.HasThread;<a name="line.201"></a>
+<span class="sourceLineNo">202</span>import org.apache.hadoop.hbase.util.IdLock;<a name="line.202"></a>
+<span class="sourceLineNo">203</span>import org.apache.hadoop.hbase.util.ModifyRegionUtils;<a name="line.203"></a>
+<span class="sourceLineNo">204</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.204"></a>
+<span class="sourceLineNo">205</span>import org.apache.hadoop.hbase.util.RetryCounter;<a name="line.205"></a>
+<span class="sourceLineNo">206</span>import org.apache.hadoop.hbase.util.RetryCounterFactory;<a name="line.206"></a>
+<span class="sourceLineNo">207</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.207"></a>
+<span class="sourceLineNo">208</span>import org.apache.hadoop.hbase.util.VersionInfo;<a name="line.208"></a>
+<span class="sourceLineNo">209</span>import org.apache.hadoop.hbase.zookeeper.LoadBalancerTracker;<a name="line.209"></a>
+<span class="sourceLineNo">210</span>import org.apache.hadoop.hbase.zookeeper.MasterAddressTracker;<a name="line.210"></a>
+<span class="sourceLineNo">211</span>import org.apache.hadoop.hbase.zookeeper.MasterMaintenanceModeTracker;<a name="line.211"></a>
+<span class="sourceLineNo">212</span>import org.apache.hadoop.hbase.zookeeper.RegionNormalizerTracker;<a name="line.212"></a>
+<span class="sourceLineNo">213</span>import org.apache.hadoop.hbase.zookeeper.ZKClusterId;<a name="line.213"></a>
+<span class="sourceLineNo">214</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.214"></a>
+<span class="sourceLineNo">215</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.215"></a>
+<span class="sourceLineNo">216</span>import org.apache.hadoop.hbase.zookeeper.ZNodePaths;<a name="line.216"></a>
+<span class="sourceLineNo">217</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.217"></a>
+<span class="sourceLineNo">218</span>import org.apache.zookeeper.KeeperException;<a name="line.218"></a>
+<span class="sourceLineNo">219</span>import org.eclipse.jetty.server.Server;<a name="line.219"></a>
+<span class="sourceLineNo">220</span>import org.eclipse.jetty.server.ServerConnector;<a name="line.220"></a>
+<span class="sourceLineNo">221</span>import org.eclipse.jetty.servlet.ServletHolder;<a name="line.221"></a>
+<span class="sourceLineNo">222</span>import org.eclipse.jetty.webapp.WebAppContext;<a name="line.222"></a>
+<span class="sourceLineNo">223</span>import org.slf4j.Logger;<a name="line.223"></a>
+<span class="sourceLineNo">224</span>import org.slf4j.LoggerFactory;<a name="line.224"></a>
+<span class="sourceLineNo">225</span><a name="line.225"></a>
+<span class="sourceLineNo">226</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.226"></a>
+<span class="sourceLineNo">227</span>import org.apache.hbase.thirdparty.com.google.common.collect.ImmutableSet;<a name="line.227"></a>
+<span class="sourceLineNo">228</span>import org.apache.hbase.thirdparty.com.google.common.collect.Lists;<a name="line.228"></a>
+<span class="sourceLineNo">229</span>import org.apache.hbase.thirdparty.com.google.common.collect.Maps;<a name="line.229"></a>
+<span class="sourceLineNo">230</span><a name="line.230"></a>
+<span class="sourceLineNo">231</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.231"></a>
+<span class="sourceLineNo">232</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoResponse.CompactionState;<a name="line.232"></a>
+<span class="sourceLineNo">233</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.Quotas;<a name="line.233"></a>
+<span class="sourceLineNo">234</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.SpaceViolationPolicy;<a name="line.234"></a>
+<span class="sourceLineNo">235</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;<a name="line.235"></a>
+<span class="sourceLineNo">236</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos;<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> * HMaster is the "master server" for HBase. An HBase cluster has one active<a name="line.239"></a>
+<span class="sourceLineNo">240</span> * master.  If many masters are started, all compete.  Whichever wins goes on to<a name="line.240"></a>
+<span class="sourceLineNo">241</span> * run the cluster.  All others park themselves in their constructor until<a name="line.241"></a>
+<span class="sourceLineNo">242</span> * master or cluster shutdown or until the active master loses its lease in<a name="line.242"></a>
+<span class="sourceLineNo">243</span> * zookeeper.  Thereafter, all running master jostle to take over master role.<a name="line.243"></a>
+<span class="sourceLineNo">244</span> *<a name="line.244"></a>
+<span class="sourceLineNo">245</span> * &lt;p&gt;The Master can be asked shutdown the cluster. See {@link #shutdown()}.  In<a name="line.245"></a>
+<span class="sourceLineNo">246</span> * this case it will tell all regionservers to go down and then wait on them<a name="line.246"></a>
+<span class="sourceLineNo">247</span> * all reporting in that they are down.  This master will then shut itself down.<a name="line.247"></a>
 <span class="sourceLineNo">248</span> *<a name="line.248"></a>
-<span class="sourceLineNo">249</span> * @see org.apache.zookeeper.Watcher<a name="line.249"></a>
-<span class="sourceLineNo">250</span> */<a name="line.250"></a>
-<span class="sourceLineNo">251</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS)<a name="line.251"></a>
-<span class="sourceLineNo">252</span>@SuppressWarnings("deprecation")<a name="line.252"></a>
-<span class="sourceLineNo">253</span>public class HMaster extends HRegionServer implements MasterServices {<a name="line.253"></a>
-<span class="sourceLineNo">254</span>  private static Logger LOG = LoggerFactory.getLogger(HMaster.class);<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>   * Protection against zombie master. Started once Master accepts active responsibility and<a name="line.257"></a>
-<span class="sourceLineNo">258</span>   * starts taking over responsibilities. Allows a finite time window before giving up ownership.<a name="line.258"></a>
-<span class="sourceLineNo">259</span>   */<a name="line.259"></a>
-<span class="sourceLineNo">260</span>  private static class InitializationMonitor extends HasThread {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    /** The amount of time in milliseconds to sleep before checking initialization status. */<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    public static final String TIMEOUT_KEY = "hbase.master.initializationmonitor.timeout";<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    public static final long TIMEOUT_DEFAULT = TimeUnit.MILLISECONDS.convert(15, TimeUnit.MINUTES);<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">266</span>     * When timeout expired and initialization has not complete, call {@link System#exit(int)} when<a name="line.266"></a>
-<span class="sourceLineNo">267</span>     * true, do nothing otherwise.<a name="line.267"></a>
-<span class="sourceLineNo">268</span>     */<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    public static final String HALT_KEY = "hbase.master.initializationmonitor.haltontimeout";<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    public static final boolean HALT_DEFAULT = false;<a name="line.270"></a>
-<span class="sourceLineNo">271</span><a name="line.271"></a>
-<span class="sourceLineNo">272</span>    private final HMaster master;<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    private final long timeout;<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    private final boolean haltOnTimeout;<a name="line.274"></a>
-<span class="sourceLineNo">275</span><a name="line.275"></a>
-<span class="sourceLineNo">276</span>    /** Creates a Thread that monitors the {@link #isInitialized()} state. */<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    InitializationMonitor(HMaster master) {<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      super("MasterInitializationMonitor");<a name="line.278"></a>
-<span class="sourceLineNo">279</span>      this.master = master;<a name="line.279"></a>
-<span class="sourceLineNo">280</span>      this.timeout = master.getConfiguration().getLong(TIMEOUT_KEY, TIMEOUT_DEFAULT);<a name="line.280"></a>
-<span class="sourceLineNo">281</span>      this.haltOnTimeout = master.getConfiguration().getBoolean(HALT_KEY, HALT_DEFAULT);<a name="line.281"></a>
-<span class="sourceLineNo">282</span>      this.setDaemon(true);<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>    @Override<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    public void run() {<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      try {<a name="line.287"></a>
-<span class="sourceLineNo">288</span>        while (!master.isStopped() &amp;&amp; master.isActiveMaster()) {<a name="line.288"></a>
-<span class="sourceLineNo">289</span>          Thread.sleep(timeout);<a name="line.289"></a>
-<span class="sourceLineNo">290</span>          if (master.isInitialized()) {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>            LOG.debug("Initialization completed within allotted tolerance. Monitor exiting.");<a name="line.291"></a>
-<span class="sourceLineNo">292</span>          } else {<a name="line.292"></a>
-<span class="sourceLineNo">293</span>            LOG.error("Master failed to complete initialization after " + timeout + "ms. Please"<a name="line.293"></a>
-<span class="sourceLineNo">294</span>                + " consider submitting a bug report including a thread dump of this process.");<a name="line.294"></a>
-<span class="sourceLineNo">295</span>            if (haltOnTimeout) {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>              LOG.error("Zombie Master exiting. Thread dump to stdout");<a name="line.296"></a>
-<span class="sourceLineNo">297</span>              Threads.printThreadInfo(System.out, "Zombie HMaster");<a name="line.297"></a>
-<span class="sourceLineNo">298</span>              System.exit(-1);<a name="line.298"></a>
-<span class="sourceLineNo">299</span>            }<a name="line.299"></a>
-<span class="sourceLineNo">300</span>          }<a name="line.300"></a>
-<span class="sourceLineNo">301</span>        }<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      } catch (InterruptedException ie) {<a name="line.302"></a>
-<span class="sourceLineNo">303</span>        LOG.trace("InitMonitor thread interrupted. Existing.");<a name="line.303"></a>
-<span class="sourceLineNo">304</span>      }<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><a name="line.307"></a>
-<span class="sourceLineNo">308</span>  // MASTER is name of the webapp and the attribute name used stuffing this<a name="line.308"></a>
-<span class="sourceLineNo">309</span>  //instance into web context.<a name="line.309"></a>
-<span class="sourceLineNo">310</span>  public static final String MASTER = "master";<a name="line.310"></a>
-<span class="sourceLineNo">311</span><a name="line.311"></a>
-<span class="sourceLineNo">312</span>  // Manager and zk listener for master election<a name="line.312"></a>
-<span class="sourceLineNo">313</span>  private final ActiveMasterManager activeMasterManager;<a name="line.313"></a>
-<span class="sourceLineNo">314</span>  // Region server tracker<a name="line.314"></a>
-<span class="sourceLineNo">315</span>  private RegionServerTracker regionServerTracker;<a name="line.315"></a>
-<span class="sourceLineNo">316</span>  // Draining region server tracker<a name="line.316"></a>
-<span class="sourceLineNo">317</span>  private DrainingServerTracker drainingServerTracker;<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  // Tracker for load balancer state<a name="line.318"></a>
-<span class="sourceLineNo">319</span>  LoadBalancerTracker loadBalancerTracker;<a name="line.319"></a>
-<span class="sourceLineNo">320</span>  // Tracker for meta location, if any client ZK quorum specified<a name="line.320"></a>
-<span class="sourceLineNo">321</span>  MetaLocationSyncer metaLocationSyncer;<a name="line.321"></a>
-<span class="sourceLineNo">322</span>  // Tracker for active master location, if any client ZK quorum specified<a name="line.322"></a>
-<span class="sourceLineNo">323</span>  MasterAddressSyncer masterAddressSyncer;<a name="line.323"></a>
-<span class="sourceLineNo">324</span><a name="line.324"></a>
-<span class="sourceLineNo">325</span>  // Tracker for split and merge state<a name="line.325"></a>
-<span class="sourceLineNo">326</span>  private SplitOrMergeTracker splitOrMergeTracker;<a name="line.326"></a>
-<span class="sourceLineNo">327</span><a name="line.327"></a>
-<span class="sourceLineNo">328</span>  // Tracker for region normalizer state<a name="line.328"></a>
-<span class="sourceLineNo">329</span>  private RegionNormalizerTracker regionNormalizerTracker;<a name="line.329"></a>
-<span class="sourceLineNo">330</span><a name="line.330"></a>
-<span class="sourceLineNo">331</span>  //Tracker for master maintenance mode setting<a name="line.331"></a>
-<span class="sourceLineNo">332</span>  private MasterMaintenanceModeTracker maintenanceModeTracker;<a name="line.332"></a>
-<span class="sourceLineNo">333</span><a name="line.333"></a>
-<span class="sourceLineNo">334</span>  private ClusterSchemaService clusterSchemaService;<a name="line.334"></a>
+<span class="sourceLineNo">249</span> * &lt;p&gt;You can also shutdown just this master.  Call {@link #stopMaster()}.<a name="line.249"></a>
+<span class="sourceLineNo">250</span> *<a name="line.250"></a>
+<span class="sourceLineNo">251</span> * @see org.apache.zookeeper.Watcher<a name="line.251"></a>
+<span class="sourceLineNo">252</span> */<a name="line.252"></a>
+<span class="sourceLineNo">253</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS)<a name="line.253"></a>
+<span class="sourceLineNo">254</span>@SuppressWarnings("deprecation")<a name="line.254"></a>
+<span class="sourceLineNo">255</span>public class HMaster extends HRegionServer implements MasterServices {<a name="line.255"></a>
+<span class="sourceLineNo">256</span>  private static Logger LOG = LoggerFactory.getLogger(HMaster.class);<a name="line.256"></a>
+<span class="sourceLineNo">257</span><a name="line.257"></a>
+<span class="sourceLineNo">258</span>  /**<a name="line.258"></a>
+<span class="sourceLineNo">259</span>   * Protection against zombie master. Started once Master accepts active responsibility and<a name="line.259"></a>
+<span class="sourceLineNo">260</span>   * starts taking over responsibilities. Allows a finite time window before giving up ownership.<a name="line.260"></a>
+<span class="sourceLineNo">261</span>   */<a name="line.261"></a>
+<span class="sourceLineNo">262</span>  private static class InitializationMonitor extends HasThread {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    /** The amount of time in milliseconds to sleep before checking initialization status. */<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    public static final String TIMEOUT_KEY = "hbase.master.initializationmonitor.timeout";<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    public static final long TIMEOUT_DEFAULT = TimeUnit.MILLISECONDS.convert(15, TimeUnit.MINUTES);<a name="line.265"></a>
+<span class="sourceLineNo">266</span><a name="line.266"></a>
+<span class="sourceLineNo">267</span>    /**<a name="line.267"></a>
+<span class="sourceLineNo">268</span>     * When timeout expired and initialization has not complete, call {@link System#exit(int)} when<a name="line.268"></a>
+<span class="sourceLineNo">269</span>     * true, do nothing otherwise.<a name="line.269"></a>
+<span class="sourceLineNo">270</span>     */<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    public static final String HALT_KEY = "hbase.master.initializationmonitor.haltontimeout";<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    public static final boolean HALT_DEFAULT = false;<a name="line.272"></a>
+<span class="sourceLineNo">273</span><a name="line.273"></a>
+<span class="sourceLineNo">274</span>    private final HMaster master;<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    private final long timeout;<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    private final boolean haltOnTimeout;<a name="line.276"></a>
+<span class="sourceLineNo">277</span><a name="line.277"></a>
+<span class="sourceLineNo">278</span>    /** Creates a Thread that monitors the {@link #isInitialized()} state. */<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    InitializationMonitor(HMaster master) {<a name="line.279"></a>
+<span class="sourceLineNo">280</span>      super("MasterInitializationMonitor");<a name="line.280"></a>
+<span class="sourceLineNo">281</span>      this.master = master;<a name="line.281"></a>
+<span class="sourceLineNo">282</span>      this.timeout = master.getConfiguration().getLong(TIMEOUT_KEY, TIMEOUT_DEFAULT);<a name="line.282"></a>
+<span class="sourceLineNo">283</span>      this.haltOnTimeout = master.getConfiguration().getBoolean(HALT_KEY, HALT_DEFAULT);<a name="line.283"></a>
+<span class="sourceLineNo">284</span>      this.setDaemon(true);<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    }<a name="line.285"></a>
+<span class="sourceLineNo">286</span><a name="line.286"></a>
+<span class="sourceLineNo">287</span>    @Override<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    public void run() {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>      try {<a name="line.289"></a>
+<span class="sourceLineNo">290</span>        while (!master.isStopped() &amp;&amp; master.isActiveMaster()) {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>          Thread.sleep(timeout);<a name="line.291"></a>
+<span class="sourceLineNo">292</span>          if (master.isInitialized()) {<a name="line.292"></a>
+<span class="sourceLineNo">293</span>            LOG.debug("Initialization completed within allotted tolerance. Monitor exiting.");<a name="line.293"></a>
+<span class="sourceLineNo">294</span>          } else {<a name="line.294"></a>
+<span class="sourceLineNo">295</span>            LOG.error("Master failed to complete initialization after " + timeout + "ms. Please"<a name="line.295"></a>
+<span class="sourceLineNo">296</span>                + " consider submitting a bug report including a thread dump of this process.");<a name="line.296"></a>
+<span class="sourceLineNo">297</span>            if (haltOnTimeout) {<a name="line.297"></a>
+<span class="sourceLineNo">298</span>              LOG.error("Zombie Master exiting. Thread dump to stdout");<a name="line.298"></a>
+<span class="sourceLineNo">299</span>              Threads.printThreadInfo(System.out, "Zombie HMaster");<a name="line.299"></a>
+<span class="sourceLineNo">300</span>              System.exit(-1);<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>      } catch (InterruptedException ie) {<a name="line.304"></a>
+<span class="sourceLineNo">305</span>        LOG.trace("InitMonitor thread interrupted. Existing.");<a name="line.305"></a>
+<span class="sourceLineNo">306</span>      }<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    }<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>  // MASTER is name of the webapp and the attribute name used stuffing this<a name="line.310"></a>
+<span class="sourceLineNo">311</span>  //instance into web context.<a name="line.311"></a>
+<span class="sourceLineNo">312</span>  public static final String MASTER = "master";<a name="line.312"></a>
+<span class="sourceLineNo">313</span><a name="line.313"></a>
+<span class="sourceLineNo">314</span>  // Manager and zk listener for master election<a name="line.314"></a>
+<span class="sourceLineNo">315</span>  private final ActiveMasterManager activeMasterManager;<a name="line.315"></a>
+<span class="sourceLineNo">316</span>  // Region server tracker<a name="line.316"></a>
+<span class="sourceLineNo">317</span>  private RegionServerTracker regionServerTracker;<a name="line.317"></a>
+<span class="sourceLineNo">318</span>  // Draining region server tracker<a name="line.318"></a>
+<span class="sourceLineNo">319</span>  private DrainingServerTracker drainingServerTracker;<a name="line.319"></a>
+<span class="sourceLineNo">320</span>  // Tracker for load balancer state<a name="line.320"></a>
+<span class="sourceLineNo">321</span>  LoadBalancerTracker loadBalancerTracker;<a name="line.321"></a>
+<span class="sourceLineNo">322</span>  // Tracker for meta location, if any client ZK quorum specified<a name="line.322"></a>
+<span class="sourceLineNo">323</span>  MetaLocationSyncer metaLocationSyncer;<a name="line.323"></a>
+<span class="sourceLineNo">324</span>  // Tracker for active master location, if any client ZK quorum specified<a name="line.324"></a>
+<span class="sourceLineNo">325</span>  MasterAddressSyncer masterAddressSyncer;<a name="line.325"></a>
+<span class="sourceLineNo">326</span><a name="line.326"></a>
+<span class="sourceLineNo">327</span>  // Tracker for split and merge state<a name="line.327"></a>
+<span class="sourceLineNo">328</span>  private SplitOrMergeTracker splitOrMergeTracker;<a name="line.328"></a>
+<span class="sourceLineNo">329</span><a name="line.329"></a>
+<span class="sourceLineNo">330</span>  // Tracker for region normalizer state<a name="line.330"></a>
+<span class="sourceLineNo">331</span>  private RegionNormalizerTracker regionNormalizerTracker;<a name="line.331"></a>
+<span class="sourceLineNo">332</span><a name="line.332"></a>
+<span class="sourceLineNo">333</span>  //Tracker for master maintenance mode setting<a name="line.333"></a>
+<span class="sourceLineNo">334</span>  private MasterMaintenanceModeTracker maintenanceModeTracker;<a name="line.334"></a>
 <span class="sourceLineNo">335</span><a name="line.335"></a>
-<span class="sourceLineNo">336</span>  public static final String HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS =<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    "hbase.master.wait.on.service.seconds";<a name="line.337"></a>
-<span class="sourceLineNo">338</span>  public static final int DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS = 5 * 60;<a name="line.338"></a>
-<span class="sourceLineNo">339</span><a name="line.339"></a>
-<span class="sourceLineNo">340</span>  // Metrics for the HMaster<a name="line.340"></a>
-<span class="sourceLineNo">341</span>  final MetricsMaster metricsMaster;<a name="line.341"></a>
-<span class="sourceLineNo">342</span>  // file system manager for the master FS operations<a name="line.342"></a>
-<span class="sourceLineNo">343</span>  private MasterFileSystem fileSystemManager;<a name="line.343"></a>
-<span class="sourceLineNo">344</span>  private MasterWalManager walManager;<a name="line.344"></a>
-<span class="sourceLineNo">345</span><a name="line.345"></a>
-<span class="sourceLineNo">346</span>  // server manager to deal with region server info<a name="line.346"></a>
-<span class="sourceLineNo">347</span>  private volatile ServerManager serverManager;<a name="line.347"></a>
-<span class="sourceLineNo">348</span><a name="line.348"></a>
-<span class="sourceLineNo">349</span>  // manager of assignment nodes in zookeeper<a name="line.349"></a>
-<span class="sourceLineNo">350</span>  private AssignmentManager assignmentManager;<a name="line.350"></a>
-<span class="sourceLineNo">351</span><a name="line.351"></a>
-<span class="sourceLineNo">352</span>  // manager of replication<a name="line.352"></a>
-<span class="sourceLineNo">353</span>  private ReplicationPeerManager replicationPeerManager;<a name="line.353"></a>
-<span class="sourceLineNo">354</span><a name="line.354"></a>
-<span class="sourceLineNo">355</span>  private SyncReplicationReplayWALManager syncReplicationReplayWALManager;<a name="line.355"></a>
+<span class="sourceLineNo">336</span>  private ClusterSchemaService clusterSchemaService;<a name="line.336"></a>
+<span class="sourceLineNo">337</span><a name="line.337"></a>
+<span class="sourceLineNo">338</span>  public static final String HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS =<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    "hbase.master.wait.on.service.seconds";<a name="line.339"></a>
+<span class="sourceLineNo">340</span>  public static final int DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS = 5 * 60;<a name="line.340"></a>
+<span class="sourceLineNo">341</span><a name="line.341"></a>
+<span class="sourceLineNo">342</span>  // Metrics for the HMaster<a name="line.342"></a>
+<span class="sourceLineNo">343</span>  final MetricsMaster metricsMaster;<a name="line.343"></a>
+<span class="sourceLineNo">344</span>  // file system manager for the master FS operations<a name="line.344"></a>
+<span class="sourceLineNo">345</span>  private MasterFileSystem fileSystemManager;<a name="line.345"></a>
+<span class="sourceLineNo">346</span>  private MasterWalManager walManager;<a name="line.346"></a>
+<span class="sourceLineNo">347</span><a name="line.347"></a>
+<span class="sourceLineNo">348</span>  // server manager to deal with region server info<a name="line.348"></a>
+<span class="sourceLineNo">349</span>  private volatile ServerManager serverManager;<a name="line.349"></a>
+<span class="sourceLineNo">350</span><a name="line.350"></a>
+<span class="sourceLineNo">351</span>  // manager of assignment nodes in zookeeper<a name="line.351"></a>
+<span class="sourceLineNo">352</span>  private AssignmentManager assignmentManager;<a name="line.352"></a>
+<span class="sourceLineNo">353</span><a name="line.353"></a>
+<span class="sourceLineNo">354</span>  // manager of replication<a name="line.354"></a>
+<span class="sourceLineNo">355</span>  private ReplicationPeerManager replicationPeerManager;<a name="line.355"></a>
 <span class="sourceLineNo">356</span><a name="line.356"></a>
-<span class="sourceLineNo">357</span>  // buffer for "fatal error" notices from region servers<a name="line.357"></a>
-<span class="sourceLineNo">358</span>  // in the cluster. This is only used for assisting<a name="line.358"></a>
-<span class="sourceLineNo">359</span>  // operations/debugging.<a name="line.359"></a>
-<span class="sourceLineNo">360</span>  MemoryBoundedLogMessageBuffer rsFatals;<a name="line.360"></a>
-<span class="sourceLineNo">361</span><a name="line.361"></a>
-<span class="sourceLineNo">362</span>  // flag set after we become the active master (used for testing)<a name="line.362"></a>
-<span class="sourceLineNo">363</span>  private volatile boolean activeMaster = false;<a name="line.363"></a>
-<span class="sourceLineNo">364</span><a name="line.364"></a>
-<span class="sourceLineNo">365</span>  // flag set after we complete initialization once active<a name="line.365"></a>
-<span class="sourceLineNo">366</span>  private final ProcedureEvent&lt;?&gt; initialized = new ProcedureEvent&lt;&gt;("master initialized");<a name="line.366"></a>
-<span class="sourceLineNo">367</span><a name="line.367"></a>
-<span class="sourceLineNo">368</span>  // flag set after master services are started,<a name="line.368"></a>
-<span class="sourceLineNo">369</span>  // initialization may have not completed yet.<a name="line.369"></a>
-<span class="sourceLineNo">370</span>  volatile boolean serviceStarted = false;<a name="line.370"></a>
-<span class="sourceLineNo">371</span><a name="line.371"></a>
-<span class="sourceLineNo">372</span>  // Maximum time we should run balancer for<a name="line.372"></a>
-<span class="sourceLineNo">373</span>  private final int maxBlancingTime;<a name="line.373"></a>
-<span class="sourceLineNo">374</span>  // Maximum percent of regions in transition when balancing<a name="line.374"></a>
-<span class="sourceLineNo">375</span>  private final double maxRitPercent;<a name="line.375"></a>
-<span class="sourceLineNo">376</span><a name="line.376"></a>
-<span class="sourceLineNo">377</span>  private final LockManager lockManager = new LockManager(this);<a name="line.377"></a>
+<span class="sourceLineNo">357</span>  private SyncReplicationReplayWALManager syncReplicationReplayWALManager;<a name="line.357"></a>
+<span class="sourceLineNo">358</span><a name="line.358"></a>
+<span class="sourceLineNo">359</span>  // buffer for "fatal error" notices from region servers<a name="line.359"></a>
+<span class="sourceLineNo">360</span>  // in the cluster. This is only used for assisting<a name="line.360"></a>
+<span class="sourceLineNo">361</span>  // operations/debugging.<a name="line.361"></a>
+<span class="sourceLineNo">362</span>  MemoryBoundedLogMessageBuffer rsFatals;<a name="line.362"></a>
+<span class="sourceLineNo">363</span><a name="line.363"></a>
+<span class="sourceLineNo">364</span>  // flag set after we become the active master (used for testing)<a name="line.364"></a>
+<span class="sourceLineNo">365</span>  private volatile boolean activeMaster = false;<a name="line.365"></a>
+<span class="sourceLineNo">366</span><a name="line.366"></a>
+<span class="sourceLineNo">367</span>  // flag set after we complete initialization once active<a name="line.367"></a>
+<span class="sourceLineNo">368</span>  private final ProcedureEvent&lt;?&gt; initialized = new ProcedureEvent&lt;&gt;("master initialized");<a name="line.368"></a>
+<span class="sourceLineNo">369</span><a name="line.369"></a>
+<span class="sourceLineNo">370</span>  // flag set after master services are started,<a name="line.370"></a>
+<span class="sourceLineNo">371</span>  // initialization may have not completed yet.<a name="line.371"></a>
+<span class="sourceLineNo">372</span>  volatile boolean serviceStarted = false;<a name="line.372"></a>
+<span class="sourceLineNo">373</span><a name="line.373"></a>
+<span class="sourceLineNo">374</span>  // Maximum time we should run balancer for<a name="line.374"></a>
+<span class="sourceLineNo">375</span>  private final int maxBlancingTime;<a name="line.375"></a>
+<span class="sourceLineNo">376</span>  // Maximum percent of regions in transition when balancing<a name="line.376"></a>
+<span class="sourceLineNo">377</span>  private final double maxRitPercent;<a name="line.377"></a>
 <span class="sourceLineNo">378</span><a name="line.378"></a>
-<span class="sourceLineNo">379</span>  private LoadBalancer balancer;<a name="line.379"></a>
-<span class="sourceLineNo">380</span>  private RegionNormalizer normalizer;<a name="line.380"></a>
-<span class="sourceLineNo">381</span>  private BalancerChore balancerChore;<a name="line.381"></a>
-<span class="sourceLineNo">382</span>  private RegionNormalizerChore normalizerChore;<a name="line.382"></a>
-<span class="sourceLineNo">383</span>  private ClusterStatusChore clusterStatusChore;<a name="line.383"></a>
-<span class="sourceLineNo">384</span>  private ClusterStatusPublisher clusterStatusPublisherChore = null;<a name="line.384"></a>
-<span class="sourceLineNo">385</span><a name="line.385"></a>
-<span class="sourceLineNo">386</span>  CatalogJanitor catalogJanitorChore;<a name="line.386"></a>
-<span class="sourceLineNo">387</span>  private LogCleaner logCleaner;<a name="line.387"></a>
-<span class="sourceLineNo">388</span>  private HFileCleaner hfileCleaner;<a name="line.388"></a>
-<span class="sourceLineNo">389</span>  private ReplicationBarrierCleaner replicationBarrierCleaner;<a name="line.389"></a>
-<span class="sourceLineNo">390</span>  private ExpiredMobFileCleanerChore expiredMobFileCleanerChore;<a name="line.390"></a>
-<span class="sourceLineNo">391</span>  private MobCompactionChore mobCompactChore;<a name="line.391"></a>
-<span class="sourceLineNo">392</span>  private MasterMobCompactionThread mobCompactThread;<a name="line.392"></a>
-<span class="sourceLineNo">393</span>  // used to synchronize the mobCompactionStates<a name="line.393"></a>
-<span class="sourceLineNo">394</span>  private final IdLock mobCompactionLock = new IdLock();<a name="line.394"></a>
-<span class="sourceLineNo">395</span>  // save the information of mob compactions in tables.<a name="line.395"></a>
-<span class="sourceLineNo">396</span>  // the key is table name, the value is the number of compactions in that table.<a name="line.396"></a>
-<span class="sourceLineNo">397</span>  private Map&lt;TableName, AtomicInteger&gt; mobCompactionStates = Maps.newConcurrentMap();<a name="line.397"></a>
-<span class="sourceLineNo">398</span><a name="line.398"></a>
-<span class="sourceLineNo">399</span>  MasterCoprocessorHost cpHost;<a name="line.399"></a>
+<span class="sourceLineNo">379</span>  private final LockManager lockManager = new LockManager(this);<a name="line.379"></a>
+<span class="sourceLineNo">380</span><a name="line.380"></a>
+<span class="sourceLineNo">381</span>  private LoadBalancer balancer;<a name="line.381"></a>
+<span class="sourceLineNo">382</span>  private RegionNormalizer normalizer;<a name="line.382"></a>
+<span class="sourceLineNo">383</span>  private BalancerChore balancerChore;<a name="line.383"></a>
+<span class="sourceLineNo">384</span>  private RegionNormalizerChore normalizerChore;<a name="line.384"></a>
+<span class="sourceLineNo">385</span>  private ClusterStatusChore clusterStatusChore;<a name="line.385"></a>
+<span class="sourceLineNo">386</span>  private ClusterStatusPublisher clusterStatusPublisherChore = null;<a name="line.386"></a>
+<span class="sourceLineNo">387</span><a name="line.387"></a>
+<span class="sourceLineNo">388</span>  CatalogJanitor catalogJanitorChore;<a name="line.388"></a>
+<span class="sourceLineNo">389</span>  private LogCleaner logCleaner;<a name="line.389"></a>
+<span class="sourceLineNo">390</span>  private HFileCleaner hfileCleaner;<a name="line.390"></a>
+<span class="sourceLineNo">391</span>  private ReplicationBarrierCleaner replicationBarrierCleaner;<a name="line.391"></a>
+<span class="sourceLineNo">392</span>  private ExpiredMobFileCleanerChore expiredMobFileCleanerChore;<a name="line.392"></a>
+<span class="sourceLineNo">393</span>  private MobCompactionChore mobCompactChore;<a name="line.393"></a>
+<span class="sourceLineNo">394</span>  private MasterMobCompactionThread mobCompactThread;<a name="line.394"></a>
+<span class="sourceLineNo">395</span>  // used to synchronize the mobCompactionStates<a name="line.395"></a>
+<span class="sourceLineNo">396</span>  private final IdLock mobCompactionLock = new IdLock();<a name="line.396"></a>
+<span class="sourceLineNo">397</span>  // save the information of mob compactions in tables.<a name="line.397"></a>
+<span class="sourceLineNo">398</span>  // the key is table name, the value is the number of compactions in that table.<a name="line.398"></a>
+<span class="sourceLineNo">399</span>  private Map&lt;TableName, AtomicInteger&gt; mobCompactionStates = Maps.newConcurrentMap();<a name="line.399"></a>
 <span class="sourceLineNo">400</span><a name="line.400"></a>
-<span class="sourceLineNo">401</span>  private final boolean preLoadTableDescriptors;<a name="line.401"></a>
+<span class="sourceLineNo">401</span>  MasterCoprocessorHost cpHost;<a name="line.401"></a>
 <span class="sourceLineNo">402</span><a name="line.402"></a>
-<span class="sourceLineNo">403</span>  // Time stamps for when a hmaster became active<a name="line.403"></a>
-<span class="sourceLineNo">404</span>  private long masterActiveTime;<a name="line.404"></a>
-<span class="sourceLineNo">405</span><a name="line.405"></a>
-<span class="sourceLineNo">406</span>  // Time stamp for when HMaster finishes becoming Active Master<a name="line.406"></a>
-<span class="sourceLineNo">407</span>  private long masterFinishedInitializationTime;<a name="line.407"></a>
-<span class="sourceLineNo">408</span><a name="line.408"></a>
-<span class="sourceLineNo">409</span>  //should we check the compression codec type at master side, default true, HBASE-6370<a name="line.409"></a>
-<span class="sourceLineNo">410</span>  private final boolean masterCheckCompression;<a name="line.410"></a>
-<span class="sourceLineNo">411</span><a name="line.411"></a>
-<span class="sourceLineNo">412</span>  //should we check encryption settings at master side, default true<a name="line.412"></a>
-<span class="sourceLineNo">413</span>  private final boolean masterCheckEncryption;<a name="line.413"></a>
-<span class="sourceLineNo">414</span><a name="line.414"></a>
-<span class="sourceLineNo">415</span>  Map&lt;String, Service&gt; coprocessorServiceHandlers = Maps.newHashMap();<a name="line.415"></a>
+<span class="sourceLineNo">403</span>  private final boolean preLoadTableDescriptors;<a name="line.403"></a>
+<span class="sourceLineNo">404</span><a name="line.404"></a>
+<span class="sourceLineNo">405</span>  // Time stamps for when a hmaster became active<a name="line.405"></a>
+<span class="sourceLineNo">406</span>  private long masterActiveTime;<a name="line.406"></a>
+<span class="sourceLineNo">407</span><a name="line.407"></a>
+<span class="sourceLineNo">408</span>  // Time stamp for when HMaster finishes becoming Active Master<a name="line.408"></a>
+<span class="sourceLineNo">409</span>  private long masterFinishedInitializationTime;<a name="line.409"></a>
+<span class="sourceLineNo">410</span><a name="line.410"></a>
+<span class="sourceLineNo">411</span>  //should we check the compression codec type at master side, default true, HBASE-6370<a name="line.411"></a>
+<span class="sourceLineNo">412</span>  private final boolean masterCheckCompression;<a name="line.412"></a>
+<span class="sourceLineNo">413</span><a name="line.413"></a>
+<span class="sourceLineNo">414</span>  //should we check encryption settings at master side, default true<a name="line.414"></a>
+<span class="sourceLineNo">415</span>  private final boolean masterCheckEncryption;<a name="line.415"></a>
 <span class="sourceLineNo">416</span><a name="line.416"></a>
-<span class="sourceLineNo">417</span>  // monitor for snapshot of hbase tables<a name="line.417"></a>
-<span class="sourceLineNo">418</span>  SnapshotManager snapshotManager;<a name="line.418"></a>
-<span class="sourceLineNo">419</span>  // monitor for distributed procedures<a name="line.419"></a>
-<span class="sourceLineNo">420</span>  private MasterProcedureManagerHost mpmHost;<a name="line.420"></a>
-<span class="sourceLineNo">421</span><a name="line.421"></a>
-<span class="sourceLineNo">422</span>  // it is assigned after 'initialized' guard set to true, so should be volatile<a name="line.422"></a>
-<span class="sourceLineNo">423</span>  private volatile MasterQuotaManager quotaManager;<a name="line.423"></a>
-<span class="sourceLineNo">424</span>  private SpaceQuotaSnapshotNotifier spaceQuotaSnapshotNotifier;<a name="line.424"></a>
-<span class="sourceLineNo">425</span>  private QuotaObserverChore quotaObserverChore;<a name="line.425"></a>
-<span class="sourceLineNo">426</span>  private SnapshotQuotaObserverChore snapshotQuotaChore;<a name="line.426"></a>
-<span class="sourceLineNo">427</span><a name="line.427"></a>
-<span class="sourceLineNo">428</span>  private ProcedureExecutor&lt;MasterProcedureEnv&gt; procedureExecutor;<a name="line.428"></a>
-<span class="sourceLineNo">429</span>  private WALProcedureStore procedureStore;<a name="line.429"></a>
-<span class="sourceLineNo">430</span><a name="line.430"></a>
-<span class="sourceLineNo">431</span>  // handle table states<a name="line.431"></a>
-<span class="sourceLineNo">432</span>  private TableStateManager tableStateManager;<a name="line.432"></a>
-<span class="sourceLineNo">433</span><a name="line.433"></a>
-<span class="sourceLineNo">434</span>  private long splitPlanCount;<a name="line.434"></a>
-<span class="sourceLineNo">435</span>  private long mergePlanCount;<a name="line.435"></a>
-<span class="sourceLineNo">436</span><a name="line.436"></a>
-<span class="sourceLineNo">437</span>  /* Handle favored nodes information */<a name="line.437"></a>
-<span class="sourceLineNo">438</span>  private FavoredNodesManager favoredNodesManager;<a name="line.438"></a>
-<span class="sourceLineNo">439</span><a name="line.439"></a>
-<span class="sourceLineNo">440</span>  /** jetty server for master to redirect requests to regionserver infoServer */<a name="line.440"></a>
-<span class="sourceLineNo">441</span>  private Server masterJettyServer;<a name="line.441"></a>
-<span class="sourceLineNo">442</span><a name="line.442"></a>
-<span class="sourceLineNo">443</span>  public static class RedirectServlet extends HttpServlet {<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    private static final long serialVersionUID = 2894774810058302473L;<a name="line.444"></a>
-<span class="sourceLineNo">445</span>    private final int regionServerInfoPort;<a name="line.445"></a>
-<span class="sourceLineNo">446</span>    private final String regionServerHostname;<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>     * @param infoServer that we're trying to send all requests to<a name="line.449"></a>
-<span class="sourceLineNo">450</span>     * @param hostname may be null. if given, will be used for redirects instead of host from client.<a name="line.450"></a>
-<span class="sourceLineNo">451</span>     */<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    public RedirectServlet(InfoServer infoServer, String hostname) {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>       regionServerInfoPort = infoServer.getPort();<a name="line.453"></a>
-<span class="sourceLineNo">454</span>       regionServerHostname = hostname;<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 void doGet(HttpServletRequest request,<a name="line.458"></a>
-<span class="sourceLineNo">459</span>        HttpServletResponse response) throws ServletException, IOException {<a name="line.459"></a>
-<span class="sourceLineNo">460</span>      String redirectHost = regionServerHostname;<a name="line.460"></a>
-<span class="sourceLineNo">461</span>      if(redirectHost == null) {<a name="line.461"></a>
-<span class="sourceLineNo">462</span>        redirectHost = request.getServerName();<a name="line.462"></a>
-<span class="sourceLineNo">463</span>        if(!Addressing.isLocalAddress(InetAddress.getByName(redirectHost))) {<a name="line.463"></a>
-<span class="sourceLineNo">464</span>          LOG.warn("Couldn't resolve '" + redirectHost + "' as an address local to this node and '" +<a name="line.464"></a>
-<span class="sourceLineNo">465</span>              MASTER_HOSTNAME_KEY + "' is not set; client will get a HTTP 400 response. If " +<a name="line.465"></a>
-<span class="sourceLineNo">466</span>              "your HBase deployment relies on client accessible names that the region server process " +<a name="line.466"></a>
-<span class="sourceLineNo">467</span>              "can't resolve locally, then you should set the previously mentioned configuration variable " +<a name="line.467"></a>
-<span class="sourceLineNo">468</span>              "to an appropriate hostname.");<a name="line.468"></a>
-<span class="sourceLineNo">469</span>          // no sending client provided input back to the client, so the goal host is just in the logs.<a name="line.469"></a>
-<span class="sourceLineNo">470</span>          response.sendError(400, "Request was to a host that I can't resolve for any of the network interfaces on " +<a name="line.470"></a>
-<span class="sourceLineNo">471</span>              "this node. If this is due to an intermediary such as an HTTP load balancer or other proxy, your HBase " +<a name="line.471"></a>
-<span class="sourceLineNo">472</span>              "administrator can set '" + MASTER_HOSTNAME_KEY + "' to point to the correct hostname.");<a name="line.472"></a>
-<span class="sourceLineNo">473</span>          return;<a name="line.473"></a>
-<span class="sourceLineNo">474</span>        }<a name="line.474"></a>
-<span class="sourceLineNo">475</span>      }<a name="line.475"></a>
-<span class="sourceLineNo">476</span>      // TODO this scheme should come from looking at the scheme registered in the infoserver's http server for the<a name="line.476"></a>
-<span class="sourceLineNo">477</span>      // host and port we're using, but it's buried way too deep to do that ATM.<a name="line.477"></a>
-<span class="sourceLineNo">478</span>      String redirectUrl = request.getScheme() + "://"<a name="line.478"></a>
-<span class="sourceLineNo">479</span>        + redirectHost + ":" + regionServerInfoPort<a name="line.479"></a>
-<span class="sourceLineNo">480</span>        + request.getRequestURI();<a name="line.480"></a>
-<span class="sourceLineNo">481</span>      response.sendRedirect(redirectUrl);<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>  /**<a name="line.485"></a>
-<span class="sourceLineNo">486</span>   * Initializes the HMaster. The steps are as follows:<a name="line.486"></a>
-<span class="sourceLineNo">487</span>   * &lt;p&gt;<a name="line.487"></a>
-<span class="sourceLineNo">488</span>   * &lt;ol&gt;<a name="line.488"></a>
-<span class="sourceLineNo">489</span>   * &lt;li&gt;Initialize the local HRegionServer<a name="line.489"></a>
-<span class="sourceLineNo">490</span>   * &lt;li&gt;Start the ActiveMasterManager.<a name="line.490"></a>
-<span class="sourceLineNo">491</span>   * &lt;/ol&gt;<a name="line.491"></a>
-<span class="sourceLineNo">492</span>   * &lt;p&gt;<a name="line.492"></a>
-<span class="sourceLineNo">493</span>   * Remaining steps of initialization occur in<a name="line.493"></a>
-<span class="sourceLineNo">494</span>   * #finishActiveMasterInitialization(MonitoredTask) after<a name="line.494"></a>
-<span class="sourceLineNo">495</span>   * the master becomes the active one.<a name="line.495"></a>
-<span class="sourceLineNo">496</span>   */<a name="line.496"></a>
-<span class="sourceLineNo">497</span>  public HMaster(final Configuration conf)<a name="line.497"></a>
-<span class="sourceLineNo">498</span>      throws IOException, KeeperException {<a name="line.498"></a>
-<span class="sourceLineNo">499</span>    super(conf);<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    TraceUtil.initTracer(conf);<a name="line.500"></a>
-<span class="sourceLineNo">501</span>    try {<a name="line.501"></a>
-<span class="sourceLineNo">502</span>      this.rsFatals = new MemoryBoundedLogMessageBuffer(<a name="line.502"></a>
-<span class="sourceLineNo">503</span>          conf.getLong("hbase.master.buffer.for.rs.fatals", 1 * 1024 * 1024));<a name="line.503"></a>
-<span class="sourceLineNo">504</span>      LOG.info("hbase.rootdir=" + getRootDir() +<a name="line.504"></a>
-<span class="sourceLineNo">505</span>          ", hbase.cluster.distributed=" + this.conf.getBoolean(HConstants.CLUSTER_DISTRIBUTED, false));<a name="line.505"></a>
-<span class="sourceLineNo">506</span><a name="line.506"></a>
-<span class="sourceLineNo">507</span>      // Disable usage of meta replicas in the master<a name="line.507"></a>
-<span class="sourceLineNo">508</span>      this.conf.setBoolean(HConstants.USE_META_REPLICAS, false);<a name="line.508"></a>
-<span class="sourceLineNo">509</span><a name="line.509"></a>
-<span class="sourceLineNo">510</span>      decorateMasterConfiguration(this.conf);<a name="line.510"></a>
+<span class="sourceLineNo">417</span>  Map&lt;String, Service&gt; coprocessorServiceHandlers = Maps.newHashMap();<a name="line.417"></a>
+<span class="sourceLineNo">418</span><a name="line.418"></a>
+<span class="sourceLineNo">419</span>  // monitor for snapshot of hbase tables<a name="line.419"></a>
+<span class="sourceLineNo">420</span>  SnapshotManager snapshotManager;<a name="line.420"></a>
+<span class="sourceLineNo">421</span>  // monitor for distributed procedures<a name="line.421"></a>
+<span class="sourceLineNo">422</span>  private MasterProcedureManagerHost mpmHost;<a name="line.422"></a>
+<span class="source

<TRUNCATED>

[18/43] hbase-site git commit: Published site at 7ab77518a2569e2416a50020393aa386e7734501.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html
index b570921..397c3a6 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html
@@ -25,655 +25,757 @@
 <span class="sourceLineNo">017</span> */<a name="line.17"></a>
 <span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.regionserver;<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.regionserver.HStoreFile.BLOOM_FILTER_TYPE_KEY;<a name="line.20"></a>
-<span class="sourceLineNo">021</span>import static org.apache.hadoop.hbase.regionserver.HStoreFile.DELETE_FAMILY_COUNT;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import static org.apache.hadoop.hbase.regionserver.HStoreFile.LAST_BLOOM_KEY;<a name="line.22"></a>
-<span class="sourceLineNo">023</span><a name="line.23"></a>
-<span class="sourceLineNo">024</span>import java.io.DataInput;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import java.io.IOException;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import java.util.Map;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import java.util.Optional;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import java.util.SortedSet;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import java.util.concurrent.atomic.AtomicInteger;<a name="line.29"></a>
-<span class="sourceLineNo">030</span><a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hadoop.conf.Configuration;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.hadoop.fs.FileSystem;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hadoop.fs.Path;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.Cell;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.HBaseInterfaceAudience;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.HConstants;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.PrivateCellUtil;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.io.FSDataInputStreamWrapper;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.io.TimeRange;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.io.hfile.BlockType;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.io.hfile.CacheConfig;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.io.hfile.HFileBlock;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.io.hfile.HFileScanner;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.nio.ByteBuff;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.util.BloomFilter;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.util.BloomFilterFactory;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.yetus.audience.InterfaceStability;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.slf4j.Logger;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.slf4j.LoggerFactory;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<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> * Reader for a StoreFile.<a name="line.59"></a>
-<span class="sourceLineNo">060</span> */<a name="line.60"></a>
-<span class="sourceLineNo">061</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.PHOENIX)<a name="line.61"></a>
-<span class="sourceLineNo">062</span>@InterfaceStability.Evolving<a name="line.62"></a>
-<span class="sourceLineNo">063</span>public class StoreFileReader {<a name="line.63"></a>
-<span class="sourceLineNo">064</span>  private static final Logger LOG = LoggerFactory.getLogger(StoreFileReader.class.getName());<a name="line.64"></a>
-<span class="sourceLineNo">065</span><a name="line.65"></a>
-<span class="sourceLineNo">066</span>  protected BloomFilter generalBloomFilter = null;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>  protected BloomFilter deleteFamilyBloomFilter = null;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>  protected BloomType bloomFilterType;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>  private final HFile.Reader reader;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>  protected long sequenceID = -1;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>  protected TimeRange timeRange = null;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>  private byte[] lastBloomKey;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>  private long deleteFamilyCnt = -1;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>  private boolean bulkLoadResult = false;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>  private KeyValue.KeyOnlyKeyValue lastBloomKeyOnlyKV = null;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>  private boolean skipResetSeqId = true;<a name="line.76"></a>
-<span class="sourceLineNo">077</span><a name="line.77"></a>
-<span class="sourceLineNo">078</span>  // Counter that is incremented every time a scanner is created on the<a name="line.78"></a>
-<span class="sourceLineNo">079</span>  // store file. It is decremented when the scan on the store file is<a name="line.79"></a>
-<span class="sourceLineNo">080</span>  // done. All StoreFileReader for the same StoreFile will share this counter.<a name="line.80"></a>
-<span class="sourceLineNo">081</span>  private final AtomicInteger refCount;<a name="line.81"></a>
-<span class="sourceLineNo">082</span><a name="line.82"></a>
-<span class="sourceLineNo">083</span>  // indicate that whether this StoreFileReader is shared, i.e., used for pread. If not, we will<a name="line.83"></a>
-<span class="sourceLineNo">084</span>  // close the internal reader when readCompleted is called.<a name="line.84"></a>
-<span class="sourceLineNo">085</span>  @VisibleForTesting<a name="line.85"></a>
-<span class="sourceLineNo">086</span>  final boolean shared;<a name="line.86"></a>
-<span class="sourceLineNo">087</span><a name="line.87"></a>
-<span class="sourceLineNo">088</span>  private volatile Listener listener;<a name="line.88"></a>
-<span class="sourceLineNo">089</span><a name="line.89"></a>
-<span class="sourceLineNo">090</span>  private boolean closed = false;<a name="line.90"></a>
-<span class="sourceLineNo">091</span><a name="line.91"></a>
-<span class="sourceLineNo">092</span>  private StoreFileReader(HFile.Reader reader, AtomicInteger refCount, boolean shared) {<a name="line.92"></a>
-<span class="sourceLineNo">093</span>    this.reader = reader;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>    bloomFilterType = BloomType.NONE;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>    this.refCount = refCount;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>    this.shared = shared;<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>  public StoreFileReader(FileSystem fs, Path path, CacheConfig cacheConf,<a name="line.99"></a>
-<span class="sourceLineNo">100</span>      boolean primaryReplicaStoreFile, AtomicInteger refCount, boolean shared, Configuration conf)<a name="line.100"></a>
-<span class="sourceLineNo">101</span>      throws IOException {<a name="line.101"></a>
-<span class="sourceLineNo">102</span>    this(HFile.createReader(fs, path, cacheConf, primaryReplicaStoreFile, conf), refCount, shared);<a name="line.102"></a>
-<span class="sourceLineNo">103</span>  }<a name="line.103"></a>
-<span class="sourceLineNo">104</span><a name="line.104"></a>
-<span class="sourceLineNo">105</span>  public StoreFileReader(FileSystem fs, Path path, FSDataInputStreamWrapper in, long size,<a name="line.105"></a>
-<span class="sourceLineNo">106</span>      CacheConfig cacheConf, boolean primaryReplicaStoreFile, AtomicInteger refCount,<a name="line.106"></a>
-<span class="sourceLineNo">107</span>      boolean shared, Configuration conf) throws IOException {<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    this(HFile.createReader(fs, path, in, size, cacheConf, primaryReplicaStoreFile, conf), refCount,<a name="line.108"></a>
-<span class="sourceLineNo">109</span>        shared);<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>  void copyFields(StoreFileReader reader) {<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    this.generalBloomFilter = reader.generalBloomFilter;<a name="line.113"></a>
-<span class="sourceLineNo">114</span>    this.deleteFamilyBloomFilter = reader.deleteFamilyBloomFilter;<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    this.bloomFilterType = reader.bloomFilterType;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>    this.sequenceID = reader.sequenceID;<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    this.timeRange = reader.timeRange;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    this.lastBloomKey = reader.lastBloomKey;<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    this.bulkLoadResult = reader.bulkLoadResult;<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    this.lastBloomKeyOnlyKV = reader.lastBloomKeyOnlyKV;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    this.skipResetSeqId = reader.skipResetSeqId;<a name="line.121"></a>
-<span class="sourceLineNo">122</span>  }<a name="line.122"></a>
-<span class="sourceLineNo">123</span><a name="line.123"></a>
-<span class="sourceLineNo">124</span>  public boolean isPrimaryReplicaReader() {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    return reader.isPrimaryReplicaReader();<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>  /**<a name="line.128"></a>
-<span class="sourceLineNo">129</span>   * ONLY USE DEFAULT CONSTRUCTOR FOR UNIT TESTS<a name="line.129"></a>
-<span class="sourceLineNo">130</span>   */<a name="line.130"></a>
-<span class="sourceLineNo">131</span>  @VisibleForTesting<a name="line.131"></a>
-<span class="sourceLineNo">132</span>  StoreFileReader() {<a name="line.132"></a>
-<span class="sourceLineNo">133</span>    this.refCount = new AtomicInteger(0);<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    this.reader = null;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    this.shared = false;<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>  public CellComparator getComparator() {<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    return reader.getComparator();<a name="line.139"></a>
-<span class="sourceLineNo">140</span>  }<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>   * Get a scanner to scan over this StoreFile.<a name="line.143"></a>
-<span class="sourceLineNo">144</span>   * @param cacheBlocks should this scanner cache blocks?<a name="line.144"></a>
-<span class="sourceLineNo">145</span>   * @param pread use pread (for highly concurrent small readers)<a name="line.145"></a>
-<span class="sourceLineNo">146</span>   * @param isCompaction is scanner being used for compaction?<a name="line.146"></a>
-<span class="sourceLineNo">147</span>   * @param scannerOrder Order of this scanner relative to other scanners. See<a name="line.147"></a>
-<span class="sourceLineNo">148</span>   *          {@link KeyValueScanner#getScannerOrder()}.<a name="line.148"></a>
-<span class="sourceLineNo">149</span>   * @param canOptimizeForNonNullColumn {@code true} if we can make sure there is no null column,<a name="line.149"></a>
-<span class="sourceLineNo">150</span>   *          otherwise {@code false}. This is a hint for optimization.<a name="line.150"></a>
-<span class="sourceLineNo">151</span>   * @return a scanner<a name="line.151"></a>
-<span class="sourceLineNo">152</span>   */<a name="line.152"></a>
-<span class="sourceLineNo">153</span>  public StoreFileScanner getStoreFileScanner(boolean cacheBlocks, boolean pread,<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      boolean isCompaction, long readPt, long scannerOrder, boolean canOptimizeForNonNullColumn) {<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    return new StoreFileScanner(this, getScanner(cacheBlocks, pread, isCompaction),<a name="line.155"></a>
-<span class="sourceLineNo">156</span>        !isCompaction, reader.hasMVCCInfo(), readPt, scannerOrder, canOptimizeForNonNullColumn);<a name="line.156"></a>
-<span class="sourceLineNo">157</span>  }<a name="line.157"></a>
-<span class="sourceLineNo">158</span><a name="line.158"></a>
-<span class="sourceLineNo">159</span>  /**<a name="line.159"></a>
-<span class="sourceLineNo">160</span>   * Indicate that the scanner has started reading with this reader. We need to increment the ref<a name="line.160"></a>
-<span class="sourceLineNo">161</span>   * count so reader is not close until some object is holding the lock<a name="line.161"></a>
-<span class="sourceLineNo">162</span>   */<a name="line.162"></a>
-<span class="sourceLineNo">163</span>  void incrementRefCount() {<a name="line.163"></a>
-<span class="sourceLineNo">164</span>    refCount.incrementAndGet();<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>   * Indicate that the scanner has finished reading with this reader. We need to decrement the ref<a name="line.168"></a>
-<span class="sourceLineNo">169</span>   * count, and also, if this is not the common pread reader, we should close it.<a name="line.169"></a>
-<span class="sourceLineNo">170</span>   */<a name="line.170"></a>
-<span class="sourceLineNo">171</span>  void readCompleted() {<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    refCount.decrementAndGet();<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    if (!shared) {<a name="line.173"></a>
-<span class="sourceLineNo">174</span>      try {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>        reader.close(false);<a name="line.175"></a>
-<span class="sourceLineNo">176</span>      } catch (IOException e) {<a name="line.176"></a>
-<span class="sourceLineNo">177</span>        LOG.warn("failed to close stream reader", e);<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>  }<a name="line.180"></a>
-<span class="sourceLineNo">181</span><a name="line.181"></a>
-<span class="sourceLineNo">182</span>  /**<a name="line.182"></a>
-<span class="sourceLineNo">183</span>   * @deprecated Do not write further code which depends on this call. Instead<a name="line.183"></a>
-<span class="sourceLineNo">184</span>   *   use getStoreFileScanner() which uses the StoreFileScanner class/interface<a name="line.184"></a>
-<span class="sourceLineNo">185</span>   *   which is the preferred way to scan a store with higher level concepts.<a name="line.185"></a>
-<span class="sourceLineNo">186</span>   *<a name="line.186"></a>
-<span class="sourceLineNo">187</span>   * @param cacheBlocks should we cache the blocks?<a name="line.187"></a>
-<span class="sourceLineNo">188</span>   * @param pread use pread (for concurrent small readers)<a name="line.188"></a>
-<span class="sourceLineNo">189</span>   * @return the underlying HFileScanner<a name="line.189"></a>
-<span class="sourceLineNo">190</span>   */<a name="line.190"></a>
-<span class="sourceLineNo">191</span>  @Deprecated<a name="line.191"></a>
-<span class="sourceLineNo">192</span>  public HFileScanner getScanner(boolean cacheBlocks, boolean pread) {<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    return getScanner(cacheBlocks, pread, false);<a name="line.193"></a>
-<span class="sourceLineNo">194</span>  }<a name="line.194"></a>
-<span class="sourceLineNo">195</span><a name="line.195"></a>
-<span class="sourceLineNo">196</span>  /**<a name="line.196"></a>
-<span class="sourceLineNo">197</span>   * @deprecated Do not write further code which depends on this call. Instead<a name="line.197"></a>
-<span class="sourceLineNo">198</span>   *   use getStoreFileScanner() which uses the StoreFileScanner class/interface<a name="line.198"></a>
-<span class="sourceLineNo">199</span>   *   which is the preferred way to scan a store with higher level concepts.<a name="line.199"></a>
-<span class="sourceLineNo">200</span>   *<a name="line.200"></a>
-<span class="sourceLineNo">201</span>   * @param cacheBlocks<a name="line.201"></a>
-<span class="sourceLineNo">202</span>   *          should we cache the blocks?<a name="line.202"></a>
-<span class="sourceLineNo">203</span>   * @param pread<a name="line.203"></a>
-<span class="sourceLineNo">204</span>   *          use pread (for concurrent small readers)<a name="line.204"></a>
-<span class="sourceLineNo">205</span>   * @param isCompaction<a name="line.205"></a>
-<span class="sourceLineNo">206</span>   *          is scanner being used for compaction?<a name="line.206"></a>
-<span class="sourceLineNo">207</span>   * @return the underlying HFileScanner<a name="line.207"></a>
-<span class="sourceLineNo">208</span>   */<a name="line.208"></a>
-<span class="sourceLineNo">209</span>  @Deprecated<a name="line.209"></a>
-<span class="sourceLineNo">210</span>  public HFileScanner getScanner(boolean cacheBlocks, boolean pread,<a name="line.210"></a>
-<span class="sourceLineNo">211</span>      boolean isCompaction) {<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    return reader.getScanner(cacheBlocks, pread, isCompaction);<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>  public void close(boolean evictOnClose) throws IOException {<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    synchronized (this) {<a name="line.216"></a>
-<span class="sourceLineNo">217</span>      if (closed) {<a name="line.217"></a>
-<span class="sourceLineNo">218</span>        return;<a name="line.218"></a>
-<span class="sourceLineNo">219</span>      }<a name="line.219"></a>
-<span class="sourceLineNo">220</span>      reader.close(evictOnClose);<a name="line.220"></a>
-<span class="sourceLineNo">221</span>      closed = true;<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    }<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    if (listener != null) {<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      listener.storeFileReaderClosed(this);<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    }<a name="line.225"></a>
+<span class="sourceLineNo">020</span>import static org.apache.hadoop.hbase.regionserver.HStoreFile.BLOOM_FILTER_PARAM_KEY;<a name="line.20"></a>
+<span class="sourceLineNo">021</span>import static org.apache.hadoop.hbase.regionserver.HStoreFile.BLOOM_FILTER_TYPE_KEY;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import static org.apache.hadoop.hbase.regionserver.HStoreFile.DELETE_FAMILY_COUNT;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import static org.apache.hadoop.hbase.regionserver.HStoreFile.LAST_BLOOM_KEY;<a name="line.23"></a>
+<span class="sourceLineNo">024</span><a name="line.24"></a>
+<span class="sourceLineNo">025</span>import java.io.DataInput;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import java.io.IOException;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import java.util.Map;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import java.util.Optional;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import java.util.SortedSet;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import java.util.concurrent.atomic.AtomicInteger;<a name="line.30"></a>
+<span class="sourceLineNo">031</span><a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.conf.Configuration;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.fs.FileSystem;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.fs.Path;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.Cell;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.HBaseInterfaceAudience;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.HConstants;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.PrivateCellUtil;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.io.FSDataInputStreamWrapper;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.io.TimeRange;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.io.hfile.BlockType;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.io.hfile.CacheConfig;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.io.hfile.HFileBlock;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.io.hfile.HFileScanner;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.nio.ByteBuff;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.util.BloomFilter;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.util.BloomFilterFactory;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.yetus.audience.InterfaceStability;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.slf4j.Logger;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.slf4j.LoggerFactory;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<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> * Reader for a StoreFile.<a name="line.60"></a>
+<span class="sourceLineNo">061</span> */<a name="line.61"></a>
+<span class="sourceLineNo">062</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.PHOENIX)<a name="line.62"></a>
+<span class="sourceLineNo">063</span>@InterfaceStability.Evolving<a name="line.63"></a>
+<span class="sourceLineNo">064</span>public class StoreFileReader {<a name="line.64"></a>
+<span class="sourceLineNo">065</span>  private static final Logger LOG = LoggerFactory.getLogger(StoreFileReader.class.getName());<a name="line.65"></a>
+<span class="sourceLineNo">066</span><a name="line.66"></a>
+<span class="sourceLineNo">067</span>  protected BloomFilter generalBloomFilter = null;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>  protected BloomFilter deleteFamilyBloomFilter = null;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>  protected BloomType bloomFilterType;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>  private final HFile.Reader reader;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>  protected long sequenceID = -1;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>  protected TimeRange timeRange = null;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>  private byte[] lastBloomKey;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>  private long deleteFamilyCnt = -1;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>  private boolean bulkLoadResult = false;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>  private KeyValue.KeyOnlyKeyValue lastBloomKeyOnlyKV = null;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>  private boolean skipResetSeqId = true;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>  private int prefixLength = -1;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>  private byte[] delimiter = null;<a name="line.79"></a>
+<span class="sourceLineNo">080</span><a name="line.80"></a>
+<span class="sourceLineNo">081</span>  // Counter that is incremented every time a scanner is created on the<a name="line.81"></a>
+<span class="sourceLineNo">082</span>  // store file. It is decremented when the scan on the store file is<a name="line.82"></a>
+<span class="sourceLineNo">083</span>  // done. All StoreFileReader for the same StoreFile will share this counter.<a name="line.83"></a>
+<span class="sourceLineNo">084</span>  private final AtomicInteger refCount;<a name="line.84"></a>
+<span class="sourceLineNo">085</span><a name="line.85"></a>
+<span class="sourceLineNo">086</span>  // indicate that whether this StoreFileReader is shared, i.e., used for pread. If not, we will<a name="line.86"></a>
+<span class="sourceLineNo">087</span>  // close the internal reader when readCompleted is called.<a name="line.87"></a>
+<span class="sourceLineNo">088</span>  @VisibleForTesting<a name="line.88"></a>
+<span class="sourceLineNo">089</span>  final boolean shared;<a name="line.89"></a>
+<span class="sourceLineNo">090</span><a name="line.90"></a>
+<span class="sourceLineNo">091</span>  private volatile Listener listener;<a name="line.91"></a>
+<span class="sourceLineNo">092</span><a name="line.92"></a>
+<span class="sourceLineNo">093</span>  private boolean closed = false;<a name="line.93"></a>
+<span class="sourceLineNo">094</span><a name="line.94"></a>
+<span class="sourceLineNo">095</span>  private StoreFileReader(HFile.Reader reader, AtomicInteger refCount, boolean shared) {<a name="line.95"></a>
+<span class="sourceLineNo">096</span>    this.reader = reader;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>    bloomFilterType = BloomType.NONE;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    this.refCount = refCount;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>    this.shared = shared;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>  }<a name="line.100"></a>
+<span class="sourceLineNo">101</span><a name="line.101"></a>
+<span class="sourceLineNo">102</span>  public StoreFileReader(FileSystem fs, Path path, CacheConfig cacheConf,<a name="line.102"></a>
+<span class="sourceLineNo">103</span>      boolean primaryReplicaStoreFile, AtomicInteger refCount, boolean shared, Configuration conf)<a name="line.103"></a>
+<span class="sourceLineNo">104</span>      throws IOException {<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    this(HFile.createReader(fs, path, cacheConf, primaryReplicaStoreFile, conf), refCount, shared);<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>  public StoreFileReader(FileSystem fs, Path path, FSDataInputStreamWrapper in, long size,<a name="line.108"></a>
+<span class="sourceLineNo">109</span>      CacheConfig cacheConf, boolean primaryReplicaStoreFile, AtomicInteger refCount,<a name="line.109"></a>
+<span class="sourceLineNo">110</span>      boolean shared, Configuration conf) throws IOException {<a name="line.110"></a>
+<span class="sourceLineNo">111</span>    this(HFile.createReader(fs, path, in, size, cacheConf, primaryReplicaStoreFile, conf), refCount,<a name="line.111"></a>
+<span class="sourceLineNo">112</span>        shared);<a name="line.112"></a>
+<span class="sourceLineNo">113</span>  }<a name="line.113"></a>
+<span class="sourceLineNo">114</span><a name="line.114"></a>
+<span class="sourceLineNo">115</span>  void copyFields(StoreFileReader reader) {<a name="line.115"></a>
+<span class="sourceLineNo">116</span>    this.generalBloomFilter = reader.generalBloomFilter;<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    this.deleteFamilyBloomFilter = reader.deleteFamilyBloomFilter;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    this.bloomFilterType = reader.bloomFilterType;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>    this.sequenceID = reader.sequenceID;<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    this.timeRange = reader.timeRange;<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    this.lastBloomKey = reader.lastBloomKey;<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    this.bulkLoadResult = reader.bulkLoadResult;<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    this.lastBloomKeyOnlyKV = reader.lastBloomKeyOnlyKV;<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    this.skipResetSeqId = reader.skipResetSeqId;<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    this.prefixLength = reader.prefixLength;<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    this.delimiter = reader.delimiter;<a name="line.126"></a>
+<span class="sourceLineNo">127</span>  }<a name="line.127"></a>
+<span class="sourceLineNo">128</span><a name="line.128"></a>
+<span class="sourceLineNo">129</span>  public boolean isPrimaryReplicaReader() {<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    return reader.isPrimaryReplicaReader();<a name="line.130"></a>
+<span class="sourceLineNo">131</span>  }<a name="line.131"></a>
+<span class="sourceLineNo">132</span><a name="line.132"></a>
+<span class="sourceLineNo">133</span>  /**<a name="line.133"></a>
+<span class="sourceLineNo">134</span>   * ONLY USE DEFAULT CONSTRUCTOR FOR UNIT TESTS<a name="line.134"></a>
+<span class="sourceLineNo">135</span>   */<a name="line.135"></a>
+<span class="sourceLineNo">136</span>  @VisibleForTesting<a name="line.136"></a>
+<span class="sourceLineNo">137</span>  StoreFileReader() {<a name="line.137"></a>
+<span class="sourceLineNo">138</span>    this.refCount = new AtomicInteger(0);<a name="line.138"></a>
+<span class="sourceLineNo">139</span>    this.reader = null;<a name="line.139"></a>
+<span class="sourceLineNo">140</span>    this.shared = false;<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>  public CellComparator getComparator() {<a name="line.143"></a>
+<span class="sourceLineNo">144</span>    return reader.getComparator();<a name="line.144"></a>
+<span class="sourceLineNo">145</span>  }<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>   * Get a scanner to scan over this StoreFile.<a name="line.148"></a>
+<span class="sourceLineNo">149</span>   * @param cacheBlocks should this scanner cache blocks?<a name="line.149"></a>
+<span class="sourceLineNo">150</span>   * @param pread use pread (for highly concurrent small readers)<a name="line.150"></a>
+<span class="sourceLineNo">151</span>   * @param isCompaction is scanner being used for compaction?<a name="line.151"></a>
+<span class="sourceLineNo">152</span>   * @param scannerOrder Order of this scanner relative to other scanners. See<a name="line.152"></a>
+<span class="sourceLineNo">153</span>   *          {@link KeyValueScanner#getScannerOrder()}.<a name="line.153"></a>
+<span class="sourceLineNo">154</span>   * @param canOptimizeForNonNullColumn {@code true} if we can make sure there is no null column,<a name="line.154"></a>
+<span class="sourceLineNo">155</span>   *          otherwise {@code false}. This is a hint for optimization.<a name="line.155"></a>
+<span class="sourceLineNo">156</span>   * @return a scanner<a name="line.156"></a>
+<span class="sourceLineNo">157</span>   */<a name="line.157"></a>
+<span class="sourceLineNo">158</span>  public StoreFileScanner getStoreFileScanner(boolean cacheBlocks, boolean pread,<a name="line.158"></a>
+<span class="sourceLineNo">159</span>      boolean isCompaction, long readPt, long scannerOrder, boolean canOptimizeForNonNullColumn) {<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    return new StoreFileScanner(this, getScanner(cacheBlocks, pread, isCompaction),<a name="line.160"></a>
+<span class="sourceLineNo">161</span>        !isCompaction, reader.hasMVCCInfo(), readPt, scannerOrder, canOptimizeForNonNullColumn);<a name="line.161"></a>
+<span class="sourceLineNo">162</span>  }<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>   * Return the ref count associated with the reader whenever a scanner associated with the<a name="line.165"></a>
+<span class="sourceLineNo">166</span>   * reader is opened.<a name="line.166"></a>
+<span class="sourceLineNo">167</span>   */<a name="line.167"></a>
+<span class="sourceLineNo">168</span>  int getRefCount() {<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    return refCount.get();<a name="line.169"></a>
+<span class="sourceLineNo">170</span>  }<a name="line.170"></a>
+<span class="sourceLineNo">171</span><a name="line.171"></a>
+<span class="sourceLineNo">172</span>  /**<a name="line.172"></a>
+<span class="sourceLineNo">173</span>   * Indicate that the scanner has started reading with this reader. We need to increment the ref<a name="line.173"></a>
+<span class="sourceLineNo">174</span>   * count so reader is not close until some object is holding the lock<a name="line.174"></a>
+<span class="sourceLineNo">175</span>   */<a name="line.175"></a>
+<span class="sourceLineNo">176</span>  void incrementRefCount() {<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    refCount.incrementAndGet();<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>  /**<a name="line.180"></a>
+<span class="sourceLineNo">181</span>   * Indicate that the scanner has finished reading with this reader. We need to decrement the ref<a name="line.181"></a>
+<span class="sourceLineNo">182</span>   * count, and also, if this is not the common pread reader, we should close it.<a name="line.182"></a>
+<span class="sourceLineNo">183</span>   */<a name="line.183"></a>
+<span class="sourceLineNo">184</span>  void readCompleted() {<a name="line.184"></a>
+<span class="sourceLineNo">185</span>    refCount.decrementAndGet();<a name="line.185"></a>
+<span class="sourceLineNo">186</span>    if (!shared) {<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      try {<a name="line.187"></a>
+<span class="sourceLineNo">188</span>        reader.close(false);<a name="line.188"></a>
+<span class="sourceLineNo">189</span>      } catch (IOException e) {<a name="line.189"></a>
+<span class="sourceLineNo">190</span>        LOG.warn("failed to close stream reader", e);<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>  /**<a name="line.195"></a>
+<span class="sourceLineNo">196</span>   * @deprecated Do not write further code which depends on this call. Instead<a name="line.196"></a>
+<span class="sourceLineNo">197</span>   *   use getStoreFileScanner() which uses the StoreFileScanner class/interface<a name="line.197"></a>
+<span class="sourceLineNo">198</span>   *   which is the preferred way to scan a store with higher level concepts.<a name="line.198"></a>
+<span class="sourceLineNo">199</span>   *<a name="line.199"></a>
+<span class="sourceLineNo">200</span>   * @param cacheBlocks should we cache the blocks?<a name="line.200"></a>
+<span class="sourceLineNo">201</span>   * @param pread use pread (for concurrent small readers)<a name="line.201"></a>
+<span class="sourceLineNo">202</span>   * @return the underlying HFileScanner<a name="line.202"></a>
+<span class="sourceLineNo">203</span>   */<a name="line.203"></a>
+<span class="sourceLineNo">204</span>  @Deprecated<a name="line.204"></a>
+<span class="sourceLineNo">205</span>  public HFileScanner getScanner(boolean cacheBlocks, boolean pread) {<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    return getScanner(cacheBlocks, pread, false);<a name="line.206"></a>
+<span class="sourceLineNo">207</span>  }<a name="line.207"></a>
+<span class="sourceLineNo">208</span><a name="line.208"></a>
+<span class="sourceLineNo">209</span>  /**<a name="line.209"></a>
+<span class="sourceLineNo">210</span>   * @deprecated Do not write further code which depends on this call. Instead<a name="line.210"></a>
+<span class="sourceLineNo">211</span>   *   use getStoreFileScanner() which uses the StoreFileScanner class/interface<a name="line.211"></a>
+<span class="sourceLineNo">212</span>   *   which is the preferred way to scan a store with higher level concepts.<a name="line.212"></a>
+<span class="sourceLineNo">213</span>   *<a name="line.213"></a>
+<span class="sourceLineNo">214</span>   * @param cacheBlocks<a name="line.214"></a>
+<span class="sourceLineNo">215</span>   *          should we cache the blocks?<a name="line.215"></a>
+<span class="sourceLineNo">216</span>   * @param pread<a name="line.216"></a>
+<span class="sourceLineNo">217</span>   *          use pread (for concurrent small readers)<a name="line.217"></a>
+<span class="sourceLineNo">218</span>   * @param isCompaction<a name="line.218"></a>
+<span class="sourceLineNo">219</span>   *          is scanner being used for compaction?<a name="line.219"></a>
+<span class="sourceLineNo">220</span>   * @return the underlying HFileScanner<a name="line.220"></a>
+<span class="sourceLineNo">221</span>   */<a name="line.221"></a>
+<span class="sourceLineNo">222</span>  @Deprecated<a name="line.222"></a>
+<span class="sourceLineNo">223</span>  public HFileScanner getScanner(boolean cacheBlocks, boolean pread,<a name="line.223"></a>
+<span class="sourceLineNo">224</span>      boolean isCompaction) {<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    return reader.getScanner(cacheBlocks, pread, isCompaction);<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>  /**<a name="line.228"></a>
-<span class="sourceLineNo">229</span>   * Check if this storeFile may contain keys within the TimeRange that<a name="line.229"></a>
-<span class="sourceLineNo">230</span>   * have not expired (i.e. not older than oldestUnexpiredTS).<a name="line.230"></a>
-<span class="sourceLineNo">231</span>   * @param timeRange the timeRange to restrict<a name="line.231"></a>
-<span class="sourceLineNo">232</span>   * @param oldestUnexpiredTS the oldest timestamp that is not expired, as<a name="line.232"></a>
-<span class="sourceLineNo">233</span>   *          determined by the column family's TTL<a name="line.233"></a>
-<span class="sourceLineNo">234</span>   * @return false if queried keys definitely don't exist in this StoreFile<a name="line.234"></a>
-<span class="sourceLineNo">235</span>   */<a name="line.235"></a>
-<span class="sourceLineNo">236</span>  boolean passesTimerangeFilter(TimeRange tr, long oldestUnexpiredTS) {<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    return this.timeRange == null? true:<a name="line.237"></a>
-<span class="sourceLineNo">238</span>      this.timeRange.includesTimeRange(tr) &amp;&amp; this.timeRange.getMax() &gt;= oldestUnexpiredTS;<a name="line.238"></a>
+<span class="sourceLineNo">228</span>  public void close(boolean evictOnClose) throws IOException {<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    synchronized (this) {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>      if (closed) {<a name="line.230"></a>
+<span class="sourceLineNo">231</span>        return;<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      }<a name="line.232"></a>
+<span class="sourceLineNo">233</span>      reader.close(evictOnClose);<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      closed = true;<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    }<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    if (listener != null) {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      listener.storeFileReaderClosed(this);<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    }<a name="line.238"></a>
 <span class="sourceLineNo">239</span>  }<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>   * Checks whether the given scan passes the Bloom filter (if present). Only<a name="line.242"></a>
-<span class="sourceLineNo">243</span>   * checks Bloom filters for single-row or single-row-column scans. Bloom<a name="line.243"></a>
-<span class="sourceLineNo">244</span>   * filter checking for multi-gets is implemented as part of the store<a name="line.244"></a>
-<span class="sourceLineNo">245</span>   * scanner system (see {@link StoreFileScanner#seek(Cell)} and uses<a name="line.245"></a>
-<span class="sourceLineNo">246</span>   * the lower-level API {@link #passesGeneralRowBloomFilter(byte[], int, int)}<a name="line.246"></a>
-<span class="sourceLineNo">247</span>   * and {@link #passesGeneralRowColBloomFilter(Cell)}.<a name="line.247"></a>
-<span class="sourceLineNo">248</span>   *<a name="line.248"></a>
-<span class="sourceLineNo">249</span>   * @param scan the scan specification. Used to determine the row, and to<a name="line.249"></a>
-<span class="sourceLineNo">250</span>   *          check whether this is a single-row ("get") scan.<a name="line.250"></a>
-<span class="sourceLineNo">251</span>   * @param columns the set of columns. Only used for row-column Bloom<a name="line.251"></a>
-<span class="sourceLineNo">252</span>   *          filters.<a name="line.252"></a>
-<span class="sourceLineNo">253</span>   * @return true if the scan with the given column set passes the Bloom<a name="line.253"></a>
-<span class="sourceLineNo">254</span>   *         filter, or if the Bloom filter is not applicable for the scan.<a name="line.254"></a>
-<span class="sourceLineNo">255</span>   *         False if the Bloom filter is applicable and the scan fails it.<a name="line.255"></a>
-<span class="sourceLineNo">256</span>   */<a name="line.256"></a>
-<span class="sourceLineNo">257</span>  boolean passesBloomFilter(Scan scan, final SortedSet&lt;byte[]&gt; columns) {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    // Multi-column non-get scans will use Bloom filters through the<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    // lower-level API function that this function calls.<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    if (!scan.isGetScan()) {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      return true;<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    }<a name="line.262"></a>
-<span class="sourceLineNo">263</span><a name="line.263"></a>
-<span class="sourceLineNo">264</span>    byte[] row = scan.getStartRow();<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    switch (this.bloomFilterType) {<a name="line.265"></a>
-<span class="sourceLineNo">266</span>      case ROW:<a name="line.266"></a>
-<span class="sourceLineNo">267</span>        return passesGeneralRowBloomFilter(row, 0, row.length);<a name="line.267"></a>
-<span class="sourceLineNo">268</span><a name="line.268"></a>
-<span class="sourceLineNo">269</span>      case ROWCOL:<a name="line.269"></a>
-<span class="sourceLineNo">270</span>        if (columns != null &amp;&amp; columns.size() == 1) {<a name="line.270"></a>
-<span class="sourceLineNo">271</span>          byte[] column = columns.first();<a name="line.271"></a>
-<span class="sourceLineNo">272</span>          // create the required fake key<a name="line.272"></a>
-<span class="sourceLineNo">273</span>          Cell kvKey = PrivateCellUtil.createFirstOnRow(row, HConstants.EMPTY_BYTE_ARRAY, column);<a name="line.273"></a>
-<span class="sourceLineNo">274</span>          return passesGeneralRowColBloomFilter(kvKey);<a name="line.274"></a>
-<span class="sourceLineNo">275</span>        }<a name="line.275"></a>
-<span class="sourceLineNo">276</span><a name="line.276"></a>
-<span class="sourceLineNo">277</span>        // For multi-column queries the Bloom filter is checked from the<a name="line.277"></a>
-<span class="sourceLineNo">278</span>        // seekExact operation.<a name="line.278"></a>
-<span class="sourceLineNo">279</span>        return true;<a name="line.279"></a>
-<span class="sourceLineNo">280</span><a name="line.280"></a>
-<span class="sourceLineNo">281</span>      default:<a name="line.281"></a>
-<span class="sourceLineNo">282</span>        return true;<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><a name="line.285"></a>
-<span class="sourceLineNo">286</span>  public boolean passesDeleteFamilyBloomFilter(byte[] row, int rowOffset,<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      int rowLen) {<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    // Cache Bloom filter as a local variable in case it is set to null by<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    // another thread on an IO error.<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    BloomFilter bloomFilter = this.deleteFamilyBloomFilter;<a name="line.290"></a>
-<span class="sourceLineNo">291</span><a name="line.291"></a>
-<span class="sourceLineNo">292</span>    // Empty file or there is no delete family at all<a name="line.292"></a>
-<span class="sourceLineNo">293</span>    if (reader.getTrailer().getEntryCount() == 0 || deleteFamilyCnt == 0) {<a name="line.293"></a>
-<span class="sourceLineNo">294</span>      return false;<a name="line.294"></a>
-<span class="sourceLineNo">295</span>    }<a name="line.295"></a>
-<span class="sourceLineNo">296</span><a name="line.296"></a>
-<span class="sourceLineNo">297</span>    if (bloomFilter == null) {<a name="line.297"></a>
-<span class="sourceLineNo">298</span>      return true;<a name="line.298"></a>
+<span class="sourceLineNo">242</span>   * Check if this storeFile may contain keys within the TimeRange that<a name="line.242"></a>
+<span class="sourceLineNo">243</span>   * have not expired (i.e. not older than oldestUnexpiredTS).<a name="line.243"></a>
+<span class="sourceLineNo">244</span>   * @param tr the timeRange to restrict<a name="line.244"></a>
+<span class="sourceLineNo">245</span>   * @param oldestUnexpiredTS the oldest timestamp that is not expired, as<a name="line.245"></a>
+<span class="sourceLineNo">246</span>   *          determined by the column family's TTL<a name="line.246"></a>
+<span class="sourceLineNo">247</span>   * @return false if queried keys definitely don't exist in this StoreFile<a name="line.247"></a>
+<span class="sourceLineNo">248</span>   */<a name="line.248"></a>
+<span class="sourceLineNo">249</span>  boolean passesTimerangeFilter(TimeRange tr, long oldestUnexpiredTS) {<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    return this.timeRange == null? true:<a name="line.250"></a>
+<span class="sourceLineNo">251</span>      this.timeRange.includesTimeRange(tr) &amp;&amp; this.timeRange.getMax() &gt;= oldestUnexpiredTS;<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>   * Checks whether the given scan passes the Bloom filter (if present). Only<a name="line.255"></a>
+<span class="sourceLineNo">256</span>   * checks Bloom filters for single-row or single-row-column scans. Bloom<a name="line.256"></a>
+<span class="sourceLineNo">257</span>   * filter checking for multi-gets is implemented as part of the store<a name="line.257"></a>
+<span class="sourceLineNo">258</span>   * scanner system (see {@link StoreFileScanner#seek(Cell)} and uses<a name="line.258"></a>
+<span class="sourceLineNo">259</span>   * the lower-level API {@link #passesGeneralRowBloomFilter(byte[], int, int)}<a name="line.259"></a>
+<span class="sourceLineNo">260</span>   * and {@link #passesGeneralRowColBloomFilter(Cell)}.<a name="line.260"></a>
+<span class="sourceLineNo">261</span>   *<a name="line.261"></a>
+<span class="sourceLineNo">262</span>   * @param scan the scan specification. Used to determine the row, and to<a name="line.262"></a>
+<span class="sourceLineNo">263</span>   *          check whether this is a single-row ("get") scan.<a name="line.263"></a>
+<span class="sourceLineNo">264</span>   * @param columns the set of columns. Only used for row-column Bloom<a name="line.264"></a>
+<span class="sourceLineNo">265</span>   *          filters.<a name="line.265"></a>
+<span class="sourceLineNo">266</span>   * @return true if the scan with the given column set passes the Bloom<a name="line.266"></a>
+<span class="sourceLineNo">267</span>   *         filter, or if the Bloom filter is not applicable for the scan.<a name="line.267"></a>
+<span class="sourceLineNo">268</span>   *         False if the Bloom filter is applicable and the scan fails it.<a name="line.268"></a>
+<span class="sourceLineNo">269</span>   */<a name="line.269"></a>
+<span class="sourceLineNo">270</span>  boolean passesBloomFilter(Scan scan, final SortedSet&lt;byte[]&gt; columns) {<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    byte[] row = scan.getStartRow();<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    switch (this.bloomFilterType) {<a name="line.272"></a>
+<span class="sourceLineNo">273</span>      case ROW:<a name="line.273"></a>
+<span class="sourceLineNo">274</span>        if (!scan.isGetScan()) {<a name="line.274"></a>
+<span class="sourceLineNo">275</span>          return true;<a name="line.275"></a>
+<span class="sourceLineNo">276</span>        }<a name="line.276"></a>
+<span class="sourceLineNo">277</span>        return passesGeneralRowBloomFilter(row, 0, row.length);<a name="line.277"></a>
+<span class="sourceLineNo">278</span><a name="line.278"></a>
+<span class="sourceLineNo">279</span>      case ROWCOL:<a name="line.279"></a>
+<span class="sourceLineNo">280</span>        if (!scan.isGetScan()) {<a name="line.280"></a>
+<span class="sourceLineNo">281</span>          return true;<a name="line.281"></a>
+<span class="sourceLineNo">282</span>        }<a name="line.282"></a>
+<span class="sourceLineNo">283</span>        if (columns != null &amp;&amp; columns.size() == 1) {<a name="line.283"></a>
+<span class="sourceLineNo">284</span>          byte[] column = columns.first();<a name="line.284"></a>
+<span class="sourceLineNo">285</span>          // create the required fake key<a name="line.285"></a>
+<span class="sourceLineNo">286</span>          Cell kvKey = PrivateCellUtil.createFirstOnRow(row, HConstants.EMPTY_BYTE_ARRAY, column);<a name="line.286"></a>
+<span class="sourceLineNo">287</span>          return passesGeneralRowColBloomFilter(kvKey);<a name="line.287"></a>
+<span class="sourceLineNo">288</span>        }<a name="line.288"></a>
+<span class="sourceLineNo">289</span><a name="line.289"></a>
+<span class="sourceLineNo">290</span>        // For multi-column queries the Bloom filter is checked from the<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        // seekExact operation.<a name="line.291"></a>
+<span class="sourceLineNo">292</span>        return true;<a name="line.292"></a>
+<span class="sourceLineNo">293</span>      case ROWPREFIX_FIXED_LENGTH:<a name="line.293"></a>
+<span class="sourceLineNo">294</span>        return passesGeneralRowPrefixBloomFilter(scan);<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      case ROWPREFIX_DELIMITED:<a name="line.295"></a>
+<span class="sourceLineNo">296</span>        return passesGeneralDelimitedRowPrefixBloomFilter(scan);<a name="line.296"></a>
+<span class="sourceLineNo">297</span>      default:<a name="line.297"></a>
+<span class="sourceLineNo">298</span>        return true;<a name="line.298"></a>
 <span class="sourceLineNo">299</span>    }<a name="line.299"></a>
-<span class="sourceLineNo">300</span><a name="line.300"></a>
-<span class="sourceLineNo">301</span>    try {<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      if (!bloomFilter.supportsAutoLoading()) {<a name="line.302"></a>
-<span class="sourceLineNo">303</span>        return true;<a name="line.303"></a>
-<span class="sourceLineNo">304</span>      }<a name="line.304"></a>
-<span class="sourceLineNo">305</span>      return bloomFilter.contains(row, rowOffset, rowLen, null);<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    } catch (IllegalArgumentException e) {<a name="line.306"></a>
-<span class="sourceLineNo">307</span>      LOG.error("Bad Delete Family bloom filter data -- proceeding without",<a name="line.307"></a>
-<span class="sourceLineNo">308</span>          e);<a name="line.308"></a>
-<span class="sourceLineNo">309</span>      setDeleteFamilyBloomFilterFaulty();<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    }<a name="line.310"></a>
-<span class="sourceLineNo">311</span><a name="line.311"></a>
-<span class="sourceLineNo">312</span>    return true;<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>  /**<a name="line.315"></a>
-<span class="sourceLineNo">316</span>   * A method for checking Bloom filters. Called directly from<a name="line.316"></a>
-<span class="sourceLineNo">317</span>   * StoreFileScanner in case of a multi-column query.<a name="line.317"></a>
-<span class="sourceLineNo">318</span>   *<a name="line.318"></a>
-<span class="sourceLineNo">319</span>   * @return True if passes<a name="line.319"></a>
-<span class="sourceLineNo">320</span>   */<a name="line.320"></a>
-<span class="sourceLineNo">321</span>  public boolean passesGeneralRowBloomFilter(byte[] row, int rowOffset, int rowLen) {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    BloomFilter bloomFilter = this.generalBloomFilter;<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    if (bloomFilter == null) {<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      return true;<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    }<a name="line.325"></a>
-<span class="sourceLineNo">326</span><a name="line.326"></a>
-<span class="sourceLineNo">327</span>    // Used in ROW bloom<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    byte[] key = null;<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    if (rowOffset != 0 || rowLen != row.length) {<a name="line.329"></a>
-<span class="sourceLineNo">330</span>      throw new AssertionError(<a name="line.330"></a>
-<span class="sourceLineNo">331</span>          "For row-only Bloom filters the row " + "must occupy the whole array");<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    }<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    key = row;<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    return checkGeneralBloomFilter(key, null, bloomFilter);<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>   * A method for checking Bloom filters. Called directly from<a name="line.338"></a>
-<span class="sourceLineNo">339</span>   * StoreFileScanner in case of a multi-column query.<a name="line.339"></a>
-<span class="sourceLineNo">340</span>   *<a name="line.340"></a>
-<span class="sourceLineNo">341</span>   * @param cell<a name="line.341"></a>
-<span class="sourceLineNo">342</span>   *          the cell to check if present in BloomFilter<a name="line.342"></a>
-<span class="sourceLineNo">343</span>   * @return True if passes<a name="line.343"></a>
-<span class="sourceLineNo">344</span>   */<a name="line.344"></a>
-<span class="sourceLineNo">345</span>  public boolean passesGeneralRowColBloomFilter(Cell cell) {<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    BloomFilter bloomFilter = this.generalBloomFilter;<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    if (bloomFilter == null) {<a name="line.347"></a>
-<span class="sourceLineNo">348</span>      return true;<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    }<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    // Used in ROW_COL bloom<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    Cell kvKey = null;<a name="line.351"></a>
-<span class="sourceLineNo">352</span>    // Already if the incoming key is a fake rowcol key then use it as it is<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    if (cell.getTypeByte() == KeyValue.Type.Maximum.getCode() &amp;&amp; cell.getFamilyLength() == 0) {<a name="line.353"></a>
-<span class="sourceLineNo">354</span>      kvKey = cell;<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    } else {<a name="line.355"></a>
-<span class="sourceLineNo">356</span>      kvKey = PrivateCellUtil.createFirstOnRowCol(cell);<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    }<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    return checkGeneralBloomFilter(null, kvKey, bloomFilter);<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>  private boolean checkGeneralBloomFilter(byte[] key, Cell kvKey, BloomFilter bloomFilter) {<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    // Empty file<a name="line.362"></a>
-<span class="sourceLineNo">363</span>    if (reader.getTrailer().getEntryCount() == 0) {<a name="line.363"></a>
-<span class="sourceLineNo">364</span>      return false;<a name="line.364"></a>
+<span class="sourceLineNo">300</span>  }<a name="line.300"></a>
+<span class="sourceLineNo">301</span><a name="line.301"></a>
+<span class="sourceLineNo">302</span>  public boolean passesDeleteFamilyBloomFilter(byte[] row, int rowOffset,<a name="line.302"></a>
+<span class="sourceLineNo">303</span>      int rowLen) {<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    // Cache Bloom filter as a local variable in case it is set to null by<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    // another thread on an IO error.<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    BloomFilter bloomFilter = this.deleteFamilyBloomFilter;<a name="line.306"></a>
+<span class="sourceLineNo">307</span><a name="line.307"></a>
+<span class="sourceLineNo">308</span>    // Empty file or there is no delete family at all<a name="line.308"></a>
+<span class="sourceLineNo">309</span>    if (reader.getTrailer().getEntryCount() == 0 || deleteFamilyCnt == 0) {<a name="line.309"></a>
+<span class="sourceLineNo">310</span>      return false;<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    }<a name="line.311"></a>
+<span class="sourceLineNo">312</span><a name="line.312"></a>
+<span class="sourceLineNo">313</span>    if (bloomFilter == null) {<a name="line.313"></a>
+<span class="sourceLineNo">314</span>      return true;<a name="line.314"></a>
+<span class="sourceLineNo">315</span>    }<a name="line.315"></a>
+<span class="sourceLineNo">316</span><a name="line.316"></a>
+<span class="sourceLineNo">317</span>    try {<a name="line.317"></a>
+<span class="sourceLineNo">318</span>      if (!bloomFilter.supportsAutoLoading()) {<a name="line.318"></a>
+<span class="sourceLineNo">319</span>        return true;<a name="line.319"></a>
+<span class="sourceLineNo">320</span>      }<a name="line.320"></a>
+<span class="sourceLineNo">321</span>      return bloomFilter.contains(row, rowOffset, rowLen, null);<a name="line.321"></a>
+<span class="sourceLineNo">322</span>    } catch (IllegalArgumentException e) {<a name="line.322"></a>
+<span class="sourceLineNo">323</span>      LOG.error("Bad Delete Family bloom filter data -- proceeding without",<a name="line.323"></a>
+<span class="sourceLineNo">324</span>          e);<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      setDeleteFamilyBloomFilterFaulty();<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    }<a name="line.326"></a>
+<span class="sourceLineNo">327</span><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><a name="line.330"></a>
+<span class="sourceLineNo">331</span>  /**<a name="line.331"></a>
+<span class="sourceLineNo">332</span>   * A method for checking Bloom filters. Called directly from<a name="line.332"></a>
+<span class="sourceLineNo">333</span>   * StoreFileScanner in case of a multi-column query.<a name="line.333"></a>
+<span class="sourceLineNo">334</span>   *<a name="line.334"></a>
+<span class="sourceLineNo">335</span>   * @return True if passes<a name="line.335"></a>
+<span class="sourceLineNo">336</span>   */<a name="line.336"></a>
+<span class="sourceLineNo">337</span>  private boolean passesGeneralRowBloomFilter(byte[] row, int rowOffset, int rowLen) {<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    BloomFilter bloomFilter = this.generalBloomFilter;<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    if (bloomFilter == null) {<a name="line.339"></a>
+<span class="sourceLineNo">340</span>      return true;<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>    // Used in ROW bloom<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    byte[] key = null;<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    if (rowOffset != 0 || rowLen != row.length) {<a name="line.345"></a>
+<span class="sourceLineNo">346</span>      throw new AssertionError(<a name="line.346"></a>
+<span class="sourceLineNo">347</span>          "For row-only Bloom filters the row must occupy the whole array");<a name="line.347"></a>
+<span class="sourceLineNo">348</span>    }<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    key = row;<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    return checkGeneralBloomFilter(key, null, bloomFilter);<a name="line.350"></a>
+<span class="sourceLineNo">351</span>  }<a name="line.351"></a>
+<span class="sourceLineNo">352</span><a name="line.352"></a>
+<span class="sourceLineNo">353</span>  /**<a name="line.353"></a>
+<span class="sourceLineNo">354</span>   * A method for checking Bloom filters. Called directly from<a name="line.354"></a>
+<span class="sourceLineNo">355</span>   * StoreFileScanner in case of a multi-column query.<a name="line.355"></a>
+<span class="sourceLineNo">356</span>   *<a name="line.356"></a>
+<span class="sourceLineNo">357</span>   * @param cell<a name="line.357"></a>
+<span class="sourceLineNo">358</span>   *          the cell to check if present in BloomFilter<a name="line.358"></a>
+<span class="sourceLineNo">359</span>   * @return True if passes<a name="line.359"></a>
+<span class="sourceLineNo">360</span>   */<a name="line.360"></a>
+<span class="sourceLineNo">361</span>  public boolean passesGeneralRowColBloomFilter(Cell cell) {<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    BloomFilter bloomFilter = this.generalBloomFilter;<a name="line.362"></a>
+<span class="sourceLineNo">363</span>    if (bloomFilter == null) {<a name="line.363"></a>
+<span class="sourceLineNo">364</span>      return true;<a name="line.364"></a>
 <span class="sourceLineNo">365</span>    }<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    HFileBlock bloomBlock = null;<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    try {<a name="line.367"></a>
-<span class="sourceLineNo">368</span>      boolean shouldCheckBloom;<a name="line.368"></a>
-<span class="sourceLineNo">369</span>      ByteBuff bloom;<a name="line.369"></a>
-<span class="sourceLineNo">370</span>      if (bloomFilter.supportsAutoLoading()) {<a name="line.370"></a>
-<span class="sourceLineNo">371</span>        bloom = null;<a name="line.371"></a>
-<span class="sourceLineNo">372</span>        shouldCheckBloom = true;<a name="line.372"></a>
-<span class="sourceLineNo">373</span>      } else {<a name="line.373"></a>
-<span class="sourceLineNo">374</span>        bloomBlock = reader.getMetaBlock(HFile.BLOOM_FILTER_DATA_KEY, true);<a name="line.374"></a>
-<span class="sourceLineNo">375</span>        bloom = bloomBlock.getBufferWithoutHeader();<a name="line.375"></a>
-<span class="sourceLineNo">376</span>        shouldCheckBloom = bloom != null;<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      }<a name="line.377"></a>
-<span class="sourceLineNo">378</span><a name="line.378"></a>
-<span class="sourceLineNo">379</span>      if (shouldCheckBloom) {<a name="line.379"></a>
-<span class="sourceLineNo">380</span>        boolean exists;<a name="line.380"></a>
-<span class="sourceLineNo">381</span><a name="line.381"></a>
-<span class="sourceLineNo">382</span>        // Whether the primary Bloom key is greater than the last Bloom key<a name="line.382"></a>
-<span class="sourceLineNo">383</span>        // from the file info. For row-column Bloom filters this is not yet<a name="line.383"></a>
-<span class="sourceLineNo">384</span>        // a sufficient condition to return false.<a name="line.384"></a>
-<span class="sourceLineNo">385</span>        boolean keyIsAfterLast = (lastBloomKey != null);<a name="line.385"></a>
-<span class="sourceLineNo">386</span>        // hbase:meta does not have blooms. So we need not have special interpretation<a name="line.386"></a>
-<span class="sourceLineNo">387</span>        // of the hbase:meta cells.  We can safely use Bytes.BYTES_RAWCOMPARATOR for ROW Bloom<a name="line.387"></a>
-<span class="sourceLineNo">388</span>        if (keyIsAfterLast) {<a name="line.388"></a>
-<span class="sourceLineNo">389</span>          if (bloomFilterType == BloomType.ROW) {<a name="line.389"></a>
-<span class="sourceLineNo">390</span>            keyIsAfterLast = (Bytes.BYTES_RAWCOMPARATOR.compare(key, lastBloomKey) &gt; 0);<a name="line.390"></a>
-<span class="sourceLineNo">391</span>          } else {<a name="line.391"></a>
-<span class="sourceLineNo">392</span>            keyIsAfterLast = (CellComparator.getInstance().compare(kvKey, lastBloomKeyOnlyKV)) &gt; 0;<a name="line.392"></a>
-<span class="sourceLineNo">393</span>          }<a name="line.393"></a>
-<span class="sourceLineNo">394</span>        }<a name="line.394"></a>
-<span class="sourceLineNo">395</span><a name="line.395"></a>
-<span class="sourceLineNo">396</span>        if (bloomFilterType == BloomType.ROWCOL) {<a name="line.396"></a>
-<span class="sourceLineNo">397</span>          // Since a Row Delete is essentially a DeleteFamily applied to all<a name="line.397"></a>
-<span class="sourceLineNo">398</span>          // columns, a file might be skipped if using row+col Bloom filter.<a name="line.398"></a>
-<span class="sourceLineNo">399</span>          // In order to ensure this file is included an additional check is<a name="line.399"></a>
-<span class="sourceLineNo">400</span>          // required looking only for a row bloom.<a name="line.400"></a>
-<span class="sourceLineNo">401</span>          Cell rowBloomKey = PrivateCellUtil.createFirstOnRow(kvKey);<a name="line.401"></a>
-<span class="sourceLineNo">402</span>          // hbase:meta does not have blooms. So we need not have special interpretation<a name="line.402"></a>
-<span class="sourceLineNo">403</span>          // of the hbase:meta cells.  We can safely use Bytes.BYTES_RAWCOMPARATOR for ROW Bloom<a name="line.403"></a>
-<span class="sourceLineNo">404</span>          if (keyIsAfterLast<a name="line.404"></a>
-<span class="sourceLineNo">405</span>              &amp;&amp; (CellComparator.getInstance().compare(rowBloomKey, lastBloomKeyOnlyKV)) &gt; 0) {<a name="line.405"></a>
-<span class="sourceLineNo">406</span>            exists = false;<a name="line.406"></a>
-<span class="sourceLineNo">407</span>          } else {<a name="line.407"></a>
-<span class="sourceLineNo">408</span>            exists =<a name="line.408"></a>
-<span class="sourceLineNo">409</span>                bloomFilter.contains(kvKey, bloom, BloomType.ROWCOL) ||<a name="line.409"></a>
-<span class="sourceLineNo">410</span>                bloomFilter.contains(rowBloomKey, bloom, BloomType.ROWCOL);<a name="line.410"></a>
-<span class="sourceLineNo">411</span>          }<a name="line.411"></a>
-<span class="sourceLineNo">412</span>        } else {<a name="line.412"></a>
-<span class="sourceLineNo">413</span>          exists = !keyIsAfterLast<a name="line.413"></a>
-<span class="sourceLineNo">414</span>              &amp;&amp; bloomFilter.contains(key, 0, key.length, bloom);<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>        return exists;<a name="line.417"></a>
-<span class="sourceLineNo">418</span>      }<a name="line.418"></a>
-<span class="sourceLineNo">419</span>    } catch (IOException e) {<a name="line.419"></a>
-<span class="sourceLineNo">420</span>      LOG.error("Error reading bloom filter data -- proceeding without",<a name="line.420"></a>
-<span class="sourceLineNo">421</span>          e);<a name="line.421"></a>
-<span class="sourceLineNo">422</span>      setGeneralBloomFilterFaulty();<a name="line.422"></a>
-<span class="sourceLineNo">423</span>    } catch (IllegalArgumentException e) {<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      LOG.error("Bad bloom filter data -- proceeding without", e);<a name="line.424"></a>
-<span class="sourceLineNo">425</span>      setGeneralBloomFilterFaulty();<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    } finally {<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      // Return the bloom block so that its ref count can be decremented.<a name="line.427"></a>
-<span class="sourceLineNo">428</span>      reader.returnBlock(bloomBlock);<a name="line.428"></a>
-<span class="sourceLineNo">429</span>    }<a name="line.429"></a>
-<span class="sourceLineNo">430</span>    return true;<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>  /**<a name="line.433"></a>
-<span class="sourceLineNo">434</span>   * Checks whether the given scan rowkey range overlaps with the current storefile's<a name="line.434"></a>
-<span class="sourceLineNo">435</span>   * @param scan the scan specification. Used to determine the rowkey range.<a name="line.435"></a>
-<span class="sourceLineNo">436</span>   * @return true if there is overlap, false otherwise<a name="line.436"></a>
-<span class="sourceLineNo">437</span>   */<a name="line.437"></a>
-<span class="sourceLineNo">438</span>  public boolean passesKeyRangeFilter(Scan scan) {<a name="line.438"></a>
-<span class="sourceLineNo">439</span>    Optional&lt;Cell&gt; firstKeyKV = this.getFirstKey();<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    Optional&lt;Cell&gt; lastKeyKV = this.getLastKey();<a name="line.440"></a>
-<span class="sourceLineNo">441</span>    if (!firstKeyKV.isPresent() || !lastKeyKV.isPresent()) {<a name="line.441"></a>
-<span class="sourceLineNo">442</span>      // the file is empty<a name="line.442"></a>
-<span class="sourceLineNo">443</span>      return false;<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    }<a name="line.444"></a>
-<span class="sourceLineNo">445</span>    if (Bytes.equals(scan.getStartRow(), HConstants.EMPTY_START_ROW) &amp;&amp;<a name="line.445"></a>
-<span class="sourceLineNo">446</span>        Bytes.equals(scan.getStopRow(), HConstants.EMPTY_END_ROW)) {<a name="line.446"></a>
-<span class="sourceLineNo">447</span>      return true;<a name="line.447"></a>
-<span class="sourceLineNo">448</span>    }<a name="line.448"></a>
-<span class="sourceLineNo">449</span>    byte[] smallestScanRow = scan.isReversed() ? scan.getStopRow() : scan.getStartRow();<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    byte[] largestScanRow = scan.isReversed() ? scan.getStartRow() : scan.getStopRow();<a name="line.450"></a>
-<span class="sourceLineNo">451</span>    boolean nonOverLapping = (getComparator()<a name="line.451"></a>
-<span class="sourceLineNo">452</span>        .compareRows(firstKeyKV.get(), largestScanRow, 0, largestScanRow.length) &gt; 0 &amp;&amp;<a name="line.452"></a>
-<span class="sourceLineNo">453</span>        !Bytes.equals(scan.isReversed() ? scan.getStartRow() : scan.getStopRow(),<a name="line.453"></a>
-<span class="sourceLineNo">454</span>          HConstants.EMPTY_END_ROW)) ||<a name="line.454"></a>
-<span class="sourceLineNo">455</span>        getComparator().compareRows(lastKeyKV.get(), smallestScanRow, 0,<a name="line.455"></a>
-<span class="sourceLineNo">456</span>          smallestScanRow.length) &lt; 0;<a name="line.456"></a>
-<span class="sourceLineNo">457</span>    return !nonOverLapping;<a name="line.457"></a>
-<span class="sourceLineNo">458</span>  }<a name="line.458"></a>
-<span class="sourceLineNo">459</span><a name="line.459"></a>
-<span class="sourceLineNo">460</span>  public Map&lt;byte[], byte[]&gt; loadFileInfo() throws IOException {<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    Map&lt;byte [], byte []&gt; fi = reader.loadFileInfo();<a name="line.461"></a>
-<span class="sourceLineNo">462</span><a name="line.462"></a>
-<span class="sourceLineNo">463</span>    byte[] b = fi.get(BLOOM_FILTER_TYPE_KEY);<a name="line.463"></a>
-<span class="sourceLineNo">464</span>    if (b != null) {<a name="line.464"></a>
-<span class="sourceLineNo">465</span>      bloomFilterType = BloomType.valueOf(Bytes.toString(b));<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    }<a name="line.466"></a>
+<span class="sourceLineNo">366</span>    // Used in ROW_COL bloom<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    Cell kvKey = null;<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    // Already if the incoming key is a fake rowcol key then use it as it is<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    if (cell.getTypeByte() == KeyValue.Type.Maximum.getCode() &amp;&amp; cell.getFamilyLength() == 0) {<a name="line.369"></a>
+<span class="sourceLineNo">370</span>      kvKey = cell;<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    } else {<a name="line.371"></a>
+<span class="sourceLineNo">372</span>      kvKey = PrivateCellUtil.createFirstOnRowCol(cell);<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    }<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    return checkGeneralBloomFilter(null, kvKey, bloomFilter);<a name="line.374"></a>
+<span class="sourceLineNo">375</span>  }<a name="line.375"></a>
+<span class="sourceLineNo">376</span><a name="line.376"></a>
+<span class="sourceLineNo">377</span>  /**<a name="line.377"></a>
+<span class="sourceLineNo">378</span>   * A method for checking Bloom filters. Called directly from<a name="line.378"></a>
+<span class="sourceLineNo">379</span>   * StoreFileScanner in case of a multi-column query.<a name="line.379"></a>
+<span class="sourceLineNo">380</span>   *<a name="line.380"></a>
+<span class="sourceLineNo">381</span>   * @return True if passes<a name="line.381"></a>
+<span class="sourceLineNo">382</span>   */<a name="line.382"></a>
+<span class="sourceLineNo">383</span>  private boolean passesGeneralRowPrefixBloomFilter(Scan scan) {<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    BloomFilter bloomFilter = this.generalBloomFilter;<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    if (bloomFilter == null) {<a name="line.385"></a>
+<span class="sourceLineNo">386</span>      return true;<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    }<a name="line.387"></a>
+<span class="sourceLineNo">388</span><a name="line.388"></a>
+<span class="sourceLineNo">389</span>    byte[] row = scan.getStartRow();<a name="line.389"></a>
+<span class="sourceLineNo">390</span>    byte[] rowPrefix;<a name="line.390"></a>
+<span class="sourceLineNo">391</span>    if (scan.isGetScan()) {<a name="line.391"></a>
+<span class="sourceLineNo">392</span>      rowPrefix = Bytes.copy(row, 0, Math.min(prefixLength, row.length));<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    } else {<a name="line.393"></a>
+<span class="sourceLineNo">394</span>      // For non-get scans<a name="line.394"></a>
+<span class="sourceLineNo">395</span>      // Find out the common prefix of startRow and stopRow.<a name="line.395"></a>
+<span class="sourceLineNo">396</span>      int commonLength = Bytes.findCommonPrefix(scan.getStartRow(), scan.getStopRow(),<a name="line.396"></a>
+<span class="sourceLineNo">397</span>          scan.getStartRow().length, scan.getStopRow().length, 0, 0);<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      // startRow and stopRow don't have the common prefix.<a name="line.398"></a>
+<span class="sourceLineNo">399</span>      // Or the common prefix length is less than prefixLength<a name="line.399"></a>
+<span class="sourceLineNo">400</span>      if (commonLength &lt;= 0 || commonLength &lt; prefixLength) {<a name="line.400"></a>
+<span class="sourceLineNo">401</span>        return true;<a name="line.401"></a>
+<span class="sourceLineNo">402</span>      }<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      rowPrefix = Bytes.copy(row, 0, prefixLength);<a name="line.403"></a>
+<span class="sourceLineNo">404</span>    }<a name="line.404"></a>
+<span class="sourceLineNo">405</span>    return checkGeneralBloomFilter(rowPrefix, null, bloomFilter);<a name="line.405"></a>
+<span class="sourceLineNo">406</span>  }<a name="line.406"></a>
+<span class="sourceLineNo">407</span><a name="line.407"></a>
+<span class="sourceLineNo">408</span>  /**<a name="line.408"></a>
+<span class="sourceLineNo">409</span>   * A method for checking Bloom filters. Called directly from<a name="line.409"></a>
+<span class="sourceLineNo">410</span>   * StoreFileScanner in case of a multi-column query.<a name="line.410"></a>
+<span class="sourceLineNo">411</span>   *<a name="line.411"></a>
+<span class="sourceLineNo">412</span>   * @return True if passes<a name="line.412"></a>
+<span class="sourceLineNo">413</span>   */<a name="line.413"></a>
+<span class="sourceLineNo">414</span>  private boolean passesGeneralDelimitedRowPrefixBloomFilter(Scan scan) {<a name="line.414"></a>
+<span class="sourceLineNo">415</span>    BloomFilter bloomFilter = this.generalBloomFilter;<a name="line.415"></a>
+<span class="sourceLineNo">416</span>    if (bloomFilter == null) {<a name="line.416"></a>
+<span class="sourceLineNo">417</span>      return true;<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>    byte[] row = scan.getStartRow();<a name="line.420"></a>
+<span class="sourceLineNo">421</span>    byte[] rowPrefix;<a name="line.421"></a>
+<span class="sourceLineNo">422</span>    if (scan.isGetScan()) {<a name="line.422"></a>
+<span class="sourceLineNo">423</span>      int rowPrefixLength = Bytes.indexOf(row, delimiter);<a name="line.423"></a>
+<span class="sourceLineNo">424</span>      if (rowPrefixLength &lt;= 0) {<a name="line.424"></a>
+<span class="sourceLineNo">425</span>        rowPrefix = row;<a name="line.425"></a>
+<span class="sourceLineNo">426</span>      } else {<a name="line.426"></a>
+<span class="sourceLineNo">427</span>        rowPrefix = Bytes.copy(row, 0, rowPrefixLength);<a name="line.427"></a>
+<span class="sourceLineNo">428</span>      }<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    } else {<a name="line.429"></a>
+<span class="sourceLineNo">430</span>      // For non-get scans<a name="line.430"></a>
+<span class="sourceLineNo">431</span>      // If startRow does not contain delimiter, return true directly.<a name="line.431"></a>
+<span class="sourceLineNo">432</span>      int startRowPrefixLength = Bytes.indexOf(row, delimiter);<a name="line.432"></a>
+<span class="sourceLineNo">433</span>      if (startRowPrefixLength &lt;= 0) {<a name="line.433"></a>
+<span class="sourceLineNo">434</span>        return true;<a name="line.434"></a>
+<span class="sourceLineNo">435</span>      }<a name="line.435"></a>
+<span class="sourceLineNo">436</span>      // If stopRow does not have the same prefix as startRow, return true directly.<a name="line.436"></a>
+<span class="sourceLineNo">437</span>      int commonLength = Bytes.findCommonPrefix(scan.getStartRow(), scan.getStopRow(),<a name="line.437"></a>
+<span class="sourceLineNo">438</span>          startRowPrefixLength, scan.getStopRow().length, 0, 0);<a name="line.438"></a>
+<span class="sourceLineNo">439</span>      if (commonLength &lt; startRowPrefixLength) {<a name="line.439"></a>
+<span class="sourceLineNo">440</span>        return true;<a name="line.440"></a>
+<span class="sourceLineNo">441</span>      }<a name="line.441"></a>
+<span class="sourceLineNo">442</span>      rowPrefix = Bytes.copy(row, 0, startRowPrefixLength);<a name="line.442"></a>
+<span class="sourceLineNo">443</span>    }<a name="line.443"></a>
+<span class="sourceLineNo">444</span>    return checkGeneralBloomFilter(rowPrefix, null, bloomFilter);<a name="line.444"></a>
+<span class="sourceLineNo">445</span>  }<a name="line.445"></a>
+<span class="sourceLineNo">446</span><a name="line.446"></a>
+<span class="sourceLineNo">447</span>  private boolean checkGeneralBloomFilter(byte[] key, Cell kvKey, BloomFilter bloomFilter) {<a name="line.447"></a>
+<span class="sourceLineNo">448</span>    // Empty file<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    if (reader.getTrailer().getEntryCount() == 0) {<a name="line.449"></a>
+<span class="sourceLineNo">450</span>      return false;<a name="line.450"></a>
+<span class="sourceLineNo">451</span>    }<a name="line.451"></a>
+<span class="sourceLineNo">452</span>    HFileBlock bloomBlock = null;<a name="line.452"></a>
+<span class="sourceLineNo">453</span>    try {<a name="line.453"></a>
+<span class="sourceLineNo">454</span>      boolean shouldCheckBloom;<a name="line.454"></a>
+<span class="sourceLineNo">455</span>      ByteBuff bloom;<a name="line.455"></a>
+<span class="sourceLineNo">456</span>      if (bloomFilter.supportsAutoLoading()) {<a name="line.456"></a>
+<span class="sourceLineNo">457</span>        bloom = null;<a name="line.457"></a>
+<span class="sourceLineNo">458</span>        shouldCheckBloom = true;<a name="line.458"></a>
+<span class="sourceLineNo">459</span>      } else {<a name="line.459"></a>
+<span class="sourceLineNo">460</span>        bloomBlock = reader.getMetaBlock(HFile.BLOOM_FILTER_DATA_KEY, true);<a name="line.460"></a>
+<span class="sourceLineNo">461</span>        bloom = bloomBlock.getBufferWithoutHeader();<a name="line.461"></a>
+<span class="sourceLineNo">462</span>        shouldCheckBloom = bloom != null;<a name="line.462"></a>
+<span class="sourceLineNo">463</span>      }<a name="line.463"></a>
+<span class="sourceLineNo">464</span><a name="line.464"></a>
+<span class="sourceLineNo">465</span>      if (shouldCheckBloom) {<a name="line.465"></a>
+<span class="sourceLineNo">466</span>        boolean exists;<a name="line.466"></a>
 <span class="sourceLineNo">467</span><a name="line.467"></a>
-<span class="sourceLineNo">468</span>    lastBloomKey = fi.get(LAST_BLOOM_KEY);<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    if(bloomFilterType == BloomType.ROWCOL) {<a name="line.469"></a>
-<span class="sourceLineNo">470</span>      lastBloomKeyOnlyKV = new KeyValue.KeyOnlyKeyValue(lastBloomKey, 0, lastBloomKey.length);<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    }<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    byte[] cnt = fi.get(DELETE_FAMILY_COUNT);<a name="line.472"></a>
-<span class="sourceLineNo">473</span>    if (cnt != null) {<a name="line.473"></a>
-<span class="sourceLineNo">474</span>      deleteFamilyCnt = Bytes.toLong(cnt);<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>    return fi;<a name="line.477"></a>
-<span class="sourceLineNo">478</span>  }<a name="line.478"></a>
-<span class="sourceLineNo">479</span><a name="line.479"></a>
-<span class="sourceLineNo">480</span>  public void loadBloomfilter() {<a name="line.480"></a>
-<span class="sourceLineNo">481</span>    this.loadBloomfilter(BlockType.GENERAL_BLOOM_META);<a name="line.481"></a>
-<span class="sourceLineNo">482</span>    this.loadBloomfilter(BlockType.DELETE_FAMILY_BLOOM_META);<a name="line.48

<TRUNCATED>

[26/43] hbase-site git commit: Published site at 7ab77518a2569e2416a50020393aa386e7734501.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html
index e5feb84..0cf012a 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html
@@ -72,3861 +72,3875 @@
 <span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.ClusterMetrics;<a name="line.64"></a>
 <span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.ClusterMetrics.Option;<a name="line.65"></a>
 <span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.ClusterMetricsBuilder;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.HBaseIOException;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.HBaseInterfaceAudience;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.HConstants;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.InvalidFamilyOperationException;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.MasterNotRunningException;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.MetaTableAccessor;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.PleaseHoldException;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.ReplicationPeerNotFoundException;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.ServerName;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.TableDescriptors;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.TableName;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.TableNotDisabledException;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.TableNotFoundException;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.UnknownRegionException;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.client.MasterSwitchType;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.client.RegionInfoBuilder;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.client.Result;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.client.TableState;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.coprocessor.CoprocessorHost;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.exceptions.MergeRegionException;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.executor.ExecutorType;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.favored.FavoredNodesManager;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.favored.FavoredNodesPromoter;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.http.InfoServer;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcUtils;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.ipc.ServerNotRunningYetException;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.log.HBaseMarkers;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.master.MasterRpcServices.BalanceSwitchMode;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.master.assignment.AssignProcedure;<a name="line.104"></a>
-<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.master.assignment.AssignmentManager;<a name="line.105"></a>
-<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.master.assignment.MergeTableRegionsProcedure;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.master.assignment.MoveRegionProcedure;<a name="line.107"></a>
-<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.master.assignment.RegionStateNode;<a name="line.108"></a>
-<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.master.assignment.RegionStates;<a name="line.109"></a>
-<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.master.assignment.TransitRegionStateProcedure;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.master.assignment.UnassignProcedure;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.master.balancer.BalancerChore;<a name="line.112"></a>
-<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.master.balancer.BaseLoadBalancer;<a name="line.113"></a>
-<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.master.balancer.ClusterStatusChore;<a name="line.114"></a>
-<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.master.balancer.LoadBalancerFactory;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.master.cleaner.CleanerChore;<a name="line.116"></a>
-<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.master.cleaner.HFileCleaner;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.master.cleaner.LogCleaner;<a name="line.118"></a>
-<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.master.cleaner.ReplicationBarrierCleaner;<a name="line.119"></a>
-<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.master.locking.LockManager;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.master.normalizer.NormalizationPlan;<a name="line.121"></a>
-<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.master.normalizer.NormalizationPlan.PlanType;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizer;<a name="line.123"></a>
-<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizerChore;<a name="line.124"></a>
-<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizerFactory;<a name="line.125"></a>
-<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.master.procedure.CreateTableProcedure;<a name="line.126"></a>
-<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.master.procedure.DeleteNamespaceProcedure;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.master.procedure.DeleteTableProcedure;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.master.procedure.DisableTableProcedure;<a name="line.129"></a>
-<span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.master.procedure.EnableTableProcedure;<a name="line.130"></a>
-<span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.master.procedure.InitMetaProcedure;<a name="line.131"></a>
-<span class="sourceLineNo">132</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureConstants;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv;<a name="line.133"></a>
-<span class="sourceLineNo">134</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureScheduler;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureUtil;<a name="line.135"></a>
-<span class="sourceLineNo">136</span>import org.apache.hadoop.hbase.master.procedure.ModifyTableProcedure;<a name="line.136"></a>
-<span class="sourceLineNo">137</span>import org.apache.hadoop.hbase.master.procedure.ProcedurePrepareLatch;<a name="line.137"></a>
-<span class="sourceLineNo">138</span>import org.apache.hadoop.hbase.master.procedure.RecoverMetaProcedure;<a name="line.138"></a>
-<span class="sourceLineNo">139</span>import org.apache.hadoop.hbase.master.procedure.ServerCrashProcedure;<a name="line.139"></a>
-<span class="sourceLineNo">140</span>import org.apache.hadoop.hbase.master.procedure.TruncateTableProcedure;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.master.replication.AbstractPeerProcedure;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.master.replication.AddPeerProcedure;<a name="line.142"></a>
-<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.master.replication.DisablePeerProcedure;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.master.replication.EnablePeerProcedure;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.master.replication.RemovePeerProcedure;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.master.replication.ReplicationPeerManager;<a name="line.146"></a>
-<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.master.replication.SyncReplicationReplayWALManager;<a name="line.147"></a>
-<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.master.replication.TransitPeerSyncReplicationStateProcedure;<a name="line.148"></a>
-<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.master.replication.UpdatePeerConfigProcedure;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.master.snapshot.SnapshotManager;<a name="line.150"></a>
-<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.master.zksyncer.MasterAddressSyncer;<a name="line.151"></a>
-<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.master.zksyncer.MetaLocationSyncer;<a name="line.152"></a>
-<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.mob.MobConstants;<a name="line.153"></a>
-<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.monitoring.MemoryBoundedLogMessageBuffer;<a name="line.154"></a>
-<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.155"></a>
-<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.156"></a>
-<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.procedure.MasterProcedureManagerHost;<a name="line.157"></a>
-<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.procedure.flush.MasterFlushTableProcedureManager;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.procedure2.LockedResource;<a name="line.159"></a>
-<span class="sourceLineNo">160</span>import org.apache.hadoop.hbase.procedure2.Procedure;<a name="line.160"></a>
-<span class="sourceLineNo">161</span>import org.apache.hadoop.hbase.procedure2.ProcedureEvent;<a name="line.161"></a>
-<span class="sourceLineNo">162</span>import org.apache.hadoop.hbase.procedure2.ProcedureExecutor;<a name="line.162"></a>
-<span class="sourceLineNo">163</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureDispatcher.RemoteProcedure;<a name="line.163"></a>
-<span class="sourceLineNo">164</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureException;<a name="line.164"></a>
-<span class="sourceLineNo">165</span>import org.apache.hadoop.hbase.procedure2.store.wal.WALProcedureStore;<a name="line.165"></a>
-<span class="sourceLineNo">166</span>import org.apache.hadoop.hbase.quotas.MasterQuotaManager;<a name="line.166"></a>
-<span class="sourceLineNo">167</span>import org.apache.hadoop.hbase.quotas.MasterQuotasObserver;<a name="line.167"></a>
-<span class="sourceLineNo">168</span>import org.apache.hadoop.hbase.quotas.QuotaObserverChore;<a name="line.168"></a>
-<span class="sourceLineNo">169</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.169"></a>
-<span class="sourceLineNo">170</span>import org.apache.hadoop.hbase.quotas.SnapshotQuotaObserverChore;<a name="line.170"></a>
-<span class="sourceLineNo">171</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifier;<a name="line.171"></a>
-<span class="sourceLineNo">172</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifierFactory;<a name="line.172"></a>
-<span class="sourceLineNo">173</span>import org.apache.hadoop.hbase.regionserver.DefaultStoreEngine;<a name="line.173"></a>
-<span class="sourceLineNo">174</span>import org.apache.hadoop.hbase.regionserver.HRegionServer;<a name="line.174"></a>
-<span class="sourceLineNo">175</span>import org.apache.hadoop.hbase.regionserver.HStore;<a name="line.175"></a>
-<span class="sourceLineNo">176</span>import org.apache.hadoop.hbase.regionserver.RSRpcServices;<a name="line.176"></a>
-<span class="sourceLineNo">177</span>import org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost;<a name="line.177"></a>
-<span class="sourceLineNo">178</span>import org.apache.hadoop.hbase.regionserver.RegionSplitPolicy;<a name="line.178"></a>
-<span class="sourceLineNo">179</span>import org.apache.hadoop.hbase.regionserver.compactions.ExploringCompactionPolicy;<a name="line.179"></a>
-<span class="sourceLineNo">180</span>import org.apache.hadoop.hbase.regionserver.compactions.FIFOCompactionPolicy;<a name="line.180"></a>
-<span class="sourceLineNo">181</span>import org.apache.hadoop.hbase.replication.ReplicationException;<a name="line.181"></a>
-<span class="sourceLineNo">182</span>import org.apache.hadoop.hbase.replication.ReplicationLoadSource;<a name="line.182"></a>
-<span class="sourceLineNo">183</span>import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;<a name="line.183"></a>
-<span class="sourceLineNo">184</span>import org.apache.hadoop.hbase.replication.ReplicationPeerDescription;<a name="line.184"></a>
-<span class="sourceLineNo">185</span>import org.apache.hadoop.hbase.replication.ReplicationUtils;<a name="line.185"></a>
-<span class="sourceLineNo">186</span>import org.apache.hadoop.hbase.replication.SyncReplicationState;<a name="line.186"></a>
-<span class="sourceLineNo">187</span>import org.apache.hadoop.hbase.replication.master.ReplicationHFileCleaner;<a name="line.187"></a>
-<span class="sourceLineNo">188</span>import org.apache.hadoop.hbase.replication.master.ReplicationLogCleaner;<a name="line.188"></a>
-<span class="sourceLineNo">189</span>import org.apache.hadoop.hbase.replication.master.ReplicationPeerConfigUpgrader;<a name="line.189"></a>
-<span class="sourceLineNo">190</span>import org.apache.hadoop.hbase.security.AccessDeniedException;<a name="line.190"></a>
-<span class="sourceLineNo">191</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.191"></a>
-<span class="sourceLineNo">192</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.192"></a>
-<span class="sourceLineNo">193</span>import org.apache.hadoop.hbase.util.Addressing;<a name="line.193"></a>
-<span class="sourceLineNo">194</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.194"></a>
-<span class="sourceLineNo">195</span>import org.apache.hadoop.hbase.util.CompressionTest;<a name="line.195"></a>
-<span class="sourceLineNo">196</span>import org.apache.hadoop.hbase.util.EncryptionTest;<a name="line.196"></a>
-<span class="sourceLineNo">197</span>import org.apache.hadoop.hbase.util.HBaseFsck;<a name="line.197"></a>
-<span class="sourceLineNo">198</span>import org.apache.hadoop.hbase.util.HFileArchiveUtil;<a name="line.198"></a>
-<span class="sourceLineNo">199</span>import org.apache.hadoop.hbase.util.HasThread;<a name="line.199"></a>
-<span class="sourceLineNo">200</span>import org.apache.hadoop.hbase.util.IdLock;<a name="line.200"></a>
-<span class="sourceLineNo">201</span>import org.apache.hadoop.hbase.util.ModifyRegionUtils;<a name="line.201"></a>
-<span class="sourceLineNo">202</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.202"></a>
-<span class="sourceLineNo">203</span>import org.apache.hadoop.hbase.util.RetryCounter;<a name="line.203"></a>
-<span class="sourceLineNo">204</span>import org.apache.hadoop.hbase.util.RetryCounterFactory;<a name="line.204"></a>
-<span class="sourceLineNo">205</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.205"></a>
-<span class="sourceLineNo">206</span>import org.apache.hadoop.hbase.util.VersionInfo;<a name="line.206"></a>
-<span class="sourceLineNo">207</span>import org.apache.hadoop.hbase.zookeeper.LoadBalancerTracker;<a name="line.207"></a>
-<span class="sourceLineNo">208</span>import org.apache.hadoop.hbase.zookeeper.MasterAddressTracker;<a name="line.208"></a>
-<span class="sourceLineNo">209</span>import org.apache.hadoop.hbase.zookeeper.MasterMaintenanceModeTracker;<a name="line.209"></a>
-<span class="sourceLineNo">210</span>import org.apache.hadoop.hbase.zookeeper.RegionNormalizerTracker;<a name="line.210"></a>
-<span class="sourceLineNo">211</span>import org.apache.hadoop.hbase.zookeeper.ZKClusterId;<a name="line.211"></a>
-<span class="sourceLineNo">212</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.212"></a>
-<span class="sourceLineNo">213</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.213"></a>
-<span class="sourceLineNo">214</span>import org.apache.hadoop.hbase.zookeeper.ZNodePaths;<a name="line.214"></a>
-<span class="sourceLineNo">215</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.215"></a>
-<span class="sourceLineNo">216</span>import org.apache.zookeeper.KeeperException;<a name="line.216"></a>
-<span class="sourceLineNo">217</span>import org.eclipse.jetty.server.Server;<a name="line.217"></a>
-<span class="sourceLineNo">218</span>import org.eclipse.jetty.server.ServerConnector;<a name="line.218"></a>
-<span class="sourceLineNo">219</span>import org.eclipse.jetty.servlet.ServletHolder;<a name="line.219"></a>
-<span class="sourceLineNo">220</span>import org.eclipse.jetty.webapp.WebAppContext;<a name="line.220"></a>
-<span class="sourceLineNo">221</span>import org.slf4j.Logger;<a name="line.221"></a>
-<span class="sourceLineNo">222</span>import org.slf4j.LoggerFactory;<a name="line.222"></a>
-<span class="sourceLineNo">223</span><a name="line.223"></a>
-<span class="sourceLineNo">224</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.224"></a>
-<span class="sourceLineNo">225</span>import org.apache.hbase.thirdparty.com.google.common.collect.ImmutableSet;<a name="line.225"></a>
-<span class="sourceLineNo">226</span>import org.apache.hbase.thirdparty.com.google.common.collect.Lists;<a name="line.226"></a>
-<span class="sourceLineNo">227</span>import org.apache.hbase.thirdparty.com.google.common.collect.Maps;<a name="line.227"></a>
-<span class="sourceLineNo">228</span><a name="line.228"></a>
-<span class="sourceLineNo">229</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.229"></a>
-<span class="sourceLineNo">230</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoResponse.CompactionState;<a name="line.230"></a>
-<span class="sourceLineNo">231</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.Quotas;<a name="line.231"></a>
-<span class="sourceLineNo">232</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.SpaceViolationPolicy;<a name="line.232"></a>
-<span class="sourceLineNo">233</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;<a name="line.233"></a>
-<span class="sourceLineNo">234</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos;<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> * HMaster is the "master server" for HBase. An HBase cluster has one active<a name="line.237"></a>
-<span class="sourceLineNo">238</span> * master.  If many masters are started, all compete.  Whichever wins goes on to<a name="line.238"></a>
-<span class="sourceLineNo">239</span> * run the cluster.  All others park themselves in their constructor until<a name="line.239"></a>
-<span class="sourceLineNo">240</span> * master or cluster shutdown or until the active master loses its lease in<a name="line.240"></a>
-<span class="sourceLineNo">241</span> * zookeeper.  Thereafter, all running master jostle to take over master role.<a name="line.241"></a>
-<span class="sourceLineNo">242</span> *<a name="line.242"></a>
-<span class="sourceLineNo">243</span> * &lt;p&gt;The Master can be asked shutdown the cluster. See {@link #shutdown()}.  In<a name="line.243"></a>
-<span class="sourceLineNo">244</span> * this case it will tell all regionservers to go down and then wait on them<a name="line.244"></a>
-<span class="sourceLineNo">245</span> * all reporting in that they are down.  This master will then shut itself down.<a name="line.245"></a>
-<span class="sourceLineNo">246</span> *<a name="line.246"></a>
-<span class="sourceLineNo">247</span> * &lt;p&gt;You can also shutdown just this master.  Call {@link #stopMaster()}.<a name="line.247"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.CompoundConfiguration;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.HBaseIOException;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.HBaseInterfaceAudience;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.HConstants;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.InvalidFamilyOperationException;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.MasterNotRunningException;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.MetaTableAccessor;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.PleaseHoldException;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.ReplicationPeerNotFoundException;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.ServerName;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.TableDescriptors;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.TableName;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.TableNotDisabledException;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.TableNotFoundException;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.UnknownRegionException;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.client.MasterSwitchType;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.client.RegionInfoBuilder;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.client.Result;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.client.TableState;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.coprocessor.CoprocessorHost;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.exceptions.MergeRegionException;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.executor.ExecutorType;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.favored.FavoredNodesManager;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.favored.FavoredNodesPromoter;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.http.InfoServer;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcUtils;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.101"></a>
+<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.ipc.ServerNotRunningYetException;<a name="line.102"></a>
+<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.log.HBaseMarkers;<a name="line.103"></a>
+<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.master.MasterRpcServices.BalanceSwitchMode;<a name="line.104"></a>
+<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.master.assignment.AssignProcedure;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.master.assignment.AssignmentManager;<a name="line.106"></a>
+<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.master.assignment.MergeTableRegionsProcedure;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.master.assignment.MoveRegionProcedure;<a name="line.108"></a>
+<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.master.assignment.RegionStateNode;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.master.assignment.RegionStates;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.master.assignment.TransitRegionStateProcedure;<a name="line.111"></a>
+<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.master.assignment.UnassignProcedure;<a name="line.112"></a>
+<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.master.balancer.BalancerChore;<a name="line.113"></a>
+<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.master.balancer.BaseLoadBalancer;<a name="line.114"></a>
+<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.master.balancer.ClusterStatusChore;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.master.balancer.LoadBalancerFactory;<a name="line.116"></a>
+<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.master.cleaner.CleanerChore;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.master.cleaner.HFileCleaner;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.master.cleaner.LogCleaner;<a name="line.119"></a>
+<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.master.cleaner.ReplicationBarrierCleaner;<a name="line.120"></a>
+<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.master.locking.LockManager;<a name="line.121"></a>
+<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.master.normalizer.NormalizationPlan;<a name="line.122"></a>
+<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.master.normalizer.NormalizationPlan.PlanType;<a name="line.123"></a>
+<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizer;<a name="line.124"></a>
+<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizerChore;<a name="line.125"></a>
+<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizerFactory;<a name="line.126"></a>
+<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.master.procedure.CreateTableProcedure;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.master.procedure.DeleteNamespaceProcedure;<a name="line.128"></a>
+<span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.master.procedure.DeleteTableProcedure;<a name="line.129"></a>
+<span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.master.procedure.DisableTableProcedure;<a name="line.130"></a>
+<span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.master.procedure.EnableTableProcedure;<a name="line.131"></a>
+<span class="sourceLineNo">132</span>import org.apache.hadoop.hbase.master.procedure.InitMetaProcedure;<a name="line.132"></a>
+<span class="sourceLineNo">133</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureConstants;<a name="line.133"></a>
+<span class="sourceLineNo">134</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureScheduler;<a name="line.135"></a>
+<span class="sourceLineNo">136</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureUtil;<a name="line.136"></a>
+<span class="sourceLineNo">137</span>import org.apache.hadoop.hbase.master.procedure.ModifyTableProcedure;<a name="line.137"></a>
+<span class="sourceLineNo">138</span>import org.apache.hadoop.hbase.master.procedure.ProcedurePrepareLatch;<a name="line.138"></a>
+<span class="sourceLineNo">139</span>import org.apache.hadoop.hbase.master.procedure.RecoverMetaProcedure;<a name="line.139"></a>
+<span class="sourceLineNo">140</span>import org.apache.hadoop.hbase.master.procedure.ServerCrashProcedure;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.master.procedure.TruncateTableProcedure;<a name="line.141"></a>
+<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.master.replication.AbstractPeerProcedure;<a name="line.142"></a>
+<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.master.replication.AddPeerProcedure;<a name="line.143"></a>
+<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.master.replication.DisablePeerProcedure;<a name="line.144"></a>
+<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.master.replication.EnablePeerProcedure;<a name="line.145"></a>
+<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.master.replication.RemovePeerProcedure;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.master.replication.ReplicationPeerManager;<a name="line.147"></a>
+<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.master.replication.SyncReplicationReplayWALManager;<a name="line.148"></a>
+<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.master.replication.TransitPeerSyncReplicationStateProcedure;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.master.replication.UpdatePeerConfigProcedure;<a name="line.150"></a>
+<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.master.snapshot.SnapshotManager;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.master.zksyncer.MasterAddressSyncer;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.master.zksyncer.MetaLocationSyncer;<a name="line.153"></a>
+<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.mob.MobConstants;<a name="line.154"></a>
+<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.monitoring.MemoryBoundedLogMessageBuffer;<a name="line.155"></a>
+<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.156"></a>
+<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.157"></a>
+<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.procedure.MasterProcedureManagerHost;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.procedure.flush.MasterFlushTableProcedureManager;<a name="line.159"></a>
+<span class="sourceLineNo">160</span>import org.apache.hadoop.hbase.procedure2.LockedResource;<a name="line.160"></a>
+<span class="sourceLineNo">161</span>import org.apache.hadoop.hbase.procedure2.Procedure;<a name="line.161"></a>
+<span class="sourceLineNo">162</span>import org.apache.hadoop.hbase.procedure2.ProcedureEvent;<a name="line.162"></a>
+<span class="sourceLineNo">163</span>import org.apache.hadoop.hbase.procedure2.ProcedureExecutor;<a name="line.163"></a>
+<span class="sourceLineNo">164</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureDispatcher.RemoteProcedure;<a name="line.164"></a>
+<span class="sourceLineNo">165</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureException;<a name="line.165"></a>
+<span class="sourceLineNo">166</span>import org.apache.hadoop.hbase.procedure2.store.wal.WALProcedureStore;<a name="line.166"></a>
+<span class="sourceLineNo">167</span>import org.apache.hadoop.hbase.quotas.MasterQuotaManager;<a name="line.167"></a>
+<span class="sourceLineNo">168</span>import org.apache.hadoop.hbase.quotas.MasterQuotasObserver;<a name="line.168"></a>
+<span class="sourceLineNo">169</span>import org.apache.hadoop.hbase.quotas.QuotaObserverChore;<a name="line.169"></a>
+<span class="sourceLineNo">170</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.170"></a>
+<span class="sourceLineNo">171</span>import org.apache.hadoop.hbase.quotas.SnapshotQuotaObserverChore;<a name="line.171"></a>
+<span class="sourceLineNo">172</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifier;<a name="line.172"></a>
+<span class="sourceLineNo">173</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifierFactory;<a name="line.173"></a>
+<span class="sourceLineNo">174</span>import org.apache.hadoop.hbase.regionserver.DefaultStoreEngine;<a name="line.174"></a>
+<span class="sourceLineNo">175</span>import org.apache.hadoop.hbase.regionserver.HRegionServer;<a name="line.175"></a>
+<span class="sourceLineNo">176</span>import org.apache.hadoop.hbase.regionserver.HStore;<a name="line.176"></a>
+<span class="sourceLineNo">177</span>import org.apache.hadoop.hbase.regionserver.RSRpcServices;<a name="line.177"></a>
+<span class="sourceLineNo">178</span>import org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost;<a name="line.178"></a>
+<span class="sourceLineNo">179</span>import org.apache.hadoop.hbase.regionserver.RegionSplitPolicy;<a name="line.179"></a>
+<span class="sourceLineNo">180</span>import org.apache.hadoop.hbase.regionserver.compactions.ExploringCompactionPolicy;<a name="line.180"></a>
+<span class="sourceLineNo">181</span>import org.apache.hadoop.hbase.regionserver.compactions.FIFOCompactionPolicy;<a name="line.181"></a>
+<span class="sourceLineNo">182</span>import org.apache.hadoop.hbase.replication.ReplicationException;<a name="line.182"></a>
+<span class="sourceLineNo">183</span>import org.apache.hadoop.hbase.replication.ReplicationLoadSource;<a name="line.183"></a>
+<span class="sourceLineNo">184</span>import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;<a name="line.184"></a>
+<span class="sourceLineNo">185</span>import org.apache.hadoop.hbase.replication.ReplicationPeerDescription;<a name="line.185"></a>
+<span class="sourceLineNo">186</span>import org.apache.hadoop.hbase.replication.ReplicationUtils;<a name="line.186"></a>
+<span class="sourceLineNo">187</span>import org.apache.hadoop.hbase.replication.SyncReplicationState;<a name="line.187"></a>
+<span class="sourceLineNo">188</span>import org.apache.hadoop.hbase.replication.master.ReplicationHFileCleaner;<a name="line.188"></a>
+<span class="sourceLineNo">189</span>import org.apache.hadoop.hbase.replication.master.ReplicationLogCleaner;<a name="line.189"></a>
+<span class="sourceLineNo">190</span>import org.apache.hadoop.hbase.replication.master.ReplicationPeerConfigUpgrader;<a name="line.190"></a>
+<span class="sourceLineNo">191</span>import org.apache.hadoop.hbase.security.AccessDeniedException;<a name="line.191"></a>
+<span class="sourceLineNo">192</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.192"></a>
+<span class="sourceLineNo">193</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.193"></a>
+<span class="sourceLineNo">194</span>import org.apache.hadoop.hbase.util.Addressing;<a name="line.194"></a>
+<span class="sourceLineNo">195</span>import org.apache.hadoop.hbase.util.BloomFilterUtil;<a name="line.195"></a>
+<span class="sourceLineNo">196</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.196"></a>
+<span class="sourceLineNo">197</span>import org.apache.hadoop.hbase.util.CompressionTest;<a name="line.197"></a>
+<span class="sourceLineNo">198</span>import org.apache.hadoop.hbase.util.EncryptionTest;<a name="line.198"></a>
+<span class="sourceLineNo">199</span>import org.apache.hadoop.hbase.util.HBaseFsck;<a name="line.199"></a>
+<span class="sourceLineNo">200</span>import org.apache.hadoop.hbase.util.HFileArchiveUtil;<a name="line.200"></a>
+<span class="sourceLineNo">201</span>import org.apache.hadoop.hbase.util.HasThread;<a name="line.201"></a>
+<span class="sourceLineNo">202</span>import org.apache.hadoop.hbase.util.IdLock;<a name="line.202"></a>
+<span class="sourceLineNo">203</span>import org.apache.hadoop.hbase.util.ModifyRegionUtils;<a name="line.203"></a>
+<span class="sourceLineNo">204</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.204"></a>
+<span class="sourceLineNo">205</span>import org.apache.hadoop.hbase.util.RetryCounter;<a name="line.205"></a>
+<span class="sourceLineNo">206</span>import org.apache.hadoop.hbase.util.RetryCounterFactory;<a name="line.206"></a>
+<span class="sourceLineNo">207</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.207"></a>
+<span class="sourceLineNo">208</span>import org.apache.hadoop.hbase.util.VersionInfo;<a name="line.208"></a>
+<span class="sourceLineNo">209</span>import org.apache.hadoop.hbase.zookeeper.LoadBalancerTracker;<a name="line.209"></a>
+<span class="sourceLineNo">210</span>import org.apache.hadoop.hbase.zookeeper.MasterAddressTracker;<a name="line.210"></a>
+<span class="sourceLineNo">211</span>import org.apache.hadoop.hbase.zookeeper.MasterMaintenanceModeTracker;<a name="line.211"></a>
+<span class="sourceLineNo">212</span>import org.apache.hadoop.hbase.zookeeper.RegionNormalizerTracker;<a name="line.212"></a>
+<span class="sourceLineNo">213</span>import org.apache.hadoop.hbase.zookeeper.ZKClusterId;<a name="line.213"></a>
+<span class="sourceLineNo">214</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.214"></a>
+<span class="sourceLineNo">215</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.215"></a>
+<span class="sourceLineNo">216</span>import org.apache.hadoop.hbase.zookeeper.ZNodePaths;<a name="line.216"></a>
+<span class="sourceLineNo">217</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.217"></a>
+<span class="sourceLineNo">218</span>import org.apache.zookeeper.KeeperException;<a name="line.218"></a>
+<span class="sourceLineNo">219</span>import org.eclipse.jetty.server.Server;<a name="line.219"></a>
+<span class="sourceLineNo">220</span>import org.eclipse.jetty.server.ServerConnector;<a name="line.220"></a>
+<span class="sourceLineNo">221</span>import org.eclipse.jetty.servlet.ServletHolder;<a name="line.221"></a>
+<span class="sourceLineNo">222</span>import org.eclipse.jetty.webapp.WebAppContext;<a name="line.222"></a>
+<span class="sourceLineNo">223</span>import org.slf4j.Logger;<a name="line.223"></a>
+<span class="sourceLineNo">224</span>import org.slf4j.LoggerFactory;<a name="line.224"></a>
+<span class="sourceLineNo">225</span><a name="line.225"></a>
+<span class="sourceLineNo">226</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.226"></a>
+<span class="sourceLineNo">227</span>import org.apache.hbase.thirdparty.com.google.common.collect.ImmutableSet;<a name="line.227"></a>
+<span class="sourceLineNo">228</span>import org.apache.hbase.thirdparty.com.google.common.collect.Lists;<a name="line.228"></a>
+<span class="sourceLineNo">229</span>import org.apache.hbase.thirdparty.com.google.common.collect.Maps;<a name="line.229"></a>
+<span class="sourceLineNo">230</span><a name="line.230"></a>
+<span class="sourceLineNo">231</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.231"></a>
+<span class="sourceLineNo">232</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoResponse.CompactionState;<a name="line.232"></a>
+<span class="sourceLineNo">233</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.Quotas;<a name="line.233"></a>
+<span class="sourceLineNo">234</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.SpaceViolationPolicy;<a name="line.234"></a>
+<span class="sourceLineNo">235</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;<a name="line.235"></a>
+<span class="sourceLineNo">236</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos;<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> * HMaster is the "master server" for HBase. An HBase cluster has one active<a name="line.239"></a>
+<span class="sourceLineNo">240</span> * master.  If many masters are started, all compete.  Whichever wins goes on to<a name="line.240"></a>
+<span class="sourceLineNo">241</span> * run the cluster.  All others park themselves in their constructor until<a name="line.241"></a>
+<span class="sourceLineNo">242</span> * master or cluster shutdown or until the active master loses its lease in<a name="line.242"></a>
+<span class="sourceLineNo">243</span> * zookeeper.  Thereafter, all running master jostle to take over master role.<a name="line.243"></a>
+<span class="sourceLineNo">244</span> *<a name="line.244"></a>
+<span class="sourceLineNo">245</span> * &lt;p&gt;The Master can be asked shutdown the cluster. See {@link #shutdown()}.  In<a name="line.245"></a>
+<span class="sourceLineNo">246</span> * this case it will tell all regionservers to go down and then wait on them<a name="line.246"></a>
+<span class="sourceLineNo">247</span> * all reporting in that they are down.  This master will then shut itself down.<a name="line.247"></a>
 <span class="sourceLineNo">248</span> *<a name="line.248"></a>
-<span class="sourceLineNo">249</span> * @see org.apache.zookeeper.Watcher<a name="line.249"></a>
-<span class="sourceLineNo">250</span> */<a name="line.250"></a>
-<span class="sourceLineNo">251</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS)<a name="line.251"></a>
-<span class="sourceLineNo">252</span>@SuppressWarnings("deprecation")<a name="line.252"></a>
-<span class="sourceLineNo">253</span>public class HMaster extends HRegionServer implements MasterServices {<a name="line.253"></a>
-<span class="sourceLineNo">254</span>  private static Logger LOG = LoggerFactory.getLogger(HMaster.class);<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>   * Protection against zombie master. Started once Master accepts active responsibility and<a name="line.257"></a>
-<span class="sourceLineNo">258</span>   * starts taking over responsibilities. Allows a finite time window before giving up ownership.<a name="line.258"></a>
-<span class="sourceLineNo">259</span>   */<a name="line.259"></a>
-<span class="sourceLineNo">260</span>  private static class InitializationMonitor extends HasThread {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    /** The amount of time in milliseconds to sleep before checking initialization status. */<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    public static final String TIMEOUT_KEY = "hbase.master.initializationmonitor.timeout";<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    public static final long TIMEOUT_DEFAULT = TimeUnit.MILLISECONDS.convert(15, TimeUnit.MINUTES);<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">266</span>     * When timeout expired and initialization has not complete, call {@link System#exit(int)} when<a name="line.266"></a>
-<span class="sourceLineNo">267</span>     * true, do nothing otherwise.<a name="line.267"></a>
-<span class="sourceLineNo">268</span>     */<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    public static final String HALT_KEY = "hbase.master.initializationmonitor.haltontimeout";<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    public static final boolean HALT_DEFAULT = false;<a name="line.270"></a>
-<span class="sourceLineNo">271</span><a name="line.271"></a>
-<span class="sourceLineNo">272</span>    private final HMaster master;<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    private final long timeout;<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    private final boolean haltOnTimeout;<a name="line.274"></a>
-<span class="sourceLineNo">275</span><a name="line.275"></a>
-<span class="sourceLineNo">276</span>    /** Creates a Thread that monitors the {@link #isInitialized()} state. */<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    InitializationMonitor(HMaster master) {<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      super("MasterInitializationMonitor");<a name="line.278"></a>
-<span class="sourceLineNo">279</span>      this.master = master;<a name="line.279"></a>
-<span class="sourceLineNo">280</span>      this.timeout = master.getConfiguration().getLong(TIMEOUT_KEY, TIMEOUT_DEFAULT);<a name="line.280"></a>
-<span class="sourceLineNo">281</span>      this.haltOnTimeout = master.getConfiguration().getBoolean(HALT_KEY, HALT_DEFAULT);<a name="line.281"></a>
-<span class="sourceLineNo">282</span>      this.setDaemon(true);<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>    @Override<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    public void run() {<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      try {<a name="line.287"></a>
-<span class="sourceLineNo">288</span>        while (!master.isStopped() &amp;&amp; master.isActiveMaster()) {<a name="line.288"></a>
-<span class="sourceLineNo">289</span>          Thread.sleep(timeout);<a name="line.289"></a>
-<span class="sourceLineNo">290</span>          if (master.isInitialized()) {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>            LOG.debug("Initialization completed within allotted tolerance. Monitor exiting.");<a name="line.291"></a>
-<span class="sourceLineNo">292</span>          } else {<a name="line.292"></a>
-<span class="sourceLineNo">293</span>            LOG.error("Master failed to complete initialization after " + timeout + "ms. Please"<a name="line.293"></a>
-<span class="sourceLineNo">294</span>                + " consider submitting a bug report including a thread dump of this process.");<a name="line.294"></a>
-<span class="sourceLineNo">295</span>            if (haltOnTimeout) {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>              LOG.error("Zombie Master exiting. Thread dump to stdout");<a name="line.296"></a>
-<span class="sourceLineNo">297</span>              Threads.printThreadInfo(System.out, "Zombie HMaster");<a name="line.297"></a>
-<span class="sourceLineNo">298</span>              System.exit(-1);<a name="line.298"></a>
-<span class="sourceLineNo">299</span>            }<a name="line.299"></a>
-<span class="sourceLineNo">300</span>          }<a name="line.300"></a>
-<span class="sourceLineNo">301</span>        }<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      } catch (InterruptedException ie) {<a name="line.302"></a>
-<span class="sourceLineNo">303</span>        LOG.trace("InitMonitor thread interrupted. Existing.");<a name="line.303"></a>
-<span class="sourceLineNo">304</span>      }<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><a name="line.307"></a>
-<span class="sourceLineNo">308</span>  // MASTER is name of the webapp and the attribute name used stuffing this<a name="line.308"></a>
-<span class="sourceLineNo">309</span>  //instance into web context.<a name="line.309"></a>
-<span class="sourceLineNo">310</span>  public static final String MASTER = "master";<a name="line.310"></a>
-<span class="sourceLineNo">311</span><a name="line.311"></a>
-<span class="sourceLineNo">312</span>  // Manager and zk listener for master election<a name="line.312"></a>
-<span class="sourceLineNo">313</span>  private final ActiveMasterManager activeMasterManager;<a name="line.313"></a>
-<span class="sourceLineNo">314</span>  // Region server tracker<a name="line.314"></a>
-<span class="sourceLineNo">315</span>  private RegionServerTracker regionServerTracker;<a name="line.315"></a>
-<span class="sourceLineNo">316</span>  // Draining region server tracker<a name="line.316"></a>
-<span class="sourceLineNo">317</span>  private DrainingServerTracker drainingServerTracker;<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  // Tracker for load balancer state<a name="line.318"></a>
-<span class="sourceLineNo">319</span>  LoadBalancerTracker loadBalancerTracker;<a name="line.319"></a>
-<span class="sourceLineNo">320</span>  // Tracker for meta location, if any client ZK quorum specified<a name="line.320"></a>
-<span class="sourceLineNo">321</span>  MetaLocationSyncer metaLocationSyncer;<a name="line.321"></a>
-<span class="sourceLineNo">322</span>  // Tracker for active master location, if any client ZK quorum specified<a name="line.322"></a>
-<span class="sourceLineNo">323</span>  MasterAddressSyncer masterAddressSyncer;<a name="line.323"></a>
-<span class="sourceLineNo">324</span><a name="line.324"></a>
-<span class="sourceLineNo">325</span>  // Tracker for split and merge state<a name="line.325"></a>
-<span class="sourceLineNo">326</span>  private SplitOrMergeTracker splitOrMergeTracker;<a name="line.326"></a>
-<span class="sourceLineNo">327</span><a name="line.327"></a>
-<span class="sourceLineNo">328</span>  // Tracker for region normalizer state<a name="line.328"></a>
-<span class="sourceLineNo">329</span>  private RegionNormalizerTracker regionNormalizerTracker;<a name="line.329"></a>
-<span class="sourceLineNo">330</span><a name="line.330"></a>
-<span class="sourceLineNo">331</span>  //Tracker for master maintenance mode setting<a name="line.331"></a>
-<span class="sourceLineNo">332</span>  private MasterMaintenanceModeTracker maintenanceModeTracker;<a name="line.332"></a>
-<span class="sourceLineNo">333</span><a name="line.333"></a>
-<span class="sourceLineNo">334</span>  private ClusterSchemaService clusterSchemaService;<a name="line.334"></a>
+<span class="sourceLineNo">249</span> * &lt;p&gt;You can also shutdown just this master.  Call {@link #stopMaster()}.<a name="line.249"></a>
+<span class="sourceLineNo">250</span> *<a name="line.250"></a>
+<span class="sourceLineNo">251</span> * @see org.apache.zookeeper.Watcher<a name="line.251"></a>
+<span class="sourceLineNo">252</span> */<a name="line.252"></a>
+<span class="sourceLineNo">253</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS)<a name="line.253"></a>
+<span class="sourceLineNo">254</span>@SuppressWarnings("deprecation")<a name="line.254"></a>
+<span class="sourceLineNo">255</span>public class HMaster extends HRegionServer implements MasterServices {<a name="line.255"></a>
+<span class="sourceLineNo">256</span>  private static Logger LOG = LoggerFactory.getLogger(HMaster.class);<a name="line.256"></a>
+<span class="sourceLineNo">257</span><a name="line.257"></a>
+<span class="sourceLineNo">258</span>  /**<a name="line.258"></a>
+<span class="sourceLineNo">259</span>   * Protection against zombie master. Started once Master accepts active responsibility and<a name="line.259"></a>
+<span class="sourceLineNo">260</span>   * starts taking over responsibilities. Allows a finite time window before giving up ownership.<a name="line.260"></a>
+<span class="sourceLineNo">261</span>   */<a name="line.261"></a>
+<span class="sourceLineNo">262</span>  private static class InitializationMonitor extends HasThread {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    /** The amount of time in milliseconds to sleep before checking initialization status. */<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    public static final String TIMEOUT_KEY = "hbase.master.initializationmonitor.timeout";<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    public static final long TIMEOUT_DEFAULT = TimeUnit.MILLISECONDS.convert(15, TimeUnit.MINUTES);<a name="line.265"></a>
+<span class="sourceLineNo">266</span><a name="line.266"></a>
+<span class="sourceLineNo">267</span>    /**<a name="line.267"></a>
+<span class="sourceLineNo">268</span>     * When timeout expired and initialization has not complete, call {@link System#exit(int)} when<a name="line.268"></a>
+<span class="sourceLineNo">269</span>     * true, do nothing otherwise.<a name="line.269"></a>
+<span class="sourceLineNo">270</span>     */<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    public static final String HALT_KEY = "hbase.master.initializationmonitor.haltontimeout";<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    public static final boolean HALT_DEFAULT = false;<a name="line.272"></a>
+<span class="sourceLineNo">273</span><a name="line.273"></a>
+<span class="sourceLineNo">274</span>    private final HMaster master;<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    private final long timeout;<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    private final boolean haltOnTimeout;<a name="line.276"></a>
+<span class="sourceLineNo">277</span><a name="line.277"></a>
+<span class="sourceLineNo">278</span>    /** Creates a Thread that monitors the {@link #isInitialized()} state. */<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    InitializationMonitor(HMaster master) {<a name="line.279"></a>
+<span class="sourceLineNo">280</span>      super("MasterInitializationMonitor");<a name="line.280"></a>
+<span class="sourceLineNo">281</span>      this.master = master;<a name="line.281"></a>
+<span class="sourceLineNo">282</span>      this.timeout = master.getConfiguration().getLong(TIMEOUT_KEY, TIMEOUT_DEFAULT);<a name="line.282"></a>
+<span class="sourceLineNo">283</span>      this.haltOnTimeout = master.getConfiguration().getBoolean(HALT_KEY, HALT_DEFAULT);<a name="line.283"></a>
+<span class="sourceLineNo">284</span>      this.setDaemon(true);<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    }<a name="line.285"></a>
+<span class="sourceLineNo">286</span><a name="line.286"></a>
+<span class="sourceLineNo">287</span>    @Override<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    public void run() {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>      try {<a name="line.289"></a>
+<span class="sourceLineNo">290</span>        while (!master.isStopped() &amp;&amp; master.isActiveMaster()) {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>          Thread.sleep(timeout);<a name="line.291"></a>
+<span class="sourceLineNo">292</span>          if (master.isInitialized()) {<a name="line.292"></a>
+<span class="sourceLineNo">293</span>            LOG.debug("Initialization completed within allotted tolerance. Monitor exiting.");<a name="line.293"></a>
+<span class="sourceLineNo">294</span>          } else {<a name="line.294"></a>
+<span class="sourceLineNo">295</span>            LOG.error("Master failed to complete initialization after " + timeout + "ms. Please"<a name="line.295"></a>
+<span class="sourceLineNo">296</span>                + " consider submitting a bug report including a thread dump of this process.");<a name="line.296"></a>
+<span class="sourceLineNo">297</span>            if (haltOnTimeout) {<a name="line.297"></a>
+<span class="sourceLineNo">298</span>              LOG.error("Zombie Master exiting. Thread dump to stdout");<a name="line.298"></a>
+<span class="sourceLineNo">299</span>              Threads.printThreadInfo(System.out, "Zombie HMaster");<a name="line.299"></a>
+<span class="sourceLineNo">300</span>              System.exit(-1);<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>      } catch (InterruptedException ie) {<a name="line.304"></a>
+<span class="sourceLineNo">305</span>        LOG.trace("InitMonitor thread interrupted. Existing.");<a name="line.305"></a>
+<span class="sourceLineNo">306</span>      }<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    }<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>  // MASTER is name of the webapp and the attribute name used stuffing this<a name="line.310"></a>
+<span class="sourceLineNo">311</span>  //instance into web context.<a name="line.311"></a>
+<span class="sourceLineNo">312</span>  public static final String MASTER = "master";<a name="line.312"></a>
+<span class="sourceLineNo">313</span><a name="line.313"></a>
+<span class="sourceLineNo">314</span>  // Manager and zk listener for master election<a name="line.314"></a>
+<span class="sourceLineNo">315</span>  private final ActiveMasterManager activeMasterManager;<a name="line.315"></a>
+<span class="sourceLineNo">316</span>  // Region server tracker<a name="line.316"></a>
+<span class="sourceLineNo">317</span>  private RegionServerTracker regionServerTracker;<a name="line.317"></a>
+<span class="sourceLineNo">318</span>  // Draining region server tracker<a name="line.318"></a>
+<span class="sourceLineNo">319</span>  private DrainingServerTracker drainingServerTracker;<a name="line.319"></a>
+<span class="sourceLineNo">320</span>  // Tracker for load balancer state<a name="line.320"></a>
+<span class="sourceLineNo">321</span>  LoadBalancerTracker loadBalancerTracker;<a name="line.321"></a>
+<span class="sourceLineNo">322</span>  // Tracker for meta location, if any client ZK quorum specified<a name="line.322"></a>
+<span class="sourceLineNo">323</span>  MetaLocationSyncer metaLocationSyncer;<a name="line.323"></a>
+<span class="sourceLineNo">324</span>  // Tracker for active master location, if any client ZK quorum specified<a name="line.324"></a>
+<span class="sourceLineNo">325</span>  MasterAddressSyncer masterAddressSyncer;<a name="line.325"></a>
+<span class="sourceLineNo">326</span><a name="line.326"></a>
+<span class="sourceLineNo">327</span>  // Tracker for split and merge state<a name="line.327"></a>
+<span class="sourceLineNo">328</span>  private SplitOrMergeTracker splitOrMergeTracker;<a name="line.328"></a>
+<span class="sourceLineNo">329</span><a name="line.329"></a>
+<span class="sourceLineNo">330</span>  // Tracker for region normalizer state<a name="line.330"></a>
+<span class="sourceLineNo">331</span>  private RegionNormalizerTracker regionNormalizerTracker;<a name="line.331"></a>
+<span class="sourceLineNo">332</span><a name="line.332"></a>
+<span class="sourceLineNo">333</span>  //Tracker for master maintenance mode setting<a name="line.333"></a>
+<span class="sourceLineNo">334</span>  private MasterMaintenanceModeTracker maintenanceModeTracker;<a name="line.334"></a>
 <span class="sourceLineNo">335</span><a name="line.335"></a>
-<span class="sourceLineNo">336</span>  public static final String HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS =<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    "hbase.master.wait.on.service.seconds";<a name="line.337"></a>
-<span class="sourceLineNo">338</span>  public static final int DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS = 5 * 60;<a name="line.338"></a>
-<span class="sourceLineNo">339</span><a name="line.339"></a>
-<span class="sourceLineNo">340</span>  // Metrics for the HMaster<a name="line.340"></a>
-<span class="sourceLineNo">341</span>  final MetricsMaster metricsMaster;<a name="line.341"></a>
-<span class="sourceLineNo">342</span>  // file system manager for the master FS operations<a name="line.342"></a>
-<span class="sourceLineNo">343</span>  private MasterFileSystem fileSystemManager;<a name="line.343"></a>
-<span class="sourceLineNo">344</span>  private MasterWalManager walManager;<a name="line.344"></a>
-<span class="sourceLineNo">345</span><a name="line.345"></a>
-<span class="sourceLineNo">346</span>  // server manager to deal with region server info<a name="line.346"></a>
-<span class="sourceLineNo">347</span>  private volatile ServerManager serverManager;<a name="line.347"></a>
-<span class="sourceLineNo">348</span><a name="line.348"></a>
-<span class="sourceLineNo">349</span>  // manager of assignment nodes in zookeeper<a name="line.349"></a>
-<span class="sourceLineNo">350</span>  private AssignmentManager assignmentManager;<a name="line.350"></a>
-<span class="sourceLineNo">351</span><a name="line.351"></a>
-<span class="sourceLineNo">352</span>  // manager of replication<a name="line.352"></a>
-<span class="sourceLineNo">353</span>  private ReplicationPeerManager replicationPeerManager;<a name="line.353"></a>
-<span class="sourceLineNo">354</span><a name="line.354"></a>
-<span class="sourceLineNo">355</span>  private SyncReplicationReplayWALManager syncReplicationReplayWALManager;<a name="line.355"></a>
+<span class="sourceLineNo">336</span>  private ClusterSchemaService clusterSchemaService;<a name="line.336"></a>
+<span class="sourceLineNo">337</span><a name="line.337"></a>
+<span class="sourceLineNo">338</span>  public static final String HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS =<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    "hbase.master.wait.on.service.seconds";<a name="line.339"></a>
+<span class="sourceLineNo">340</span>  public static final int DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS = 5 * 60;<a name="line.340"></a>
+<span class="sourceLineNo">341</span><a name="line.341"></a>
+<span class="sourceLineNo">342</span>  // Metrics for the HMaster<a name="line.342"></a>
+<span class="sourceLineNo">343</span>  final MetricsMaster metricsMaster;<a name="line.343"></a>
+<span class="sourceLineNo">344</span>  // file system manager for the master FS operations<a name="line.344"></a>
+<span class="sourceLineNo">345</span>  private MasterFileSystem fileSystemManager;<a name="line.345"></a>
+<span class="sourceLineNo">346</span>  private MasterWalManager walManager;<a name="line.346"></a>
+<span class="sourceLineNo">347</span><a name="line.347"></a>
+<span class="sourceLineNo">348</span>  // server manager to deal with region server info<a name="line.348"></a>
+<span class="sourceLineNo">349</span>  private volatile ServerManager serverManager;<a name="line.349"></a>
+<span class="sourceLineNo">350</span><a name="line.350"></a>
+<span class="sourceLineNo">351</span>  // manager of assignment nodes in zookeeper<a name="line.351"></a>
+<span class="sourceLineNo">352</span>  private AssignmentManager assignmentManager;<a name="line.352"></a>
+<span class="sourceLineNo">353</span><a name="line.353"></a>
+<span class="sourceLineNo">354</span>  // manager of replication<a name="line.354"></a>
+<span class="sourceLineNo">355</span>  private ReplicationPeerManager replicationPeerManager;<a name="line.355"></a>
 <span class="sourceLineNo">356</span><a name="line.356"></a>
-<span class="sourceLineNo">357</span>  // buffer for "fatal error" notices from region servers<a name="line.357"></a>
-<span class="sourceLineNo">358</span>  // in the cluster. This is only used for assisting<a name="line.358"></a>
-<span class="sourceLineNo">359</span>  // operations/debugging.<a name="line.359"></a>
-<span class="sourceLineNo">360</span>  MemoryBoundedLogMessageBuffer rsFatals;<a name="line.360"></a>
-<span class="sourceLineNo">361</span><a name="line.361"></a>
-<span class="sourceLineNo">362</span>  // flag set after we become the active master (used for testing)<a name="line.362"></a>
-<span class="sourceLineNo">363</span>  private volatile boolean activeMaster = false;<a name="line.363"></a>
-<span class="sourceLineNo">364</span><a name="line.364"></a>
-<span class="sourceLineNo">365</span>  // flag set after we complete initialization once active<a name="line.365"></a>
-<span class="sourceLineNo">366</span>  private final ProcedureEvent&lt;?&gt; initialized = new ProcedureEvent&lt;&gt;("master initialized");<a name="line.366"></a>
-<span class="sourceLineNo">367</span><a name="line.367"></a>
-<span class="sourceLineNo">368</span>  // flag set after master services are started,<a name="line.368"></a>
-<span class="sourceLineNo">369</span>  // initialization may have not completed yet.<a name="line.369"></a>
-<span class="sourceLineNo">370</span>  volatile boolean serviceStarted = false;<a name="line.370"></a>
-<span class="sourceLineNo">371</span><a name="line.371"></a>
-<span class="sourceLineNo">372</span>  // Maximum time we should run balancer for<a name="line.372"></a>
-<span class="sourceLineNo">373</span>  private final int maxBlancingTime;<a name="line.373"></a>
-<span class="sourceLineNo">374</span>  // Maximum percent of regions in transition when balancing<a name="line.374"></a>
-<span class="sourceLineNo">375</span>  private final double maxRitPercent;<a name="line.375"></a>
-<span class="sourceLineNo">376</span><a name="line.376"></a>
-<span class="sourceLineNo">377</span>  private final LockManager lockManager = new LockManager(this);<a name="line.377"></a>
+<span class="sourceLineNo">357</span>  private SyncReplicationReplayWALManager syncReplicationReplayWALManager;<a name="line.357"></a>
+<span class="sourceLineNo">358</span><a name="line.358"></a>
+<span class="sourceLineNo">359</span>  // buffer for "fatal error" notices from region servers<a name="line.359"></a>
+<span class="sourceLineNo">360</span>  // in the cluster. This is only used for assisting<a name="line.360"></a>
+<span class="sourceLineNo">361</span>  // operations/debugging.<a name="line.361"></a>
+<span class="sourceLineNo">362</span>  MemoryBoundedLogMessageBuffer rsFatals;<a name="line.362"></a>
+<span class="sourceLineNo">363</span><a name="line.363"></a>
+<span class="sourceLineNo">364</span>  // flag set after we become the active master (used for testing)<a name="line.364"></a>
+<span class="sourceLineNo">365</span>  private volatile boolean activeMaster = false;<a name="line.365"></a>
+<span class="sourceLineNo">366</span><a name="line.366"></a>
+<span class="sourceLineNo">367</span>  // flag set after we complete initialization once active<a name="line.367"></a>
+<span class="sourceLineNo">368</span>  private final ProcedureEvent&lt;?&gt; initialized = new ProcedureEvent&lt;&gt;("master initialized");<a name="line.368"></a>
+<span class="sourceLineNo">369</span><a name="line.369"></a>
+<span class="sourceLineNo">370</span>  // flag set after master services are started,<a name="line.370"></a>
+<span class="sourceLineNo">371</span>  // initialization may have not completed yet.<a name="line.371"></a>
+<span class="sourceLineNo">372</span>  volatile boolean serviceStarted = false;<a name="line.372"></a>
+<span class="sourceLineNo">373</span><a name="line.373"></a>
+<span class="sourceLineNo">374</span>  // Maximum time we should run balancer for<a name="line.374"></a>
+<span class="sourceLineNo">375</span>  private final int maxBlancingTime;<a name="line.375"></a>
+<span class="sourceLineNo">376</span>  // Maximum percent of regions in transition when balancing<a name="line.376"></a>
+<span class="sourceLineNo">377</span>  private final double maxRitPercent;<a name="line.377"></a>
 <span class="sourceLineNo">378</span><a name="line.378"></a>
-<span class="sourceLineNo">379</span>  private LoadBalancer balancer;<a name="line.379"></a>
-<span class="sourceLineNo">380</span>  private RegionNormalizer normalizer;<a name="line.380"></a>
-<span class="sourceLineNo">381</span>  private BalancerChore balancerChore;<a name="line.381"></a>
-<span class="sourceLineNo">382</span>  private RegionNormalizerChore normalizerChore;<a name="line.382"></a>
-<span class="sourceLineNo">383</span>  private ClusterStatusChore clusterStatusChore;<a name="line.383"></a>
-<span class="sourceLineNo">384</span>  private ClusterStatusPublisher clusterStatusPublisherChore = null;<a name="line.384"></a>
-<span class="sourceLineNo">385</span><a name="line.385"></a>
-<span class="sourceLineNo">386</span>  CatalogJanitor catalogJanitorChore;<a name="line.386"></a>
-<span class="sourceLineNo">387</span>  private LogCleaner logCleaner;<a name="line.387"></a>
-<span class="sourceLineNo">388</span>  private HFileCleaner hfileCleaner;<a name="line.388"></a>
-<span class="sourceLineNo">389</span>  private ReplicationBarrierCleaner replicationBarrierCleaner;<a name="line.389"></a>
-<span class="sourceLineNo">390</span>  private ExpiredMobFileCleanerChore expiredMobFileCleanerChore;<a name="line.390"></a>
-<span class="sourceLineNo">391</span>  private MobCompactionChore mobCompactChore;<a name="line.391"></a>
-<span class="sourceLineNo">392</span>  private MasterMobCompactionThread mobCompactThread;<a name="line.392"></a>
-<span class="sourceLineNo">393</span>  // used to synchronize the mobCompactionStates<a name="line.393"></a>
-<span class="sourceLineNo">394</span>  private final IdLock mobCompactionLock = new IdLock();<a name="line.394"></a>
-<span class="sourceLineNo">395</span>  // save the information of mob compactions in tables.<a name="line.395"></a>
-<span class="sourceLineNo">396</span>  // the key is table name, the value is the number of compactions in that table.<a name="line.396"></a>
-<span class="sourceLineNo">397</span>  private Map&lt;TableName, AtomicInteger&gt; mobCompactionStates = Maps.newConcurrentMap();<a name="line.397"></a>
-<span class="sourceLineNo">398</span><a name="line.398"></a>
-<span class="sourceLineNo">399</span>  MasterCoprocessorHost cpHost;<a name="line.399"></a>
+<span class="sourceLineNo">379</span>  private final LockManager lockManager = new LockManager(this);<a name="line.379"></a>
+<span class="sourceLineNo">380</span><a name="line.380"></a>
+<span class="sourceLineNo">381</span>  private LoadBalancer balancer;<a name="line.381"></a>
+<span class="sourceLineNo">382</span>  private RegionNormalizer normalizer;<a name="line.382"></a>
+<span class="sourceLineNo">383</span>  private BalancerChore balancerChore;<a name="line.383"></a>
+<span class="sourceLineNo">384</span>  private RegionNormalizerChore normalizerChore;<a name="line.384"></a>
+<span class="sourceLineNo">385</span>  private ClusterStatusChore clusterStatusChore;<a name="line.385"></a>
+<span class="sourceLineNo">386</span>  private ClusterStatusPublisher clusterStatusPublisherChore = null;<a name="line.386"></a>
+<span class="sourceLineNo">387</span><a name="line.387"></a>
+<span class="sourceLineNo">388</span>  CatalogJanitor catalogJanitorChore;<a name="line.388"></a>
+<span class="sourceLineNo">389</span>  private LogCleaner logCleaner;<a name="line.389"></a>
+<span class="sourceLineNo">390</span>  private HFileCleaner hfileCleaner;<a name="line.390"></a>
+<span class="sourceLineNo">391</span>  private ReplicationBarrierCleaner replicationBarrierCleaner;<a name="line.391"></a>
+<span class="sourceLineNo">392</span>  private ExpiredMobFileCleanerChore expiredMobFileCleanerChore;<a name="line.392"></a>
+<span class="sourceLineNo">393</span>  private MobCompactionChore mobCompactChore;<a name="line.393"></a>
+<span class="sourceLineNo">394</span>  private MasterMobCompactionThread mobCompactThread;<a name="line.394"></a>
+<span class="sourceLineNo">395</span>  // used to synchronize the mobCompactionStates<a name="line.395"></a>
+<span class="sourceLineNo">396</span>  private final IdLock mobCompactionLock = new IdLock();<a name="line.396"></a>
+<span class="sourceLineNo">397</span>  // save the information of mob compactions in tables.<a name="line.397"></a>
+<span class="sourceLineNo">398</span>  // the key is table name, the value is the number of compactions in that table.<a name="line.398"></a>
+<span class="sourceLineNo">399</span>  private Map&lt;TableName, AtomicInteger&gt; mobCompactionStates = Maps.newConcurrentMap();<a name="line.399"></a>
 <span class="sourceLineNo">400</span><a name="line.400"></a>
-<span class="sourceLineNo">401</span>  private final boolean preLoadTableDescriptors;<a name="line.401"></a>
+<span class="sourceLineNo">401</span>  MasterCoprocessorHost cpHost;<a name="line.401"></a>
 <span class="sourceLineNo">402</span><a name="line.402"></a>
-<span class="sourceLineNo">403</span>  // Time stamps for when a hmaster became active<a name="line.403"></a>
-<span class="sourceLineNo">404</span>  private long masterActiveTime;<a name="line.404"></a>
-<span class="sourceLineNo">405</span><a name="line.405"></a>
-<span class="sourceLineNo">406</span>  // Time stamp for when HMaster finishes becoming Active Master<a name="line.406"></a>
-<span class="sourceLineNo">407</span>  private long masterFinishedInitializationTime;<a name="line.407"></a>
-<span class="sourceLineNo">408</span><a name="line.408"></a>
-<span class="sourceLineNo">409</span>  //should we check the compression codec type at master side, default true, HBASE-6370<a name="line.409"></a>
-<span class="sourceLineNo">410</span>  private final boolean masterCheckCompression;<a name="line.410"></a>
-<span class="sourceLineNo">411</span><a name="line.411"></a>
-<span class="sourceLineNo">412</span>  //should we check encryption settings at master side, default true<a name="line.412"></a>
-<span class="sourceLineNo">413</span>  private final boolean masterCheckEncryption;<a name="line.413"></a>
-<span class="sourceLineNo">414</span><a name="line.414"></a>
-<span class="sourceLineNo">415</span>  Map&lt;String, Service&gt; coprocessorServiceHandlers = Maps.newHashMap();<a name="line.415"></a>
+<span class="sourceLineNo">403</span>  private final boolean preLoadTableDescriptors;<a name="line.403"></a>
+<span class="sourceLineNo">404</span><a name="line.404"></a>
+<span class="sourceLineNo">405</span>  // Time stamps for when a hmaster became active<a name="line.405"></a>
+<span class="sourceLineNo">406</span>  private long masterActiveTime;<a name="line.406"></a>
+<span class="sourceLineNo">407</span><a name="line.407"></a>
+<span class="sourceLineNo">408</span>  // Time stamp for when HMaster finishes becoming Active Master<a name="line.408"></a>
+<span class="sourceLineNo">409</span>  private long masterFinishedInitializationTime;<a name="line.409"></a>
+<span class="sourceLineNo">410</span><a name="line.410"></a>
+<span class="sourceLineNo">411</span>  //should we check the compression codec type at master side, default true, HBASE-6370<a name="line.411"></a>
+<span class="sourceLineNo">412</span>  private final boolean masterCheckCompression;<a name="line.412"></a>
+<span class="sourceLineNo">413</span><a name="line.413"></a>
+<span class="sourceLineNo">414</span>  //should we check encryption settings at master side, default true<a name="line.414"></a>
+<span class="sourceLineNo">415</span>  private final boolean masterCheckEncryption;<a name="line.415"></a>
 <span class="sourceLineNo">416</span><a name="line.416"></a>
-<span class="sourceLineNo">417</span>  // monitor for snapshot of hbase tables<a name="line.417"></a>
-<span class="sourceLineNo">418</span>  SnapshotManager snapshotManager;<a name="line.418"></a>
-<span class="sourceLineNo">419</span>  // monitor for distributed procedures<a name="line.419"></a>
-<span class="sourceLineNo">420</span>  private MasterProcedureManagerHost mpmHost;<a name="line.420"></a>
-<span class="sourceLineNo">421</span><a name="line.421"></a>
-<span class="sourceLineNo">422</span>  // it is assigned after 'initialized' guard set to true, so should be volatile<a name="line.422"></a>
-<span class="sourceLineNo">423</span>  private volatile MasterQuotaManager quotaManager;<a name="line.423"></a>
-<span class="sourceLineNo">424</span>  private SpaceQuotaSnapshotNotifier spaceQuotaSnapshotNotifier;<a name="line.424"></a>
-<span class="sourceLineNo">425</span>  private QuotaObserverChore quotaObserverChore;<a name="line.425"></a>
-<span class="sourceLineNo">426</span>  private SnapshotQuotaObserverChore snapshotQuotaChore;<a name="line.426"></a>
-<span class="sourceLineNo">427</span><a name="line.427"></a>
-<span class="sourceLineNo">428</span>  private ProcedureExecutor&lt;MasterProcedureEnv&gt; procedureExecutor;<a name="line.428"></a>
-<span class="sourceLineNo">429</span>  private WALProcedureStore procedureStore;<a name="line.429"></a>
-<span class="sourceLineNo">430</span><a name="line.430"></a>
-<span class="sourceLineNo">431</span>  // handle table states<a name="line.431"></a>
-<span class="sourceLineNo">432</span>  private TableStateManager tableStateManager;<a name="line.432"></a>
-<span class="sourceLineNo">433</span><a name="line.433"></a>
-<span class="sourceLineNo">434</span>  private long splitPlanCount;<a name="line.434"></a>
-<span class="sourceLineNo">435</span>  private long mergePlanCount;<a name="line.435"></a>
-<span class="sourceLineNo">436</span><a name="line.436"></a>
-<span class="sourceLineNo">437</span>  /* Handle favored nodes information */<a name="line.437"></a>
-<span class="sourceLineNo">438</span>  private FavoredNodesManager favoredNodesManager;<a name="line.438"></a>
-<span class="sourceLineNo">439</span><a name="line.439"></a>
-<span class="sourceLineNo">440</span>  /** jetty server for master to redirect requests to regionserver infoServer */<a name="line.440"></a>
-<span class="sourceLineNo">441</span>  private Server masterJettyServer;<a name="line.441"></a>
-<span class="sourceLineNo">442</span><a name="line.442"></a>
-<span class="sourceLineNo">443</span>  public static class RedirectServlet extends HttpServlet {<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    private static final long serialVersionUID = 2894774810058302473L;<a name="line.444"></a>
-<span class="sourceLineNo">445</span>    private final int regionServerInfoPort;<a name="line.445"></a>
-<span class="sourceLineNo">446</span>    private final String regionServerHostname;<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>     * @param infoServer that we're trying to send all requests to<a name="line.449"></a>
-<span class="sourceLineNo">450</span>     * @param hostname may be null. if given, will be used for redirects instead of host from client.<a name="line.450"></a>
-<span class="sourceLineNo">451</span>     */<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    public RedirectServlet(InfoServer infoServer, String hostname) {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>       regionServerInfoPort = infoServer.getPort();<a name="line.453"></a>
-<span class="sourceLineNo">454</span>       regionServerHostname = hostname;<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 void doGet(HttpServletRequest request,<a name="line.458"></a>
-<span class="sourceLineNo">459</span>        HttpServletResponse response) throws ServletException, IOException {<a name="line.459"></a>
-<span class="sourceLineNo">460</span>      String redirectHost = regionServerHostname;<a name="line.460"></a>
-<span class="sourceLineNo">461</span>      if(redirectHost == null) {<a name="line.461"></a>
-<span class="sourceLineNo">462</span>        redirectHost = request.getServerName();<a name="line.462"></a>
-<span class="sourceLineNo">463</span>        if(!Addressing.isLocalAddress(InetAddress.getByName(redirectHost))) {<a name="line.463"></a>
-<span class="sourceLineNo">464</span>          LOG.warn("Couldn't resolve '" + redirectHost + "' as an address local to this node and '" +<a name="line.464"></a>
-<span class="sourceLineNo">465</span>              MASTER_HOSTNAME_KEY + "' is not set; client will get a HTTP 400 response. If " +<a name="line.465"></a>
-<span class="sourceLineNo">466</span>              "your HBase deployment relies on client accessible names that the region server process " +<a name="line.466"></a>
-<span class="sourceLineNo">467</span>              "can't resolve locally, then you should set the previously mentioned configuration variable " +<a name="line.467"></a>
-<span class="sourceLineNo">468</span>              "to an appropriate hostname.");<a name="line.468"></a>
-<span class="sourceLineNo">469</span>          // no sending client provided input back to the client, so the goal host is just in the logs.<a name="line.469"></a>
-<span class="sourceLineNo">470</span>          response.sendError(400, "Request was to a host that I can't resolve for any of the network interfaces on " +<a name="line.470"></a>
-<span class="sourceLineNo">471</span>              "this node. If this is due to an intermediary such as an HTTP load balancer or other proxy, your HBase " +<a name="line.471"></a>
-<span class="sourceLineNo">472</span>              "administrator can set '" + MASTER_HOSTNAME_KEY + "' to point to the correct hostname.");<a name="line.472"></a>
-<span class="sourceLineNo">473</span>          return;<a name="line.473"></a>
-<span class="sourceLineNo">474</span>        }<a name="line.474"></a>
-<span class="sourceLineNo">475</span>      }<a name="line.475"></a>
-<span class="sourceLineNo">476</span>      // TODO this scheme should come from looking at the scheme registered in the infoserver's http server for the<a name="line.476"></a>
-<span class="sourceLineNo">477</span>      // host and port we're using, but it's buried way too deep to do that ATM.<a name="line.477"></a>
-<span class="sourceLineNo">478</span>      String redirectUrl = request.getScheme() + "://"<a name="line.478"></a>
-<span class="sourceLineNo">479</span>        + redirectHost + ":" + regionServerInfoPort<a name="line.479"></a>
-<span class="sourceLineNo">480</span>        + request.getRequestURI();<a name="line.480"></a>
-<span class="sourceLineNo">481</span>      response.sendRedirect(redirectUrl);<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>  /**<a name="line.485"></a>
-<span class="sourceLineNo">486</span>   * Initializes the HMaster. The steps are as follows:<a name="line.486"></a>
-<span class="sourceLineNo">487</span>   * &lt;p&gt;<a name="line.487"></a>
-<span class="sourceLineNo">488</span>   * &lt;ol&gt;<a name="line.488"></a>
-<span class="sourceLineNo">489</span>   * &lt;li&gt;Initialize the local HRegionServer<a name="line.489"></a>
-<span class="sourceLineNo">490</span>   * &lt;li&gt;Start the ActiveMasterManager.<a name="line.490"></a>
-<span class="sourceLineNo">491</span>   * &lt;/ol&gt;<a name="line.491"></a>
-<span class="sourceLineNo">492</span>   * &lt;p&gt;<a name="line.492"></a>
-<span class="sourceLineNo">493</span>   * Remaining steps of initialization occur in<a name="line.493"></a>
-<span class="sourceLineNo">494</span>   * #finishActiveMasterInitialization(MonitoredTask) after<a name="line.494"></a>
-<span class="sourceLineNo">495</span>   * the master becomes the active one.<a name="line.495"></a>
-<span class="sourceLineNo">496</span>   */<a name="line.496"></a>
-<span class="sourceLineNo">497</span>  public HMaster(final Configuration conf)<a name="line.497"></a>
-<span class="sourceLineNo">498</span>      throws IOException, KeeperException {<a name="line.498"></a>
-<span class="sourceLineNo">499</span>    super(conf);<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    TraceUtil.initTracer(conf);<a name="line.500"></a>
-<span class="sourceLineNo">501</span>    try {<a name="line.501"></a>
-<span class="sourceLineNo">502</span>      this.rsFatals = new MemoryBoundedLogMessageBuffer(<a name="line.502"></a>
-<span class="sourceLineNo">503</span>          conf.getLong("hbase.master.buffer.for.rs.fatals", 1 * 1024 * 1024));<a name="line.503"></a>
-<span class="sourceLineNo">504</span>      LOG.info("hbase.rootdir=" + getRootDir() +<a name="line.504"></a>
-<span class="sourceLineNo">505</span>          ", hbase.cluster.distributed=" + this.conf.getBoolean(HConstants.CLUSTER_DISTRIBUTED, false));<a name="line.505"></a>
-<span class="sourceLineNo">506</span><a name="line.506"></a>
-<span class="sourceLineNo">507</span>      // Disable usage of meta replicas in the master<a name="line.507"></a>
-<span class="sourceLineNo">508</span>      this.conf.setBoolean(HConstants.USE_META_REPLICAS, false);<a name="line.508"></a>
-<span class="sourceLineNo">509</span><a name="line.509"></a>
-<span class="sourceLineNo">510</span>      decorateMasterConfiguration(this.conf);<a name="line.510"></a>
+<span class="sourceLineNo">417</span>  Map&lt;String, Service&gt; coprocessorServiceHandlers = Maps.newHashMap();<a name="line.417"></a>
+<span class="sourceLineNo">418</span><a name="line.418"></a>
+<span class="sourceLineNo">419</span>  // monitor for snapshot of hbase tables<a name="line.419"></a>
+<span class="sourceLineNo">420</span>  SnapshotManager snapshotManager;<a name="line.420"></a>
+<span class="sourceLineNo">421</span>  // monitor for distributed procedures<a name="line.421"></a>
+<span class="sourceLineNo">422</span>  private MasterProcedureManagerHost mpmHost;<a name="line.422"></a>
+<span class="source

<TRUNCATED>

[05/43] hbase-site git commit: Published site at 7ab77518a2569e2416a50020393aa386e7734501.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestMultiColumnScanner.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestMultiColumnScanner.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestMultiColumnScanner.html
index 42cb56c..0f8e743 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestMultiColumnScanner.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestMultiColumnScanner.html
@@ -57,300 +57,303 @@
 <span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.io.encoding.DataBlockEncoding;<a name="line.49"></a>
 <span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.50"></a>
 <span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.testclassification.RegionServerTests;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.junit.ClassRule;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.junit.Test;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.junit.experimental.categories.Category;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.junit.runner.RunWith;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.junit.runners.Parameterized;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.junit.runners.Parameterized.Parameters;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.slf4j.Logger;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.slf4j.LoggerFactory;<a name="line.60"></a>
-<span class="sourceLineNo">061</span><a name="line.61"></a>
-<span class="sourceLineNo">062</span>/**<a name="line.62"></a>
-<span class="sourceLineNo">063</span> * Tests optimized scanning of multiple columns.<a name="line.63"></a>
-<span class="sourceLineNo">064</span> */<a name="line.64"></a>
-<span class="sourceLineNo">065</span>@RunWith(Parameterized.class)<a name="line.65"></a>
-<span class="sourceLineNo">066</span>@Category({RegionServerTests.class, MediumTests.class})<a name="line.66"></a>
-<span class="sourceLineNo">067</span>public class TestMultiColumnScanner {<a name="line.67"></a>
-<span class="sourceLineNo">068</span><a name="line.68"></a>
-<span class="sourceLineNo">069</span>  @ClassRule<a name="line.69"></a>
-<span class="sourceLineNo">070</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.70"></a>
-<span class="sourceLineNo">071</span>      HBaseClassTestRule.forClass(TestMultiColumnScanner.class);<a name="line.71"></a>
-<span class="sourceLineNo">072</span><a name="line.72"></a>
-<span class="sourceLineNo">073</span>  private static final Logger LOG = LoggerFactory.getLogger(TestMultiColumnScanner.class);<a name="line.73"></a>
-<span class="sourceLineNo">074</span><a name="line.74"></a>
-<span class="sourceLineNo">075</span>  private static final String TABLE_NAME =<a name="line.75"></a>
-<span class="sourceLineNo">076</span>      TestMultiColumnScanner.class.getSimpleName();<a name="line.76"></a>
-<span class="sourceLineNo">077</span><a name="line.77"></a>
-<span class="sourceLineNo">078</span>  static final int MAX_VERSIONS = 50;<a name="line.78"></a>
-<span class="sourceLineNo">079</span><a name="line.79"></a>
-<span class="sourceLineNo">080</span>  private static final String FAMILY = "CF";<a name="line.80"></a>
-<span class="sourceLineNo">081</span>  private static final byte[] FAMILY_BYTES = Bytes.toBytes(FAMILY);<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>   * The size of the column qualifier set used. Increasing this parameter<a name="line.84"></a>
-<span class="sourceLineNo">085</span>   * exponentially increases test time.<a name="line.85"></a>
-<span class="sourceLineNo">086</span>   */<a name="line.86"></a>
-<span class="sourceLineNo">087</span>  private static final int NUM_COLUMNS = 8;<a name="line.87"></a>
-<span class="sourceLineNo">088</span><a name="line.88"></a>
-<span class="sourceLineNo">089</span>  private static final int MAX_COLUMN_BIT_MASK = 1 &lt;&lt; NUM_COLUMNS - 1;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>  private static final int NUM_FLUSHES = 10;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>  private static final int NUM_ROWS = 20;<a name="line.91"></a>
-<span class="sourceLineNo">092</span><a name="line.92"></a>
-<span class="sourceLineNo">093</span>  /** A large value of type long for use as a timestamp */<a name="line.93"></a>
-<span class="sourceLineNo">094</span>  private static final long BIG_LONG = 9111222333444555666L;<a name="line.94"></a>
-<span class="sourceLineNo">095</span><a name="line.95"></a>
-<span class="sourceLineNo">096</span>  /**<a name="line.96"></a>
-<span class="sourceLineNo">097</span>   * Timestamps to test with. Cannot use {@link Long#MAX_VALUE} here, because<a name="line.97"></a>
-<span class="sourceLineNo">098</span>   * it will be replaced by an timestamp auto-generated based on the time.<a name="line.98"></a>
-<span class="sourceLineNo">099</span>   */<a name="line.99"></a>
-<span class="sourceLineNo">100</span>  private static final long[] TIMESTAMPS = new long[] { 1, 3, 5,<a name="line.100"></a>
-<span class="sourceLineNo">101</span>      Integer.MAX_VALUE, BIG_LONG, Long.MAX_VALUE - 1 };<a name="line.101"></a>
-<span class="sourceLineNo">102</span><a name="line.102"></a>
-<span class="sourceLineNo">103</span>  /** The probability that a column is skipped in a store file. */<a name="line.103"></a>
-<span class="sourceLineNo">104</span>  private static final double COLUMN_SKIP_IN_STORE_FILE_PROB = 0.7;<a name="line.104"></a>
-<span class="sourceLineNo">105</span><a name="line.105"></a>
-<span class="sourceLineNo">106</span>  /** The probability of skipping a column in a single row */<a name="line.106"></a>
-<span class="sourceLineNo">107</span>  private static final double COLUMN_SKIP_IN_ROW_PROB = 0.1;<a name="line.107"></a>
-<span class="sourceLineNo">108</span><a name="line.108"></a>
-<span class="sourceLineNo">109</span>  /** The probability of skipping a column everywhere */<a name="line.109"></a>
-<span class="sourceLineNo">110</span>  private static final double COLUMN_SKIP_EVERYWHERE_PROB = 0.1;<a name="line.110"></a>
-<span class="sourceLineNo">111</span><a name="line.111"></a>
-<span class="sourceLineNo">112</span>  /** The probability to delete a row/column pair */<a name="line.112"></a>
-<span class="sourceLineNo">113</span>  private static final double DELETE_PROBABILITY = 0.02;<a name="line.113"></a>
-<span class="sourceLineNo">114</span><a name="line.114"></a>
-<span class="sourceLineNo">115</span>  private final static HBaseTestingUtility TEST_UTIL = HBaseTestingUtility.createLocalHTU();<a name="line.115"></a>
-<span class="sourceLineNo">116</span><a name="line.116"></a>
-<span class="sourceLineNo">117</span>  private final Compression.Algorithm comprAlgo;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>  private final BloomType bloomType;<a name="line.118"></a>
-<span class="sourceLineNo">119</span>  private final DataBlockEncoding dataBlockEncoding;<a name="line.119"></a>
-<span class="sourceLineNo">120</span><a name="line.120"></a>
-<span class="sourceLineNo">121</span>  // Some static sanity-checking.<a name="line.121"></a>
-<span class="sourceLineNo">122</span>  static {<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    assertTrue(BIG_LONG &gt; 0.9 * Long.MAX_VALUE); // Guard against typos.<a name="line.123"></a>
-<span class="sourceLineNo">124</span><a name="line.124"></a>
-<span class="sourceLineNo">125</span>    // Ensure TIMESTAMPS are sorted.<a name="line.125"></a>
-<span class="sourceLineNo">126</span>    for (int i = 0; i &lt; TIMESTAMPS.length - 1; ++i)<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      assertTrue(TIMESTAMPS[i] &lt; TIMESTAMPS[i + 1]);<a name="line.127"></a>
-<span class="sourceLineNo">128</span>  }<a name="line.128"></a>
-<span class="sourceLineNo">129</span><a name="line.129"></a>
-<span class="sourceLineNo">130</span>  @Parameters<a name="line.130"></a>
-<span class="sourceLineNo">131</span>  public static final Collection&lt;Object[]&gt; parameters() {<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    List&lt;Object[]&gt; parameters = new ArrayList&lt;&gt;();<a name="line.132"></a>
-<span class="sourceLineNo">133</span>    for (Object[] bloomAndCompressionParams :<a name="line.133"></a>
-<span class="sourceLineNo">134</span>        HBaseTestingUtility.BLOOM_AND_COMPRESSION_COMBINATIONS) {<a name="line.134"></a>
-<span class="sourceLineNo">135</span>      for (boolean useDataBlockEncoding : new boolean[]{false, true}) {<a name="line.135"></a>
-<span class="sourceLineNo">136</span>        parameters.add(ArrayUtils.add(bloomAndCompressionParams,<a name="line.136"></a>
-<span class="sourceLineNo">137</span>            useDataBlockEncoding));<a name="line.137"></a>
-<span class="sourceLineNo">138</span>      }<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    }<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    return parameters;<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>  public TestMultiColumnScanner(Compression.Algorithm comprAlgo,<a name="line.143"></a>
-<span class="sourceLineNo">144</span>      BloomType bloomType, boolean useDataBlockEncoding) {<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    this.comprAlgo = comprAlgo;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    this.bloomType = bloomType;<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    this.dataBlockEncoding = useDataBlockEncoding ? DataBlockEncoding.PREFIX :<a name="line.147"></a>
-<span class="sourceLineNo">148</span>        DataBlockEncoding.NONE;<a name="line.148"></a>
-<span class="sourceLineNo">149</span>  }<a name="line.149"></a>
-<span class="sourceLineNo">150</span><a name="line.150"></a>
-<span class="sourceLineNo">151</span>  @Test<a name="line.151"></a>
-<span class="sourceLineNo">152</span>  public void testMultiColumnScanner() throws IOException {<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    HRegion region = TEST_UTIL.createTestRegion(TABLE_NAME,<a name="line.153"></a>
-<span class="sourceLineNo">154</span>        new HColumnDescriptor(FAMILY)<a name="line.154"></a>
-<span class="sourceLineNo">155</span>            .setCompressionType(comprAlgo)<a name="line.155"></a>
-<span class="sourceLineNo">156</span>            .setBloomFilterType(bloomType)<a name="line.156"></a>
-<span class="sourceLineNo">157</span>            .setMaxVersions(MAX_VERSIONS)<a name="line.157"></a>
-<span class="sourceLineNo">158</span>            .setDataBlockEncoding(dataBlockEncoding)<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    );<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    List&lt;String&gt; rows = sequentialStrings("row", NUM_ROWS);<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    List&lt;String&gt; qualifiers = sequentialStrings("qual", NUM_COLUMNS);<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    List&lt;KeyValue&gt; kvs = new ArrayList&lt;&gt;();<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    Set&lt;String&gt; keySet = new HashSet&lt;&gt;();<a name="line.163"></a>
-<span class="sourceLineNo">164</span><a name="line.164"></a>
-<span class="sourceLineNo">165</span>    // A map from &lt;row&gt;_&lt;qualifier&gt; to the most recent delete timestamp for<a name="line.165"></a>
-<span class="sourceLineNo">166</span>    // that column.<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    Map&lt;String, Long&gt; lastDelTimeMap = new HashMap&lt;&gt;();<a name="line.167"></a>
-<span class="sourceLineNo">168</span><a name="line.168"></a>
-<span class="sourceLineNo">169</span>    Random rand = new Random(29372937L);<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    Set&lt;String&gt; rowQualSkip = new HashSet&lt;&gt;();<a name="line.170"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.util.BloomFilterUtil;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.junit.ClassRule;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.junit.Test;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.junit.experimental.categories.Category;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.junit.runner.RunWith;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.junit.runners.Parameterized;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.junit.runners.Parameterized.Parameters;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.slf4j.Logger;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.slf4j.LoggerFactory;<a name="line.61"></a>
+<span class="sourceLineNo">062</span><a name="line.62"></a>
+<span class="sourceLineNo">063</span>/**<a name="line.63"></a>
+<span class="sourceLineNo">064</span> * Tests optimized scanning of multiple columns.<a name="line.64"></a>
+<span class="sourceLineNo">065</span> */<a name="line.65"></a>
+<span class="sourceLineNo">066</span>@RunWith(Parameterized.class)<a name="line.66"></a>
+<span class="sourceLineNo">067</span>@Category({RegionServerTests.class, MediumTests.class})<a name="line.67"></a>
+<span class="sourceLineNo">068</span>public class TestMultiColumnScanner {<a name="line.68"></a>
+<span class="sourceLineNo">069</span><a name="line.69"></a>
+<span class="sourceLineNo">070</span>  @ClassRule<a name="line.70"></a>
+<span class="sourceLineNo">071</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.71"></a>
+<span class="sourceLineNo">072</span>      HBaseClassTestRule.forClass(TestMultiColumnScanner.class);<a name="line.72"></a>
+<span class="sourceLineNo">073</span><a name="line.73"></a>
+<span class="sourceLineNo">074</span>  private static final Logger LOG = LoggerFactory.getLogger(TestMultiColumnScanner.class);<a name="line.74"></a>
+<span class="sourceLineNo">075</span><a name="line.75"></a>
+<span class="sourceLineNo">076</span>  private static final String TABLE_NAME =<a name="line.76"></a>
+<span class="sourceLineNo">077</span>      TestMultiColumnScanner.class.getSimpleName();<a name="line.77"></a>
+<span class="sourceLineNo">078</span><a name="line.78"></a>
+<span class="sourceLineNo">079</span>  static final int MAX_VERSIONS = 50;<a name="line.79"></a>
+<span class="sourceLineNo">080</span><a name="line.80"></a>
+<span class="sourceLineNo">081</span>  private static final String FAMILY = "CF";<a name="line.81"></a>
+<span class="sourceLineNo">082</span>  private static final byte[] FAMILY_BYTES = Bytes.toBytes(FAMILY);<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>   * The size of the column qualifier set used. Increasing this parameter<a name="line.85"></a>
+<span class="sourceLineNo">086</span>   * exponentially increases test time.<a name="line.86"></a>
+<span class="sourceLineNo">087</span>   */<a name="line.87"></a>
+<span class="sourceLineNo">088</span>  private static final int NUM_COLUMNS = 8;<a name="line.88"></a>
+<span class="sourceLineNo">089</span><a name="line.89"></a>
+<span class="sourceLineNo">090</span>  private static final int MAX_COLUMN_BIT_MASK = 1 &lt;&lt; NUM_COLUMNS - 1;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>  private static final int NUM_FLUSHES = 10;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>  private static final int NUM_ROWS = 20;<a name="line.92"></a>
+<span class="sourceLineNo">093</span><a name="line.93"></a>
+<span class="sourceLineNo">094</span>  /** A large value of type long for use as a timestamp */<a name="line.94"></a>
+<span class="sourceLineNo">095</span>  private static final long BIG_LONG = 9111222333444555666L;<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>   * Timestamps to test with. Cannot use {@link Long#MAX_VALUE} here, because<a name="line.98"></a>
+<span class="sourceLineNo">099</span>   * it will be replaced by an timestamp auto-generated based on the time.<a name="line.99"></a>
+<span class="sourceLineNo">100</span>   */<a name="line.100"></a>
+<span class="sourceLineNo">101</span>  private static final long[] TIMESTAMPS = new long[] { 1, 3, 5,<a name="line.101"></a>
+<span class="sourceLineNo">102</span>      Integer.MAX_VALUE, BIG_LONG, Long.MAX_VALUE - 1 };<a name="line.102"></a>
+<span class="sourceLineNo">103</span><a name="line.103"></a>
+<span class="sourceLineNo">104</span>  /** The probability that a column is skipped in a store file. */<a name="line.104"></a>
+<span class="sourceLineNo">105</span>  private static final double COLUMN_SKIP_IN_STORE_FILE_PROB = 0.7;<a name="line.105"></a>
+<span class="sourceLineNo">106</span><a name="line.106"></a>
+<span class="sourceLineNo">107</span>  /** The probability of skipping a column in a single row */<a name="line.107"></a>
+<span class="sourceLineNo">108</span>  private static final double COLUMN_SKIP_IN_ROW_PROB = 0.1;<a name="line.108"></a>
+<span class="sourceLineNo">109</span><a name="line.109"></a>
+<span class="sourceLineNo">110</span>  /** The probability of skipping a column everywhere */<a name="line.110"></a>
+<span class="sourceLineNo">111</span>  private static final double COLUMN_SKIP_EVERYWHERE_PROB = 0.1;<a name="line.111"></a>
+<span class="sourceLineNo">112</span><a name="line.112"></a>
+<span class="sourceLineNo">113</span>  /** The probability to delete a row/column pair */<a name="line.113"></a>
+<span class="sourceLineNo">114</span>  private static final double DELETE_PROBABILITY = 0.02;<a name="line.114"></a>
+<span class="sourceLineNo">115</span><a name="line.115"></a>
+<span class="sourceLineNo">116</span>  private final static HBaseTestingUtility TEST_UTIL = HBaseTestingUtility.createLocalHTU();<a name="line.116"></a>
+<span class="sourceLineNo">117</span><a name="line.117"></a>
+<span class="sourceLineNo">118</span>  private final Compression.Algorithm comprAlgo;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>  private final BloomType bloomType;<a name="line.119"></a>
+<span class="sourceLineNo">120</span>  private final DataBlockEncoding dataBlockEncoding;<a name="line.120"></a>
+<span class="sourceLineNo">121</span><a name="line.121"></a>
+<span class="sourceLineNo">122</span>  // Some static sanity-checking.<a name="line.122"></a>
+<span class="sourceLineNo">123</span>  static {<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    assertTrue(BIG_LONG &gt; 0.9 * Long.MAX_VALUE); // Guard against typos.<a name="line.124"></a>
+<span class="sourceLineNo">125</span><a name="line.125"></a>
+<span class="sourceLineNo">126</span>    // Ensure TIMESTAMPS are sorted.<a name="line.126"></a>
+<span class="sourceLineNo">127</span>    for (int i = 0; i &lt; TIMESTAMPS.length - 1; ++i)<a name="line.127"></a>
+<span class="sourceLineNo">128</span>      assertTrue(TIMESTAMPS[i] &lt; TIMESTAMPS[i + 1]);<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>  @Parameters<a name="line.131"></a>
+<span class="sourceLineNo">132</span>  public static final Collection&lt;Object[]&gt; parameters() {<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    List&lt;Object[]&gt; parameters = new ArrayList&lt;&gt;();<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    for (Object[] bloomAndCompressionParams :<a name="line.134"></a>
+<span class="sourceLineNo">135</span>        HBaseTestingUtility.BLOOM_AND_COMPRESSION_COMBINATIONS) {<a name="line.135"></a>
+<span class="sourceLineNo">136</span>      for (boolean useDataBlockEncoding : new boolean[]{false, true}) {<a name="line.136"></a>
+<span class="sourceLineNo">137</span>        parameters.add(ArrayUtils.add(bloomAndCompressionParams,<a name="line.137"></a>
+<span class="sourceLineNo">138</span>            useDataBlockEncoding));<a name="line.138"></a>
+<span class="sourceLineNo">139</span>      }<a name="line.139"></a>
+<span class="sourceLineNo">140</span>    }<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    return parameters;<a name="line.141"></a>
+<span class="sourceLineNo">142</span>  }<a name="line.142"></a>
+<span class="sourceLineNo">143</span><a name="line.143"></a>
+<span class="sourceLineNo">144</span>  public TestMultiColumnScanner(Compression.Algorithm comprAlgo,<a name="line.144"></a>
+<span class="sourceLineNo">145</span>      BloomType bloomType, boolean useDataBlockEncoding) {<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    this.comprAlgo = comprAlgo;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    this.bloomType = bloomType;<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    this.dataBlockEncoding = useDataBlockEncoding ? DataBlockEncoding.PREFIX :<a name="line.148"></a>
+<span class="sourceLineNo">149</span>        DataBlockEncoding.NONE;<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>  @Test<a name="line.152"></a>
+<span class="sourceLineNo">153</span>  public void testMultiColumnScanner() throws IOException {<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    TEST_UTIL.getConfiguration().setInt(BloomFilterUtil.PREFIX_LENGTH_KEY, 10);<a name="line.154"></a>
+<span class="sourceLineNo">155</span>    TEST_UTIL.getConfiguration().set(BloomFilterUtil.DELIMITER_KEY, "#");<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    HRegion region = TEST_UTIL.createTestRegion(TABLE_NAME,<a name="line.156"></a>
+<span class="sourceLineNo">157</span>        new HColumnDescriptor(FAMILY)<a name="line.157"></a>
+<span class="sourceLineNo">158</span>            .setCompressionType(comprAlgo)<a name="line.158"></a>
+<span class="sourceLineNo">159</span>            .setBloomFilterType(bloomType)<a name="line.159"></a>
+<span class="sourceLineNo">160</span>            .setMaxVersions(MAX_VERSIONS)<a name="line.160"></a>
+<span class="sourceLineNo">161</span>            .setDataBlockEncoding(dataBlockEncoding)<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    );<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    List&lt;String&gt; rows = sequentialStrings("row", NUM_ROWS);<a name="line.163"></a>
+<span class="sourceLineNo">164</span>    List&lt;String&gt; qualifiers = sequentialStrings("qual", NUM_COLUMNS);<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    List&lt;KeyValue&gt; kvs = new ArrayList&lt;&gt;();<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    Set&lt;String&gt; keySet = new HashSet&lt;&gt;();<a name="line.166"></a>
+<span class="sourceLineNo">167</span><a name="line.167"></a>
+<span class="sourceLineNo">168</span>    // A map from &lt;row&gt;_&lt;qualifier&gt; to the most recent delete timestamp for<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    // that column.<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    Map&lt;String, Long&gt; lastDelTimeMap = new HashMap&lt;&gt;();<a name="line.170"></a>
 <span class="sourceLineNo">171</span><a name="line.171"></a>
-<span class="sourceLineNo">172</span>    // Skip some columns in some rows. We need to test scanning over a set<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    // of columns when some of the columns are not there.<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    for (String row : rows)<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      for (String qual : qualifiers)<a name="line.175"></a>
-<span class="sourceLineNo">176</span>        if (rand.nextDouble() &lt; COLUMN_SKIP_IN_ROW_PROB) {<a name="line.176"></a>
-<span class="sourceLineNo">177</span>          LOG.info("Skipping " + qual + " in row " + row);<a name="line.177"></a>
-<span class="sourceLineNo">178</span>          rowQualSkip.add(rowQualKey(row, qual));<a name="line.178"></a>
-<span class="sourceLineNo">179</span>        }<a name="line.179"></a>
-<span class="sourceLineNo">180</span><a name="line.180"></a>
-<span class="sourceLineNo">181</span>    // Also skip some columns in all rows.<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    for (String qual : qualifiers)<a name="line.182"></a>
-<span class="sourceLineNo">183</span>      if (rand.nextDouble() &lt; COLUMN_SKIP_EVERYWHERE_PROB) {<a name="line.183"></a>
-<span class="sourceLineNo">184</span>        LOG.info("Skipping " + qual + " in all rows");<a name="line.184"></a>
-<span class="sourceLineNo">185</span>        for (String row : rows)<a name="line.185"></a>
-<span class="sourceLineNo">186</span>          rowQualSkip.add(rowQualKey(row, qual));<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>    for (int iFlush = 0; iFlush &lt; NUM_FLUSHES; ++iFlush) {<a name="line.189"></a>
-<span class="sourceLineNo">190</span>      for (String qual : qualifiers) {<a name="line.190"></a>
-<span class="sourceLineNo">191</span>        // This is where we decide to include or not include this column into<a name="line.191"></a>
-<span class="sourceLineNo">192</span>        // this store file, regardless of row and timestamp.<a name="line.192"></a>
-<span class="sourceLineNo">193</span>        if (rand.nextDouble() &lt; COLUMN_SKIP_IN_STORE_FILE_PROB)<a name="line.193"></a>
-<span class="sourceLineNo">194</span>          continue;<a name="line.194"></a>
-<span class="sourceLineNo">195</span><a name="line.195"></a>
-<span class="sourceLineNo">196</span>        byte[] qualBytes = Bytes.toBytes(qual);<a name="line.196"></a>
-<span class="sourceLineNo">197</span>        for (String row : rows) {<a name="line.197"></a>
-<span class="sourceLineNo">198</span>          Put p = new Put(Bytes.toBytes(row));<a name="line.198"></a>
-<span class="sourceLineNo">199</span>          for (long ts : TIMESTAMPS) {<a name="line.199"></a>
-<span class="sourceLineNo">200</span>            String value = createValue(row, qual, ts);<a name="line.200"></a>
-<span class="sourceLineNo">201</span>            KeyValue kv = KeyValueTestUtil.create(row, FAMILY, qual, ts,<a name="line.201"></a>
-<span class="sourceLineNo">202</span>                value);<a name="line.202"></a>
-<span class="sourceLineNo">203</span>            assertEquals(kv.getTimestamp(), ts);<a name="line.203"></a>
-<span class="sourceLineNo">204</span>            p.add(kv);<a name="line.204"></a>
-<span class="sourceLineNo">205</span>            String keyAsString = kv.toString();<a name="line.205"></a>
-<span class="sourceLineNo">206</span>            if (!keySet.contains(keyAsString)) {<a name="line.206"></a>
-<span class="sourceLineNo">207</span>              keySet.add(keyAsString);<a name="line.207"></a>
-<span class="sourceLineNo">208</span>              kvs.add(kv);<a name="line.208"></a>
-<span class="sourceLineNo">209</span>            }<a name="line.209"></a>
-<span class="sourceLineNo">210</span>          }<a name="line.210"></a>
-<span class="sourceLineNo">211</span>          region.put(p);<a name="line.211"></a>
-<span class="sourceLineNo">212</span><a name="line.212"></a>
-<span class="sourceLineNo">213</span>          Delete d = new Delete(Bytes.toBytes(row));<a name="line.213"></a>
-<span class="sourceLineNo">214</span>          boolean deletedSomething = false;<a name="line.214"></a>
-<span class="sourceLineNo">215</span>          for (long ts : TIMESTAMPS)<a name="line.215"></a>
-<span class="sourceLineNo">216</span>            if (rand.nextDouble() &lt; DELETE_PROBABILITY) {<a name="line.216"></a>
-<span class="sourceLineNo">217</span>              d.addColumns(FAMILY_BYTES, qualBytes, ts);<a name="line.217"></a>
-<span class="sourceLineNo">218</span>              String rowAndQual = row + "_" + qual;<a name="line.218"></a>
-<span class="sourceLineNo">219</span>              Long whenDeleted = lastDelTimeMap.get(rowAndQual);<a name="line.219"></a>
-<span class="sourceLineNo">220</span>              lastDelTimeMap.put(rowAndQual, whenDeleted == null ? ts<a name="line.220"></a>
-<span class="sourceLineNo">221</span>                  : Math.max(ts, whenDeleted));<a name="line.221"></a>
-<span class="sourceLineNo">222</span>              deletedSomething = true;<a name="line.222"></a>
-<span class="sourceLineNo">223</span>            }<a name="line.223"></a>
-<span class="sourceLineNo">224</span>          if (deletedSomething)<a name="line.224"></a>
-<span class="sourceLineNo">225</span>            region.delete(d);<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>      region.flush(true);<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>    Collections.sort(kvs, CellComparatorImpl.COMPARATOR);<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    for (int maxVersions = 1; maxVersions &lt;= TIMESTAMPS.length; ++maxVersions) {<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      for (int columnBitMask = 1; columnBitMask &lt;= MAX_COLUMN_BIT_MASK; ++columnBitMask) {<a name="line.233"></a>
-<span class="sourceLineNo">234</span>        Scan scan = new Scan();<a name="line.234"></a>
-<span class="sourceLineNo">235</span>        scan.setMaxVersions(maxVersions);<a name="line.235"></a>
-<span class="sourceLineNo">236</span>        Set&lt;String&gt; qualSet = new TreeSet&lt;&gt;();<a name="line.236"></a>
-<span class="sourceLineNo">237</span>        {<a name="line.237"></a>
-<span class="sourceLineNo">238</span>          int columnMaskTmp = columnBitMask;<a name="line.238"></a>
-<span class="sourceLineNo">239</span>          for (String qual : qualifiers) {<a name="line.239"></a>
-<span class="sourceLineNo">240</span>            if ((columnMaskTmp &amp; 1) != 0) {<a name="line.240"></a>
-<span class="sourceLineNo">241</span>              scan.addColumn(FAMILY_BYTES, Bytes.toBytes(qual));<a name="line.241"></a>
-<span class="sourceLineNo">242</span>              qualSet.add(qual);<a name="line.242"></a>
-<span class="sourceLineNo">243</span>            }<a name="line.243"></a>
-<span class="sourceLineNo">244</span>            columnMaskTmp &gt;&gt;= 1;<a name="line.244"></a>
-<span class="sourceLineNo">245</span>          }<a name="line.245"></a>
-<span class="sourceLineNo">246</span>          assertEquals(0, columnMaskTmp);<a name="line.246"></a>
-<span class="sourceLineNo">247</span>        }<a name="line.247"></a>
-<span class="sourceLineNo">248</span><a name="line.248"></a>
-<span class="sourceLineNo">249</span>        InternalScanner scanner = region.getScanner(scan);<a name="line.249"></a>
-<span class="sourceLineNo">250</span>        List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.250"></a>
+<span class="sourceLineNo">172</span>    Random rand = new Random(29372937L);<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    Set&lt;String&gt; rowQualSkip = new HashSet&lt;&gt;();<a name="line.173"></a>
+<span class="sourceLineNo">174</span><a name="line.174"></a>
+<span class="sourceLineNo">175</span>    // Skip some columns in some rows. We need to test scanning over a set<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    // of columns when some of the columns are not there.<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    for (String row : rows)<a name="line.177"></a>
+<span class="sourceLineNo">178</span>      for (String qual : qualifiers)<a name="line.178"></a>
+<span class="sourceLineNo">179</span>        if (rand.nextDouble() &lt; COLUMN_SKIP_IN_ROW_PROB) {<a name="line.179"></a>
+<span class="sourceLineNo">180</span>          LOG.info("Skipping " + qual + " in row " + row);<a name="line.180"></a>
+<span class="sourceLineNo">181</span>          rowQualSkip.add(rowQualKey(row, qual));<a name="line.181"></a>
+<span class="sourceLineNo">182</span>        }<a name="line.182"></a>
+<span class="sourceLineNo">183</span><a name="line.183"></a>
+<span class="sourceLineNo">184</span>    // Also skip some columns in all rows.<a name="line.184"></a>
+<span class="sourceLineNo">185</span>    for (String qual : qualifiers)<a name="line.185"></a>
+<span class="sourceLineNo">186</span>      if (rand.nextDouble() &lt; COLUMN_SKIP_EVERYWHERE_PROB) {<a name="line.186"></a>
+<span class="sourceLineNo">187</span>        LOG.info("Skipping " + qual + " in all rows");<a name="line.187"></a>
+<span class="sourceLineNo">188</span>        for (String row : rows)<a name="line.188"></a>
+<span class="sourceLineNo">189</span>          rowQualSkip.add(rowQualKey(row, qual));<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>    for (int iFlush = 0; iFlush &lt; NUM_FLUSHES; ++iFlush) {<a name="line.192"></a>
+<span class="sourceLineNo">193</span>      for (String qual : qualifiers) {<a name="line.193"></a>
+<span class="sourceLineNo">194</span>        // This is where we decide to include or not include this column into<a name="line.194"></a>
+<span class="sourceLineNo">195</span>        // this store file, regardless of row and timestamp.<a name="line.195"></a>
+<span class="sourceLineNo">196</span>        if (rand.nextDouble() &lt; COLUMN_SKIP_IN_STORE_FILE_PROB)<a name="line.196"></a>
+<span class="sourceLineNo">197</span>          continue;<a name="line.197"></a>
+<span class="sourceLineNo">198</span><a name="line.198"></a>
+<span class="sourceLineNo">199</span>        byte[] qualBytes = Bytes.toBytes(qual);<a name="line.199"></a>
+<span class="sourceLineNo">200</span>        for (String row : rows) {<a name="line.200"></a>
+<span class="sourceLineNo">201</span>          Put p = new Put(Bytes.toBytes(row));<a name="line.201"></a>
+<span class="sourceLineNo">202</span>          for (long ts : TIMESTAMPS) {<a name="line.202"></a>
+<span class="sourceLineNo">203</span>            String value = createValue(row, qual, ts);<a name="line.203"></a>
+<span class="sourceLineNo">204</span>            KeyValue kv = KeyValueTestUtil.create(row, FAMILY, qual, ts,<a name="line.204"></a>
+<span class="sourceLineNo">205</span>                value);<a name="line.205"></a>
+<span class="sourceLineNo">206</span>            assertEquals(kv.getTimestamp(), ts);<a name="line.206"></a>
+<span class="sourceLineNo">207</span>            p.add(kv);<a name="line.207"></a>
+<span class="sourceLineNo">208</span>            String keyAsString = kv.toString();<a name="line.208"></a>
+<span class="sourceLineNo">209</span>            if (!keySet.contains(keyAsString)) {<a name="line.209"></a>
+<span class="sourceLineNo">210</span>              keySet.add(keyAsString);<a name="line.210"></a>
+<span class="sourceLineNo">211</span>              kvs.add(kv);<a name="line.211"></a>
+<span class="sourceLineNo">212</span>            }<a name="line.212"></a>
+<span class="sourceLineNo">213</span>          }<a name="line.213"></a>
+<span class="sourceLineNo">214</span>          region.put(p);<a name="line.214"></a>
+<span class="sourceLineNo">215</span><a name="line.215"></a>
+<span class="sourceLineNo">216</span>          Delete d = new Delete(Bytes.toBytes(row));<a name="line.216"></a>
+<span class="sourceLineNo">217</span>          boolean deletedSomething = false;<a name="line.217"></a>
+<span class="sourceLineNo">218</span>          for (long ts : TIMESTAMPS)<a name="line.218"></a>
+<span class="sourceLineNo">219</span>            if (rand.nextDouble() &lt; DELETE_PROBABILITY) {<a name="line.219"></a>
+<span class="sourceLineNo">220</span>              d.addColumns(FAMILY_BYTES, qualBytes, ts);<a name="line.220"></a>
+<span class="sourceLineNo">221</span>              String rowAndQual = row + "_" + qual;<a name="line.221"></a>
+<span class="sourceLineNo">222</span>              Long whenDeleted = lastDelTimeMap.get(rowAndQual);<a name="line.222"></a>
+<span class="sourceLineNo">223</span>              lastDelTimeMap.put(rowAndQual, whenDeleted == null ? ts<a name="line.223"></a>
+<span class="sourceLineNo">224</span>                  : Math.max(ts, whenDeleted));<a name="line.224"></a>
+<span class="sourceLineNo">225</span>              deletedSomething = true;<a name="line.225"></a>
+<span class="sourceLineNo">226</span>            }<a name="line.226"></a>
+<span class="sourceLineNo">227</span>          if (deletedSomething)<a name="line.227"></a>
+<span class="sourceLineNo">228</span>            region.delete(d);<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>      region.flush(true);<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    }<a name="line.232"></a>
+<span class="sourceLineNo">233</span><a name="line.233"></a>
+<span class="sourceLineNo">234</span>    Collections.sort(kvs, CellComparatorImpl.COMPARATOR);<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    for (int maxVersions = 1; maxVersions &lt;= TIMESTAMPS.length; ++maxVersions) {<a name="line.235"></a>
+<span class="sourceLineNo">236</span>      for (int columnBitMask = 1; columnBitMask &lt;= MAX_COLUMN_BIT_MASK; ++columnBitMask) {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>        Scan scan = new Scan();<a name="line.237"></a>
+<span class="sourceLineNo">238</span>        scan.setMaxVersions(maxVersions);<a name="line.238"></a>
+<span class="sourceLineNo">239</span>        Set&lt;String&gt; qualSet = new TreeSet&lt;&gt;();<a name="line.239"></a>
+<span class="sourceLineNo">240</span>        {<a name="line.240"></a>
+<span class="sourceLineNo">241</span>          int columnMaskTmp = columnBitMask;<a name="line.241"></a>
+<span class="sourceLineNo">242</span>          for (String qual : qualifiers) {<a name="line.242"></a>
+<span class="sourceLineNo">243</span>            if ((columnMaskTmp &amp; 1) != 0) {<a name="line.243"></a>
+<span class="sourceLineNo">244</span>              scan.addColumn(FAMILY_BYTES, Bytes.toBytes(qual));<a name="line.244"></a>
+<span class="sourceLineNo">245</span>              qualSet.add(qual);<a name="line.245"></a>
+<span class="sourceLineNo">246</span>            }<a name="line.246"></a>
+<span class="sourceLineNo">247</span>            columnMaskTmp &gt;&gt;= 1;<a name="line.247"></a>
+<span class="sourceLineNo">248</span>          }<a name="line.248"></a>
+<span class="sourceLineNo">249</span>          assertEquals(0, columnMaskTmp);<a name="line.249"></a>
+<span class="sourceLineNo">250</span>        }<a name="line.250"></a>
 <span class="sourceLineNo">251</span><a name="line.251"></a>
-<span class="sourceLineNo">252</span>        int kvPos = 0;<a name="line.252"></a>
-<span class="sourceLineNo">253</span>        int numResults = 0;<a name="line.253"></a>
-<span class="sourceLineNo">254</span>        String queryInfo = "columns queried: " + qualSet + " (columnBitMask="<a name="line.254"></a>
-<span class="sourceLineNo">255</span>            + columnBitMask + "), maxVersions=" + maxVersions;<a name="line.255"></a>
-<span class="sourceLineNo">256</span><a name="line.256"></a>
-<span class="sourceLineNo">257</span>        while (scanner.next(results) || results.size() &gt; 0) {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>          for (Cell kv : results) {<a name="line.258"></a>
-<span class="sourceLineNo">259</span>            while (kvPos &lt; kvs.size()<a name="line.259"></a>
-<span class="sourceLineNo">260</span>                &amp;&amp; !matchesQuery(kvs.get(kvPos), qualSet, maxVersions,<a name="line.260"></a>
-<span class="sourceLineNo">261</span>                    lastDelTimeMap)) {<a name="line.261"></a>
-<span class="sourceLineNo">262</span>              ++kvPos;<a name="line.262"></a>
-<span class="sourceLineNo">263</span>            }<a name="line.263"></a>
-<span class="sourceLineNo">264</span>            String rowQual = getRowQualStr(kv);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>            String deleteInfo = "";<a name="line.265"></a>
-<span class="sourceLineNo">266</span>            Long lastDelTS = lastDelTimeMap.get(rowQual);<a name="line.266"></a>
-<span class="sourceLineNo">267</span>            if (lastDelTS != null) {<a name="line.267"></a>
-<span class="sourceLineNo">268</span>              deleteInfo = "; last timestamp when row/column " + rowQual<a name="line.268"></a>
-<span class="sourceLineNo">269</span>                  + " was deleted: " + lastDelTS;<a name="line.269"></a>
-<span class="sourceLineNo">270</span>            }<a name="line.270"></a>
-<span class="sourceLineNo">271</span>            assertTrue("Scanner returned additional key/value: " + kv + ", "<a name="line.271"></a>
-<span class="sourceLineNo">272</span>                + queryInfo + deleteInfo + ";", kvPos &lt; kvs.size());<a name="line.272"></a>
-<span class="sourceLineNo">273</span>            assertTrue("Scanner returned wrong key/value; " + queryInfo + deleteInfo + ";",<a name="line.273"></a>
-<span class="sourceLineNo">274</span>              PrivateCellUtil.equalsIgnoreMvccVersion(kvs.get(kvPos), (kv)));<a name="line.274"></a>
-<span class="sourceLineNo">275</span>            ++kvPos;<a name="line.275"></a>
-<span class="sourceLineNo">276</span>            ++numResults;<a name="line.276"></a>
-<span class="sourceLineNo">277</span>          }<a name="line.277"></a>
-<span class="sourceLineNo">278</span>          results.clear();<a name="line.278"></a>
-<span class="sourceLineNo">279</span>        }<a name="line.279"></a>
-<span class="sourceLineNo">280</span>        for (; kvPos &lt; kvs.size(); ++kvPos) {<a name="line.280"></a>
-<span class="sourceLineNo">281</span>          KeyValue remainingKV = kvs.get(kvPos);<a name="line.281"></a>
-<span class="sourceLineNo">282</span>          assertFalse("Matching column not returned by scanner: "<a name="line.282"></a>
-<span class="sourceLineNo">283</span>              + remainingKV + ", " + queryInfo + ", results returned: "<a name="line.283"></a>
-<span class="sourceLineNo">284</span>              + numResults, matchesQuery(remainingKV, qualSet, maxVersions,<a name="line.284"></a>
-<span class="sourceLineNo">285</span>              lastDelTimeMap));<a name="line.285"></a>
-<span class="sourceLineNo">286</span>        }<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      }<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    }<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    assertTrue("This test is supposed to delete at least some row/column " +<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        "pairs", lastDelTimeMap.size() &gt; 0);<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    LOG.info("Number of row/col pairs deleted at least once: " +<a name="line.291"></a>
-<span class="sourceLineNo">292</span>       lastDelTimeMap.size());<a name="line.292"></a>
-<span class="sourceLineNo">293</span>    HBaseTestingUtility.closeRegionAndWAL(region);<a name="line.293"></a>
-<span class="sourceLineNo">294</span>  }<a name="line.294"></a>
-<span class="sourceLineNo">295</span><a name="line.295"></a>
-<span class="sourceLineNo">296</span>  private static String getRowQualStr(Cell kv) {<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    String rowStr = Bytes.toString(CellUtil.cloneRow(kv));<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    String qualStr = Bytes.toString(CellUtil.cloneQualifier(kv));<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    return rowStr + "_" + qualStr;<a name="line.299"></a>
-<span class="sourceLineNo">300</span>  }<a name="line.300"></a>
-<span class="sourceLineNo">301</span><a name="line.301"></a>
-<span class="sourceLineNo">302</span>  private static boolean matchesQuery(KeyValue kv, Set&lt;String&gt; qualSet,<a name="line.302"></a>
-<span class="sourceLineNo">303</span>      int maxVersions, Map&lt;String, Long&gt; lastDelTimeMap) {<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    Long lastDelTS = lastDelTimeMap.get(getRowQualStr(kv));<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    long ts = kv.getTimestamp();<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    return qualSet.contains(qualStr(kv))<a name="line.306"></a>
-<span class="sourceLineNo">307</span>        &amp;&amp; ts &gt;= TIMESTAMPS[TIMESTAMPS.length - maxVersions]<a name="line.307"></a>
-<span class="sourceLineNo">308</span>        &amp;&amp; (lastDelTS == null || ts &gt; lastDelTS);<a name="line.308"></a>
-<span class="sourceLineNo">309</span>  }<a name="line.309"></a>
-<span class="sourceLineNo">310</span><a name="line.310"></a>
-<span class="sourceLineNo">311</span>  private static String qualStr(KeyValue kv) {<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    return Bytes.toString(kv.getQualifierArray(), kv.getQualifierOffset(),<a name="line.312"></a>
-<span class="sourceLineNo">313</span>        kv.getQualifierLength());<a name="line.313"></a>
-<span class="sourceLineNo">314</span>  }<a name="line.314"></a>
-<span class="sourceLineNo">315</span><a name="line.315"></a>
-<span class="sourceLineNo">316</span>  private static String rowQualKey(String row, String qual) {<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    return row + "_" + qual;<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  }<a name="line.318"></a>
-<span class="sourceLineNo">319</span><a name="line.319"></a>
-<span class="sourceLineNo">320</span>  static String createValue(String row, String qual, long ts) {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    return "value_for_" + row + "_" + qual + "_" + ts;<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>  private static List&lt;String&gt; sequentialStrings(String prefix, int n) {<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    List&lt;String&gt; lst = new ArrayList&lt;&gt;();<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    for (int i = 0; i &lt; n; ++i) {<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      StringBuilder sb = new StringBuilder();<a name="line.327"></a>
-<span class="sourceLineNo">328</span>      sb.append(prefix + i);<a name="line.328"></a>
-<span class="sourceLineNo">329</span><a name="line.329"></a>
-<span class="sourceLineNo">330</span>      // Make column length depend on i.<a name="line.330"></a>
-<span class="sourceLineNo">331</span>      int iBitShifted = i;<a name="line.331"></a>
-<span class="sourceLineNo">332</span>      while (iBitShifted != 0) {<a name="line.332"></a>
-<span class="sourceLineNo">333</span>        sb.append((iBitShifted &amp; 1) == 0 ? 'a' : 'b');<a name="line.333"></a>
-<span class="sourceLineNo">334</span>        iBitShifted &gt;&gt;= 1;<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>      lst.add(sb.toString());<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    }<a name="line.338"></a>
+<span class="sourceLineNo">252</span>        InternalScanner scanner = region.getScanner(scan);<a name="line.252"></a>
+<span class="sourceLineNo">253</span>        List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.253"></a>
+<span class="sourceLineNo">254</span><a name="line.254"></a>
+<span class="sourceLineNo">255</span>        int kvPos = 0;<a name="line.255"></a>
+<span class="sourceLineNo">256</span>        int numResults = 0;<a name="line.256"></a>
+<span class="sourceLineNo">257</span>        String queryInfo = "columns queried: " + qualSet + " (columnBitMask="<a name="line.257"></a>
+<span class="sourceLineNo">258</span>            + columnBitMask + "), maxVersions=" + maxVersions;<a name="line.258"></a>
+<span class="sourceLineNo">259</span><a name="line.259"></a>
+<span class="sourceLineNo">260</span>        while (scanner.next(results) || results.size() &gt; 0) {<a name="line.260"></a>
+<span class="sourceLineNo">261</span>          for (Cell kv : results) {<a name="line.261"></a>
+<span class="sourceLineNo">262</span>            while (kvPos &lt; kvs.size()<a name="line.262"></a>
+<span class="sourceLineNo">263</span>                &amp;&amp; !matchesQuery(kvs.get(kvPos), qualSet, maxVersions,<a name="line.263"></a>
+<span class="sourceLineNo">264</span>                    lastDelTimeMap)) {<a name="line.264"></a>
+<span class="sourceLineNo">265</span>              ++kvPos;<a name="line.265"></a>
+<span class="sourceLineNo">266</span>            }<a name="line.266"></a>
+<span class="sourceLineNo">267</span>            String rowQual = getRowQualStr(kv);<a name="line.267"></a>
+<span class="sourceLineNo">268</span>            String deleteInfo = "";<a name="line.268"></a>
+<span class="sourceLineNo">269</span>            Long lastDelTS = lastDelTimeMap.get(rowQual);<a name="line.269"></a>
+<span class="sourceLineNo">270</span>            if (lastDelTS != null) {<a name="line.270"></a>
+<span class="sourceLineNo">271</span>              deleteInfo = "; last timestamp when row/column " + rowQual<a name="line.271"></a>
+<span class="sourceLineNo">272</span>                  + " was deleted: " + lastDelTS;<a name="line.272"></a>
+<span class="sourceLineNo">273</span>            }<a name="line.273"></a>
+<span class="sourceLineNo">274</span>            assertTrue("Scanner returned additional key/value: " + kv + ", "<a name="line.274"></a>
+<span class="sourceLineNo">275</span>                + queryInfo + deleteInfo + ";", kvPos &lt; kvs.size());<a name="line.275"></a>
+<span class="sourceLineNo">276</span>            assertTrue("Scanner returned wrong key/value; " + queryInfo + deleteInfo + ";",<a name="line.276"></a>
+<span class="sourceLineNo">277</span>              PrivateCellUtil.equalsIgnoreMvccVersion(kvs.get(kvPos), (kv)));<a name="line.277"></a>
+<span class="sourceLineNo">278</span>            ++kvPos;<a name="line.278"></a>
+<span class="sourceLineNo">279</span>            ++numResults;<a name="line.279"></a>
+<span class="sourceLineNo">280</span>          }<a name="line.280"></a>
+<span class="sourceLineNo">281</span>          results.clear();<a name="line.281"></a>
+<span class="sourceLineNo">282</span>        }<a name="line.282"></a>
+<span class="sourceLineNo">283</span>        for (; kvPos &lt; kvs.size(); ++kvPos) {<a name="line.283"></a>
+<span class="sourceLineNo">284</span>          KeyValue remainingKV = kvs.get(kvPos);<a name="line.284"></a>
+<span class="sourceLineNo">285</span>          assertFalse("Matching column not returned by scanner: "<a name="line.285"></a>
+<span class="sourceLineNo">286</span>              + remainingKV + ", " + queryInfo + ", results returned: "<a name="line.286"></a>
+<span class="sourceLineNo">287</span>              + numResults, matchesQuery(remainingKV, qualSet, maxVersions,<a name="line.287"></a>
+<span class="sourceLineNo">288</span>              lastDelTimeMap));<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>    }<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    assertTrue("This test is supposed to delete at least some row/column " +<a name="line.292"></a>
+<span class="sourceLineNo">293</span>        "pairs", lastDelTimeMap.size() &gt; 0);<a name="line.293"></a>
+<span class="sourceLineNo">294</span>    LOG.info("Number of row/col pairs deleted at least once: " +<a name="line.294"></a>
+<span class="sourceLineNo">295</span>       lastDelTimeMap.size());<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    HBaseTestingUtility.closeRegionAndWAL(region);<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>  private static String getRowQualStr(Cell kv) {<a name="line.299"></a>
+<span class="sourceLineNo">300</span>    String rowStr = Bytes.toString(CellUtil.cloneRow(kv));<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    String qualStr = Bytes.toString(CellUtil.cloneQualifier(kv));<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    return rowStr + "_" + qualStr;<a name="line.302"></a>
+<span class="sourceLineNo">303</span>  }<a name="line.303"></a>
+<span class="sourceLineNo">304</span><a name="line.304"></a>
+<span class="sourceLineNo">305</span>  private static boolean matchesQuery(KeyValue kv, Set&lt;String&gt; qualSet,<a name="line.305"></a>
+<span class="sourceLineNo">306</span>      int maxVersions, Map&lt;String, Long&gt; lastDelTimeMap) {<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    Long lastDelTS = lastDelTimeMap.get(getRowQualStr(kv));<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    long ts = kv.getTimestamp();<a name="line.308"></a>
+<span class="sourceLineNo">309</span>    return qualSet.contains(qualStr(kv))<a name="line.309"></a>
+<span class="sourceLineNo">310</span>        &amp;&amp; ts &gt;= TIMESTAMPS[TIMESTAMPS.length - maxVersions]<a name="line.310"></a>
+<span class="sourceLineNo">311</span>        &amp;&amp; (lastDelTS == null || ts &gt; lastDelTS);<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>  private static String qualStr(KeyValue kv) {<a name="line.314"></a>
+<span class="sourceLineNo">315</span>    return Bytes.toString(kv.getQualifierArray(), kv.getQualifierOffset(),<a name="line.315"></a>
+<span class="sourceLineNo">316</span>        kv.getQualifierLength());<a name="line.316"></a>
+<span class="sourceLineNo">317</span>  }<a name="line.317"></a>
+<span class="sourceLineNo">318</span><a name="line.318"></a>
+<span class="sourceLineNo">319</span>  private static String rowQualKey(String row, String qual) {<a name="line.319"></a>
+<span class="sourceLineNo">320</span>    return row + "_" + qual;<a name="line.320"></a>
+<span class="sourceLineNo">321</span>  }<a name="line.321"></a>
+<span class="sourceLineNo">322</span><a name="line.322"></a>
+<span class="sourceLineNo">323</span>  static String createValue(String row, String qual, long ts) {<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    return "value_for_" + row + "_" + qual + "_" + ts;<a name="line.324"></a>
+<span class="sourceLineNo">325</span>  }<a name="line.325"></a>
+<span class="sourceLineNo">326</span><a name="line.326"></a>
+<span class="sourceLineNo">327</span>  private static List&lt;String&gt; sequentialStrings(String prefix, int n) {<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    List&lt;String&gt; lst = new ArrayList&lt;&gt;();<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    for (int i = 0; i &lt; n; ++i) {<a name="line.329"></a>
+<span class="sourceLineNo">330</span>      StringBuilder sb = new StringBuilder();<a name="line.330"></a>
+<span class="sourceLineNo">331</span>      sb.append(prefix + i);<a name="line.331"></a>
+<span class="sourceLineNo">332</span><a name="line.332"></a>
+<span class="sourceLineNo">333</span>      // Make column length depend on i.<a name="line.333"></a>
+<span class="sourceLineNo">334</span>      int iBitShifted = i;<a name="line.334"></a>
+<span class="sourceLineNo">335</span>      while (iBitShifted != 0) {<a name="line.335"></a>
+<span class="sourceLineNo">336</span>        sb.append((iBitShifted &amp; 1) == 0 ? 'a' : 'b');<a name="line.336"></a>
+<span class="sourceLineNo">337</span>        iBitShifted &gt;&gt;= 1;<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>    return lst;<a name="line.340"></a>
-<span class="sourceLineNo">341</span>  }<a name="line.341"></a>
+<span class="sourceLineNo">340</span>      lst.add(sb.toString());<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>}<a name="line.344"></a>
+<span class="sourceLineNo">343</span>    return lst;<a name="line.343"></a>
+<span class="sourceLineNo">344</span>  }<a name="line.344"></a>
 <span class="sourceLineNo">345</span><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>
+<span class="sourceLineNo">348</span><a name="line.348"></a>
 
 
 


[17/43] hbase-site git commit: Published site at 7ab77518a2569e2416a50020393aa386e7734501.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.Builder.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.Builder.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.Builder.html
index f335eb6..e421e5f 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.Builder.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.Builder.html
@@ -25,467 +25,488 @@
 <span class="sourceLineNo">017</span> */<a name="line.17"></a>
 <span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.regionserver;<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.regionserver.HStoreFile.BLOOM_FILTER_TYPE_KEY;<a name="line.20"></a>
-<span class="sourceLineNo">021</span>import static org.apache.hadoop.hbase.regionserver.HStoreFile.DELETE_FAMILY_COUNT;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import static org.apache.hadoop.hbase.regionserver.HStoreFile.EARLIEST_PUT_TS;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import static org.apache.hadoop.hbase.regionserver.HStoreFile.MAJOR_COMPACTION_KEY;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import static org.apache.hadoop.hbase.regionserver.HStoreFile.MAX_SEQ_ID_KEY;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import static org.apache.hadoop.hbase.regionserver.HStoreFile.MOB_CELLS_COUNT;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import static org.apache.hadoop.hbase.regionserver.HStoreFile.TIMERANGE_KEY;<a name="line.26"></a>
-<span class="sourceLineNo">027</span><a name="line.27"></a>
-<span class="sourceLineNo">028</span>import java.io.IOException;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import java.net.InetSocketAddress;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import java.util.UUID;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import java.util.regex.Pattern;<a name="line.31"></a>
-<span class="sourceLineNo">032</span><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.fs.FileSystem;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hadoop.fs.Path;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.Cell;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.HConstants;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.PrivateCellUtil;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.io.hfile.CacheConfig;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.io.hfile.HFileContext;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.util.BloomContext;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.util.BloomFilterFactory;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.util.BloomFilterWriter;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.util.RowBloomContext;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.util.RowColBloomContext;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.slf4j.Logger;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.slf4j.LoggerFactory;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hbase.thirdparty.com.google.common.base.Preconditions;<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> * A StoreFile writer.  Use this to read/write HBase Store Files. It is package<a name="line.58"></a>
-<span class="sourceLineNo">059</span> * local because it is an implementation detail of the HBase regionserver.<a name="line.59"></a>
-<span class="sourceLineNo">060</span> */<a name="line.60"></a>
-<span class="sourceLineNo">061</span>@InterfaceAudience.Private<a name="line.61"></a>
-<span class="sourceLineNo">062</span>public class StoreFileWriter implements CellSink, ShipperListener {<a name="line.62"></a>
-<span class="sourceLineNo">063</span>  private static final Logger LOG = LoggerFactory.getLogger(StoreFileWriter.class.getName());<a name="line.63"></a>
-<span class="sourceLineNo">064</span>  private static final Pattern dash = Pattern.compile("-");<a name="line.64"></a>
-<span class="sourceLineNo">065</span>  private final BloomFilterWriter generalBloomFilterWriter;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>  private final BloomFilterWriter deleteFamilyBloomFilterWriter;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>  private final BloomType bloomType;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>  private long earliestPutTs = HConstants.LATEST_TIMESTAMP;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>  private long deleteFamilyCnt = 0;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>  private BloomContext bloomContext = null;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>  private BloomContext deleteFamilyBloomContext = null;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>  private final TimeRangeTracker timeRangeTracker;<a name="line.72"></a>
-<span class="sourceLineNo">073</span><a name="line.73"></a>
-<span class="sourceLineNo">074</span>  protected HFile.Writer writer;<a name="line.74"></a>
-<span class="sourceLineNo">075</span><a name="line.75"></a>
-<span class="sourceLineNo">076</span>    /**<a name="line.76"></a>
-<span class="sourceLineNo">077</span>     * Creates an HFile.Writer that also write helpful meta data.<a name="line.77"></a>
-<span class="sourceLineNo">078</span>     * @param fs file system to write to<a name="line.78"></a>
-<span class="sourceLineNo">079</span>     * @param path file name to create<a name="line.79"></a>
-<span class="sourceLineNo">080</span>     * @param conf user configuration<a name="line.80"></a>
-<span class="sourceLineNo">081</span>     * @param comparator key comparator<a name="line.81"></a>
-<span class="sourceLineNo">082</span>     * @param bloomType bloom filter setting<a name="line.82"></a>
-<span class="sourceLineNo">083</span>     * @param maxKeys the expected maximum number of keys to be added. Was used<a name="line.83"></a>
-<span class="sourceLineNo">084</span>     *        for Bloom filter size in {@link HFile} format version 1.<a name="line.84"></a>
-<span class="sourceLineNo">085</span>     * @param favoredNodes<a name="line.85"></a>
-<span class="sourceLineNo">086</span>     * @param fileContext - The HFile context<a name="line.86"></a>
-<span class="sourceLineNo">087</span>     * @param shouldDropCacheBehind Drop pages written to page cache after writing the store file.<a name="line.87"></a>
-<span class="sourceLineNo">088</span>     * @throws IOException problem writing to FS<a name="line.88"></a>
-<span class="sourceLineNo">089</span>     */<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    private StoreFileWriter(FileSystem fs, Path path,<a name="line.90"></a>
-<span class="sourceLineNo">091</span>        final Configuration conf,<a name="line.91"></a>
-<span class="sourceLineNo">092</span>        CacheConfig cacheConf,<a name="line.92"></a>
-<span class="sourceLineNo">093</span>        final CellComparator comparator, BloomType bloomType, long maxKeys,<a name="line.93"></a>
-<span class="sourceLineNo">094</span>        InetSocketAddress[] favoredNodes, HFileContext fileContext,<a name="line.94"></a>
-<span class="sourceLineNo">095</span>        boolean shouldDropCacheBehind)<a name="line.95"></a>
-<span class="sourceLineNo">096</span>            throws IOException {<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    this.timeRangeTracker = TimeRangeTracker.create(TimeRangeTracker.Type.NON_SYNC);<a name="line.97"></a>
-<span class="sourceLineNo">098</span>    // TODO : Change all writers to be specifically created for compaction context<a name="line.98"></a>
-<span class="sourceLineNo">099</span>    writer = HFile.getWriterFactory(conf, cacheConf)<a name="line.99"></a>
-<span class="sourceLineNo">100</span>        .withPath(fs, path)<a name="line.100"></a>
-<span class="sourceLineNo">101</span>        .withComparator(comparator)<a name="line.101"></a>
-<span class="sourceLineNo">102</span>        .withFavoredNodes(favoredNodes)<a name="line.102"></a>
-<span class="sourceLineNo">103</span>        .withFileContext(fileContext)<a name="line.103"></a>
-<span class="sourceLineNo">104</span>        .withShouldDropCacheBehind(shouldDropCacheBehind)<a name="line.104"></a>
-<span class="sourceLineNo">105</span>        .create();<a name="line.105"></a>
-<span class="sourceLineNo">106</span><a name="line.106"></a>
-<span class="sourceLineNo">107</span>    generalBloomFilterWriter = BloomFilterFactory.createGeneralBloomAtWrite(<a name="line.107"></a>
-<span class="sourceLineNo">108</span>        conf, cacheConf, bloomType,<a name="line.108"></a>
-<span class="sourceLineNo">109</span>        (int) Math.min(maxKeys, Integer.MAX_VALUE), writer);<a name="line.109"></a>
-<span class="sourceLineNo">110</span><a name="line.110"></a>
-<span class="sourceLineNo">111</span>    if (generalBloomFilterWriter != null) {<a name="line.111"></a>
-<span class="sourceLineNo">112</span>      this.bloomType = bloomType;<a name="line.112"></a>
-<span class="sourceLineNo">113</span>      if (LOG.isTraceEnabled()) {<a name="line.113"></a>
-<span class="sourceLineNo">114</span>        LOG.trace("Bloom filter type for " + path + ": " + this.bloomType + ", " +<a name="line.114"></a>
-<span class="sourceLineNo">115</span>            generalBloomFilterWriter.getClass().getSimpleName());<a name="line.115"></a>
-<span class="sourceLineNo">116</span>      }<a name="line.116"></a>
-<span class="sourceLineNo">117</span>      // init bloom context<a name="line.117"></a>
-<span class="sourceLineNo">118</span>      switch (bloomType) {<a name="line.118"></a>
-<span class="sourceLineNo">119</span>      case ROW:<a name="line.119"></a>
-<span class="sourceLineNo">120</span>        bloomContext = new RowBloomContext(generalBloomFilterWriter, comparator);<a name="line.120"></a>
-<span class="sourceLineNo">121</span>        break;<a name="line.121"></a>
-<span class="sourceLineNo">122</span>      case ROWCOL:<a name="line.122"></a>
-<span class="sourceLineNo">123</span>        bloomContext = new RowColBloomContext(generalBloomFilterWriter, comparator);<a name="line.123"></a>
-<span class="sourceLineNo">124</span>        break;<a name="line.124"></a>
-<span class="sourceLineNo">125</span>      default:<a name="line.125"></a>
-<span class="sourceLineNo">126</span>        throw new IOException(<a name="line.126"></a>
-<span class="sourceLineNo">127</span>            "Invalid Bloom filter type: " + bloomType + " (ROW or ROWCOL expected)");<a name="line.127"></a>
-<span class="sourceLineNo">128</span>      }<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    } else {<a name="line.129"></a>
-<span class="sourceLineNo">130</span>      // Not using Bloom filters.<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      this.bloomType = BloomType.NONE;<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    }<a name="line.132"></a>
-<span class="sourceLineNo">133</span><a name="line.133"></a>
-<span class="sourceLineNo">134</span>    // initialize delete family Bloom filter when there is NO RowCol Bloom<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    // filter<a name="line.135"></a>
-<span class="sourceLineNo">136</span>    if (this.bloomType != BloomType.ROWCOL) {<a name="line.136"></a>
-<span class="sourceLineNo">137</span>      this.deleteFamilyBloomFilterWriter = BloomFilterFactory<a name="line.137"></a>
-<span class="sourceLineNo">138</span>          .createDeleteBloomAtWrite(conf, cacheConf,<a name="line.138"></a>
-<span class="sourceLineNo">139</span>              (int) Math.min(maxKeys, Integer.MAX_VALUE), writer);<a name="line.139"></a>
-<span class="sourceLineNo">140</span>      deleteFamilyBloomContext = new RowBloomContext(deleteFamilyBloomFilterWriter, comparator);<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    } else {<a name="line.141"></a>
-<span class="sourceLineNo">142</span>      deleteFamilyBloomFilterWriter = null;<a name="line.142"></a>
-<span class="sourceLineNo">143</span>    }<a name="line.143"></a>
-<span class="sourceLineNo">144</span>    if (deleteFamilyBloomFilterWriter != null &amp;&amp; LOG.isTraceEnabled()) {<a name="line.144"></a>
-<span class="sourceLineNo">145</span>      LOG.trace("Delete Family Bloom filter type for " + path + ": " +<a name="line.145"></a>
-<span class="sourceLineNo">146</span>          deleteFamilyBloomFilterWriter.getClass().getSimpleName());<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    }<a name="line.147"></a>
-<span class="sourceLineNo">148</span>  }<a name="line.148"></a>
+<span class="sourceLineNo">020</span>import static org.apache.hadoop.hbase.regionserver.HStoreFile.BLOOM_FILTER_PARAM_KEY;<a name="line.20"></a>
+<span class="sourceLineNo">021</span>import static org.apache.hadoop.hbase.regionserver.HStoreFile.BLOOM_FILTER_TYPE_KEY;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import static org.apache.hadoop.hbase.regionserver.HStoreFile.DELETE_FAMILY_COUNT;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import static org.apache.hadoop.hbase.regionserver.HStoreFile.EARLIEST_PUT_TS;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import static org.apache.hadoop.hbase.regionserver.HStoreFile.MAJOR_COMPACTION_KEY;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import static org.apache.hadoop.hbase.regionserver.HStoreFile.MAX_SEQ_ID_KEY;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import static org.apache.hadoop.hbase.regionserver.HStoreFile.MOB_CELLS_COUNT;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import static org.apache.hadoop.hbase.regionserver.HStoreFile.TIMERANGE_KEY;<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.net.InetSocketAddress;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import java.util.UUID;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import java.util.regex.Pattern;<a name="line.32"></a>
+<span class="sourceLineNo">033</span><a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.conf.Configuration;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.fs.FileSystem;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.fs.Path;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.Cell;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.HConstants;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.PrivateCellUtil;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.io.hfile.CacheConfig;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.io.hfile.HFileContext;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.util.BloomContext;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.util.BloomFilterFactory;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.util.BloomFilterUtil;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.util.BloomFilterWriter;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.util.RowBloomContext;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.util.RowColBloomContext;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.util.RowPrefixDelimiterBloomContext;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.util.RowPrefixFixedLengthBloomContext;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.slf4j.Logger;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.slf4j.LoggerFactory;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hbase.thirdparty.com.google.common.base.Preconditions;<a name="line.59"></a>
+<span class="sourceLineNo">060</span><a name="line.60"></a>
+<span class="sourceLineNo">061</span>/**<a name="line.61"></a>
+<span class="sourceLineNo">062</span> * A StoreFile writer.  Use this to read/write HBase Store Files. It is package<a name="line.62"></a>
+<span class="sourceLineNo">063</span> * local because it is an implementation detail of the HBase regionserver.<a name="line.63"></a>
+<span class="sourceLineNo">064</span> */<a name="line.64"></a>
+<span class="sourceLineNo">065</span>@InterfaceAudience.Private<a name="line.65"></a>
+<span class="sourceLineNo">066</span>public class StoreFileWriter implements CellSink, ShipperListener {<a name="line.66"></a>
+<span class="sourceLineNo">067</span>  private static final Logger LOG = LoggerFactory.getLogger(StoreFileWriter.class.getName());<a name="line.67"></a>
+<span class="sourceLineNo">068</span>  private static final Pattern dash = Pattern.compile("-");<a name="line.68"></a>
+<span class="sourceLineNo">069</span>  private final BloomFilterWriter generalBloomFilterWriter;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>  private final BloomFilterWriter deleteFamilyBloomFilterWriter;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>  private final BloomType bloomType;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>  private byte[] bloomParam = null;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>  private long earliestPutTs = HConstants.LATEST_TIMESTAMP;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>  private long deleteFamilyCnt = 0;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>  private BloomContext bloomContext = null;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>  private BloomContext deleteFamilyBloomContext = null;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>  private final TimeRangeTracker timeRangeTracker;<a name="line.77"></a>
+<span class="sourceLineNo">078</span><a name="line.78"></a>
+<span class="sourceLineNo">079</span>  protected HFile.Writer writer;<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>     * Creates an HFile.Writer that also write helpful meta data.<a name="line.82"></a>
+<span class="sourceLineNo">083</span>     * @param fs file system to write to<a name="line.83"></a>
+<span class="sourceLineNo">084</span>     * @param path file name to create<a name="line.84"></a>
+<span class="sourceLineNo">085</span>     * @param conf user configuration<a name="line.85"></a>
+<span class="sourceLineNo">086</span>     * @param comparator key comparator<a name="line.86"></a>
+<span class="sourceLineNo">087</span>     * @param bloomType bloom filter setting<a name="line.87"></a>
+<span class="sourceLineNo">088</span>     * @param maxKeys the expected maximum number of keys to be added. Was used<a name="line.88"></a>
+<span class="sourceLineNo">089</span>     *        for Bloom filter size in {@link HFile} format version 1.<a name="line.89"></a>
+<span class="sourceLineNo">090</span>     * @param favoredNodes<a name="line.90"></a>
+<span class="sourceLineNo">091</span>     * @param fileContext - The HFile context<a name="line.91"></a>
+<span class="sourceLineNo">092</span>     * @param shouldDropCacheBehind Drop pages written to page cache after writing the store file.<a name="line.92"></a>
+<span class="sourceLineNo">093</span>     * @throws IOException problem writing to FS<a name="line.93"></a>
+<span class="sourceLineNo">094</span>     */<a name="line.94"></a>
+<span class="sourceLineNo">095</span>    private StoreFileWriter(FileSystem fs, Path path,<a name="line.95"></a>
+<span class="sourceLineNo">096</span>        final Configuration conf,<a name="line.96"></a>
+<span class="sourceLineNo">097</span>        CacheConfig cacheConf,<a name="line.97"></a>
+<span class="sourceLineNo">098</span>        final CellComparator comparator, BloomType bloomType, long maxKeys,<a name="line.98"></a>
+<span class="sourceLineNo">099</span>        InetSocketAddress[] favoredNodes, HFileContext fileContext,<a name="line.99"></a>
+<span class="sourceLineNo">100</span>        boolean shouldDropCacheBehind)<a name="line.100"></a>
+<span class="sourceLineNo">101</span>            throws IOException {<a name="line.101"></a>
+<span class="sourceLineNo">102</span>    this.timeRangeTracker = TimeRangeTracker.create(TimeRangeTracker.Type.NON_SYNC);<a name="line.102"></a>
+<span class="sourceLineNo">103</span>    // TODO : Change all writers to be specifically created for compaction context<a name="line.103"></a>
+<span class="sourceLineNo">104</span>    writer = HFile.getWriterFactory(conf, cacheConf)<a name="line.104"></a>
+<span class="sourceLineNo">105</span>        .withPath(fs, path)<a name="line.105"></a>
+<span class="sourceLineNo">106</span>        .withComparator(comparator)<a name="line.106"></a>
+<span class="sourceLineNo">107</span>        .withFavoredNodes(favoredNodes)<a name="line.107"></a>
+<span class="sourceLineNo">108</span>        .withFileContext(fileContext)<a name="line.108"></a>
+<span class="sourceLineNo">109</span>        .withShouldDropCacheBehind(shouldDropCacheBehind)<a name="line.109"></a>
+<span class="sourceLineNo">110</span>        .create();<a name="line.110"></a>
+<span class="sourceLineNo">111</span><a name="line.111"></a>
+<span class="sourceLineNo">112</span>    generalBloomFilterWriter = BloomFilterFactory.createGeneralBloomAtWrite(<a name="line.112"></a>
+<span class="sourceLineNo">113</span>        conf, cacheConf, bloomType,<a name="line.113"></a>
+<span class="sourceLineNo">114</span>        (int) Math.min(maxKeys, Integer.MAX_VALUE), writer);<a name="line.114"></a>
+<span class="sourceLineNo">115</span><a name="line.115"></a>
+<span class="sourceLineNo">116</span>    if (generalBloomFilterWriter != null) {<a name="line.116"></a>
+<span class="sourceLineNo">117</span>      this.bloomType = bloomType;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>      this.bloomParam = BloomFilterUtil.getBloomFilterParam(bloomType, conf);<a name="line.118"></a>
+<span class="sourceLineNo">119</span>      if (LOG.isTraceEnabled()) {<a name="line.119"></a>
+<span class="sourceLineNo">120</span>        LOG.trace("Bloom filter type for " + path + ": " + this.bloomType + ", param: "<a name="line.120"></a>
+<span class="sourceLineNo">121</span>            + (bloomType == BloomType.ROWPREFIX_FIXED_LENGTH?<a name="line.121"></a>
+<span class="sourceLineNo">122</span>               Bytes.toInt(bloomParam):Bytes.toStringBinary(bloomParam))<a name="line.122"></a>
+<span class="sourceLineNo">123</span>            + ", " + generalBloomFilterWriter.getClass().getSimpleName());<a name="line.123"></a>
+<span class="sourceLineNo">124</span>      }<a name="line.124"></a>
+<span class="sourceLineNo">125</span>      // init bloom context<a name="line.125"></a>
+<span class="sourceLineNo">126</span>      switch (bloomType) {<a name="line.126"></a>
+<span class="sourceLineNo">127</span>        case ROW:<a name="line.127"></a>
+<span class="sourceLineNo">128</span>          bloomContext = new RowBloomContext(generalBloomFilterWriter, comparator);<a name="line.128"></a>
+<span class="sourceLineNo">129</span>          break;<a name="line.129"></a>
+<span class="sourceLineNo">130</span>        case ROWCOL:<a name="line.130"></a>
+<span class="sourceLineNo">131</span>          bloomContext = new RowColBloomContext(generalBloomFilterWriter, comparator);<a name="line.131"></a>
+<span class="sourceLineNo">132</span>          break;<a name="line.132"></a>
+<span class="sourceLineNo">133</span>        case ROWPREFIX_FIXED_LENGTH:<a name="line.133"></a>
+<span class="sourceLineNo">134</span>          bloomContext = new RowPrefixFixedLengthBloomContext(generalBloomFilterWriter, comparator,<a name="line.134"></a>
+<span class="sourceLineNo">135</span>              Bytes.toInt(bloomParam));<a name="line.135"></a>
+<span class="sourceLineNo">136</span>          break;<a name="line.136"></a>
+<span class="sourceLineNo">137</span>        case ROWPREFIX_DELIMITED:<a name="line.137"></a>
+<span class="sourceLineNo">138</span>          bloomContext = new RowPrefixDelimiterBloomContext(generalBloomFilterWriter, comparator,<a name="line.138"></a>
+<span class="sourceLineNo">139</span>              bloomParam);<a name="line.139"></a>
+<span class="sourceLineNo">140</span>          break;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>        default:<a name="line.141"></a>
+<span class="sourceLineNo">142</span>          throw new IOException("Invalid Bloom filter type: "<a name="line.142"></a>
+<span class="sourceLineNo">143</span>              + bloomType + " (ROW or ROWCOL or ROWPREFIX or ROWPREFIX_DELIMITED expected)");<a name="line.143"></a>
+<span class="sourceLineNo">144</span>      }<a name="line.144"></a>
+<span class="sourceLineNo">145</span>    } else {<a name="line.145"></a>
+<span class="sourceLineNo">146</span>      // Not using Bloom filters.<a name="line.146"></a>
+<span class="sourceLineNo">147</span>      this.bloomType = BloomType.NONE;<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    }<a name="line.148"></a>
 <span class="sourceLineNo">149</span><a name="line.149"></a>
-<span class="sourceLineNo">150</span>  /**<a name="line.150"></a>
-<span class="sourceLineNo">151</span>   * Writes meta data.<a name="line.151"></a>
-<span class="sourceLineNo">152</span>   * Call before {@link #close()} since its written as meta data to this file.<a name="line.152"></a>
-<span class="sourceLineNo">153</span>   * @param maxSequenceId Maximum sequence id.<a name="line.153"></a>
-<span class="sourceLineNo">154</span>   * @param majorCompaction True if this file is product of a major compaction<a name="line.154"></a>
-<span class="sourceLineNo">155</span>   * @throws IOException problem writing to FS<a name="line.155"></a>
-<span class="sourceLineNo">156</span>   */<a name="line.156"></a>
-<span class="sourceLineNo">157</span>  public void appendMetadata(final long maxSequenceId, final boolean majorCompaction)<a name="line.157"></a>
-<span class="sourceLineNo">158</span>      throws IOException {<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    writer.appendFileInfo(MAX_SEQ_ID_KEY, Bytes.toBytes(maxSequenceId));<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    writer.appendFileInfo(MAJOR_COMPACTION_KEY, Bytes.toBytes(majorCompaction));<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    appendTrackedTimestampsToMetadata();<a name="line.161"></a>
-<span class="sourceLineNo">162</span>  }<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>   * Writes meta data.<a name="line.165"></a>
-<span class="sourceLineNo">166</span>   * Call before {@link #close()} since its written as meta data to this file.<a name="line.166"></a>
-<span class="sourceLineNo">167</span>   * @param maxSequenceId Maximum sequence id.<a name="line.167"></a>
-<span class="sourceLineNo">168</span>   * @param majorCompaction True if this file is product of a major compaction<a name="line.168"></a>
-<span class="sourceLineNo">169</span>   * @param mobCellsCount The number of mob cells.<a name="line.169"></a>
-<span class="sourceLineNo">170</span>   * @throws IOException problem writing to FS<a name="line.170"></a>
-<span class="sourceLineNo">171</span>   */<a name="line.171"></a>
-<span class="sourceLineNo">172</span>  public void appendMetadata(final long maxSequenceId, final boolean majorCompaction,<a name="line.172"></a>
-<span class="sourceLineNo">173</span>      final long mobCellsCount) throws IOException {<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    writer.appendFileInfo(MAX_SEQ_ID_KEY, Bytes.toBytes(maxSequenceId));<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    writer.appendFileInfo(MAJOR_COMPACTION_KEY, Bytes.toBytes(majorCompaction));<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    writer.appendFileInfo(MOB_CELLS_COUNT, Bytes.toBytes(mobCellsCount));<a name="line.176"></a>
+<span class="sourceLineNo">150</span>    // initialize delete family Bloom filter when there is NO RowCol Bloom<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    // filter<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    if (this.bloomType != BloomType.ROWCOL) {<a name="line.152"></a>
+<span class="sourceLineNo">153</span>      this.deleteFamilyBloomFilterWriter = BloomFilterFactory<a name="line.153"></a>
+<span class="sourceLineNo">154</span>          .createDeleteBloomAtWrite(conf, cacheConf,<a name="line.154"></a>
+<span class="sourceLineNo">155</span>              (int) Math.min(maxKeys, Integer.MAX_VALUE), writer);<a name="line.155"></a>
+<span class="sourceLineNo">156</span>      deleteFamilyBloomContext = new RowBloomContext(deleteFamilyBloomFilterWriter, comparator);<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    } else {<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      deleteFamilyBloomFilterWriter = null;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    }<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    if (deleteFamilyBloomFilterWriter != null &amp;&amp; LOG.isTraceEnabled()) {<a name="line.160"></a>
+<span class="sourceLineNo">161</span>      LOG.trace("Delete Family Bloom filter type for " + path + ": " +<a name="line.161"></a>
+<span class="sourceLineNo">162</span>          deleteFamilyBloomFilterWriter.getClass().getSimpleName());<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><a name="line.165"></a>
+<span class="sourceLineNo">166</span>  /**<a name="line.166"></a>
+<span class="sourceLineNo">167</span>   * Writes meta data.<a name="line.167"></a>
+<span class="sourceLineNo">168</span>   * Call before {@link #close()} since its written as meta data to this file.<a name="line.168"></a>
+<span class="sourceLineNo">169</span>   * @param maxSequenceId Maximum sequence id.<a name="line.169"></a>
+<span class="sourceLineNo">170</span>   * @param majorCompaction True if this file is product of a major compaction<a name="line.170"></a>
+<span class="sourceLineNo">171</span>   * @throws IOException problem writing to FS<a name="line.171"></a>
+<span class="sourceLineNo">172</span>   */<a name="line.172"></a>
+<span class="sourceLineNo">173</span>  public void appendMetadata(final long maxSequenceId, final boolean majorCompaction)<a name="line.173"></a>
+<span class="sourceLineNo">174</span>      throws IOException {<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    writer.appendFileInfo(MAX_SEQ_ID_KEY, Bytes.toBytes(maxSequenceId));<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    writer.appendFileInfo(MAJOR_COMPACTION_KEY, Bytes.toBytes(majorCompaction));<a name="line.176"></a>
 <span class="sourceLineNo">177</span>    appendTrackedTimestampsToMetadata();<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>  /**<a name="line.180"></a>
-<span class="sourceLineNo">181</span>   * Add TimestampRange and earliest put timestamp to Metadata<a name="line.181"></a>
-<span class="sourceLineNo">182</span>   */<a name="line.182"></a>
-<span class="sourceLineNo">183</span>  public void appendTrackedTimestampsToMetadata() throws IOException {<a name="line.183"></a>
-<span class="sourceLineNo">184</span>    // TODO: The StoreFileReader always converts the byte[] to TimeRange<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    // via TimeRangeTracker, so we should write the serialization data of TimeRange directly.<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    appendFileInfo(TIMERANGE_KEY, TimeRangeTracker.toByteArray(timeRangeTracker));<a name="line.186"></a>
-<span class="sourceLineNo">187</span>    appendFileInfo(EARLIEST_PUT_TS, Bytes.toBytes(earliestPutTs));<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>  /**<a name="line.190"></a>
-<span class="sourceLineNo">191</span>   * Record the earlest Put timestamp.<a name="line.191"></a>
-<span class="sourceLineNo">192</span>   *<a name="line.192"></a>
-<span class="sourceLineNo">193</span>   * If the timeRangeTracker is not set,<a name="line.193"></a>
-<span class="sourceLineNo">194</span>   * update TimeRangeTracker to include the timestamp of this key<a name="line.194"></a>
-<span class="sourceLineNo">195</span>   */<a name="line.195"></a>
-<span class="sourceLineNo">196</span>  public void trackTimestamps(final Cell cell) {<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    if (KeyValue.Type.Put.getCode() == cell.getTypeByte()) {<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      earliestPutTs = Math.min(earliestPutTs, cell.getTimestamp());<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    }<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    timeRangeTracker.includeTimestamp(cell);<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>  private void appendGeneralBloomfilter(final Cell cell) throws IOException {<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    if (this.generalBloomFilterWriter != null) {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      /*<a name="line.205"></a>
-<span class="sourceLineNo">206</span>       * http://2.bp.blogspot.com/_Cib_A77V54U/StZMrzaKufI/AAAAAAAAADo/ZhK7bGoJdMQ/s400/KeyValue.png<a name="line.206"></a>
-<span class="sourceLineNo">207</span>       * Key = RowLen + Row + FamilyLen + Column [Family + Qualifier] + Timestamp<a name="line.207"></a>
-<span class="sourceLineNo">208</span>       *<a name="line.208"></a>
-<span class="sourceLineNo">209</span>       * 2 Types of Filtering:<a name="line.209"></a>
-<span class="sourceLineNo">210</span>       *  1. Row = Row<a name="line.210"></a>
-<span class="sourceLineNo">211</span>       *  2. RowCol = Row + Qualifier<a name="line.211"></a>
-<span class="sourceLineNo">212</span>       */<a name="line.212"></a>
-<span class="sourceLineNo">213</span>      bloomContext.writeBloom(cell);<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    }<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>  private void appendDeleteFamilyBloomFilter(final Cell cell)<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      throws IOException {<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    if (!PrivateCellUtil.isDeleteFamily(cell) &amp;&amp; !PrivateCellUtil.isDeleteFamilyVersion(cell)) {<a name="line.219"></a>
-<span class="sourceLineNo">220</span>      return;<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    }<a name="line.221"></a>
-<span class="sourceLineNo">222</span><a name="line.222"></a>
-<span class="sourceLineNo">223</span>    // increase the number of delete family in the store file<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    deleteFamilyCnt++;<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    if (this.deleteFamilyBloomFilterWriter != null) {<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      deleteFamilyBloomContext.writeBloom(cell);<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    }<a name="line.227"></a>
-<span class="sourceLineNo">228</span>  }<a name="line.228"></a>
-<span class="sourceLineNo">229</span><a name="line.229"></a>
-<span class="sourceLineNo">230</span>  @Override<a name="line.230"></a>
-<span class="sourceLineNo">231</span>  public void append(final Cell cell) throws IOException {<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    appendGeneralBloomfilter(cell);<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    appendDeleteFamilyBloomFilter(cell);<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    writer.append(cell);<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    trackTimestamps(cell);<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>  @Override<a name="line.238"></a>
-<span class="sourceLineNo">239</span>  public void beforeShipped() throws IOException {<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    // For now these writer will always be of type ShipperListener true.<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    // TODO : Change all writers to be specifically created for compaction context<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    writer.beforeShipped();<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    if (generalBloomFilterWriter != null) {<a name="line.243"></a>
-<span class="sourceLineNo">244</span>      generalBloomFilterWriter.beforeShipped();<a name="line.244"></a>
+<span class="sourceLineNo">181</span>   * Writes meta data.<a name="line.181"></a>
+<span class="sourceLineNo">182</span>   * Call before {@link #close()} since its written as meta data to this file.<a name="line.182"></a>
+<span class="sourceLineNo">183</span>   * @param maxSequenceId Maximum sequence id.<a name="line.183"></a>
+<span class="sourceLineNo">184</span>   * @param majorCompaction True if this file is product of a major compaction<a name="line.184"></a>
+<span class="sourceLineNo">185</span>   * @param mobCellsCount The number of mob cells.<a name="line.185"></a>
+<span class="sourceLineNo">186</span>   * @throws IOException problem writing to FS<a name="line.186"></a>
+<span class="sourceLineNo">187</span>   */<a name="line.187"></a>
+<span class="sourceLineNo">188</span>  public void appendMetadata(final long maxSequenceId, final boolean majorCompaction,<a name="line.188"></a>
+<span class="sourceLineNo">189</span>      final long mobCellsCount) throws IOException {<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    writer.appendFileInfo(MAX_SEQ_ID_KEY, Bytes.toBytes(maxSequenceId));<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    writer.appendFileInfo(MAJOR_COMPACTION_KEY, Bytes.toBytes(majorCompaction));<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    writer.appendFileInfo(MOB_CELLS_COUNT, Bytes.toBytes(mobCellsCount));<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    appendTrackedTimestampsToMetadata();<a name="line.193"></a>
+<span class="sourceLineNo">194</span>  }<a name="line.194"></a>
+<span class="sourceLineNo">195</span><a name="line.195"></a>
+<span class="sourceLineNo">196</span>  /**<a name="line.196"></a>
+<span class="sourceLineNo">197</span>   * Add TimestampRange and earliest put timestamp to Metadata<a name="line.197"></a>
+<span class="sourceLineNo">198</span>   */<a name="line.198"></a>
+<span class="sourceLineNo">199</span>  public void appendTrackedTimestampsToMetadata() throws IOException {<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    // TODO: The StoreFileReader always converts the byte[] to TimeRange<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    // via TimeRangeTracker, so we should write the serialization data of TimeRange directly.<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    appendFileInfo(TIMERANGE_KEY, TimeRangeTracker.toByteArray(timeRangeTracker));<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    appendFileInfo(EARLIEST_PUT_TS, Bytes.toBytes(earliestPutTs));<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>  /**<a name="line.206"></a>
+<span class="sourceLineNo">207</span>   * Record the earlest Put timestamp.<a name="line.207"></a>
+<span class="sourceLineNo">208</span>   *<a name="line.208"></a>
+<span class="sourceLineNo">209</span>   * If the timeRangeTracker is not set,<a name="line.209"></a>
+<span class="sourceLineNo">210</span>   * update TimeRangeTracker to include the timestamp of this key<a name="line.210"></a>
+<span class="sourceLineNo">211</span>   */<a name="line.211"></a>
+<span class="sourceLineNo">212</span>  public void trackTimestamps(final Cell cell) {<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    if (KeyValue.Type.Put.getCode() == cell.getTypeByte()) {<a name="line.213"></a>
+<span class="sourceLineNo">214</span>      earliestPutTs = Math.min(earliestPutTs, cell.getTimestamp());<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    }<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    timeRangeTracker.includeTimestamp(cell);<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>  private void appendGeneralBloomfilter(final Cell cell) throws IOException {<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    if (this.generalBloomFilterWriter != null) {<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      /*<a name="line.221"></a>
+<span class="sourceLineNo">222</span>       * http://2.bp.blogspot.com/_Cib_A77V54U/StZMrzaKufI/AAAAAAAAADo/ZhK7bGoJdMQ/s400/KeyValue.png<a name="line.222"></a>
+<span class="sourceLineNo">223</span>       * Key = RowLen + Row + FamilyLen + Column [Family + Qualifier] + Timestamp<a name="line.223"></a>
+<span class="sourceLineNo">224</span>       *<a name="line.224"></a>
+<span class="sourceLineNo">225</span>       * 4 Types of Filtering:<a name="line.225"></a>
+<span class="sourceLineNo">226</span>       *  1. Row = Row<a name="line.226"></a>
+<span class="sourceLineNo">227</span>       *  2. RowCol = Row + Qualifier<a name="line.227"></a>
+<span class="sourceLineNo">228</span>       *  3. RowPrefixFixedLength  = Fixed Length Row Prefix<a name="line.228"></a>
+<span class="sourceLineNo">229</span>       *  4. RowPrefixDelimiter = Delimited Row Prefix<a name="line.229"></a>
+<span class="sourceLineNo">230</span>       */<a name="line.230"></a>
+<span class="sourceLineNo">231</span>      bloomContext.writeBloom(cell);<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    }<a name="line.232"></a>
+<span class="sourceLineNo">233</span>  }<a name="line.233"></a>
+<span class="sourceLineNo">234</span><a name="line.234"></a>
+<span class="sourceLineNo">235</span>  private void appendDeleteFamilyBloomFilter(final Cell cell)<a name="line.235"></a>
+<span class="sourceLineNo">236</span>      throws IOException {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    if (!PrivateCellUtil.isDeleteFamily(cell) &amp;&amp; !PrivateCellUtil.isDeleteFamilyVersion(cell)) {<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      return;<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    }<a name="line.239"></a>
+<span class="sourceLineNo">240</span><a name="line.240"></a>
+<span class="sourceLineNo">241</span>    // increase the number of delete family in the store file<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    deleteFamilyCnt++;<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    if (this.deleteFamilyBloomFilterWriter != null) {<a name="line.243"></a>
+<span class="sourceLineNo">244</span>      deleteFamilyBloomContext.writeBloom(cell);<a name="line.244"></a>
 <span class="sourceLineNo">245</span>    }<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    if (deleteFamilyBloomFilterWriter != null) {<a name="line.246"></a>
-<span class="sourceLineNo">247</span>      deleteFamilyBloomFilterWriter.beforeShipped();<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    }<a name="line.248"></a>
-<span class="sourceLineNo">249</span>  }<a name="line.249"></a>
-<span class="sourceLineNo">250</span><a name="line.250"></a>
-<span class="sourceLineNo">251</span>  public Path getPath() {<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    return this.writer.getPath();<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>  public boolean hasGeneralBloom() {<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    return this.generalBloomFilterWriter != null;<a name="line.256"></a>
-<span class="sourceLineNo">257</span>  }<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>   * For unit testing only.<a name="line.260"></a>
-<span class="sourceLineNo">261</span>   *<a name="line.261"></a>
-<span class="sourceLineNo">262</span>   * @return the Bloom filter used by this writer.<a name="line.262"></a>
-<span class="sourceLineNo">263</span>   */<a name="line.263"></a>
-<span class="sourceLineNo">264</span>  BloomFilterWriter getGeneralBloomWriter() {<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    return generalBloomFilterWriter;<a name="line.265"></a>
-<span class="sourceLineNo">266</span>  }<a name="line.266"></a>
-<span class="sourceLineNo">267</span><a name="line.267"></a>
-<span class="sourceLineNo">268</span>  private boolean closeBloomFilter(BloomFilterWriter bfw) throws IOException {<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    boolean haveBloom = (bfw != null &amp;&amp; bfw.getKeyCount() &gt; 0);<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    if (haveBloom) {<a name="line.270"></a>
-<span class="sourceLineNo">271</span>      bfw.compactBloom();<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    }<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    return haveBloom;<a name="line.273"></a>
-<span class="sourceLineNo">274</span>  }<a name="line.274"></a>
-<span class="sourceLineNo">275</span><a name="line.275"></a>
-<span class="sourceLineNo">276</span>  private boolean closeGeneralBloomFilter() throws IOException {<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    boolean hasGeneralBloom = closeBloomFilter(generalBloomFilterWriter);<a name="line.277"></a>
-<span class="sourceLineNo">278</span><a name="line.278"></a>
-<span class="sourceLineNo">279</span>    // add the general Bloom filter writer and append file info<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    if (hasGeneralBloom) {<a name="line.280"></a>
-<span class="sourceLineNo">281</span>      writer.addGeneralBloomFilter(generalBloomFilterWriter);<a name="line.281"></a>
-<span class="sourceLineNo">282</span>      writer.appendFileInfo(BLOOM_FILTER_TYPE_KEY, Bytes.toBytes(bloomType.toString()));<a name="line.282"></a>
-<span class="sourceLineNo">283</span>      bloomContext.addLastBloomKey(writer);<a name="line.283"></a>
-<span class="sourceLineNo">284</span>    }<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    return hasGeneralBloom;<a name="line.285"></a>
-<span class="sourceLineNo">286</span>  }<a name="line.286"></a>
-<span class="sourceLineNo">287</span><a name="line.287"></a>
-<span class="sourceLineNo">288</span>  private boolean closeDeleteFamilyBloomFilter() throws IOException {<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    boolean hasDeleteFamilyBloom = closeBloomFilter(deleteFamilyBloomFilterWriter);<a name="line.289"></a>
-<span class="sourceLineNo">290</span><a name="line.290"></a>
-<span class="sourceLineNo">291</span>    // add the delete family Bloom filter writer<a name="line.291"></a>
-<span class="sourceLineNo">292</span>    if (hasDeleteFamilyBloom) {<a name="line.292"></a>
-<span class="sourceLineNo">293</span>      writer.addDeleteFamilyBloomFilter(deleteFamilyBloomFilterWriter);<a name="line.293"></a>
-<span class="sourceLineNo">294</span>    }<a name="line.294"></a>
-<span class="sourceLineNo">295</span><a name="line.295"></a>
-<span class="sourceLineNo">296</span>    // append file info about the number of delete family kvs<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    // even if there is no delete family Bloom.<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    writer.appendFileInfo(DELETE_FAMILY_COUNT, Bytes.toBytes(this.deleteFamilyCnt));<a name="line.298"></a>
-<span class="sourceLineNo">299</span><a name="line.299"></a>
-<span class="sourceLineNo">300</span>    return hasDeleteFamilyBloom;<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>  public void close() throws IOException {<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    boolean hasGeneralBloom = this.closeGeneralBloomFilter();<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    boolean hasDeleteFamilyBloom = this.closeDeleteFamilyBloomFilter();<a name="line.305"></a>
-<span class="sourceLineNo">306</span><a name="line.306"></a>
-<span class="sourceLineNo">307</span>    writer.close();<a name="line.307"></a>
+<span class="sourceLineNo">246</span>  }<a name="line.246"></a>
+<span class="sourceLineNo">247</span><a name="line.247"></a>
+<span class="sourceLineNo">248</span>  @Override<a name="line.248"></a>
+<span class="sourceLineNo">249</span>  public void append(final Cell cell) throws IOException {<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    appendGeneralBloomfilter(cell);<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    appendDeleteFamilyBloomFilter(cell);<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    writer.append(cell);<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    trackTimestamps(cell);<a name="line.253"></a>
+<span class="sourceLineNo">254</span>  }<a name="line.254"></a>
+<span class="sourceLineNo">255</span><a name="line.255"></a>
+<span class="sourceLineNo">256</span>  @Override<a name="line.256"></a>
+<span class="sourceLineNo">257</span>  public void beforeShipped() throws IOException {<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    // For now these writer will always be of type ShipperListener true.<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    // TODO : Change all writers to be specifically created for compaction context<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    writer.beforeShipped();<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    if (generalBloomFilterWriter != null) {<a name="line.261"></a>
+<span class="sourceLineNo">262</span>      generalBloomFilterWriter.beforeShipped();<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    }<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    if (deleteFamilyBloomFilterWriter != null) {<a name="line.264"></a>
+<span class="sourceLineNo">265</span>      deleteFamilyBloomFilterWriter.beforeShipped();<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    }<a name="line.266"></a>
+<span class="sourceLineNo">267</span>  }<a name="line.267"></a>
+<span class="sourceLineNo">268</span><a name="line.268"></a>
+<span class="sourceLineNo">269</span>  public Path getPath() {<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    return this.writer.getPath();<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>  public boolean hasGeneralBloom() {<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    return this.generalBloomFilterWriter != null;<a name="line.274"></a>
+<span class="sourceLineNo">275</span>  }<a name="line.275"></a>
+<span class="sourceLineNo">276</span><a name="line.276"></a>
+<span class="sourceLineNo">277</span>  /**<a name="line.277"></a>
+<span class="sourceLineNo">278</span>   * For unit testing only.<a name="line.278"></a>
+<span class="sourceLineNo">279</span>   *<a name="line.279"></a>
+<span class="sourceLineNo">280</span>   * @return the Bloom filter used by this writer.<a name="line.280"></a>
+<span class="sourceLineNo">281</span>   */<a name="line.281"></a>
+<span class="sourceLineNo">282</span>  BloomFilterWriter getGeneralBloomWriter() {<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    return generalBloomFilterWriter;<a name="line.283"></a>
+<span class="sourceLineNo">284</span>  }<a name="line.284"></a>
+<span class="sourceLineNo">285</span><a name="line.285"></a>
+<span class="sourceLineNo">286</span>  private boolean closeBloomFilter(BloomFilterWriter bfw) throws IOException {<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    boolean haveBloom = (bfw != null &amp;&amp; bfw.getKeyCount() &gt; 0);<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    if (haveBloom) {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>      bfw.compactBloom();<a name="line.289"></a>
+<span class="sourceLineNo">290</span>    }<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    return haveBloom;<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 boolean closeGeneralBloomFilter() throws IOException {<a name="line.294"></a>
+<span class="sourceLineNo">295</span>    boolean hasGeneralBloom = closeBloomFilter(generalBloomFilterWriter);<a name="line.295"></a>
+<span class="sourceLineNo">296</span><a name="line.296"></a>
+<span class="sourceLineNo">297</span>    // add the general Bloom filter writer and append file info<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    if (hasGeneralBloom) {<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      writer.addGeneralBloomFilter(generalBloomFilterWriter);<a name="line.299"></a>
+<span class="sourceLineNo">300</span>      writer.appendFileInfo(BLOOM_FILTER_TYPE_KEY, Bytes.toBytes(bloomType.toString()));<a name="line.300"></a>
+<span class="sourceLineNo">301</span>      if (bloomParam != null) {<a name="line.301"></a>
+<span class="sourceLineNo">302</span>        writer.appendFileInfo(BLOOM_FILTER_PARAM_KEY, bloomParam);<a name="line.302"></a>
+<span class="sourceLineNo">303</span>      }<a name="line.303"></a>
+<span class="sourceLineNo">304</span>      bloomContext.addLastBloomKey(writer);<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    }<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    return hasGeneralBloom;<a name="line.306"></a>
+<span class="sourceLineNo">307</span>  }<a name="line.307"></a>
 <span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>    // Log final Bloom filter statistics. This needs to be done after close()<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    // because compound Bloom filters might be finalized as part of closing.<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    if (LOG.isTraceEnabled()) {<a name="line.311"></a>
-<span class="sourceLineNo">312</span>      LOG.trace((hasGeneralBloom ? "" : "NO ") + "General Bloom and " +<a name="line.312"></a>
-<span class="sourceLineNo">313</span>        (hasDeleteFamilyBloom ? "" : "NO ") + "DeleteFamily" + " was added to HFile " +<a name="line.313"></a>
-<span class="sourceLineNo">314</span>        getPath());<a name="line.314"></a>
+<span class="sourceLineNo">309</span>  private boolean closeDeleteFamilyBloomFilter() throws IOException {<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    boolean hasDeleteFamilyBloom = closeBloomFilter(deleteFamilyBloomFilterWriter);<a name="line.310"></a>
+<span class="sourceLineNo">311</span><a name="line.311"></a>
+<span class="sourceLineNo">312</span>    // add the delete family Bloom filter writer<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    if (hasDeleteFamilyBloom) {<a name="line.313"></a>
+<span class="sourceLineNo">314</span>      writer.addDeleteFamilyBloomFilter(deleteFamilyBloomFilterWriter);<a name="line.314"></a>
 <span class="sourceLineNo">315</span>    }<a name="line.315"></a>
 <span class="sourceLineNo">316</span><a name="line.316"></a>
-<span class="sourceLineNo">317</span>  }<a name="line.317"></a>
-<span class="sourceLineNo">318</span><a name="line.318"></a>
-<span class="sourceLineNo">319</span>  public void appendFileInfo(byte[] key, byte[] value) throws IOException {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    writer.appendFileInfo(key, value);<a name="line.320"></a>
-<span class="sourceLineNo">321</span>  }<a name="line.321"></a>
-<span class="sourceLineNo">322</span><a name="line.322"></a>
-<span class="sourceLineNo">323</span>  /** For use in testing.<a name="line.323"></a>
-<span class="sourceLineNo">324</span>   */<a name="line.324"></a>
-<span class="sourceLineNo">325</span>  HFile.Writer getHFileWriter() {<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    return writer;<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>   * @param fs<a name="line.330"></a>
-<span class="sourceLineNo">331</span>   * @param dir Directory to create file in.<a name="line.331"></a>
-<span class="sourceLineNo">332</span>   * @return random filename inside passed &lt;code&gt;dir&lt;/code&gt;<a name="line.332"></a>
-<span class="sourceLineNo">333</span>   */<a name="line.333"></a>
-<span class="sourceLineNo">334</span>  static Path getUniqueFile(final FileSystem fs, final Path dir) throws IOException {<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    if (!fs.getFileStatus(dir).isDirectory()) {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>      throw new IOException("Expecting " + dir.toString() + " to be a directory");<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    }<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    return new Path(dir, dash.matcher(UUID.randomUUID().toString()).replaceAll(""));<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>  @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="ICAST_INTEGER_MULTIPLY_CAST_TO_LONG",<a name="line.341"></a>
-<span class="sourceLineNo">342</span>      justification="Will not overflow")<a name="line.342"></a>
-<span class="sourceLineNo">343</span>  public static class Builder {<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    private final Configuration conf;<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    private final CacheConfig cacheConf;<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    private final FileSystem fs;<a name="line.346"></a>
-<span class="sourceLineNo">347</span><a name="line.347"></a>
-<span class="sourceLineNo">348</span>    private CellComparator comparator = CellComparator.getInstance();<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    private BloomType bloomType = BloomType.NONE;<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    private long maxKeyCount = 0;<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    private Path dir;<a name="line.351"></a>
-<span class="sourceLineNo">352</span>    private Path filePath;<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    private InetSocketAddress[] favoredNodes;<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    private HFileContext fileContext;<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    private boolean shouldDropCacheBehind;<a name="line.355"></a>
-<span class="sourceLineNo">356</span><a name="line.356"></a>
-<span class="sourceLineNo">357</span>    public Builder(Configuration conf, CacheConfig cacheConf,<a name="line.357"></a>
-<span class="sourceLineNo">358</span>        FileSystem fs) {<a name="line.358"></a>
-<span class="sourceLineNo">359</span>      this.conf = conf;<a name="line.359"></a>
-<span class="sourceLineNo">360</span>      this.cacheConf = cacheConf;<a name="line.360"></a>
-<span class="sourceLineNo">361</span>      this.fs = fs;<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    }<a name="line.362"></a>
-<span class="sourceLineNo">363</span><a name="line.363"></a>
-<span class="sourceLineNo">364</span>    /**<a name="line.364"></a>
-<span class="sourceLineNo">365</span>     * Creates Builder with cache configuration disabled<a name="line.365"></a>
-<span class="sourceLineNo">366</span>     */<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    public Builder(Configuration conf, FileSystem fs) {<a name="line.367"></a>
-<span class="sourceLineNo">368</span>      this.conf = conf;<a name="line.368"></a>
-<span class="sourceLineNo">369</span>      this.cacheConf = CacheConfig.DISABLED;<a name="line.369"></a>
-<span class="sourceLineNo">370</span>      this.fs = fs;<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>    /**<a name="line.373"></a>
-<span class="sourceLineNo">374</span>     * Use either this method or {@link #withFilePath}, but not both.<a name="line.374"></a>
-<span class="sourceLineNo">375</span>     * @param dir Path to column family directory. The directory is created if<a name="line.375"></a>
-<span class="sourceLineNo">376</span>     *          does not exist. The file is given a unique name within this<a name="line.376"></a>
-<span class="sourceLineNo">377</span>     *          directory.<a name="line.377"></a>
-<span class="sourceLineNo">378</span>     * @return this (for chained invocation)<a name="line.378"></a>
-<span class="sourceLineNo">379</span>     */<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    public Builder withOutputDir(Path dir) {<a name="line.380"></a>
-<span class="sourceLineNo">381</span>      Preconditions.checkNotNull(dir);<a name="line.381"></a>
-<span class="sourceLineNo">382</span>      this.dir = dir;<a name="line.382"></a>
-<span class="sourceLineNo">383</span>      return this;<a name="line.383"></a>
-<span class="sourceLineNo">384</span>    }<a name="line.384"></a>
-<span class="sourceLineNo">385</span><a name="line.385"></a>
-<span class="sourceLineNo">386</span>    /**<a name="line.386"></a>
-<span class="sourceLineNo">387</span>     * Use either this method or {@link #withOutputDir}, but not both.<a name="line.387"></a>
-<span class="sourceLineNo">388</span>     * @param filePath the StoreFile path to write<a name="line.388"></a>
-<span class="sourceLineNo">389</span>     * @return this (for chained invocation)<a name="line.389"></a>
-<span class="sourceLineNo">390</span>     */<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    public Builder withFilePath(Path filePath) {<a name="line.391"></a>
-<span class="sourceLineNo">392</span>      Preconditions.checkNotNull(filePath);<a name="line.392"></a>
-<span class="sourceLineNo">393</span>      this.filePath = filePath;<a name="line.393"></a>
-<span class="sourceLineNo">394</span>      return this;<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    }<a name="line.395"></a>
-<span class="sourceLineNo">396</span><a name="line.396"></a>
-<span class="sourceLineNo">397</span>    /**<a name="line.397"></a>
-<span class="sourceLineNo">398</span>     * @param favoredNodes an array of favored nodes or possibly null<a name="line.398"></a>
+<span class="sourceLineNo">317</span>    // append file info about the number of delete family kvs<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    // even if there is no delete family Bloom.<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    writer.appendFileInfo(DELETE_FAMILY_COUNT, Bytes.toBytes(this.deleteFamilyCnt));<a name="line.319"></a>
+<span class="sourceLineNo">320</span><a name="line.320"></a>
+<span class="sourceLineNo">321</span>    return hasDeleteFamilyBloom;<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>  public void close() throws IOException {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    boolean hasGeneralBloom = this.closeGeneralBloomFilter();<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    boolean hasDeleteFamilyBloom = this.closeDeleteFamilyBloomFilter();<a name="line.326"></a>
+<span class="sourceLineNo">327</span><a name="line.327"></a>
+<span class="sourceLineNo">328</span>    writer.close();<a name="line.328"></a>
+<span class="sourceLineNo">329</span><a name="line.329"></a>
+<span class="sourceLineNo">330</span>    // Log final Bloom filter statistics. This needs to be done after close()<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    // because compound Bloom filters might be finalized as part of closing.<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    if (LOG.isTraceEnabled()) {<a name="line.332"></a>
+<span class="sourceLineNo">333</span>      LOG.trace((hasGeneralBloom ? "" : "NO ") + "General Bloom and " +<a name="line.333"></a>
+<span class="sourceLineNo">334</span>        (hasDeleteFamilyBloom ? "" : "NO ") + "DeleteFamily" + " was added to HFile " +<a name="line.334"></a>
+<span class="sourceLineNo">335</span>        getPath());<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>  }<a name="line.338"></a>
+<span class="sourceLineNo">339</span><a name="line.339"></a>
+<span class="sourceLineNo">340</span>  public void appendFileInfo(byte[] key, byte[] value) throws IOException {<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    writer.appendFileInfo(key, value);<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>  /** For use in testing.<a name="line.344"></a>
+<span class="sourceLineNo">345</span>   */<a name="line.345"></a>
+<span class="sourceLineNo">346</span>  HFile.Writer getHFileWriter() {<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    return writer;<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>   * @param fs<a name="line.351"></a>
+<span class="sourceLineNo">352</span>   * @param dir Directory to create file in.<a name="line.352"></a>
+<span class="sourceLineNo">353</span>   * @return random filename inside passed &lt;code&gt;dir&lt;/code&gt;<a name="line.353"></a>
+<span class="sourceLineNo">354</span>   */<a name="line.354"></a>
+<span class="sourceLineNo">355</span>  static Path getUniqueFile(final FileSystem fs, final Path dir) throws IOException {<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    if (!fs.getFileStatus(dir).isDirectory()) {<a name="line.356"></a>
+<span class="sourceLineNo">357</span>      throw new IOException("Expecting " + dir.toString() + " to be a directory");<a name="line.357"></a>
+<span class="sourceLineNo">358</span>    }<a name="line.358"></a>
+<span class="sourceLineNo">359</span>    return new Path(dir, dash.matcher(UUID.randomUUID().toString()).replaceAll(""));<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>  @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="ICAST_INTEGER_MULTIPLY_CAST_TO_LONG",<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      justification="Will not overflow")<a name="line.363"></a>
+<span class="sourceLineNo">364</span>  public static class Builder {<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    private final Configuration conf;<a name="line.365"></a>
+<span class="sourceLineNo">366</span>    private final CacheConfig cacheConf;<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    private final FileSystem fs;<a name="line.367"></a>
+<span class="sourceLineNo">368</span><a name="line.368"></a>
+<span class="sourceLineNo">369</span>    private CellComparator comparator = CellComparator.getInstance();<a name="line.369"></a>
+<span class="sourceLineNo">370</span>    private BloomType bloomType = BloomType.NONE;<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    private long maxKeyCount = 0;<a name="line.371"></a>
+<span class="sourceLineNo">372</span>    private Path dir;<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    private Path filePath;<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    private InetSocketAddress[] favoredNodes;<a name="line.374"></a>
+<span class="sourceLineNo">375</span>    private HFileContext fileContext;<a name="line.375"></a>
+<span class="sourceLineNo">376</span>    private boolean shouldDropCacheBehind;<a name="line.376"></a>
+<span class="sourceLineNo">377</span><a name="line.377"></a>
+<span class="sourceLineNo">378</span>    public Builder(Configuration conf, CacheConfig cacheConf,<a name="line.378"></a>
+<span class="sourceLineNo">379</span>        FileSystem fs) {<a name="line.379"></a>
+<span class="sourceLineNo">380</span>      this.conf = conf;<a name="line.380"></a>
+<span class="sourceLineNo">381</span>      this.cacheConf = cacheConf;<a name="line.381"></a>
+<span class="sourceLineNo">382</span>      this.fs = fs;<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    }<a name="line.383"></a>
+<span class="sourceLineNo">384</span><a name="line.384"></a>
+<span class="sourceLineNo">385</span>    /**<a name="line.385"></a>
+<span class="sourceLineNo">386</span>     * Creates Builder with cache configuration disabled<a name="line.386"></a>
+<span class="sourceLineNo">387</span>     */<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    public Builder(Configuration conf, FileSystem fs) {<a name="line.388"></a>
+<span class="sourceLineNo">389</span>      this.conf = conf;<a name="line.389"></a>
+<span class="sourceLineNo">390</span>      this.cacheConf = CacheConfig.DISABLED;<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      this.fs = fs;<a name="line.391"></a>
+<span class="sourceLineNo">392</span>    }<a name="line.392"></a>
+<span class="sourceLineNo">393</span><a name="line.393"></a>
+<span class="sourceLineNo">394</span>    /**<a name="line.394"></a>
+<span class="sourceLineNo">395</span>     * Use either this method or {@link #withFilePath}, but not both.<a name="line.395"></a>
+<span class="sourceLineNo">396</span>     * @param dir Path to column family directory. The directory is created if<a name="line.396"></a>
+<span class="sourceLineNo">397</span>     *          does not exist. The file is given a unique name within this<a name="line.397"></a>
+<span class="sourceLineNo">398</span>     *          directory.<a name="line.398"></a>
 <span class="sourceLineNo">399</span>     * @return this (for chained invocation)<a name="line.399"></a>
 <span class="sourceLineNo">400</span>     */<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    public Builder withFavoredNodes(InetSocketAddress[] favoredNodes) {<a name="line.401"></a>
-<span class="sourceLineNo">402</span>      this.favoredNodes = favoredNodes;<a name="line.402"></a>
-<span class="sourceLineNo">403</span>      return this;<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    }<a name="line.404"></a>
-<span class="sourceLineNo">405</span><a name="line.405"></a>
-<span class="sourceLineNo">406</span>    public Builder withComparator(CellComparator comparator) {<a name="line.406"></a>
-<span class="sourceLineNo">407</span>      Preconditions.checkNotNull(comparator);<a name="line.407"></a>
-<span class="sourceLineNo">408</span>      this.comparator = comparator;<a name="line.408"></a>
-<span class="sourceLineNo">409</span>      return this;<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    }<a name="line.410"></a>
-<span class="sourceLineNo">411</span><a name="line.411"></a>
-<span class="sourceLineNo">412</span>    public Builder withBloomType(BloomType bloomType) {<a name="line.412"></a>
-<span class="sourceLineNo">413</span>      Preconditions.checkNotNull(bloomType);<a name="line.413"></a>
-<span class="sourceLineNo">414</span>      this.bloomType = bloomType;<a name="line.414"></a>
+<span class="sourceLineNo">401</span>    public Builder withOutputDir(Path dir) {<a name="line.401"></a>
+<span class="sourceLineNo">402</span>      Preconditions.checkNotNull(dir);<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      this.dir = dir;<a name="line.403"></a>
+<span class="sourceLineNo">404</span>      return this;<a name="line.404"></a>
+<span class="sourceLineNo">405</span>    }<a name="line.405"></a>
+<span class="sourceLineNo">406</span><a name="line.406"></a>
+<span class="sourceLineNo">407</span>    /**<a name="line.407"></a>
+<span class="sourceLineNo">408</span>     * Use either this method or {@link #withOutputDir}, but not both.<a name="line.408"></a>
+<span class="sourceLineNo">409</span>     * @param filePath the StoreFile path to write<a name="line.409"></a>
+<span class="sourceLineNo">410</span>     * @return this (for chained invocation)<a name="line.410"></a>
+<span class="sourceLineNo">411</span>     */<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    public Builder withFilePath(Path filePath) {<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      Preconditions.checkNotNull(filePath);<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      this.filePath = filePath;<a name="line.414"></a>
 <span class="sourceLineNo">415</span>      return this;<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>    /**<a name="line.418"></a>
-<span class="sourceLineNo">419</span>     * @param maxKeyCount estimated maximum number of keys we expect to add<a name="line.419"></a>
+<span class="sourceLineNo">419</span>     * @param favoredNodes an array of favored nodes or possibly null<a name="line.419"></a>
 <span class="sourceLineNo">420</span>     * @return this (for chained invocation)<a name="line.420"></a>
 <span class="sourceLineNo">421</span>     */<a name="line.421"></a>
-<span class="sourceLineNo">422</span>    public Builder withMaxKeyCount(long maxKeyCount) {<a name="line.422"></a>
-<span class="sourceLineNo">423</span>      this.maxKeyCount = maxKeyCount;<a name="line.423"></a>
+<span class="sourceLineNo">422</span>    public Builder withFavoredNodes(InetSocketAddress[] favoredNodes) {<a name="line.422"></a>
+<span class="sourceLineNo">423</span>      this.favoredNodes = favoredNodes;<a name="line.423"></a>
 <span class="sourceLineNo">424</span>      return this;<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>    public Builder withFileContext(HFileContext fileContext) {<a name="line.427"></a>
-<span class="sourceLineNo">428</span>      this.fileContext = fileContext;<a name="line.428"></a>
-<span class="sourceLineNo">429</span>      return this;<a name="line.429"></a>
-<span class="sourceLineNo">430</span>    }<a name="line.430"></a>
-<span class="sourceLineNo">431</span><a name="line.431"></a>
-<span class="sourceLineNo">432</span>    public Builder withShouldDropCacheBehind(boolean shouldDropCacheBehind) {<a name="line.432"></a>
-<span class="sourceLineNo">433</span>      this.shouldDropCacheBehind = shouldDropCacheBehind;<a name="line.433"></a>
-<span class="sourceLineNo">434</span>      return this;<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>    /**<a name="line.437"></a>
-<span class="sourceLineNo">438</span>     * Create a store file writer. Client is responsible for closing file when<a name="line.438"></a>
-<span class="sourceLineNo">439</span>     * done. If metadata, add BEFORE closing using<a name="line.439"></a>
-<span class="sourceLineNo">440</span>     * {@link StoreFileWriter#appendMetadata}.<a name="line.440"></a>
-<span class="sourceLineNo">441</span>     */<a name="line.441"></a>
-<span class="sourceLineNo">442</span>    public StoreFileWriter build() throws IOException {<a name="line.442"></a>
-<span class="sourceLineNo">443</span>      if ((dir == null ? 0 : 1) + (filePath == null ? 0 : 1) != 1) {<a name="line.443"></a>
-<span class="sourceLineNo">444</span>        throw new IllegalArgumentException("Either specify parent directory " +<a name="line.444"></a>
-<span class="sourceLineNo">445</span>            "or file path");<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      }<a name="line.446"></a>
+<span class="sourceLineNo">427</span>    public Builder withComparator(CellComparator comparator) {<a name="line.427"></a>
+<span class="sourceLineNo">428</span>      Preconditions.checkNotNull(comparator);<a name="line.428"></a>
+<span class="sourceLineNo">429</span>      this.comparator = comparator;<a name="line.429"></a>
+<span class="sourceLineNo">430</span>      return this;<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>    public Builder withBloomType(BloomType bloomType) {<a name="line.433"></a>
+<span class="sourceLineNo">434</span>      Preconditions.checkNotNull(bloomType);<a name="line.434"></a>
+<span class="sourceLineNo">435</span>      this.bloomType = bloomType;<a name="line.435"></a>
+<span class="sourceLineNo">436</span>      return this;<a name="line.436"></a>
+<span class="sourceLineNo">437</span>    }<a name="line.437"></a>
+<span class="sourceLineNo">438</span><a name="line.438"></a>
+<span class="sourceLineNo">439</span>    /**<a name="line.439"></a>
+<span class="sourceLineNo">440</span>     * @param maxKeyCount estimated maximum number of keys we expect to add<a name="line.440"></a>
+<span class="sourceLineNo">441</span>     * @return this (for chained invocation)<a name="line.441"></a>
+<span class="sourceLineNo">442</span>     */<a name="line.442"></a>
+<span class="sourceLineNo">443</span>    public Builder withMaxKeyCount(long maxKeyCount) {<a name="line.443"></a>
+<span class="sourceLineNo">444</span>      this.maxKeyCount = maxKeyCount;<a name="line.444"></a>
+<span class="sourceLineNo">445</span>      return this;<a name="line.445"></a>
+<span class="sourceLineNo">446</span>    }<a name="line.446"></a>
 <span class="sourceLineNo">447</span><a name="line.447"></a>
-<span class="sourceLineNo">448</span>      if (dir == null) {<a name="line.448"></a>
-<span class="sourceLineNo">449</span>        dir = filePath.getParent();<a name="line.449"></a>
-<span class="sourceLineNo">450</span>      }<a name="line.450"></a>
-<span class="sourceLineNo">451</span><a name="line.451"></a>
-<span class="sourceLineNo">452</span>      if (!fs.exists(dir)) {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>        // Handle permission for non-HDFS filesystem properly<a name="line.453"></a>
-<span class="sourceLineNo">454</span>        // See HBASE-17710<a name="line.454"></a>
-<span class="sourceLineNo">455</span>        HRegionFileSystem.mkdirs(fs, conf, dir);<a name="line.455"></a>
-<span class="sourceLineNo">456</span>      }<a name="line.456"></a>
+<span class="sourceLineNo">448</span>    public Builder withFileContext(HFileContext fileContext) {<a name="line.448"></a>
+<span class="sourceLineNo">449</span>      this.fileContext = fileContext;<a name="line.449"></a>
+<span class="sourceLineNo">450</span>      return this;<a name="line.450"></a>
+<span class="sourceLineNo">451</span>    }<a name="line.451"></a>
+<span class="sourceLineNo">452</span><a name="line.452"></a>
+<span class="sourceLineNo">453</span>    public Builder withShouldDropCacheBehind(boolean shouldDropCacheBehind) {<a name="line.453"></a>
+<span class="sourceLineNo">454</span>      this.shouldDropCacheBehind = shouldDropCacheBehind;<a name="line.454"></a>
+<span class="sourceLineNo">455</span>      return this;<a name="line.455"></a>
+<span class="sourceLineNo">456</span>    }<a name="line.456"></a>
 <span class="sourceLineNo">457</span><a name="line.457"></a>
-<span class="sourceLineNo">458</span>      // set block storage policy for temp path<a name="line.458"></a>
-<span class="sourceLineNo">459</span>      String policyName = this.conf.get(ColumnFamilyDescriptorBuilder.STORAGE_POLICY);<a name="line.459"></a>
-<span class="sourceLineNo">460</span>      if (null == policyName) {<a name="line.460"></a>
-<span class="sourceLineNo">461</span>        policyName = this.conf.get(HStore.BLOCK_STORAGE_POLICY_KEY);<a name="line.461"></a>
-<span class="sourceLineNo">462</span>      }<a name="line.462"></a>
-<span class="sourceLineNo">463</span>      FSUtils.setStoragePolicy(this.fs, dir, policyName);<a name="line.463"></a>
-<span class="sourceLineNo">464</span><a name="line.464"></a>
-<span class="sourceLineNo">465</span>      if (filePath == null) {<a name="line.465"></a>
-<span class="sourceLineNo">466</span>        filePath = getUniqueFile(fs, dir);<a name="line.466"></a>
-<span class="sourceLineNo">467</span>        if (!BloomFilterFactory.isGeneralBloomEnabled(conf)) {<a name="line.467"></a>
-<span class="sourceLineNo">468</span>          bloomType = BloomType.NONE;<a name="line.468"></a>
-<span class="sourceLineNo">469</span>        }<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>      if (comparator == null) {<a name="line.472"></a>
-<span class="sourceLineNo">473</span>        comparator = CellComparator.getInstance();<a name="line.473"></a>
-<span class="sourceLineNo">474</span>      }<a name="line.474"></a>
-<span class="sourceLineNo">475</span>      return new StoreFileWriter(fs, filePath,<a name="line.475"></a>
-<span class="sourceLineNo">476</span>          conf, cacheConf, comparator, bloomType, maxKeyCount, favoredNodes, fileContext,<a name="line.476"></a>
-<span class="sourceLineNo">477</span>          shouldDropCacheBehind);<a name="line.477"></a>
-<span class="sourceLineNo">478</span>    }<a name="line.478"></a>
-<span class="sourceLineNo">479</span>  }<a name="line.479"></a>
-<span class="sourceLineNo">480</span>}<a name="line.480"></a>
+<span class="sourceLineNo">458</span>    /**<a name="line.458"></a>
+<span class="sourceLineNo">459</span>     * Create a store file writer. Client is responsible for closing file when<a name="line.459"></a>
+<span class="sourceLineNo">460</span>     * done. If metadata, add BEFORE closing using<a name="line.460"></a>
+<span class="sourceLineNo">461</span>     * {@link StoreFileWriter#appendMetadata}.<a name="line.461"></a>
+<span class="sourceLineNo">462</span>     */<a name="line.462"></a>
+<span class="sourceLineNo">463</span>    public StoreFileWriter build() throws IOException {<a name="line.463"></a>
+<span class="sourceLineNo">464</span>      if ((dir == null ? 0 : 1) + (filePath == null ? 0 : 1) != 1) {<a name="line.464"></a>
+<span class="sourceLineNo">465</span>        throw new IllegalArgumentException("Either specify parent directory " +<a name="line.465"></a>
+<span class="sourceLineNo">466</span>            "or file path");<a name="line.466"></a>
+<span class="sourceLineNo">467</span>      }<a name="line.467"></a>
+<span class="sourceLineNo">468</span><a name="line.468"></a>
+<span class="sourceLineNo">469</span>      if (dir == null) {<a name="line.469"></a>
+<span class="sourceLineNo">470</span>        dir = filePath.getParent();<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>      if (!fs.exists(dir)) {<a name="line.473"></a>
+<span class="sourceLineNo">474</span>        // Handle permission for non-HDFS filesystem properly<a name="line.474"></a>
+<span class="sourceLineNo">475</span>        // See HBASE-17710<a name="line.475"></a>
+<span class="sourceLineNo">476</span>        HRegionFileSystem.mkdirs(fs, conf, dir);<a name="line.476"></a>
+<span class="sourceLineNo">477</span>      }<a name="line.477"></a>
+<span class="sourceLineNo">478</span><a name="line.478"></a>
+<span class="sourceLineNo">479</span>      // set block storage policy for temp path<a name="line.479"></a>
+<span class="sourceLineNo">480</span>      String policyName = this.conf.get(ColumnFamilyDescriptorBuilder.STORAGE_POLICY);<a name="line.480"></a>
+<span class="sourceLineNo">481</span>      if (null == policyName) {<a name="l

<TRUNCATED>

[03/43] hbase-site git commit: Published site at 7ab77518a2569e2416a50020393aa386e7734501.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html
index 05d2079..cab6957 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html
@@ -53,446 +53,449 @@
 <span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.io.compress.Compression;<a name="line.45"></a>
 <span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.46"></a>
 <span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.testclassification.RegionServerTests;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.junit.After;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.junit.Before;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.junit.ClassRule;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.junit.Test;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.junit.experimental.categories.Category;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.junit.runner.RunWith;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.junit.runners.Parameterized;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.junit.runners.Parameterized.Parameters;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.slf4j.Logger;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.slf4j.LoggerFactory;<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> * Test various seek optimizations for correctness and check if they are<a name="line.61"></a>
-<span class="sourceLineNo">062</span> * actually saving I/O operations.<a name="line.62"></a>
-<span class="sourceLineNo">063</span> */<a name="line.63"></a>
-<span class="sourceLineNo">064</span>@RunWith(Parameterized.class)<a name="line.64"></a>
-<span class="sourceLineNo">065</span>@Category({RegionServerTests.class, MediumTests.class})<a name="line.65"></a>
-<span class="sourceLineNo">066</span>public class TestSeekOptimizations {<a name="line.66"></a>
-<span class="sourceLineNo">067</span><a name="line.67"></a>
-<span class="sourceLineNo">068</span>  @ClassRule<a name="line.68"></a>
-<span class="sourceLineNo">069</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.69"></a>
-<span class="sourceLineNo">070</span>      HBaseClassTestRule.forClass(TestSeekOptimizations.class);<a name="line.70"></a>
-<span class="sourceLineNo">071</span><a name="line.71"></a>
-<span class="sourceLineNo">072</span>  private static final Logger LOG =<a name="line.72"></a>
-<span class="sourceLineNo">073</span>      LoggerFactory.getLogger(TestSeekOptimizations.class);<a name="line.73"></a>
-<span class="sourceLineNo">074</span><a name="line.74"></a>
-<span class="sourceLineNo">075</span>  // Constants<a name="line.75"></a>
-<span class="sourceLineNo">076</span>  private static final String FAMILY = "myCF";<a name="line.76"></a>
-<span class="sourceLineNo">077</span>  private static final byte[] FAMILY_BYTES = Bytes.toBytes(FAMILY);<a name="line.77"></a>
-<span class="sourceLineNo">078</span><a name="line.78"></a>
-<span class="sourceLineNo">079</span>  private static final int PUTS_PER_ROW_COL = 50;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>  private static final int DELETES_PER_ROW_COL = 10;<a name="line.80"></a>
-<span class="sourceLineNo">081</span><a name="line.81"></a>
-<span class="sourceLineNo">082</span>  private static final int NUM_ROWS = 3;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>  private static final int NUM_COLS = 3;<a name="line.83"></a>
-<span class="sourceLineNo">084</span><a name="line.84"></a>
-<span class="sourceLineNo">085</span>  private static final boolean VERBOSE = false;<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>   * Disable this when this test fails hopelessly and you need to debug a<a name="line.88"></a>
-<span class="sourceLineNo">089</span>   * simpler case.<a name="line.89"></a>
-<span class="sourceLineNo">090</span>   */<a name="line.90"></a>
-<span class="sourceLineNo">091</span>  private static final boolean USE_MANY_STORE_FILES = true;<a name="line.91"></a>
-<span class="sourceLineNo">092</span><a name="line.92"></a>
-<span class="sourceLineNo">093</span>  private static final int[][] COLUMN_SETS = new int[][] {<a name="line.93"></a>
-<span class="sourceLineNo">094</span>    {},  // All columns<a name="line.94"></a>
-<span class="sourceLineNo">095</span>    {0},<a name="line.95"></a>
-<span class="sourceLineNo">096</span>    {1},<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    {0, 2},<a name="line.97"></a>
-<span class="sourceLineNo">098</span>    {1, 2},<a name="line.98"></a>
-<span class="sourceLineNo">099</span>    {0, 1, 2},<a name="line.99"></a>
-<span class="sourceLineNo">100</span>  };<a name="line.100"></a>
-<span class="sourceLineNo">101</span><a name="line.101"></a>
-<span class="sourceLineNo">102</span>  // Both start row and end row are inclusive here for the purposes of this<a name="line.102"></a>
-<span class="sourceLineNo">103</span>  // test.<a name="line.103"></a>
-<span class="sourceLineNo">104</span>  private static final int[][] ROW_RANGES = new int[][] {<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    {-1, -1},<a name="line.105"></a>
-<span class="sourceLineNo">106</span>    {0, 1},<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    {1, 1},<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    {1, 2},<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    {0, 2}<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 final int[] MAX_VERSIONS_VALUES = new int[] { 1, 2 };<a name="line.112"></a>
-<span class="sourceLineNo">113</span><a name="line.113"></a>
-<span class="sourceLineNo">114</span>  // Instance variables<a name="line.114"></a>
-<span class="sourceLineNo">115</span>  private HRegion region;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>  private Put put;<a name="line.116"></a>
-<span class="sourceLineNo">117</span>  private Delete del;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>  private Random rand;<a name="line.118"></a>
-<span class="sourceLineNo">119</span>  private Set&lt;Long&gt; putTimestamps = new HashSet&lt;&gt;();<a name="line.119"></a>
-<span class="sourceLineNo">120</span>  private Set&lt;Long&gt; delTimestamps = new HashSet&lt;&gt;();<a name="line.120"></a>
-<span class="sourceLineNo">121</span>  private List&lt;Cell&gt; expectedKVs = new ArrayList&lt;&gt;();<a name="line.121"></a>
-<span class="sourceLineNo">122</span><a name="line.122"></a>
-<span class="sourceLineNo">123</span>  private Compression.Algorithm comprAlgo;<a name="line.123"></a>
-<span class="sourceLineNo">124</span>  private BloomType bloomType;<a name="line.124"></a>
-<span class="sourceLineNo">125</span><a name="line.125"></a>
-<span class="sourceLineNo">126</span>  private long totalSeekDiligent, totalSeekLazy;<a name="line.126"></a>
-<span class="sourceLineNo">127</span><a name="line.127"></a>
-<span class="sourceLineNo">128</span>  private final static HBaseTestingUtility TEST_UTIL = HBaseTestingUtility.createLocalHTU();<a name="line.128"></a>
-<span class="sourceLineNo">129</span><a name="line.129"></a>
-<span class="sourceLineNo">130</span>  @Parameters<a name="line.130"></a>
-<span class="sourceLineNo">131</span>  public static final Collection&lt;Object[]&gt; parameters() {<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    return HBaseTestingUtility.BLOOM_AND_COMPRESSION_COMBINATIONS;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>  }<a name="line.133"></a>
-<span class="sourceLineNo">134</span><a name="line.134"></a>
-<span class="sourceLineNo">135</span>  public TestSeekOptimizations(Compression.Algorithm comprAlgo,<a name="line.135"></a>
-<span class="sourceLineNo">136</span>      BloomType bloomType) {<a name="line.136"></a>
-<span class="sourceLineNo">137</span>    this.comprAlgo = comprAlgo;<a name="line.137"></a>
-<span class="sourceLineNo">138</span>    this.bloomType = bloomType;<a name="line.138"></a>
-<span class="sourceLineNo">139</span>  }<a name="line.139"></a>
-<span class="sourceLineNo">140</span><a name="line.140"></a>
-<span class="sourceLineNo">141</span>  @Before<a name="line.141"></a>
-<span class="sourceLineNo">142</span>  public void setUp() {<a name="line.142"></a>
-<span class="sourceLineNo">143</span>    rand = new Random(91238123L);<a name="line.143"></a>
-<span class="sourceLineNo">144</span>    expectedKVs.clear();<a name="line.144"></a>
-<span class="sourceLineNo">145</span>  }<a name="line.145"></a>
-<span class="sourceLineNo">146</span><a name="line.146"></a>
-<span class="sourceLineNo">147</span>  @Test<a name="line.147"></a>
-<span class="sourceLineNo">148</span>  public void testMultipleTimestampRanges() throws IOException {<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    // enable seek counting<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    StoreFileScanner.instrument();<a name="line.150"></a>
-<span class="sourceLineNo">151</span><a name="line.151"></a>
-<span class="sourceLineNo">152</span>    region = TEST_UTIL.createTestRegion("testMultipleTimestampRanges",<a name="line.152"></a>
-<span class="sourceLineNo">153</span>        new HColumnDescriptor(FAMILY)<a name="line.153"></a>
-<span class="sourceLineNo">154</span>            .setCompressionType(comprAlgo)<a name="line.154"></a>
-<span class="sourceLineNo">155</span>            .setBloomFilterType(bloomType)<a name="line.155"></a>
-<span class="sourceLineNo">156</span>            .setMaxVersions(3)<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    );<a name="line.157"></a>
-<span class="sourceLineNo">158</span><a name="line.158"></a>
-<span class="sourceLineNo">159</span>    // Delete the given timestamp and everything before.<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    final long latestDelTS = USE_MANY_STORE_FILES ? 1397 : -1;<a name="line.160"></a>
+<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.util.BloomFilterUtil;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.junit.After;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.junit.Before;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.junit.ClassRule;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.junit.Test;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.junit.experimental.categories.Category;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.junit.runner.RunWith;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.junit.runners.Parameterized;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.junit.runners.Parameterized.Parameters;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.slf4j.Logger;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.slf4j.LoggerFactory;<a name="line.59"></a>
+<span class="sourceLineNo">060</span><a name="line.60"></a>
+<span class="sourceLineNo">061</span>/**<a name="line.61"></a>
+<span class="sourceLineNo">062</span> * Test various seek optimizations for correctness and check if they are<a name="line.62"></a>
+<span class="sourceLineNo">063</span> * actually saving I/O operations.<a name="line.63"></a>
+<span class="sourceLineNo">064</span> */<a name="line.64"></a>
+<span class="sourceLineNo">065</span>@RunWith(Parameterized.class)<a name="line.65"></a>
+<span class="sourceLineNo">066</span>@Category({RegionServerTests.class, MediumTests.class})<a name="line.66"></a>
+<span class="sourceLineNo">067</span>public class TestSeekOptimizations {<a name="line.67"></a>
+<span class="sourceLineNo">068</span><a name="line.68"></a>
+<span class="sourceLineNo">069</span>  @ClassRule<a name="line.69"></a>
+<span class="sourceLineNo">070</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.70"></a>
+<span class="sourceLineNo">071</span>      HBaseClassTestRule.forClass(TestSeekOptimizations.class);<a name="line.71"></a>
+<span class="sourceLineNo">072</span><a name="line.72"></a>
+<span class="sourceLineNo">073</span>  private static final Logger LOG =<a name="line.73"></a>
+<span class="sourceLineNo">074</span>      LoggerFactory.getLogger(TestSeekOptimizations.class);<a name="line.74"></a>
+<span class="sourceLineNo">075</span><a name="line.75"></a>
+<span class="sourceLineNo">076</span>  // Constants<a name="line.76"></a>
+<span class="sourceLineNo">077</span>  private static final String FAMILY = "myCF";<a name="line.77"></a>
+<span class="sourceLineNo">078</span>  private static final byte[] FAMILY_BYTES = Bytes.toBytes(FAMILY);<a name="line.78"></a>
+<span class="sourceLineNo">079</span><a name="line.79"></a>
+<span class="sourceLineNo">080</span>  private static final int PUTS_PER_ROW_COL = 50;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>  private static final int DELETES_PER_ROW_COL = 10;<a name="line.81"></a>
+<span class="sourceLineNo">082</span><a name="line.82"></a>
+<span class="sourceLineNo">083</span>  private static final int NUM_ROWS = 3;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>  private static final int NUM_COLS = 3;<a name="line.84"></a>
+<span class="sourceLineNo">085</span><a name="line.85"></a>
+<span class="sourceLineNo">086</span>  private static final boolean VERBOSE = false;<a name="line.86"></a>
+<span class="sourceLineNo">087</span><a name="line.87"></a>
+<span class="sourceLineNo">088</span>  /**<a name="line.88"></a>
+<span class="sourceLineNo">089</span>   * Disable this when this test fails hopelessly and you need to debug a<a name="line.89"></a>
+<span class="sourceLineNo">090</span>   * simpler case.<a name="line.90"></a>
+<span class="sourceLineNo">091</span>   */<a name="line.91"></a>
+<span class="sourceLineNo">092</span>  private static final boolean USE_MANY_STORE_FILES = true;<a name="line.92"></a>
+<span class="sourceLineNo">093</span><a name="line.93"></a>
+<span class="sourceLineNo">094</span>  private static final int[][] COLUMN_SETS = new int[][] {<a name="line.94"></a>
+<span class="sourceLineNo">095</span>    {},  // All columns<a name="line.95"></a>
+<span class="sourceLineNo">096</span>    {0},<a name="line.96"></a>
+<span class="sourceLineNo">097</span>    {1},<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    {0, 2},<a name="line.98"></a>
+<span class="sourceLineNo">099</span>    {1, 2},<a name="line.99"></a>
+<span class="sourceLineNo">100</span>    {0, 1, 2},<a name="line.100"></a>
+<span class="sourceLineNo">101</span>  };<a name="line.101"></a>
+<span class="sourceLineNo">102</span><a name="line.102"></a>
+<span class="sourceLineNo">103</span>  // Both start row and end row are inclusive here for the purposes of this<a name="line.103"></a>
+<span class="sourceLineNo">104</span>  // test.<a name="line.104"></a>
+<span class="sourceLineNo">105</span>  private static final int[][] ROW_RANGES = new int[][] {<a name="line.105"></a>
+<span class="sourceLineNo">106</span>    {-1, -1},<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    {0, 1},<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    {1, 1},<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    {1, 2},<a name="line.109"></a>
+<span class="sourceLineNo">110</span>    {0, 2}<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 static final int[] MAX_VERSIONS_VALUES = new int[] { 1, 2 };<a name="line.113"></a>
+<span class="sourceLineNo">114</span><a name="line.114"></a>
+<span class="sourceLineNo">115</span>  // Instance variables<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  private HRegion region;<a name="line.116"></a>
+<span class="sourceLineNo">117</span>  private Put put;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>  private Delete del;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>  private Random rand;<a name="line.119"></a>
+<span class="sourceLineNo">120</span>  private Set&lt;Long&gt; putTimestamps = new HashSet&lt;&gt;();<a name="line.120"></a>
+<span class="sourceLineNo">121</span>  private Set&lt;Long&gt; delTimestamps = new HashSet&lt;&gt;();<a name="line.121"></a>
+<span class="sourceLineNo">122</span>  private List&lt;Cell&gt; expectedKVs = new ArrayList&lt;&gt;();<a name="line.122"></a>
+<span class="sourceLineNo">123</span><a name="line.123"></a>
+<span class="sourceLineNo">124</span>  private Compression.Algorithm comprAlgo;<a name="line.124"></a>
+<span class="sourceLineNo">125</span>  private BloomType bloomType;<a name="line.125"></a>
+<span class="sourceLineNo">126</span><a name="line.126"></a>
+<span class="sourceLineNo">127</span>  private long totalSeekDiligent, totalSeekLazy;<a name="line.127"></a>
+<span class="sourceLineNo">128</span><a name="line.128"></a>
+<span class="sourceLineNo">129</span>  private final static HBaseTestingUtility TEST_UTIL = HBaseTestingUtility.createLocalHTU();<a name="line.129"></a>
+<span class="sourceLineNo">130</span><a name="line.130"></a>
+<span class="sourceLineNo">131</span>  @Parameters<a name="line.131"></a>
+<span class="sourceLineNo">132</span>  public static final Collection&lt;Object[]&gt; parameters() {<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    return HBaseTestingUtility.BLOOM_AND_COMPRESSION_COMBINATIONS;<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>  public TestSeekOptimizations(Compression.Algorithm comprAlgo,<a name="line.136"></a>
+<span class="sourceLineNo">137</span>      BloomType bloomType) {<a name="line.137"></a>
+<span class="sourceLineNo">138</span>    this.comprAlgo = comprAlgo;<a name="line.138"></a>
+<span class="sourceLineNo">139</span>    this.bloomType = bloomType;<a name="line.139"></a>
+<span class="sourceLineNo">140</span>  }<a name="line.140"></a>
+<span class="sourceLineNo">141</span><a name="line.141"></a>
+<span class="sourceLineNo">142</span>  @Before<a name="line.142"></a>
+<span class="sourceLineNo">143</span>  public void setUp() {<a name="line.143"></a>
+<span class="sourceLineNo">144</span>    rand = new Random(91238123L);<a name="line.144"></a>
+<span class="sourceLineNo">145</span>    expectedKVs.clear();<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    TEST_UTIL.getConfiguration().setInt(BloomFilterUtil.PREFIX_LENGTH_KEY, 10);<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    TEST_UTIL.getConfiguration().set(BloomFilterUtil.DELIMITER_KEY, "#");<a name="line.147"></a>
+<span class="sourceLineNo">148</span>  }<a name="line.148"></a>
+<span class="sourceLineNo">149</span><a name="line.149"></a>
+<span class="sourceLineNo">150</span>  @Test<a name="line.150"></a>
+<span class="sourceLineNo">151</span>  public void testMultipleTimestampRanges() throws IOException {<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    // enable seek counting<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    StoreFileScanner.instrument();<a name="line.153"></a>
+<span class="sourceLineNo">154</span><a name="line.154"></a>
+<span class="sourceLineNo">155</span>    region = TEST_UTIL.createTestRegion("testMultipleTimestampRanges",<a name="line.155"></a>
+<span class="sourceLineNo">156</span>        new HColumnDescriptor(FAMILY)<a name="line.156"></a>
+<span class="sourceLineNo">157</span>            .setCompressionType(comprAlgo)<a name="line.157"></a>
+<span class="sourceLineNo">158</span>            .setBloomFilterType(bloomType)<a name="line.158"></a>
+<span class="sourceLineNo">159</span>            .setMaxVersions(3)<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    );<a name="line.160"></a>
 <span class="sourceLineNo">161</span><a name="line.161"></a>
-<span class="sourceLineNo">162</span>    createTimestampRange(1, 50, -1);<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    createTimestampRange(51, 100, -1);<a name="line.163"></a>
-<span class="sourceLineNo">164</span>    if (USE_MANY_STORE_FILES) {<a name="line.164"></a>
-<span class="sourceLineNo">165</span>      createTimestampRange(100, 500, 127);<a name="line.165"></a>
-<span class="sourceLineNo">166</span>      createTimestampRange(900, 1300, -1);<a name="line.166"></a>
-<span class="sourceLineNo">167</span>      createTimestampRange(1301, 2500, latestDelTS);<a name="line.167"></a>
-<span class="sourceLineNo">168</span>      createTimestampRange(2502, 2598, -1);<a name="line.168"></a>
-<span class="sourceLineNo">169</span>      createTimestampRange(2599, 2999, -1);<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    }<a name="line.170"></a>
-<span class="sourceLineNo">171</span><a name="line.171"></a>
-<span class="sourceLineNo">172</span>    prepareExpectedKVs(latestDelTS);<a name="line.172"></a>
-<span class="sourceLineNo">173</span><a name="line.173"></a>
-<span class="sourceLineNo">174</span>    for (int[] columnArr : COLUMN_SETS) {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      for (int[] rowRange : ROW_RANGES) {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>        for (int maxVersions : MAX_VERSIONS_VALUES) {<a name="line.176"></a>
-<span class="sourceLineNo">177</span>          for (boolean lazySeekEnabled : new boolean[] { false, true }) {<a name="line.177"></a>
-<span class="sourceLineNo">178</span>            testScan(columnArr, lazySeekEnabled, rowRange[0], rowRange[1],<a name="line.178"></a>
-<span class="sourceLineNo">179</span>                maxVersions);<a name="line.179"></a>
-<span class="sourceLineNo">180</span>          }<a name="line.180"></a>
-<span class="sourceLineNo">181</span>        }<a name="line.181"></a>
-<span class="sourceLineNo">182</span>      }<a name="line.182"></a>
-<span class="sourceLineNo">183</span>    }<a name="line.183"></a>
-<span class="sourceLineNo">184</span><a name="line.184"></a>
-<span class="sourceLineNo">185</span>    final double seekSavings = 1 - totalSeekLazy * 1.0 / totalSeekDiligent;<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    System.err.println("For bloom=" + bloomType + ", compr=" + comprAlgo +<a name="line.186"></a>
-<span class="sourceLineNo">187</span>        " total seeks without optimization: " + totalSeekDiligent<a name="line.187"></a>
-<span class="sourceLineNo">188</span>        + ", with optimization: " + totalSeekLazy + " (" +<a name="line.188"></a>
-<span class="sourceLineNo">189</span>        String.format("%.2f%%", totalSeekLazy * 100.0 / totalSeekDiligent) +<a name="line.189"></a>
-<span class="sourceLineNo">190</span>        "), savings: " + String.format("%.2f%%",<a name="line.190"></a>
-<span class="sourceLineNo">191</span>            100.0 * seekSavings) + "\n");<a name="line.191"></a>
-<span class="sourceLineNo">192</span><a name="line.192"></a>
-<span class="sourceLineNo">193</span>    // Test that lazy seeks are buying us something. Without the actual<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    // implementation of the lazy seek optimization this will be 0.<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    final double expectedSeekSavings = 0.0;<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    assertTrue("Lazy seek is only saving " +<a name="line.196"></a>
-<span class="sourceLineNo">197</span>        String.format("%.2f%%", seekSavings * 100) + " seeks but should " +<a name="line.197"></a>
-<span class="sourceLineNo">198</span>        "save at least " + String.format("%.2f%%", expectedSeekSavings * 100),<a name="line.198"></a>
-<span class="sourceLineNo">199</span>        seekSavings &gt;= expectedSeekSavings);<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>  private void testScan(final int[] columnArr, final boolean lazySeekEnabled,<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      final int startRow, final int endRow, int maxVersions)<a name="line.203"></a>
-<span class="sourceLineNo">204</span>      throws IOException {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    StoreScanner.enableLazySeekGlobally(lazySeekEnabled);<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    final Scan scan = new Scan();<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    final Set&lt;String&gt; qualSet = new HashSet&lt;&gt;();<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    for (int iColumn : columnArr) {<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      String qualStr = getQualStr(iColumn);<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      scan.addColumn(FAMILY_BYTES, Bytes.toBytes(qualStr));<a name="line.210"></a>
-<span class="sourceLineNo">211</span>      qualSet.add(qualStr);<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    }<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    scan.setMaxVersions(maxVersions);<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    scan.setStartRow(rowBytes(startRow));<a name="line.214"></a>
-<span class="sourceLineNo">215</span><a name="line.215"></a>
-<span class="sourceLineNo">216</span>    // Adjust for the fact that for multi-row queries the end row is exclusive.<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    {<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      final byte[] scannerStopRow =<a name="line.218"></a>
-<span class="sourceLineNo">219</span>          rowBytes(endRow + (startRow != endRow ? 1 : 0));<a name="line.219"></a>
-<span class="sourceLineNo">220</span>      scan.setStopRow(scannerStopRow);<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    }<a name="line.221"></a>
-<span class="sourceLineNo">222</span><a name="line.222"></a>
-<span class="sourceLineNo">223</span>    final long initialSeekCount = StoreFileScanner.getSeekCount();<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    final InternalScanner scanner = region.getScanner(scan);<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    final List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    final List&lt;Cell&gt; actualKVs = new ArrayList&lt;&gt;();<a name="line.226"></a>
-<span class="sourceLineNo">227</span><a name="line.227"></a>
-<span class="sourceLineNo">228</span>    // Such a clumsy do-while loop appears to be the official way to use an<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    // internalScanner. scanner.next() return value refers to the _next_<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    // result, not to the one already returned in results.<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    boolean hasNext;<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    do {<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      hasNext = scanner.next(results);<a name="line.233"></a>
-<span class="sourceLineNo">234</span>      actualKVs.addAll(results);<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      results.clear();<a name="line.235"></a>
-<span class="sourceLineNo">236</span>    } while (hasNext);<a name="line.236"></a>
-<span class="sourceLineNo">237</span><a name="line.237"></a>
-<span class="sourceLineNo">238</span>    List&lt;Cell&gt; filteredKVs = filterExpectedResults(qualSet,<a name="line.238"></a>
-<span class="sourceLineNo">239</span>        rowBytes(startRow), rowBytes(endRow), maxVersions);<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    final String rowRestrictionStr =<a name="line.240"></a>
-<span class="sourceLineNo">241</span>        (startRow == -1 &amp;&amp; endRow == -1) ? "all rows" : (<a name="line.241"></a>
-<span class="sourceLineNo">242</span>            startRow == endRow ? ("row=" + startRow) : ("startRow="<a name="line.242"></a>
-<span class="sourceLineNo">243</span>            + startRow + ", " + "endRow=" + endRow));<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    final String columnRestrictionStr =<a name="line.244"></a>
-<span class="sourceLineNo">245</span>        columnArr.length == 0 ? "all columns"<a name="line.245"></a>
-<span class="sourceLineNo">246</span>            : ("columns=" + Arrays.toString(columnArr));<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    final String testDesc =<a name="line.247"></a>
-<span class="sourceLineNo">248</span>        "Bloom=" + bloomType + ", compr=" + comprAlgo + ", "<a name="line.248"></a>
-<span class="sourceLineNo">249</span>            + (scan.isGetScan() ? "Get" : "Scan") + ": "<a name="line.249"></a>
-<span class="sourceLineNo">250</span>            + columnRestrictionStr + ", " + rowRestrictionStr<a name="line.250"></a>
-<span class="sourceLineNo">251</span>            + ", maxVersions=" + maxVersions + ", lazySeek=" + lazySeekEnabled;<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    long seekCount = StoreFileScanner.getSeekCount() - initialSeekCount;<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    if (VERBOSE) {<a name="line.253"></a>
-<span class="sourceLineNo">254</span>      System.err.println("Seek count: " + seekCount + ", KVs returned: "<a name="line.254"></a>
-<span class="sourceLineNo">255</span>        + actualKVs.size() + ". " + testDesc +<a name="line.255"></a>
-<span class="sourceLineNo">256</span>        (lazySeekEnabled ? "\n" : ""));<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    }<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    if (lazySeekEnabled) {<a name="line.258"></a>
-<span class="sourceLineNo">259</span>      totalSeekLazy += seekCount;<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    } else {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      totalSeekDiligent += seekCount;<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    }<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    assertKVListsEqual(testDesc, filteredKVs, actualKVs);<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">266</span>  private List&lt;Cell&gt; filterExpectedResults(Set&lt;String&gt; qualSet,<a name="line.266"></a>
-<span class="sourceLineNo">267</span>      byte[] startRow, byte[] endRow, int maxVersions) {<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    final List&lt;Cell&gt; filteredKVs = new ArrayList&lt;&gt;();<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    final Map&lt;String, Integer&gt; verCount = new HashMap&lt;&gt;();<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    for (Cell kv : expectedKVs) {<a name="line.270"></a>
-<span class="sourceLineNo">271</span>      if (startRow.length &gt; 0 &amp;&amp;<a name="line.271"></a>
-<span class="sourceLineNo">272</span>          Bytes.compareTo(kv.getRowArray(), kv.getRowOffset(), kv.getRowLength(),<a name="line.272"></a>
-<span class="sourceLineNo">273</span>              startRow, 0, startRow.length) &lt; 0) {<a name="line.273"></a>
-<span class="sourceLineNo">274</span>        continue;<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      }<a name="line.275"></a>
-<span class="sourceLineNo">276</span><a name="line.276"></a>
-<span class="sourceLineNo">277</span>      // In this unit test the end row is always inclusive.<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      if (endRow.length &gt; 0 &amp;&amp;<a name="line.278"></a>
-<span class="sourceLineNo">279</span>          Bytes.compareTo(kv.getRowArray(), kv.getRowOffset(), kv.getRowLength(),<a name="line.279"></a>
-<span class="sourceLineNo">280</span>              endRow, 0, endRow.length) &gt; 0) {<a name="line.280"></a>
-<span class="sourceLineNo">281</span>        continue;<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>      if (!qualSet.isEmpty() &amp;&amp; (!CellUtil.matchingFamily(kv, FAMILY_BYTES)<a name="line.284"></a>
-<span class="sourceLineNo">285</span>          || !qualSet.contains(Bytes.toString(CellUtil.cloneQualifier(kv))))) {<a name="line.285"></a>
-<span class="sourceLineNo">286</span>        continue;<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      }<a name="line.287"></a>
-<span class="sourceLineNo">288</span><a name="line.288"></a>
-<span class="sourceLineNo">289</span>      final String rowColStr =<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        Bytes.toStringBinary(CellUtil.cloneRow(kv)) + "/"<a name="line.290"></a>
-<span class="sourceLineNo">291</span>            + Bytes.toStringBinary(CellUtil.cloneFamily(kv)) + ":"<a name="line.291"></a>
-<span class="sourceLineNo">292</span>            + Bytes.toStringBinary(CellUtil.cloneQualifier(kv));<a name="line.292"></a>
-<span class="sourceLineNo">293</span>      final Integer curNumVer = verCount.get(rowColStr);<a name="line.293"></a>
-<span class="sourceLineNo">294</span>      final int newNumVer = curNumVer != null ? (curNumVer + 1) : 1;<a name="line.294"></a>
-<span class="sourceLineNo">295</span>      if (newNumVer &lt;= maxVersions) {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>        filteredKVs.add(kv);<a name="line.296"></a>
-<span class="sourceLineNo">297</span>        verCount.put(rowColStr, newNumVer);<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><a name="line.300"></a>
-<span class="sourceLineNo">301</span>    return filteredKVs;<a name="line.301"></a>
-<span class="sourceLineNo">302</span>  }<a name="line.302"></a>
+<span class="sourceLineNo">162</span>    // Delete the given timestamp and everything before.<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    final long latestDelTS = USE_MANY_STORE_FILES ? 1397 : -1;<a name="line.163"></a>
+<span class="sourceLineNo">164</span><a name="line.164"></a>
+<span class="sourceLineNo">165</span>    createTimestampRange(1, 50, -1);<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    createTimestampRange(51, 100, -1);<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    if (USE_MANY_STORE_FILES) {<a name="line.167"></a>
+<span class="sourceLineNo">168</span>      createTimestampRange(100, 500, 127);<a name="line.168"></a>
+<span class="sourceLineNo">169</span>      createTimestampRange(900, 1300, -1);<a name="line.169"></a>
+<span class="sourceLineNo">170</span>      createTimestampRange(1301, 2500, latestDelTS);<a name="line.170"></a>
+<span class="sourceLineNo">171</span>      createTimestampRange(2502, 2598, -1);<a name="line.171"></a>
+<span class="sourceLineNo">172</span>      createTimestampRange(2599, 2999, -1);<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>    prepareExpectedKVs(latestDelTS);<a name="line.175"></a>
+<span class="sourceLineNo">176</span><a name="line.176"></a>
+<span class="sourceLineNo">177</span>    for (int[] columnArr : COLUMN_SETS) {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>      for (int[] rowRange : ROW_RANGES) {<a name="line.178"></a>
+<span class="sourceLineNo">179</span>        for (int maxVersions : MAX_VERSIONS_VALUES) {<a name="line.179"></a>
+<span class="sourceLineNo">180</span>          for (boolean lazySeekEnabled : new boolean[] { false, true }) {<a name="line.180"></a>
+<span class="sourceLineNo">181</span>            testScan(columnArr, lazySeekEnabled, rowRange[0], rowRange[1],<a name="line.181"></a>
+<span class="sourceLineNo">182</span>                maxVersions);<a name="line.182"></a>
+<span class="sourceLineNo">183</span>          }<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>    }<a name="line.186"></a>
+<span class="sourceLineNo">187</span><a name="line.187"></a>
+<span class="sourceLineNo">188</span>    final double seekSavings = 1 - totalSeekLazy * 1.0 / totalSeekDiligent;<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    System.err.println("For bloom=" + bloomType + ", compr=" + comprAlgo +<a name="line.189"></a>
+<span class="sourceLineNo">190</span>        " total seeks without optimization: " + totalSeekDiligent<a name="line.190"></a>
+<span class="sourceLineNo">191</span>        + ", with optimization: " + totalSeekLazy + " (" +<a name="line.191"></a>
+<span class="sourceLineNo">192</span>        String.format("%.2f%%", totalSeekLazy * 100.0 / totalSeekDiligent) +<a name="line.192"></a>
+<span class="sourceLineNo">193</span>        "), savings: " + String.format("%.2f%%",<a name="line.193"></a>
+<span class="sourceLineNo">194</span>            100.0 * seekSavings) + "\n");<a name="line.194"></a>
+<span class="sourceLineNo">195</span><a name="line.195"></a>
+<span class="sourceLineNo">196</span>    // Test that lazy seeks are buying us something. Without the actual<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    // implementation of the lazy seek optimization this will be 0.<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    final double expectedSeekSavings = 0.0;<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    assertTrue("Lazy seek is only saving " +<a name="line.199"></a>
+<span class="sourceLineNo">200</span>        String.format("%.2f%%", seekSavings * 100) + " seeks but should " +<a name="line.200"></a>
+<span class="sourceLineNo">201</span>        "save at least " + String.format("%.2f%%", expectedSeekSavings * 100),<a name="line.201"></a>
+<span class="sourceLineNo">202</span>        seekSavings &gt;= expectedSeekSavings);<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>  private void testScan(final int[] columnArr, final boolean lazySeekEnabled,<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      final int startRow, final int endRow, int maxVersions)<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      throws IOException {<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    StoreScanner.enableLazySeekGlobally(lazySeekEnabled);<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    final Scan scan = new Scan();<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    final Set&lt;String&gt; qualSet = new HashSet&lt;&gt;();<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    for (int iColumn : columnArr) {<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      String qualStr = getQualStr(iColumn);<a name="line.212"></a>
+<span class="sourceLineNo">213</span>      scan.addColumn(FAMILY_BYTES, Bytes.toBytes(qualStr));<a name="line.213"></a>
+<span class="sourceLineNo">214</span>      qualSet.add(qualStr);<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    }<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    scan.setMaxVersions(maxVersions);<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    scan.setStartRow(rowBytes(startRow));<a name="line.217"></a>
+<span class="sourceLineNo">218</span><a name="line.218"></a>
+<span class="sourceLineNo">219</span>    // Adjust for the fact that for multi-row queries the end row is exclusive.<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    {<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      final byte[] scannerStopRow =<a name="line.221"></a>
+<span class="sourceLineNo">222</span>          rowBytes(endRow + (startRow != endRow ? 1 : 0));<a name="line.222"></a>
+<span class="sourceLineNo">223</span>      scan.setStopRow(scannerStopRow);<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>    final long initialSeekCount = StoreFileScanner.getSeekCount();<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    final InternalScanner scanner = region.getScanner(scan);<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    final List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    final List&lt;Cell&gt; actualKVs = new ArrayList&lt;&gt;();<a name="line.229"></a>
+<span class="sourceLineNo">230</span><a name="line.230"></a>
+<span class="sourceLineNo">231</span>    // Such a clumsy do-while loop appears to be the official way to use an<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    // internalScanner. scanner.next() return value refers to the _next_<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    // result, not to the one already returned in results.<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    boolean hasNext;<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    do {<a name="line.235"></a>
+<span class="sourceLineNo">236</span>      hasNext = scanner.next(results);<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      actualKVs.addAll(results);<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      results.clear();<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    } while (hasNext);<a name="line.239"></a>
+<span class="sourceLineNo">240</span><a name="line.240"></a>
+<span class="sourceLineNo">241</span>    List&lt;Cell&gt; filteredKVs = filterExpectedResults(qualSet,<a name="line.241"></a>
+<span class="sourceLineNo">242</span>        rowBytes(startRow), rowBytes(endRow), maxVersions);<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    final String rowRestrictionStr =<a name="line.243"></a>
+<span class="sourceLineNo">244</span>        (startRow == -1 &amp;&amp; endRow == -1) ? "all rows" : (<a name="line.244"></a>
+<span class="sourceLineNo">245</span>            startRow == endRow ? ("row=" + startRow) : ("startRow="<a name="line.245"></a>
+<span class="sourceLineNo">246</span>            + startRow + ", " + "endRow=" + endRow));<a name="line.246"></a>
+<span class="sourceLineNo">247</span>    final String columnRestrictionStr =<a name="line.247"></a>
+<span class="sourceLineNo">248</span>        columnArr.length == 0 ? "all columns"<a name="line.248"></a>
+<span class="sourceLineNo">249</span>            : ("columns=" + Arrays.toString(columnArr));<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    final String testDesc =<a name="line.250"></a>
+<span class="sourceLineNo">251</span>        "Bloom=" + bloomType + ", compr=" + comprAlgo + ", "<a name="line.251"></a>
+<span class="sourceLineNo">252</span>            + (scan.isGetScan() ? "Get" : "Scan") + ": "<a name="line.252"></a>
+<span class="sourceLineNo">253</span>            + columnRestrictionStr + ", " + rowRestrictionStr<a name="line.253"></a>
+<span class="sourceLineNo">254</span>            + ", maxVersions=" + maxVersions + ", lazySeek=" + lazySeekEnabled;<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    long seekCount = StoreFileScanner.getSeekCount() - initialSeekCount;<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    if (VERBOSE) {<a name="line.256"></a>
+<span class="sourceLineNo">257</span>      System.err.println("Seek count: " + seekCount + ", KVs returned: "<a name="line.257"></a>
+<span class="sourceLineNo">258</span>        + actualKVs.size() + ". " + testDesc +<a name="line.258"></a>
+<span class="sourceLineNo">259</span>        (lazySeekEnabled ? "\n" : ""));<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    }<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    if (lazySeekEnabled) {<a name="line.261"></a>
+<span class="sourceLineNo">262</span>      totalSeekLazy += seekCount;<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    } else {<a name="line.263"></a>
+<span class="sourceLineNo">264</span>      totalSeekDiligent += seekCount;<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    }<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    assertKVListsEqual(testDesc, filteredKVs, actualKVs);<a name="line.266"></a>
+<span class="sourceLineNo">267</span>  }<a name="line.267"></a>
+<span class="sourceLineNo">268</span><a name="line.268"></a>
+<span class="sourceLineNo">269</span>  private List&lt;Cell&gt; filterExpectedResults(Set&lt;String&gt; qualSet,<a name="line.269"></a>
+<span class="sourceLineNo">270</span>      byte[] startRow, byte[] endRow, int maxVersions) {<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    final List&lt;Cell&gt; filteredKVs = new ArrayList&lt;&gt;();<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    final Map&lt;String, Integer&gt; verCount = new HashMap&lt;&gt;();<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    for (Cell kv : expectedKVs) {<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      if (startRow.length &gt; 0 &amp;&amp;<a name="line.274"></a>
+<span class="sourceLineNo">275</span>          Bytes.compareTo(kv.getRowArray(), kv.getRowOffset(), kv.getRowLength(),<a name="line.275"></a>
+<span class="sourceLineNo">276</span>              startRow, 0, startRow.length) &lt; 0) {<a name="line.276"></a>
+<span class="sourceLineNo">277</span>        continue;<a name="line.277"></a>
+<span class="sourceLineNo">278</span>      }<a name="line.278"></a>
+<span class="sourceLineNo">279</span><a name="line.279"></a>
+<span class="sourceLineNo">280</span>      // In this unit test the end row is always inclusive.<a name="line.280"></a>
+<span class="sourceLineNo">281</span>      if (endRow.length &gt; 0 &amp;&amp;<a name="line.281"></a>
+<span class="sourceLineNo">282</span>          Bytes.compareTo(kv.getRowArray(), kv.getRowOffset(), kv.getRowLength(),<a name="line.282"></a>
+<span class="sourceLineNo">283</span>              endRow, 0, endRow.length) &gt; 0) {<a name="line.283"></a>
+<span class="sourceLineNo">284</span>        continue;<a name="line.284"></a>
+<span class="sourceLineNo">285</span>      }<a name="line.285"></a>
+<span class="sourceLineNo">286</span><a name="line.286"></a>
+<span class="sourceLineNo">287</span>      if (!qualSet.isEmpty() &amp;&amp; (!CellUtil.matchingFamily(kv, FAMILY_BYTES)<a name="line.287"></a>
+<span class="sourceLineNo">288</span>          || !qualSet.contains(Bytes.toString(CellUtil.cloneQualifier(kv))))) {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>        continue;<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>      final String rowColStr =<a name="line.292"></a>
+<span class="sourceLineNo">293</span>        Bytes.toStringBinary(CellUtil.cloneRow(kv)) + "/"<a name="line.293"></a>
+<span class="sourceLineNo">294</span>            + Bytes.toStringBinary(CellUtil.cloneFamily(kv)) + ":"<a name="line.294"></a>
+<span class="sourceLineNo">295</span>            + Bytes.toStringBinary(CellUtil.cloneQualifier(kv));<a name="line.295"></a>
+<span class="sourceLineNo">296</span>      final Integer curNumVer = verCount.get(rowColStr);<a name="line.296"></a>
+<span class="sourceLineNo">297</span>      final int newNumVer = curNumVer != null ? (curNumVer + 1) : 1;<a name="line.297"></a>
+<span class="sourceLineNo">298</span>      if (newNumVer &lt;= maxVersions) {<a name="line.298"></a>
+<span class="sourceLineNo">299</span>        filteredKVs.add(kv);<a name="line.299"></a>
+<span class="sourceLineNo">300</span>        verCount.put(rowColStr, newNumVer);<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>  private void prepareExpectedKVs(long latestDelTS) {<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    final List&lt;Cell&gt; filteredKVs = new ArrayList&lt;&gt;();<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    for (Cell kv : expectedKVs) {<a name="line.306"></a>
-<span class="sourceLineNo">307</span>      if (kv.getTimestamp() &gt; latestDelTS || latestDelTS == -1) {<a name="line.307"></a>
-<span class="sourceLineNo">308</span>        filteredKVs.add(kv);<a name="line.308"></a>
-<span class="sourceLineNo">309</span>      }<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    }<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    expectedKVs = filteredKVs;<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    Collections.sort(expectedKVs, CellComparatorImpl.COMPARATOR);<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>  public void put(String qual, long ts) {<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    if (!putTimestamps.contains(ts)) {<a name="line.316"></a>
-<span class="sourceLineNo">317</span>      put.addColumn(FAMILY_BYTES, Bytes.toBytes(qual), ts, createValue(ts));<a name="line.317"></a>
-<span class="sourceLineNo">318</span>      putTimestamps.add(ts);<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    }<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    if (VERBOSE) {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>      LOG.info("put: row " + Bytes.toStringBinary(put.getRow())<a name="line.321"></a>
-<span class="sourceLineNo">322</span>          + ", cf " + FAMILY + ", qualifier " + qual + ", ts " + ts);<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    }<a name="line.323"></a>
-<span class="sourceLineNo">324</span>  }<a name="line.324"></a>
-<span class="sourceLineNo">325</span><a name="line.325"></a>
-<span class="sourceLineNo">326</span>  private byte[] createValue(long ts) {<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    return Bytes.toBytes("value" + ts);<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>  public void delAtTimestamp(String qual, long ts) {<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    del.addColumn(FAMILY_BYTES, Bytes.toBytes(qual), ts);<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    logDelete(qual, ts, "at");<a name="line.332"></a>
-<span class="sourceLineNo">333</span>  }<a name="line.333"></a>
-<span class="sourceLineNo">334</span><a name="line.334"></a>
-<span class="sourceLineNo">335</span>  private void logDelete(String qual, long ts, String delType) {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    if (VERBOSE) {<a name="line.336"></a>
-<span class="sourceLineNo">337</span>      LOG.info("del " + delType + ": row "<a name="line.337"></a>
-<span class="sourceLineNo">338</span>          + Bytes.toStringBinary(put.getRow()) + ", cf " + FAMILY<a name="line.338"></a>
-<span class="sourceLineNo">339</span>          + ", qualifier " + qual + ", ts " + ts);<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><a name="line.342"></a>
-<span class="sourceLineNo">343</span>  private void delUpToTimestamp(String qual, long upToTS) {<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    del.addColumns(FAMILY_BYTES, Bytes.toBytes(qual), upToTS);<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    logDelete(qual, upToTS, "up to and including");<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>
-<span class="sourceLineNo">348</span>  private long randLong(long n) {<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    long l = rand.nextLong();<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    if (l == Long.MIN_VALUE)<a name="line.350"></a>
-<span class="sourceLineNo">351</span>      l = Long.MAX_VALUE;<a name="line.351"></a>
-<span class="sourceLineNo">352</span>    return Math.abs(l) % n;<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 long randBetween(long a, long b) {<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    long x = a + randLong(b - a + 1);<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    assertTrue(a &lt;= x &amp;&amp; x &lt;= b);<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    return x;<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>  private final String rowStr(int i) {<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    return ("row" + i).intern();<a name="line.362"></a>
-<span class="sourceLineNo">363</span>  }<a name="line.363"></a>
-<span class="sourceLineNo">364</span><a name="line.364"></a>
-<span class="sourceLineNo">365</span>  private final byte[] rowBytes(int i) {<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    if (i == -1) {<a name="line.366"></a>
-<span class="sourceLineNo">367</span>      return HConstants.EMPTY_BYTE_ARRAY;<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    }<a name="line.368"></a>
-<span class="sourceLineNo">369</span>    return Bytes.toBytes(rowStr(i));<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>  private final String getQualStr(int i) {<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    return ("qual" + i).intern();<a name="line.373"></a>
-<span class="sourceLineNo">374</span>  }<a name="line.374"></a>
-<span class="sourceLineNo">375</span><a name="line.375"></a>
-<span class="sourceLineNo">376</span>  public void createTimestampRange(long minTS, long maxTS,<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      long deleteUpToTS) throws IOException {<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    assertTrue(minTS &lt; maxTS);<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    assertTrue(deleteUpToTS == -1<a name="line.379"></a>
-<span class="sourceLineNo">380</span>        || (minTS &lt;= deleteUpToTS &amp;&amp; deleteUpToTS &lt;= maxTS));<a name="line.380"></a>
-<span class="sourceLineNo">381</span><a name="line.381"></a>
-<span class="sourceLineNo">382</span>    for (int iRow = 0; iRow &lt; NUM_ROWS; ++iRow) {<a name="line.382"></a>
-<span class="sourceLineNo">383</span>      final String row = rowStr(iRow);<a name="line.383"></a>
-<span class="sourceLineNo">384</span>      final byte[] rowBytes = Bytes.toBytes(row);<a name="line.384"></a>
-<span class="sourceLineNo">385</span>      for (int iCol = 0; iCol &lt; NUM_COLS; ++iCol) {<a name="line.385"></a>
-<span class="sourceLineNo">386</span>        final String qual = getQualStr(iCol);<a name="line.386"></a>
-<span class="sourceLineNo">387</span>        final byte[] qualBytes = Bytes.toBytes(qual);<a name="line.387"></a>
-<span class="sourceLineNo">388</span>        put = new Put(rowBytes);<a name="line.388"></a>
-<span class="sourceLineNo">389</span><a name="line.389"></a>
-<span class="sourceLineNo">390</span>        putTimestamps.clear();<a name="line.390"></a>
-<span class="sourceLineNo">391</span>        put(qual, minTS);<a name="line.391"></a>
-<span class="sourceLineNo">392</span>        put(qual, maxTS);<a name="line.392"></a>
-<span class="sourceLineNo">393</span>        for (int i = 0; i &lt; PUTS_PER_ROW_COL; ++i) {<a name="line.393"></a>
-<span class="sourceLineNo">394</span>          put(qual, randBetween(minTS, maxTS));<a name="line.394"></a>
-<span class="sourceLineNo">395</span>        }<a name="line.395"></a>
-<span class="sourceLineNo">396</span><a name="line.396"></a>
-<span class="sourceLineNo">397</span>        long[] putTimestampList = new long[putTimestamps.size()];<a name="line.397"></a>
-<span class="sourceLineNo">398</span>        {<a name="line.398"></a>
-<span class="sourceLineNo">399</span>          int i = 0;<a name="line.399"></a>
-<span class="sourceLineNo">400</span>          for (long ts : putTimestamps) {<a name="line.400"></a>
-<span class="sourceLineNo">401</span>            putTimestampList[i++] = ts;<a name="line.401"></a>
-<span class="sourceLineNo">402</span>          }<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>        // Delete a predetermined number of particular timestamps<a name="line.405"></a>
-<span class="sourceLineNo">406</span>        delTimestamps.clear();<a name="line.406"></a>
-<span class="sourceLineNo">407</span>        assertTrue(putTimestampList.length &gt;= DELETES_PER_ROW_COL);<a name="line.407"></a>
-<span class="sourceLineNo">408</span>        int numToDel = DELETES_PER_ROW_COL;<a name="line.408"></a>
-<span class="sourceLineNo">409</span>        int tsRemaining = putTimestampList.length;<a name="line.409"></a>
-<span class="sourceLineNo">410</span>        del = new Delete(rowBytes);<a name="line.410"></a>
-<span class="sourceLineNo">411</span>        for (long ts : putTimestampList) {<a name="line.411"></a>
-<span class="sourceLineNo">412</span>          if (rand.nextInt(tsRemaining) &lt; numToDel) {<a name="line.412"></a>
-<span class="sourceLineNo">413</span>            delAtTimestamp(qual, ts);<a name="line.413"></a>
-<span class="sourceLineNo">414</span>            putTimestamps.remove(ts);<a name="line.414"></a>
-<span class="sourceLineNo">415</span>            --numToDel;<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>          if (--tsRemaining == 0) {<a name="line.418"></a>
-<span class="sourceLineNo">419</span>            break;<a name="line.419"></a>
-<span class="sourceLineNo">420</span>          }<a name="line.420"></a>
-<span class="sourceLineNo">421</span>        }<a name="line.421"></a>
-<span class="sourceLineNo">422</span><a name="line.422"></a>
-<span class="sourceLineNo">423</span>        // Another type of delete: everything up to the given timestamp.<a name="line.423"></a>
-<span class="sourceLineNo">424</span>        if (deleteUpToTS != -1) {<a name="line.424"></a>
-<span class="sourceLineNo">425</span>          delUpToTimestamp(qual, deleteUpToTS);<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>        region.put(put);<a name="line.428"></a>
-<span class="sourceLineNo">429</span>        if (!del.isEmpty()) {<a name="line.429"></a>
-<span class="sourceLineNo">430</span>          region.delete(del);<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>        // Add remaining timestamps (those we have not deleted) to expected<a name="line.433"></a>
-<span class="sourceLineNo">434</span>        // results<a name="line.434"></a>
-<span class="sourceLineNo">435</span>        for (long ts : putTimestamps) {<a name="line.435"></a>
-<span class="sourceLineNo">436</span>          expectedKVs.add(new KeyValue(rowBytes, FAMILY_BYTES, qualBytes, ts,<a name="line.436"></a>
-<span class="sourceLineNo">437</span>              KeyValue.Type.Put));<a name="line.437"></a>
-<span class="sourceLineNo">438</span>        }<a name="line.438"></a>
-<span class="sourceLineNo">439</span>      }<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    }<a name="line.440"></a>
-<span class="sourceLineNo">441</span><a name="line.441"></a>
-<span class="sourceLineNo">442</span>    region.flush(true);<a name="line.442"></a>
-<span class="sourceLineNo">443</span>  }<a name="line.443"></a>
+<span class="sourceLineNo">304</span>    return filteredKVs;<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>  private void prepareExpectedKVs(long latestDelTS) {<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    final List&lt;Cell&gt; filteredKVs = new ArrayList&lt;&gt;();<a name="line.308"></a>
+<span class="sourceLineNo">309</span>    for (Cell kv : expectedKVs) {<a name="line.309"></a>
+<span class="sourceLineNo">310</span>      if (kv.getTimestamp() &gt; latestDelTS || latestDelTS == -1) {<a name="line.310"></a>
+<span class="sourceLineNo">311</span>        filteredKVs.add(kv);<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>    expectedKVs = filteredKVs;<a name="line.314"></a>
+<span class="sourceLineNo">315</span>    Collections.sort(expectedKVs, CellComparatorImpl.COMPARATOR);<a name="line.315"></a>
+<span class="sourceLineNo">316</span>  }<a name="line.316"></a>
+<span class="sourceLineNo">317</span><a name="line.317"></a>
+<span class="sourceLineNo">318</span>  public void put(String qual, long ts) {<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    if (!putTimestamps.contains(ts)) {<a name="line.319"></a>
+<span class="sourceLineNo">320</span>      put.addColumn(FAMILY_BYTES, Bytes.toBytes(qual), ts, createValue(ts));<a name="line.320"></a>
+<span class="sourceLineNo">321</span>      putTimestamps.add(ts);<a name="line.321"></a>
+<span class="sourceLineNo">322</span>    }<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    if (VERBOSE) {<a name="line.323"></a>
+<span class="sourceLineNo">324</span>      LOG.info("put: row " + Bytes.toStringBinary(put.getRow())<a name="line.324"></a>
+<span class="sourceLineNo">325</span>          + ", cf " + FAMILY + ", qualifier " + qual + ", ts " + ts);<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    }<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>  private byte[] createValue(long ts) {<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    return Bytes.toBytes("value" + ts);<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>  public void delAtTimestamp(String qual, long ts) {<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    del.addColumn(FAMILY_BYTES, Bytes.toBytes(qual), ts);<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    logDelete(qual, ts, "at");<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>  private void logDelete(String qual, long ts, String delType) {<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    if (VERBOSE) {<a name="line.339"></a>
+<span class="sourceLineNo">340</span>      LOG.info("del " + delType + ": row "<a name="line.340"></a>
+<span class="sourceLineNo">341</span>          + Bytes.toStringBinary(put.getRow()) + ", cf " + FAMILY<a name="line.341"></a>
+<span class="sourceLineNo">342</span>          + ", qualifier " + qual + ", ts " + ts);<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    }<a name="line.343"></a>
+<span class="sourceLineNo">344</span>  }<a name="line.344"></a>
+<span class="sourceLineNo">345</span><a name="line.345"></a>
+<span class="sourceLineNo">346</span>  private void delUpToTimestamp(String qual, long upToTS) {<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    del.addColumns(FAMILY_BYTES, Bytes.toBytes(qual), upToTS);<a name="line.347"></a>
+<span class="sourceLineNo">348</span>    logDelete(qual, upToTS, "up to and including");<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 long randLong(long n) {<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    long l = rand.nextLong();<a name="line.352"></a>
+<span class="sourceLineNo">353</span>    if (l == Long.MIN_VALUE)<a name="line.353"></a>
+<span class="sourceLineNo">354</span>      l = Long.MAX_VALUE;<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    return Math.abs(l) % n;<a name="line.355"></a>
+<span class="sourceLineNo">356</span>  }<a name="line.356"></a>
+<span class="sourceLineNo">357</span><a name="line.357"></a>
+<span class="sourceLineNo">358</span>  private long randBetween(long a, long b) {<a name="line.358"></a>
+<span class="sourceLineNo">359</span>    long x = a + randLong(b - a + 1);<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    assertTrue(a &lt;= x &amp;&amp; x &lt;= b);<a name="line.360"></a>
+<span class="sourceLineNo">361</span>    return x;<a name="line.361"></a>
+<span class="sourceLineNo">362</span>  }<a name="line.362"></a>
+<span class="sourceLineNo">363</span><a name="line.363"></a>
+<span class="sourceLineNo">364</span>  private final String rowStr(int i) {<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    return ("row" + i).intern();<a name="line.365"></a>
+<span class="sourceLineNo">366</span>  }<a name="line.366"></a>
+<span class="sourceLineNo">367</span><a name="line.367"></a>
+<span class="sourceLineNo">368</span>  private final byte[] rowBytes(int i) {<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    if (i == -1) {<a name="line.369"></a>
+<span class="sourceLineNo">370</span>      return HConstants.EMPTY_BYTE_ARRAY;<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    }<a name="line.371"></a>
+<span class="sourceLineNo">372</span>    return Bytes.toBytes(rowStr(i));<a name="line.372"></a>
+<span class="sourceLineNo">373</span>  }<a name="line.373"></a>
+<span class="sourceLineNo">374</span><a name="line.374"></a>
+<span class="sourceLineNo">375</span>  private final String getQualStr(int i) {<a name="line.375"></a>
+<span class="sourceLineNo">376</span>    return ("qual" + i).intern();<a name="line.376"></a>
+<span class="sourceLineNo">377</span>  }<a name="line.377"></a>
+<span class="sourceLineNo">378</span><a name="line.378"></a>
+<span class="sourceLineNo">379</span>  public void createTimestampRange(long minTS, long maxTS,<a name="line.379"></a>
+<span class="sourceLineNo">380</span>      long deleteUpToTS) throws IOException {<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    assertTrue(minTS &lt; maxTS);<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    assertTrue(deleteUpToTS == -1<a name="line.382"></a>
+<span class="sourceLineNo">383</span>        || (minTS &lt;= deleteUpToTS &amp;&amp; deleteUpToTS &lt;= maxTS));<a name="line.383"></a>
+<span class="sourceLineNo">384</span><a name="line.384"></a>
+<span class="sourceLineNo">385</span>    for (int iRow = 0; iRow &lt; NUM_ROWS; ++iRow) {<a name="line.385"></a>
+<span class="sourceLineNo">386</span>      final String row = rowStr(iRow);<a name="line.386"></a>
+<span class="sourceLineNo">387</span>      final byte[] rowBytes = Bytes.toBytes(row);<a name="line.387"></a>
+<span class="sourceLineNo">388</span>      for (int iCol = 0; iCol &lt; NUM_COLS; ++iCol) {<a name="line.388"></a>
+<span class="sourceLineNo">389</span>        final String qual = getQualStr(iCol);<a name="line.389"></a>
+<span class="sourceLineNo">390</span>        final byte[] qualBytes = Bytes.toBytes(qual);<a name="line.390"></a>
+<span class="sourceLineNo">391</span>        put = new Put(rowBytes);<a name="line.391"></a>
+<span class="sourceLineNo">392</span><a name="line.392"></a>
+<span class="sourceLineNo">393</span>        putTimestamps.clear();<a name="line.393"></a>
+<span class="sourceLineNo">394</span>        put(qual, minTS);<a name="line.394"></a>
+<span class="sourceLineNo">395</span>        put(qual, maxTS);<a name="line.395"></a>
+<span class="sourceLineNo">396</span>        for (int i = 0; i &lt; PUTS_PER_ROW_COL; ++i) {<a name="line.396"></a>
+<span class="sourceLineNo">397</span>          put(qual, randBetween(minTS, maxTS));<a name="line.397"></a>
+<span class="sourceLineNo">398</span>        }<a name="line.398"></a>
+<span class="sourceLineNo">399</span><a name="line.399"></a>
+<span class="sourceLineNo">400</span>        long[] putTimestampList = new long[putTimestamps.size()];<a name="line.400"></a>
+<span class="sourceLineNo">401</span>        {<a name="line.401"></a>
+<span class="sourceLineNo">402</span>          int i = 0;<a name="line.402"></a>
+<span class="sourceLineNo">403</span>          for (long ts : putTimestamps) {<a name="line.403"></a>
+<span class="sourceLineNo">404</span>            putTimestampList[i++] = ts;<a name="line.404"></a>
+<span class="sourceLineNo">405</span>          }<a name="line.405"></a>
+<span class="sourceLineNo">406</span>        }<a name="line.406"></a>
+<span class="sourceLineNo">407</span><a name="line.407"></a>
+<span class="sourceLineNo">408</span>        // Delete a predetermined number of particular timestamps<a name="line.408"></a>
+<span class="sourceLineNo">409</span>        delTimestamps.clear();<a name="line.409"></a>
+<span class="sourceLineNo">410</span>        assertTrue(putTimestampList.length &gt;= DELETES_PER_ROW_COL);<a name="line.410"></a>
+<span class="sourceLineNo">411</span>        int numToDel = DELETES_PER_ROW_COL;<a name="line.411"></a>
+<span class="sourceLineNo">412</span>        int tsRemaining = putTimestampList.length;<a name="line.412"></a>
+<span class="sourceLineNo">413</span>        del = new Delete(rowBytes);<a name="line.413"></a>
+<span class="sourceLineNo">414</span>        for (long ts : putTimestampList) {<a name="line.414"></a>
+<span class="sourceLineNo">415</span>          if (rand.nextInt(tsRemaining) &lt; numToDel) {<a name="line.415"></a>
+<span class="sourceLineNo">416</span>            delAtTimestamp(qual, ts);<a name="line.416"></a>
+<span class="sourceLineNo">417</span>            putTimestamps.remove(ts);<a name="line.417"></a>
+<span class="sourceLineNo">418</span>            --numToDel;<a name="line.418"></a>
+<span class="sourceLineNo">419</span>          }<a name="line.419"></a>
+<span class="sourceLineNo">420</span><a name="line.420"></a>
+<span class="sourceLineNo">421</span>          if (--tsRemaining == 0) {<a name="line.421"></a>
+<span class="sourceLineNo">422</span>            break;<a name="line.422"></a>
+<span class="sourceLineNo">423</span>          }<a name="line.423"></a>
+<span class="sourceLineNo">424</span>        }<a name="line.424"></a>
+<span class="sourceLineNo">425</span><a name="line.425"></a>
+<span class="sourceLineNo">426</span>        // Another type of delete: everything up to the given timestamp.<a name="line.426"></a>
+<span class="sourceLineNo">427</span>        if (deleteUpToTS != -1) {<a name="line.427"></a>
+<span class="sourceLineNo">428</span>          delUpToTimestamp(qual, deleteUpToTS);<a name="line.428"></a>
+<span class="sourceLineNo">429</span>        }<a name="line.429"></a>
+<span class="sourceLineNo">430</span><a name="line.430"></a>
+<span class="sourceLineNo">431</span>        region.put(put);<a name="line.431"></a>
+<span class="sourceLineNo">432</span>        if (!del.isEmpty()) {<a name="line.432"></a>
+<span class="sourceLineNo">433</span>          region.delete(del);<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>        // Add remaining timestamps (those we have not deleted) to expected<a name="line.436"></a>
+<span class="sourceLineNo">437</span>        // results<a name="line.437"></a>
+<span class="sourceLineNo">438</span>        for (long ts : putTimestamps) {<a name="line.438"></a>
+<span class="sourceLineNo">439</span>          expectedKVs.add(new KeyValue(rowBytes, FAMILY_BYTES, qualBytes, ts,<a name="line.439"></a>
+<span class="sourceLineNo">440</span>              KeyValue.Type.Put));<a name="line.440"></a>
+<span class="sourceLineNo">441</span>        }<a name="line.441"></a>
+<span class="sourceLineNo">442</span>      }<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>  @After<a name="line.445"></a>
-<span class="sourceLineNo">446</span>  public void tearDown() throws IOException {<a name="line.446"></a>
-<span class="sourceLineNo">447</span>    if (region != null) {<a name="line.447"></a>
-<span class="sourceLineNo">448</span>      HBaseTestingUtility.closeRegionAndWAL(region);<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>    // We have to re-set the lazy seek flag back to the default so that other<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    // unit tests are not affected.<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    StoreScanner.enableLazySeekGlobally(<a name="line.453"></a>
-<span class="sourceLineNo">454</span>        StoreScanner.LAZY_SEEK_ENABLED_BY_DEFAULT);<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><a name="line.457"></a>
-<span class="sourceLineNo">458</span>  public void assertKVListsEqual(String additionalMsg,<a name="line.458"></a>
-<span class="sourceLineNo">459</span>      final List&lt;? extends Cell&gt; expected,<a name="line.459"></a>
-<span class="sourceLineNo">460</span>      final List&lt;? extends Cell&gt; actual) {<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    final int eLen = expected.size();<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    final int aLen = actual.size();<a name="line.462"></a>
-<span class="sourceLineNo">463</span>    final int minLen = Math.min(eLen, aLen);<a name="line.463"></a>
-<span class="sourceLineNo">464</span><a name="line.464"></a>
-<span class="sourceLineNo">465</span>    int i;<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    for (i = 0; i &lt; minLen<a name="line.466"></a>
-<span class="sourceLineNo">467</span>        &amp;&amp; PrivateCellUtil.compareKeyIgnoresMvcc(CellComparatorImpl.COMPARATOR, expected.get(i),<a name="line.467"></a>
-<span class="sourceLineNo">468</span>          actual.get(i)) == 0; ++i) {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    }<a name="line.469"></a>
-<span class="sourceLineNo">470</span><a name="line.470"></a>
-<span class="sourceLineNo">471</span>    if (additionalMsg == null) {<a name="line.471"></a>
-<span class="sourceLineNo">472</span>      additionalMsg = "";<a name="line.472"></a>
-<span class="sourceLineNo">473</span>    }<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    if (!additionalMsg.isEmpty()) {<a name="line.474"></a>
-<span class="sourceLineNo">475</span>      additionalMsg = ". " + additionalMsg;<a name="line.475"></a>
+<span class="sourceLineNo">445</span>    region.flush(true);<a name="line.445"></a>
+<span class="sourceLineNo">446</span>  }<a name="line.446"></a>
+<span class="sourceLineNo">447</span><a name="line.447"></a>
+<span class="sourceLineNo">448</span>  @After<a name="line.448"></a>
+<span class="sourceLineNo">449</span>  public void tearDown() throws IOException {<a name="line.449"></a>
+<span class="sourceLineNo">450</span>    if (region != null) {<a name="line.450"></a>
+<span class="sourceLineNo">451</span>      HBaseTestingUtility.closeRegionAndWAL(region);<a name="line.451"></a>
+<span class="sourceLineNo">452</span>    }<a name="line.452"></a>
+<span class="sourceLineNo">453</span><a name="line.453"></a>
+<span class="sourceLineNo">454</span>    // We have to re-set the lazy seek flag back to the default so that other<a name="line.454"></a>
+<span class="sourceLineNo">455</span>    // unit tests are not affected.<a name="line.455"></a>
+<span class="sourceLineNo">456</span>    StoreScanner.enableLazySeekGlobally(<a name="line.456"></a>
+<span class="sourceLineNo">457</span>        StoreScanner.LAZY_SEEK_ENABLED_BY_DEFAULT);<a name="line.457"></a>
+<span class="sourceLineNo">458</span>  }<a name="line.458"></a>
+<span class="sourceLineNo">459</span><a name="line.459"></a>
+<span class="sourceLineNo">460</span><a name="line.460"></a>
+<span class="sourceLineNo">461</span>  public void assertKVListsEqual(String additionalMsg,<a name="line.461"></a>
+<span class="sourceLineNo">462</span>      final List&lt;? extends Cell&gt; expected,<a name="line.462"></a>
+<span class="sourceLineNo">463</span>      final List&lt;? extends Cell&gt; actual) {<a name="line.463"></a>
+<span class="sourceLineNo">464</span>    final int eLen = expected.size();<a name="line.464"></a>
+<span class="sourceLineNo">465</span>    final int aLen = actual.size();<a name="line.465"></a>
+<span class="sourceLineNo">466</span>    final int minLen = Math.min(eLen, aLen);<a name="line.466"></a>
+<span class="sourceLineNo">467</span><a name="line.467"></a>
+<span class="sourceLineNo">468</span>    int i;<a name="line.468"></a>
+<span class="sourceLineNo">469</span>    for (i = 0; i &lt; minLen<a name="line.469"></a>
+<span class="sourceLineNo">470</span>        &amp;&amp; PrivateCellUtil.compareKeyIgnoresMvcc(CellComparatorImpl.COMPARATOR, expected.get(i),<a name="line.470"></a>
+<span class="sourceLineNo">471</span>          actual.get(i)) == 0; ++i) {<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>    if (additionalMsg == null) {<a name="line.474"></a>
+<span class="sourceLineNo">475</span>      additionalMsg = "";<a name="line.475"></a>
 <span class="sourceLineNo">476</span>    }<a name="line.476"></a>
-<span class="sourceLineNo">477</span><a name="line.477"></a>
-<span class="sourceLineNo">478</span>    if (eLen != aLen || i != minLen) {<a name="line.478"></a>
-<span class="sourceLineNo">479</span>      throw new AssertionError(<a name="line.479"></a>
-<span class="sourceLineNo">480</span>          "Expected and actual KV arrays differ at position " + i + ": " +<a name="line.480"></a>
-<span class="sourceLineNo">481</span>          HBaseTestingUtility.safeGetAsStr(expected, i) + " (length " + eLen +") vs. " +<a name="line.481"></a>
-<span class="sourceLineNo">482</span>          HBaseTestingUtility.safeGetAsStr(actual, i) + " (length " + aLen + ")" + additionalMsg);<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><a name="line.485"></a>
-<span class="sourceLineNo">486</span>}<a name="line.486"></a>
-<span class="sourceLineNo">487</span><a name="line.487"></a>
+<span class="sourceLineNo">477</span>    if (!additionalMsg.isEmpty()) {<a name="line.477"></a>
+<span class="sourceLineNo">478</span>      additionalMsg = ". " + additionalMsg;<a name="line.478"></a>
+<span class="sourceLineNo">479</span>    }<a name="line.479"></a>
+<span class="sourceLineNo">480</span><a name="line.480"></a>
+<span class="sourceLineNo">481</span>    if (eLen != aLen || i != minLen) {<a name="line.481"></a>
+<span class="sourceLineNo">482</span>      throw new AssertionError(<a name="line.482"></a>
+<span class="sourceLineNo">483</span>          "Expected and actual KV arrays differ at position " + i + ": " +<a name="line.483"></a>
+<span class="sourceLineNo">484</span>          HBaseTestingUtility.safeGetAsStr(expected, i) + " (length " + eLen +") vs. " +<a name="line.484"></a>
+<span class="sourceLineNo">485</span>          HBaseTestingUtility.safeGetAsStr(actual, i) + " (length " + aLen + ")" + additionalMsg);<a name="line.485"></a>
+<span class="sourceLineNo">486</span>    }<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>}<a name="line.489"></a>
+<span class="sourceLineNo">490</span><a name="line.490"></a>
 
 
 


[13/43] hbase-site git commit: Published site at 7ab77518a2569e2416a50020393aa386e7734501.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/testdevapidocs/constant-values.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/constant-values.html b/testdevapidocs/constant-values.html
index ccebbfe..b4c3326 100644
--- a/testdevapidocs/constant-values.html
+++ b/testdevapidocs/constant-values.html
@@ -9055,62 +9055,69 @@
 <td class="colLast"><code>"bf"</code></td>
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.regionserver.CreateRandomStoreFile.BLOOM_FILTER_PARAM_OPTION">
+<!--   -->
+</a><code>private&nbsp;static&nbsp;final&nbsp;<a href="https://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/regionserver/CreateRandomStoreFile.html#BLOOM_FILTER_PARAM_OPTION">BLOOM_FILTER_PARAM_OPTION</a></code></td>
+<td class="colLast"><code>"bfp"</code></td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.regionserver.CreateRandomStoreFile.COMPRESSION_OPTION">
 <!--   -->
 </a><code>private&nbsp;static&nbsp;final&nbsp;<a href="https://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/regionserver/CreateRandomStoreFile.html#COMPRESSION_OPTION">COMPRESSION_OPTION</a></code></td>
 <td class="colLast"><code>"c"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.regionserver.CreateRandomStoreFile.EXIT_FAILURE">
 <!--   -->
 </a><code>private&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code><a href="org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.html#EXIT_FAILURE">EXIT_FAILURE</a></code></td>
 <td class="colLast"><code>1</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.regionserver.CreateRandomStoreFile.HFILE_VERSION_OPTION">
 <!--   -->
 </a><code>private&nbsp;static&nbsp;final&nbsp;<a href="https://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/regionserver/CreateRandomStoreFile.html#HFILE_VERSION_OPTION">HFILE_VERSION_OPTION</a></code></td>
 <td class="colLast"><code>"h"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.regionserver.CreateRandomStoreFile.INDEX_BLOCK_SIZE_OPTION">
 <!--   -->
 </a><code>private&nbsp;static&nbsp;final&nbsp;<a href="https://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/regionserver/CreateRandomStoreFile.html#INDEX_BLOCK_SIZE_OPTION">INDEX_BLOCK_SIZE_OPTION</a></code></td>
 <td class="colLast"><code>"ibs"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.regionserver.CreateRandomStoreFile.KEY_SIZE_OPTION">
 <!--   -->
 </a><code>private&nbsp;static&nbsp;final&nbsp;<a href="https://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/regionserver/CreateRandomStoreFile.html#KEY_SIZE_OPTION">KEY_SIZE_OPTION</a></code></td>
 <td class="colLast"><code>"k"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.regionserver.CreateRandomStoreFile.LEN_VARIATION">
 <!--   -->
 </a><code>private&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code><a href="org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.html#LEN_VARIATION">LEN_VARIATION</a></code></td>
 <td class="colLast"><code>5</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.regionserver.CreateRandomStoreFile.NUM_KV_OPTION">
 <!--   -->
 </a><code>private&nbsp;static&nbsp;final&nbsp;<a href="https://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/regionserver/CreateRandomStoreFile.html#NUM_KV_OPTION">NUM_KV_OPTION</a></code></td>
 <td class="colLast"><code>"n"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.regionserver.CreateRandomStoreFile.OUTPUT_DIR_OPTION">
 <!--   -->
 </a><code>private&nbsp;static&nbsp;final&nbsp;<a href="https://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/regionserver/CreateRandomStoreFile.html#OUTPUT_DIR_OPTION">OUTPUT_DIR_OPTION</a></code></td>
 <td class="colLast"><code>"o"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.regionserver.CreateRandomStoreFile.VALUE_SIZE_OPTION">
 <!--   -->
 </a><code>private&nbsp;static&nbsp;final&nbsp;<a href="https://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>
@@ -10306,6 +10313,74 @@
 </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.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html" title="class in org.apache.hadoop.hbase.regionserver">TestRowPrefixBloomFilter</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.regionserver.TestRowPrefixBloomFilter.BLOCKSIZE_SMALL">
+<!--   -->
+</a><code>private&nbsp;static&nbsp;final&nbsp;int</code></td>
+<td><code><a href="org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#BLOCKSIZE_SMALL">BLOCKSIZE_SMALL</a></code></td>
+<td class="colLast"><code>8192</code></td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.regionserver.TestRowPrefixBloomFilter.CKBYTES">
+<!--   -->
+</a><code>private&nbsp;static&nbsp;final&nbsp;int</code></td>
+<td><code><a href="org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#CKBYTES">CKBYTES</a></code></td>
+<td class="colLast"><code>512</code></td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.regionserver.TestRowPrefixBloomFilter.delimiter">
+<!--   -->
+</a><code>private&nbsp;static&nbsp;final&nbsp;<a href="https://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/regionserver/TestRowPrefixBloomFilter.html#delimiter">delimiter</a></code></td>
+<td class="colLast"><code>"#"</code></td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.regionserver.TestRowPrefixBloomFilter.err">
+<!--   -->
+</a><code>private&nbsp;static&nbsp;final&nbsp;float</code></td>
+<td><code><a href="org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#err">err</a></code></td>
+<td class="colLast"><code>0.009999999776482582f</code></td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.regionserver.TestRowPrefixBloomFilter.invalidFormatter">
+<!--   -->
+</a><code>private&nbsp;static&nbsp;final&nbsp;<a href="https://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/regionserver/TestRowPrefixBloomFilter.html#invalidFormatter">invalidFormatter</a></code></td>
+<td class="colLast"><code>"%08d"</code></td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.regionserver.TestRowPrefixBloomFilter.prefixFormatter">
+<!--   -->
+</a><code>private&nbsp;static&nbsp;final&nbsp;<a href="https://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/regionserver/TestRowPrefixBloomFilter.html#prefixFormatter">prefixFormatter</a></code></td>
+<td class="colLast"><code>"%010d"</code></td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.regionserver.TestRowPrefixBloomFilter.prefixLength">
+<!--   -->
+</a><code>private&nbsp;static&nbsp;final&nbsp;int</code></td>
+<td><code><a href="org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#prefixLength">prefixLength</a></code></td>
+<td class="colLast"><code>10</code></td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.regionserver.TestRowPrefixBloomFilter.suffixFormatter">
+<!--   -->
+</a><code>private&nbsp;static&nbsp;final&nbsp;<a href="https://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/regionserver/TestRowPrefixBloomFilter.html#suffixFormatter">suffixFormatter</a></code></td>
+<td class="colLast"><code>"%010d"</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.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRSKilledWhenInitializing.html" title="class in org.apache.hadoop.hbase.regionserver">TestRSKilledWhenInitializing</a></span><span class="tabEnd">&nbsp;</span></caption>
 <tr>
 <th class="colFirst" scope="col">Modifier and Type</th>
@@ -14735,286 +14810,293 @@
 <td class="colLast"><code>"bloom"</code></td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.util.LoadTestTool.OPT_BLOOM_PARAM">
+<!--   -->
+</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/util/LoadTestTool.html#OPT_BLOOM_PARAM">OPT_BLOOM_PARAM</a></code></td>
+<td class="colLast"><code>"bloom_param"</code></td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.util.LoadTestTool.OPT_COLUMN_FAMILIES">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/util/LoadTestTool.html#OPT_COLUMN_FAMILIES">OPT_COLUMN_FAMILIES</a></code></td>
 <td class="colLast"><code>"families"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.util.LoadTestTool.OPT_COMPRESSION">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/util/LoadTestTool.html#OPT_COMPRESSION">OPT_COMPRESSION</a></code></td>
 <td class="colLast"><code>"compression"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.util.LoadTestTool.OPT_DEFERRED_LOG_FLUSH">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/util/LoadTestTool.html#OPT_DEFERRED_LOG_FLUSH">OPT_DEFERRED_LOG_FLUSH</a></code></td>
 <td class="colLast"><code>"deferredlogflush"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.util.LoadTestTool.OPT_DEFERRED_LOG_FLUSH_USAGE">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/util/LoadTestTool.html#OPT_DEFERRED_LOG_FLUSH_USAGE">OPT_DEFERRED_LOG_FLUSH_USAGE</a></code></td>
 <td class="colLast"><code>"Enable deferred log flush."</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.util.LoadTestTool.OPT_ENCRYPTION">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/util/LoadTestTool.html#OPT_ENCRYPTION">OPT_ENCRYPTION</a></code></td>
 <td class="colLast"><code>"encryption"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.util.LoadTestTool.OPT_GENERATOR">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/util/LoadTestTool.html#OPT_GENERATOR">OPT_GENERATOR</a></code></td>
 <td class="colLast"><code>"generator"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.util.LoadTestTool.OPT_GENERATOR_USAGE">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/util/LoadTestTool.html#OPT_GENERATOR_USAGE">OPT_GENERATOR_USAGE</a></code></td>
 <td class="colLast"><code>"The class which generates load for the tool. Any args for this class can be passed as colon separated after class name"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.util.LoadTestTool.OPT_INIT_ONLY">
 <!--   -->
 </a><code>protected&nbsp;static&nbsp;final&nbsp;<a href="https://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/util/LoadTestTool.html#OPT_INIT_ONLY">OPT_INIT_ONLY</a></code></td>
 <td class="colLast"><code>"init_only"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.util.LoadTestTool.OPT_INMEMORY">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/util/LoadTestTool.html#OPT_INMEMORY">OPT_INMEMORY</a></code></td>
 <td class="colLast"><code>"in_memory"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.util.LoadTestTool.OPT_KEY_WINDOW">
 <!--   -->
 </a><code>protected&nbsp;static&nbsp;final&nbsp;<a href="https://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/util/LoadTestTool.html#OPT_KEY_WINDOW">OPT_KEY_WINDOW</a></code></td>
 <td class="colLast"><code>"key_window"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.util.LoadTestTool.OPT_MAX_READ_ERRORS">
 <!--   -->
 </a><code>protected&nbsp;static&nbsp;final&nbsp;<a href="https://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/util/LoadTestTool.html#OPT_MAX_READ_ERRORS">OPT_MAX_READ_ERRORS</a></code></td>
 <td class="colLast"><code>"max_read_errors"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.util.LoadTestTool.OPT_MOB_THRESHOLD">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/util/LoadTestTool.html#OPT_MOB_THRESHOLD">OPT_MOB_THRESHOLD</a></code></td>
 <td class="colLast"><code>"mob_threshold"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.util.LoadTestTool.OPT_MOB_THRESHOLD_USAGE">
 <!--   -->
 </a><code>protected&nbsp;static&nbsp;final&nbsp;<a href="https://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/util/LoadTestTool.html#OPT_MOB_THRESHOLD_USAGE">OPT_MOB_THRESHOLD_USAGE</a></code></td>
 <td class="colLast"><code>"Desired cell size to exceed in bytes that will use the MOB write path"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.util.LoadTestTool.OPT_MULTIGET">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/util/LoadTestTool.html#OPT_MULTIGET">OPT_MULTIGET</a></code></td>
 <td class="colLast"><code>"multiget_batchsize"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.util.LoadTestTool.OPT_MULTIPUT">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/util/LoadTestTool.html#OPT_MULTIPUT">OPT_MULTIPUT</a></code></td>
 <td class="colLast"><code>"multiput"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.util.LoadTestTool.OPT_NUM_KEYS">
 <!--   -->
 </a><code>protected&nbsp;static&nbsp;final&nbsp;<a href="https://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/util/LoadTestTool.html#OPT_NUM_KEYS">OPT_NUM_KEYS</a></code></td>
 <td class="colLast"><code>"num_keys"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.util.LoadTestTool.OPT_NUM_REGIONS_PER_SERVER">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/util/LoadTestTool.html#OPT_NUM_REGIONS_PER_SERVER">OPT_NUM_REGIONS_PER_SERVER</a></code></td>
 <td class="colLast"><code>"num_regions_per_server"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.util.LoadTestTool.OPT_NUM_REGIONS_PER_SERVER_USAGE">
 <!--   -->
 </a><code>protected&nbsp;static&nbsp;final&nbsp;<a href="https://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/util/LoadTestTool.html#OPT_NUM_REGIONS_PER_SERVER_USAGE">OPT_NUM_REGIONS_PER_SERVER_USAGE</a></code></td>
 <td class="colLast"><code>"Desired number of regions per region server. Defaults to 5."</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.util.LoadTestTool.OPT_READ">
 <!--   -->
 </a><code>protected&nbsp;static&nbsp;final&nbsp;<a href="https://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/util/LoadTestTool.html#OPT_READ">OPT_READ</a></code></td>
 <td class="colLast"><code>"read"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.util.LoadTestTool.OPT_READER">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/util/LoadTestTool.html#OPT_READER">OPT_READER</a></code></td>
 <td class="colLast"><code>"reader"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.util.LoadTestTool.OPT_READER_USAGE">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/util/LoadTestTool.html#OPT_READER_USAGE">OPT_READER_USAGE</a></code></td>
 <td class="colLast"><code>"The class for executing the read requests"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.util.LoadTestTool.OPT_REGION_REPLICA_ID">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/util/LoadTestTool.html#OPT_REGION_REPLICA_ID">OPT_REGION_REPLICA_ID</a></code></td>
 <td class="colLast"><code>"region_replica_id"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.util.LoadTestTool.OPT_REGION_REPLICA_ID_USAGE">
 <!--   -->
 </a><code>protected&nbsp;static&nbsp;final&nbsp;<a href="https://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/util/LoadTestTool.html#OPT_REGION_REPLICA_ID_USAGE">OPT_REGION_REPLICA_ID_USAGE</a></code></td>
 <td class="colLast"><code>"Region replica id to do the reads from"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.util.LoadTestTool.OPT_REGION_REPLICATION">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/util/LoadTestTool.html#OPT_REGION_REPLICATION">OPT_REGION_REPLICATION</a></code></td>
 <td class="colLast"><code>"region_replication"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.util.LoadTestTool.OPT_REGION_REPLICATION_USAGE">
 <!--   -->
 </a><code>protected&nbsp;static&nbsp;final&nbsp;<a href="https://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/util/LoadTestTool.html#OPT_REGION_REPLICATION_USAGE">OPT_REGION_REPLICATION_USAGE</a></code></td>
 <td class="colLast"><code>"Desired number of replicas per region"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.util.LoadTestTool.OPT_SKIP_INIT">
 <!--   -->
 </a><code>protected&nbsp;static&nbsp;final&nbsp;<a href="https://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/util/LoadTestTool.html#OPT_SKIP_INIT">OPT_SKIP_INIT</a></code></td>
 <td class="colLast"><code>"skip_init"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.util.LoadTestTool.OPT_START_KEY">
 <!--   -->
 </a><code>protected&nbsp;static&nbsp;final&nbsp;<a href="https://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/util/LoadTestTool.html#OPT_START_KEY">OPT_START_KEY</a></code></td>
 <td class="colLast"><code>"start_key"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.util.LoadTestTool.OPT_TABLE_NAME">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/util/LoadTestTool.html#OPT_TABLE_NAME">OPT_TABLE_NAME</a></code></td>
 <td class="colLast"><code>"tn"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.util.LoadTestTool.OPT_UPDATE">
 <!--   -->
 </a><code>protected&nbsp;static&nbsp;final&nbsp;<a href="https://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/util/LoadTestTool.html#OPT_UPDATE">OPT_UPDATE</a></code></td>
 <td class="colLast"><code>"update"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.util.LoadTestTool.OPT_UPDATER">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/util/LoadTestTool.html#OPT_UPDATER">OPT_UPDATER</a></code></td>
 <td class="colLast"><code>"updater"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.util.LoadTestTool.OPT_UPDATER_USAGE">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/util/LoadTestTool.html#OPT_UPDATER_USAGE">OPT_UPDATER_USAGE</a></code></td>
 <td class="colLast"><code>"The class for executing the update requests"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.util.LoadTestTool.OPT_USAGE_IN_MEMORY">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/util/LoadTestTool.html#OPT_USAGE_IN_MEMORY">OPT_USAGE_IN_MEMORY</a></code></td>
 <td class="colLast"><code>"Tries to keep the HFiles of the CF inmemory as far as possible.  Not guaranteed that reads are always served from inmemory"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.util.LoadTestTool.OPT_USAGE_LOAD">
 <!--   -->
 </a><code>protected&nbsp;static&nbsp;final&nbsp;<a href="https://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/util/LoadTestTool.html#OPT_USAGE_LOAD">OPT_USAGE_LOAD</a></code></td>
 <td class="colLast"><code>"&lt;avg_cols_per_key&gt;:&lt;avg_data_size&gt;[:&lt;#threads=20&gt;]"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.util.LoadTestTool.OPT_USAGE_READ">
 <!--   -->
 </a><code>protected&nbsp;static&nbsp;final&nbsp;<a href="https://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/util/LoadTestTool.html#OPT_USAGE_READ">OPT_USAGE_READ</a></code></td>
 <td class="colLast"><code>"&lt;verify_percent&gt;[:&lt;#threads=20&gt;]"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.util.LoadTestTool.OPT_USAGE_UPDATE">
 <!--   -->
 </a><code>protected&nbsp;static&nbsp;final&nbsp;<a href="https://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/util/LoadTestTool.html#OPT_USAGE_UPDATE">OPT_USAGE_UPDATE</a></code></td>
 <td class="colLast"><code>"&lt;update_percent&gt;[:&lt;#threads=20&gt;][:&lt;#whether to ignore nonce collisions=0&gt;]"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.util.LoadTestTool.OPT_VERBOSE">
 <!--   -->
 </a><code>protected&nbsp;static&nbsp;final&nbsp;<a href="https://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/util/LoadTestTool.html#OPT_VERBOSE">OPT_VERBOSE</a></code></td>
 <td class="colLast"><code>"verbose"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.util.LoadTestTool.OPT_WRITE">
 <!--   -->
 </a><code>protected&nbsp;static&nbsp;final&nbsp;<a href="https://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/util/LoadTestTool.html#OPT_WRITE">OPT_WRITE</a></code></td>
 <td class="colLast"><code>"write"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.util.LoadTestTool.OPT_WRITER">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/util/LoadTestTool.html#OPT_WRITER">OPT_WRITER</a></code></td>
 <td class="colLast"><code>"writer"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.util.LoadTestTool.OPT_WRITER_USAGE">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/util/LoadTestTool.html#OPT_WRITER_USAGE">OPT_WRITER_USAGE</a></code></td>
 <td class="colLast"><code>"The class for executing the write requests"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.util.LoadTestTool.OPT_ZK_PARENT_NODE">
 <!--   -->
 </a><code>protected&nbsp;static&nbsp;final&nbsp;<a href="https://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/util/LoadTestTool.html#OPT_ZK_PARENT_NODE">OPT_ZK_PARENT_NODE</a></code></td>
 <td class="colLast"><code>"zk_root"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.util.LoadTestTool.OPT_ZK_QUORUM">
 <!--   -->
 </a><code>protected&nbsp;static&nbsp;final&nbsp;<a href="https://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>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/testdevapidocs/index-all.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/index-all.html b/testdevapidocs/index-all.html
index ab1de8e..55cde7a 100644
--- a/testdevapidocs/index-all.html
+++ b/testdevapidocs/index-all.html
@@ -2695,6 +2695,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestHStoreFile.html#BLOCKSIZE_SMALL">BLOCKSIZE_SMALL</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestHStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">TestHStoreFile</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#BLOCKSIZE_SMALL">BLOCKSIZE_SMALL</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html" title="class in org.apache.hadoop.hbase.regionserver">TestRowPrefixBloomFilter</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/hfile/TestCacheOnWrite.CacheOnWriteType.html#blockType1">blockType1</a></span> - Variable in enum org.apache.hadoop.hbase.io.hfile.<a href="org/apache/hadoop/hbase/io/hfile/TestCacheOnWrite.CacheOnWriteType.html" title="enum in org.apache.hadoop.hbase.io.hfile">TestCacheOnWrite.CacheOnWriteType</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestCacheOnWriteInSchema.CacheOnWriteType.html#blockType1">blockType1</a></span> - Variable in enum org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestCacheOnWriteInSchema.CacheOnWriteType.html" title="enum in org.apache.hadoop.hbase.regionserver">TestCacheOnWriteInSchema.CacheOnWriteType</a></dt>
@@ -2731,6 +2733,8 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.html#BLOOM_FILTER_OPTION">BLOOM_FILTER_OPTION</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">CreateRandomStoreFile</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.html#BLOOM_FILTER_PARAM_OPTION">BLOOM_FILTER_PARAM_OPTION</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">CreateRandomStoreFile</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestSnapshotMetadata.html#BLOOM_TYPE">BLOOM_TYPE</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestSnapshotMetadata.html" title="class in org.apache.hadoop.hbase.client">TestSnapshotMetadata</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/hfile/TestCacheOnWrite.html#BLOOM_TYPE">BLOOM_TYPE</a></span> - Static variable in class org.apache.hadoop.hbase.io.hfile.<a href="org/apache/hadoop/hbase/io/hfile/TestCacheOnWrite.html" title="class in org.apache.hadoop.hbase.io.hfile">TestCacheOnWrite</a></dt>
@@ -3108,6 +3112,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestHStoreFile.html#cacheConf">cacheConf</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestHStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">TestHStoreFile</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#cacheConf">cacheConf</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html" title="class in org.apache.hadoop.hbase.regionserver">TestRowPrefixBloomFilter</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestStoreFileScannerWithTagCompression.html#cacheConf">cacheConf</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestStoreFileScannerWithTagCompression.html" title="class in org.apache.hadoop.hbase.regionserver">TestStoreFileScannerWithTagCompression</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mob/compactions/TestPartitionedMobCompactor.MyPartitionedMobCompactor.html#cacheConfig">cacheConfig</a></span> - Variable in class org.apache.hadoop.hbase.mob.compactions.<a href="org/apache/hadoop/hbase/mob/compactions/TestPartitionedMobCompactor.MyPartitionedMobCompactor.html" title="class in org.apache.hadoop.hbase.mob.compactions">TestPartitionedMobCompactor.MyPartitionedMobCompactor</a></dt>
@@ -4079,8 +4085,12 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestHStoreFile.html#CKBYTES">CKBYTES</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestHStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">TestHStoreFile</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#CKBYTES">CKBYTES</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html" title="class in org.apache.hadoop.hbase.regionserver">TestRowPrefixBloomFilter</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestHStoreFile.html#CKTYPE">CKTYPE</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestHStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">TestHStoreFile</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#CKTYPE">CKTYPE</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html" title="class in org.apache.hadoop.hbase.regionserver">TestRowPrefixBloomFilter</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ClassFinder.html#CLASS_EXT">CLASS_EXT</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/ClassFinder.html" title="class in org.apache.hadoop.hbase">ClassFinder</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/IntegrationTestBackupRestore.html#CLASS_NAME">CLASS_NAME</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/IntegrationTestBackupRestore.html" title="class in org.apache.hadoop.hbase">IntegrationTestBackupRestore</a></dt>
@@ -5745,6 +5755,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestReversibleScanners.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestReversibleScanners.html" title="class in org.apache.hadoop.hbase.regionserver">TestReversibleScanners</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html" title="class in org.apache.hadoop.hbase.regionserver">TestRowPrefixBloomFilter</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRowTooBig.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRowTooBig.html" title="class in org.apache.hadoop.hbase.regionserver">TestRowTooBig</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRpcSchedulerFactory.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRpcSchedulerFactory.html" title="class in org.apache.hadoop.hbase.regionserver">TestRpcSchedulerFactory</a></dt>
@@ -8250,6 +8262,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRemoveRegionMetrics.html#conf">conf</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRemoveRegionMetrics.html" title="class in org.apache.hadoop.hbase.regionserver">TestRemoveRegionMetrics</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#conf">conf</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html" title="class in org.apache.hadoop.hbase.regionserver">TestRowPrefixBloomFilter</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRpcSchedulerFactory.html#conf">conf</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRpcSchedulerFactory.html" title="class in org.apache.hadoop.hbase.regionserver">TestRpcSchedulerFactory</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestScanWithBloomError.html#conf">conf</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestScanWithBloomError.html" title="class in org.apache.hadoop.hbase.regionserver">TestScanWithBloomError</a></dt>
@@ -11883,6 +11897,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/DataBlockEncodingTool.html#DELIMITED_DECIMAL_FORMAT">DELIMITED_DECIMAL_FORMAT</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/DataBlockEncodingTool.html" title="class in org.apache.hadoop.hbase.regionserver">DataBlockEncodingTool</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#delimiter">delimiter</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html" title="class in org.apache.hadoop.hbase.regionserver">TestRowPrefixBloomFilter</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mob/compactions/TestPartitionedMobCompactor.MyPartitionedMobCompactor.html#delPartitionSize">delPartitionSize</a></span> - Variable in class org.apache.hadoop.hbase.mob.compactions.<a href="org/apache/hadoop/hbase/mob/compactions/TestPartitionedMobCompactor.MyPartitionedMobCompactor.html" title="class in org.apache.hadoop.hbase.mob.compactions">TestPartitionedMobCompactor.MyPartitionedMobCompactor</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mob/compactions/TestMobCompactor.html#delRowNum">delRowNum</a></span> - Static variable in class org.apache.hadoop.hbase.mob.compactions.<a href="org/apache/hadoop/hbase/mob/compactions/TestMobCompactor.html" title="class in org.apache.hadoop.hbase.mob.compactions">TestMobCompactor</a></dt>
@@ -13096,6 +13112,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/MultithreadedTestUtil.TestContext.html#err">err</a></span> - Variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/MultithreadedTestUtil.TestContext.html" title="class in org.apache.hadoop.hbase">MultithreadedTestUtil.TestContext</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#err">err</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html" title="class in org.apache.hadoop.hbase.regionserver">TestRowPrefixBloomFilter</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/BufferingScanResultConsumer.html#error">error</a></span> - Variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/BufferingScanResultConsumer.html" title="class in org.apache.hadoop.hbase.client">BufferingScanResultConsumer</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/SimpleScanResultConsumer.html#error">error</a></span> - Variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/SimpleScanResultConsumer.html" title="class in org.apache.hadoop.hbase.client">SimpleScanResultConsumer</a></dt>
@@ -15164,6 +15182,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestMobStoreScanner.html#fs">fs</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestMobStoreScanner.html" title="class in org.apache.hadoop.hbase.regionserver">TestMobStoreScanner</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#fs">fs</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html" title="class in org.apache.hadoop.hbase.regionserver">TestRowPrefixBloomFilter</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestScanWithBloomError.html#fs">fs</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestScanWithBloomError.html" title="class in org.apache.hadoop.hbase.regionserver">TestScanWithBloomError</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestStoreFileScannerWithTagCompression.html#fs">fs</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestStoreFileScannerWithTagCompression.html" title="class in org.apache.hadoop.hbase.regionserver">TestStoreFileScannerWithTagCompression</a></dt>
@@ -18869,6 +18889,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestHStoreFile.html#getStoreFileScanner-org.apache.hadoop.hbase.regionserver.StoreFileReader-boolean-boolean-">getStoreFileScanner(StoreFileReader, boolean, boolean)</a></span> - Static method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestHStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">TestHStoreFile</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#getStoreFileScanner-org.apache.hadoop.hbase.regionserver.StoreFileReader-">getStoreFileScanner(StoreFileReader)</a></span> - Static method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html" title="class in org.apache.hadoop.hbase.regionserver">TestRowPrefixBloomFilter</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/snapshot/TestSnapshotFileCache.html#getStoreFilesForSnapshot-org.apache.hadoop.hbase.snapshot.SnapshotTestingUtils.SnapshotMock.SnapshotBuilder-">getStoreFilesForSnapshot(SnapshotTestingUtils.SnapshotMock.SnapshotBuilder)</a></span> - Method in class org.apache.hadoop.hbase.master.snapshot.<a href="org/apache/hadoop/hbase/master/snapshot/TestSnapshotFileCache.html" title="class in org.apache.hadoop.hbase.master.snapshot">TestSnapshotFileCache</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperStub.html#getStoreFileSize--">getStoreFileSize()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperStub.html" title="class in org.apache.hadoop.hbase.regionserver">MetricsRegionServerWrapperStub</a></dt>
@@ -21636,6 +21658,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/rest/client/TestRemoteTable.html#INVALID_URL_CHARS_2">INVALID_URL_CHARS_2</a></span> - Static variable in class org.apache.hadoop.hbase.rest.client.<a href="org/apache/hadoop/hbase/rest/client/TestRemoteTable.html" title="class in org.apache.hadoop.hbase.rest.client">TestRemoteTable</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#invalidFormatter">invalidFormatter</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html" title="class in org.apache.hadoop.hbase.regionserver">TestRowPrefixBloomFilter</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestTableName.html#invalidNamespace">invalidNamespace</a></span> - Variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestTableName.html" title="class in org.apache.hadoop.hbase">TestTableName</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/encoding/TestSeekBeforeWithReverseScan.html#invert-byte:A-">invert(byte[])</a></span> - Method in class org.apache.hadoop.hbase.io.encoding.<a href="org/apache/hadoop/hbase/io/encoding/TestSeekBeforeWithReverseScan.html" title="class in org.apache.hadoop.hbase.io.encoding">TestSeekBeforeWithReverseScan</a></dt>
@@ -23233,6 +23257,8 @@
 <dd>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
 &nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#localfs">localfs</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html" title="class in org.apache.hadoop.hbase.regionserver">TestRowPrefixBloomFilter</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#LOCALHOST">LOCALHOST</a></span> - Static variable in class org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/TestSecureExport.html" title="class in org.apache.hadoop.hbase.coprocessor">TestSecureExport</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancer.MockCluster.html#localities">localities</a></span> - Variable in class org.apache.hadoop.hbase.master.balancer.<a href="org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancer.MockCluster.html" title="class in org.apache.hadoop.hbase.master.balancer">TestStochasticLoadBalancer.MockCluster</a></dt>
@@ -24131,6 +24157,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestReversibleScanners.html#LOG">LOG</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestReversibleScanners.html" title="class in org.apache.hadoop.hbase.regionserver">TestReversibleScanners</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#LOG">LOG</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html" title="class in org.apache.hadoop.hbase.regionserver">TestRowPrefixBloomFilter</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRSKilledWhenInitializing.html#LOG">LOG</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRSKilledWhenInitializing.html" title="class in org.apache.hadoop.hbase.regionserver">TestRSKilledWhenInitializing</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRSStatusServlet.html#LOG">LOG</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRSStatusServlet.html" title="class in org.apache.hadoop.hbase.regionserver">TestRSStatusServlet</a></dt>
@@ -27053,6 +27081,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestReversibleScanners.html#name">name</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestReversibleScanners.html" title="class in org.apache.hadoop.hbase.regionserver">TestReversibleScanners</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#name">name</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html" title="class in org.apache.hadoop.hbase.regionserver">TestRowPrefixBloomFilter</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRSStatusServlet.html#name">name</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRSStatusServlet.html" title="class in org.apache.hadoop.hbase.regionserver">TestRSStatusServlet</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestScanner.html#name">name</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestScanner.html" title="class in org.apache.hadoop.hbase.regionserver">TestScanner</a></dt>
@@ -28645,6 +28675,8 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/LoadTestTool.html#OPT_BLOOM">OPT_BLOOM</a></span> - Static variable in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/LoadTestTool.html" title="class in org.apache.hadoop.hbase.util">LoadTestTool</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/LoadTestTool.html#OPT_BLOOM_PARAM">OPT_BLOOM_PARAM</a></span> - Static variable in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/LoadTestTool.html" title="class in org.apache.hadoop.hbase.util">LoadTestTool</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#OPT_CHECK">OPT_CHECK</a></span> - Static variable in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html" title="class in org.apache.hadoop.hbase.mapreduce">IntegrationTestBulkLoad</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/LoadTestTool.html#OPT_COLUMN_FAMILIES">OPT_COLUMN_FAMILIES</a></span> - Static variable in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/LoadTestTool.html" title="class in org.apache.hadoop.hbase.util">LoadTestTool</a></dt>
@@ -30551,6 +30583,10 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestOperation.html#PREFIXES">PREFIXES</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestOperation.html" title="class in org.apache.hadoop.hbase.client">TestOperation</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#prefixFormatter">prefixFormatter</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html" title="class in org.apache.hadoop.hbase.regionserver">TestRowPrefixBloomFilter</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#prefixLength">prefixLength</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html" title="class in org.apache.hadoop.hbase.regionserver">TestRowPrefixBloomFilter</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/RedundantKVGenerator.html#prefixLengthVariance">prefixLengthVariance</a></span> - Variable in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/RedundantKVGenerator.html" title="class in org.apache.hadoop.hbase.util">RedundantKVGenerator</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/filter/TestPrefixFilter.html#prefixRowTests-org.apache.hadoop.hbase.filter.Filter-">prefixRowTests(Filter)</a></span> - Method in class org.apache.hadoop.hbase.filter.<a href="org/apache/hadoop/hbase/filter/TestPrefixFilter.html" title="class in org.apache.hadoop.hbase.filter">TestPrefixFilter</a></dt>
@@ -37379,6 +37415,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestReversibleScanners.html#setUp--">setUp()</a></span> - Static method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestReversibleScanners.html" title="class in org.apache.hadoop.hbase.regionserver">TestReversibleScanners</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#setUp--">setUp()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html" title="class in org.apache.hadoop.hbase.regionserver">TestRowPrefixBloomFilter</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRpcSchedulerFactory.html#setUp--">setUp()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRpcSchedulerFactory.html" title="class in org.apache.hadoop.hbase.regionserver">TestRpcSchedulerFactory</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestScannerRetriableFailure.html#setup--">setup()</a></span> - Static method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestScannerRetriableFailure.html" title="class in org.apache.hadoop.hbase.regionserver">TestScannerRetriableFailure</a></dt>
@@ -40891,6 +40929,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestHRegionFileSystem.MockFileSystem.html#successRetryCount">successRetryCount</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestHRegionFileSystem.MockFileSystem.html" title="class in org.apache.hadoop.hbase.regionserver">TestHRegionFileSystem.MockFileSystem</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#suffixFormatter">suffixFormatter</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html" title="class in org.apache.hadoop.hbase.regionserver">TestRowPrefixBloomFilter</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/RedundantKVGenerator.html#suffixLengthVariance">suffixLengthVariance</a></span> - Variable in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/RedundantKVGenerator.html" title="class in org.apache.hadoop.hbase.util">RedundantKVGenerator</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coprocessor/ColumnAggregationEndpoint.html#sum-com.google.protobuf.RpcController-org.apache.hadoop.hbase.coprocessor.protobuf.generated.ColumnAggregationProtos.SumRequest-com.google.protobuf.RpcCallback-">sum(RpcController, ColumnAggregationProtos.SumRequest, RpcCallback&lt;ColumnAggregationProtos.SumResponse&gt;)</a></span> - Method in class org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/ColumnAggregationEndpoint.html" title="class in org.apache.hadoop.hbase.coprocessor">ColumnAggregationEndpoint</a></dt>
@@ -42615,6 +42655,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRegionServerReportForDuty.html#tearDown--">tearDown()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRegionServerReportForDuty.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionServerReportForDuty</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#tearDown--">tearDown()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html" title="class in org.apache.hadoop.hbase.regionserver">TestRowPrefixBloomFilter</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestScannerRetriableFailure.html#tearDown--">tearDown()</a></span> - Static method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestScannerRetriableFailure.html" title="class in org.apache.hadoop.hbase.regionserver">TestScannerRetriableFailure</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestScannerWithCorruptHFile.html#tearDown--">tearDown()</a></span> - Static method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestScannerWithCorruptHFile.html" title="class in org.apache.hadoop.hbase.regionserver">TestScannerWithCorruptHFile</a></dt>
@@ -44305,6 +44347,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestReversibleScanners.html#TEST_UTIL">TEST_UTIL</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestReversibleScanners.html" title="class in org.apache.hadoop.hbase.regionserver">TestReversibleScanners</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#TEST_UTIL">TEST_UTIL</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html" title="class in org.apache.hadoop.hbase.regionserver">TestRowPrefixBloomFilter</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestScanner.html#TEST_UTIL">TEST_UTIL</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestScanner.html" title="class in org.apache.hadoop.hbase.regionserver">TestScanner</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestScannerHeartbeatMessages.html#TEST_UTIL">TEST_UTIL</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestScannerHeartbeatMessages.html" title="class in org.apache.hadoop.hbase.regionserver">TestScannerHeartbeatMessages</a></dt>
@@ -49523,6 +49567,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestCompactionArchiveIOException.html#testDir">testDir</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestCompactionArchiveIOException.html" title="class in org.apache.hadoop.hbase.regionserver">TestCompactionArchiveIOException</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#testDir">testDir</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html" title="class in org.apache.hadoop.hbase.regionserver">TestRowPrefixBloomFilter</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestStoreFileRefresherChore.html#testDir">testDir</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestStoreFileRefresherChore.html" title="class in org.apache.hadoop.hbase.regionserver">TestStoreFileRefresherChore</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestWALMonotonicallyIncreasingSeqId.html#testDir">testDir</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestWALMonotonicallyIncreasingSeqId.html" title="class in org.apache.hadoop.hbase.regionserver">TestWALMonotonicallyIncreasingSeqId</a></dt>
@@ -60361,6 +60407,18 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestFromClientSide3.html#testRowMutationsWithPreBatchMutate--">testRowMutationsWithPreBatchMutate()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestFromClientSide3.html" title="class in org.apache.hadoop.hbase.client">TestFromClientSide3</a></dt>
 <dd>&nbsp;</dd>
+<dt><a href="org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestRowPrefixBloomFilter</span></a> - Class in <a href="org/apache/hadoop/hbase/regionserver/package-summary.html">org.apache.hadoop.hbase.regionserver</a></dt>
+<dd>
+<div class="block">Test TestRowPrefixBloomFilter</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#TestRowPrefixBloomFilter--">TestRowPrefixBloomFilter()</a></span> - Constructor for class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html" title="class in org.apache.hadoop.hbase.regionserver">TestRowPrefixBloomFilter</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#testRowPrefixBloomFilter--">testRowPrefixBloomFilter()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html" title="class in org.apache.hadoop.hbase.regionserver">TestRowPrefixBloomFilter</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#testRowPrefixBloomFilterWithGet--">testRowPrefixBloomFilterWithGet()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html" title="class in org.apache.hadoop.hbase.regionserver">TestRowPrefixBloomFilter</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#testRowPrefixBloomFilterWithScan--">testRowPrefixBloomFilterWithScan()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html" title="class in org.apache.hadoop.hbase.regionserver">TestRowPrefixBloomFilter</a></dt>
+<dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/coprocessor/TestRowProcessorEndpoint.html" title="class in org.apache.hadoop.hbase.coprocessor"><span class="typeNameLink">TestRowProcessorEndpoint</span></a> - Class in <a href="org/apache/hadoop/hbase/coprocessor/package-summary.html">org.apache.hadoop.hbase.coprocessor</a></dt>
 <dd>
 <div class="block">Verifies ProcessEndpoint works.</div>
@@ -69978,6 +70036,8 @@ the order they are declared.</div>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestReversibleScanners.html#writeStoreFile-org.apache.hadoop.hbase.regionserver.StoreFileWriter-">writeStoreFile(StoreFileWriter)</a></span> - Static method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestReversibleScanners.html" title="class in org.apache.hadoop.hbase.regionserver">TestReversibleScanners</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#writeStoreFile-org.apache.hadoop.fs.Path-org.apache.hadoop.hbase.regionserver.BloomType-int-int-int-">writeStoreFile(Path, BloomType, int, int, int)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html" title="class in org.apache.hadoop.hbase.regionserver">TestRowPrefixBloomFilter</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestStoreFileScannerWithTagCompression.html#writeStoreFile-org.apache.hadoop.hbase.regionserver.StoreFileWriter-">writeStoreFile(StoreFileWriter)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestStoreFileScannerWithTagCompression.html" title="class in org.apache.hadoop.hbase.regionserver">TestStoreFileScannerWithTagCompression</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/ProcessBasedLocalHBaseCluster.html#writeStringToFile-java.lang.String-java.lang.String-">writeStringToFile(String, String)</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/ProcessBasedLocalHBaseCluster.html" title="class in org.apache.hadoop.hbase.util">ProcessBasedLocalHBaseCluster</a></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/testdevapidocs/org/apache/hadoop/hbase/chaos/actions/ChangeBloomFilterAction.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/chaos/actions/ChangeBloomFilterAction.html b/testdevapidocs/org/apache/hadoop/hbase/chaos/actions/ChangeBloomFilterAction.html
index 6a6ebb2..e878393 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/chaos/actions/ChangeBloomFilterAction.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/chaos/actions/ChangeBloomFilterAction.html
@@ -114,7 +114,7 @@ var activeTableTab = "activeTableTab";
 <li class="blockList">
 <hr>
 <br>
-<pre>public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/chaos/actions/ChangeBloomFilterAction.html#line.30">ChangeBloomFilterAction</a>
+<pre>public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/chaos/actions/ChangeBloomFilterAction.html#line.31">ChangeBloomFilterAction</a>
 extends <a href="../../../../../../org/apache/hadoop/hbase/chaos/actions/Action.html" title="class in org.apache.hadoop.hbase.chaos.actions">Action</a></pre>
 <div class="block">Action that tries to adjust the bloom filter setting on all the columns of a
  table</div>
@@ -241,7 +241,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/chaos/actions/Action.
 <ul class="blockList">
 <li class="blockList">
 <h4>sleepTime</h4>
-<pre>private final&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/chaos/actions/ChangeBloomFilterAction.html#line.31">sleepTime</a></pre>
+<pre>private final&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/chaos/actions/ChangeBloomFilterAction.html#line.32">sleepTime</a></pre>
 </li>
 </ul>
 <a name="tableName">
@@ -250,7 +250,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/chaos/actions/Action.
 <ul class="blockListLast">
 <li class="blockList">
 <h4>tableName</h4>
-<pre>private final&nbsp;org.apache.hadoop.hbase.TableName <a href="../../../../../../src-html/org/apache/hadoop/hbase/chaos/actions/ChangeBloomFilterAction.html#line.32">tableName</a></pre>
+<pre>private final&nbsp;org.apache.hadoop.hbase.TableName <a href="../../../../../../src-html/org/apache/hadoop/hbase/chaos/actions/ChangeBloomFilterAction.html#line.33">tableName</a></pre>
 </li>
 </ul>
 </li>
@@ -267,7 +267,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/chaos/actions/Action.
 <ul class="blockList">
 <li class="blockList">
 <h4>ChangeBloomFilterAction</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/chaos/actions/ChangeBloomFilterAction.html#line.34">ChangeBloomFilterAction</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName)</pre>
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/chaos/actions/ChangeBloomFilterAction.html#line.35">ChangeBloomFilterAction</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName)</pre>
 </li>
 </ul>
 <a name="ChangeBloomFilterAction-int-org.apache.hadoop.hbase.TableName-">
@@ -276,7 +276,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/chaos/actions/Action.
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ChangeBloomFilterAction</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/chaos/actions/ChangeBloomFilterAction.html#line.38">ChangeBloomFilterAction</a>(int&nbsp;sleepTime,
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/chaos/actions/ChangeBloomFilterAction.html#line.39">ChangeBloomFilterAction</a>(int&nbsp;sleepTime,
                                org.apache.hadoop.hbase.TableName&nbsp;tableName)</pre>
 </li>
 </ul>
@@ -294,7 +294,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/chaos/actions/Action.
 <ul class="blockListLast">
 <li class="blockList">
 <h4>perform</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/chaos/actions/ChangeBloomFilterAction.html#line.44">perform</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/chaos/actions/ChangeBloomFilterAction.html#line.45">perform</a>()
              throws <a href="https://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="overrideSpecifyLabel">Overrides:</span></dt>


[20/43] hbase-site git commit: Published site at 7ab77518a2569e2416a50020393aa386e7734501.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html
index db404ab..2e803fd 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html
@@ -94,543 +94,546 @@
 <span class="sourceLineNo">086</span>  /** Bloom filter Type in FileInfo */<a name="line.86"></a>
 <span class="sourceLineNo">087</span>  public static final byte[] BLOOM_FILTER_TYPE_KEY = Bytes.toBytes("BLOOM_FILTER_TYPE");<a name="line.87"></a>
 <span class="sourceLineNo">088</span><a name="line.88"></a>
-<span class="sourceLineNo">089</span>  /** Delete Family Count in FileInfo */<a name="line.89"></a>
-<span class="sourceLineNo">090</span>  public static final byte[] DELETE_FAMILY_COUNT = Bytes.toBytes("DELETE_FAMILY_COUNT");<a name="line.90"></a>
+<span class="sourceLineNo">089</span>  /** Bloom filter param in FileInfo */<a name="line.89"></a>
+<span class="sourceLineNo">090</span>  public static final byte[] BLOOM_FILTER_PARAM_KEY = Bytes.toBytes("BLOOM_FILTER_PARAM");<a name="line.90"></a>
 <span class="sourceLineNo">091</span><a name="line.91"></a>
-<span class="sourceLineNo">092</span>  /** Last Bloom filter key in FileInfo */<a name="line.92"></a>
-<span class="sourceLineNo">093</span>  public static final byte[] LAST_BLOOM_KEY = Bytes.toBytes("LAST_BLOOM_KEY");<a name="line.93"></a>
+<span class="sourceLineNo">092</span>  /** Delete Family Count in FileInfo */<a name="line.92"></a>
+<span class="sourceLineNo">093</span>  public static final byte[] DELETE_FAMILY_COUNT = Bytes.toBytes("DELETE_FAMILY_COUNT");<a name="line.93"></a>
 <span class="sourceLineNo">094</span><a name="line.94"></a>
-<span class="sourceLineNo">095</span>  /** Key for Timerange information in metadata */<a name="line.95"></a>
-<span class="sourceLineNo">096</span>  public static final byte[] TIMERANGE_KEY = Bytes.toBytes("TIMERANGE");<a name="line.96"></a>
+<span class="sourceLineNo">095</span>  /** Last Bloom filter key in FileInfo */<a name="line.95"></a>
+<span class="sourceLineNo">096</span>  public static final byte[] LAST_BLOOM_KEY = Bytes.toBytes("LAST_BLOOM_KEY");<a name="line.96"></a>
 <span class="sourceLineNo">097</span><a name="line.97"></a>
-<span class="sourceLineNo">098</span>  /** Key for timestamp of earliest-put in metadata */<a name="line.98"></a>
-<span class="sourceLineNo">099</span>  public static final byte[] EARLIEST_PUT_TS = Bytes.toBytes("EARLIEST_PUT_TS");<a name="line.99"></a>
+<span class="sourceLineNo">098</span>  /** Key for Timerange information in metadata */<a name="line.98"></a>
+<span class="sourceLineNo">099</span>  public static final byte[] TIMERANGE_KEY = Bytes.toBytes("TIMERANGE");<a name="line.99"></a>
 <span class="sourceLineNo">100</span><a name="line.100"></a>
-<span class="sourceLineNo">101</span>  /** Key for the number of mob cells in metadata */<a name="line.101"></a>
-<span class="sourceLineNo">102</span>  public static final byte[] MOB_CELLS_COUNT = Bytes.toBytes("MOB_CELLS_COUNT");<a name="line.102"></a>
+<span class="sourceLineNo">101</span>  /** Key for timestamp of earliest-put in metadata */<a name="line.101"></a>
+<span class="sourceLineNo">102</span>  public static final byte[] EARLIEST_PUT_TS = Bytes.toBytes("EARLIEST_PUT_TS");<a name="line.102"></a>
 <span class="sourceLineNo">103</span><a name="line.103"></a>
-<span class="sourceLineNo">104</span>  /** Meta key set when store file is a result of a bulk load */<a name="line.104"></a>
-<span class="sourceLineNo">105</span>  public static final byte[] BULKLOAD_TASK_KEY = Bytes.toBytes("BULKLOAD_SOURCE_TASK");<a name="line.105"></a>
-<span class="sourceLineNo">106</span>  public static final byte[] BULKLOAD_TIME_KEY = Bytes.toBytes("BULKLOAD_TIMESTAMP");<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>   * Key for skipping resetting sequence id in metadata. For bulk loaded hfiles, the scanner resets<a name="line.109"></a>
-<span class="sourceLineNo">110</span>   * the cell seqId with the latest one, if this metadata is set as true, the reset is skipped.<a name="line.110"></a>
-<span class="sourceLineNo">111</span>   */<a name="line.111"></a>
-<span class="sourceLineNo">112</span>  public static final byte[] SKIP_RESET_SEQ_ID = Bytes.toBytes("SKIP_RESET_SEQ_ID");<a name="line.112"></a>
-<span class="sourceLineNo">113</span><a name="line.113"></a>
-<span class="sourceLineNo">114</span>  private final StoreFileInfo fileInfo;<a name="line.114"></a>
-<span class="sourceLineNo">115</span>  private final FileSystem fs;<a name="line.115"></a>
+<span class="sourceLineNo">104</span>  /** Key for the number of mob cells in metadata */<a name="line.104"></a>
+<span class="sourceLineNo">105</span>  public static final byte[] MOB_CELLS_COUNT = Bytes.toBytes("MOB_CELLS_COUNT");<a name="line.105"></a>
+<span class="sourceLineNo">106</span><a name="line.106"></a>
+<span class="sourceLineNo">107</span>  /** Meta key set when store file is a result of a bulk load */<a name="line.107"></a>
+<span class="sourceLineNo">108</span>  public static final byte[] BULKLOAD_TASK_KEY = Bytes.toBytes("BULKLOAD_SOURCE_TASK");<a name="line.108"></a>
+<span class="sourceLineNo">109</span>  public static final byte[] BULKLOAD_TIME_KEY = Bytes.toBytes("BULKLOAD_TIMESTAMP");<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>   * Key for skipping resetting sequence id in metadata. For bulk loaded hfiles, the scanner resets<a name="line.112"></a>
+<span class="sourceLineNo">113</span>   * the cell seqId with the latest one, if this metadata is set as true, the reset is skipped.<a name="line.113"></a>
+<span class="sourceLineNo">114</span>   */<a name="line.114"></a>
+<span class="sourceLineNo">115</span>  public static final byte[] SKIP_RESET_SEQ_ID = Bytes.toBytes("SKIP_RESET_SEQ_ID");<a name="line.115"></a>
 <span class="sourceLineNo">116</span><a name="line.116"></a>
-<span class="sourceLineNo">117</span>  // Block cache configuration and reference.<a name="line.117"></a>
-<span class="sourceLineNo">118</span>  private final CacheConfig cacheConf;<a name="line.118"></a>
+<span class="sourceLineNo">117</span>  private final StoreFileInfo fileInfo;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>  private final FileSystem fs;<a name="line.118"></a>
 <span class="sourceLineNo">119</span><a name="line.119"></a>
-<span class="sourceLineNo">120</span>  // Counter that is incremented every time a scanner is created on the<a name="line.120"></a>
-<span class="sourceLineNo">121</span>  // store file. It is decremented when the scan on the store file is<a name="line.121"></a>
-<span class="sourceLineNo">122</span>  // done.<a name="line.122"></a>
-<span class="sourceLineNo">123</span>  private final AtomicInteger refCount = new AtomicInteger(0);<a name="line.123"></a>
-<span class="sourceLineNo">124</span><a name="line.124"></a>
-<span class="sourceLineNo">125</span>  // Set implementation must be of concurrent type<a name="line.125"></a>
-<span class="sourceLineNo">126</span>  private final Set&lt;StoreFileReader&gt; streamReaders;<a name="line.126"></a>
+<span class="sourceLineNo">120</span>  // Block cache configuration and reference.<a name="line.120"></a>
+<span class="sourceLineNo">121</span>  private final CacheConfig cacheConf;<a name="line.121"></a>
+<span class="sourceLineNo">122</span><a name="line.122"></a>
+<span class="sourceLineNo">123</span>  // Counter that is incremented every time a scanner is created on the<a name="line.123"></a>
+<span class="sourceLineNo">124</span>  // store file. It is decremented when the scan on the store file is<a name="line.124"></a>
+<span class="sourceLineNo">125</span>  // done.<a name="line.125"></a>
+<span class="sourceLineNo">126</span>  private final AtomicInteger refCount = new AtomicInteger(0);<a name="line.126"></a>
 <span class="sourceLineNo">127</span><a name="line.127"></a>
-<span class="sourceLineNo">128</span>  private final boolean noReadahead;<a name="line.128"></a>
-<span class="sourceLineNo">129</span><a name="line.129"></a>
-<span class="sourceLineNo">130</span>  private final boolean primaryReplica;<a name="line.130"></a>
-<span class="sourceLineNo">131</span><a name="line.131"></a>
-<span class="sourceLineNo">132</span>  // Indicates if the file got compacted<a name="line.132"></a>
-<span class="sourceLineNo">133</span>  private volatile boolean compactedAway = false;<a name="line.133"></a>
+<span class="sourceLineNo">128</span>  // Set implementation must be of concurrent type<a name="line.128"></a>
+<span class="sourceLineNo">129</span>  private final Set&lt;StoreFileReader&gt; streamReaders;<a name="line.129"></a>
+<span class="sourceLineNo">130</span><a name="line.130"></a>
+<span class="sourceLineNo">131</span>  private final boolean noReadahead;<a name="line.131"></a>
+<span class="sourceLineNo">132</span><a name="line.132"></a>
+<span class="sourceLineNo">133</span>  private final boolean primaryReplica;<a name="line.133"></a>
 <span class="sourceLineNo">134</span><a name="line.134"></a>
-<span class="sourceLineNo">135</span>  // Keys for metadata stored in backing HFile.<a name="line.135"></a>
-<span class="sourceLineNo">136</span>  // Set when we obtain a Reader.<a name="line.136"></a>
-<span class="sourceLineNo">137</span>  private long sequenceid = -1;<a name="line.137"></a>
-<span class="sourceLineNo">138</span><a name="line.138"></a>
-<span class="sourceLineNo">139</span>  // max of the MemstoreTS in the KV's in this store<a name="line.139"></a>
-<span class="sourceLineNo">140</span>  // Set when we obtain a Reader.<a name="line.140"></a>
-<span class="sourceLineNo">141</span>  private long maxMemstoreTS = -1;<a name="line.141"></a>
-<span class="sourceLineNo">142</span><a name="line.142"></a>
-<span class="sourceLineNo">143</span>  // firstKey, lastkey and cellComparator will be set when openReader.<a name="line.143"></a>
-<span class="sourceLineNo">144</span>  private Optional&lt;Cell&gt; firstKey;<a name="line.144"></a>
+<span class="sourceLineNo">135</span>  // Indicates if the file got compacted<a name="line.135"></a>
+<span class="sourceLineNo">136</span>  private volatile boolean compactedAway = false;<a name="line.136"></a>
+<span class="sourceLineNo">137</span><a name="line.137"></a>
+<span class="sourceLineNo">138</span>  // Keys for metadata stored in backing HFile.<a name="line.138"></a>
+<span class="sourceLineNo">139</span>  // Set when we obtain a Reader.<a name="line.139"></a>
+<span class="sourceLineNo">140</span>  private long sequenceid = -1;<a name="line.140"></a>
+<span class="sourceLineNo">141</span><a name="line.141"></a>
+<span class="sourceLineNo">142</span>  // max of the MemstoreTS in the KV's in this store<a name="line.142"></a>
+<span class="sourceLineNo">143</span>  // Set when we obtain a Reader.<a name="line.143"></a>
+<span class="sourceLineNo">144</span>  private long maxMemstoreTS = -1;<a name="line.144"></a>
 <span class="sourceLineNo">145</span><a name="line.145"></a>
-<span class="sourceLineNo">146</span>  private Optional&lt;Cell&gt; lastKey;<a name="line.146"></a>
-<span class="sourceLineNo">147</span><a name="line.147"></a>
-<span class="sourceLineNo">148</span>  private CellComparator comparator;<a name="line.148"></a>
-<span class="sourceLineNo">149</span><a name="line.149"></a>
-<span class="sourceLineNo">150</span>  public CacheConfig getCacheConf() {<a name="line.150"></a>
-<span class="sourceLineNo">151</span>    return cacheConf;<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>  @Override<a name="line.154"></a>
-<span class="sourceLineNo">155</span>  public Optional&lt;Cell&gt; getFirstKey() {<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    return firstKey;<a name="line.156"></a>
-<span class="sourceLineNo">157</span>  }<a name="line.157"></a>
-<span class="sourceLineNo">158</span><a name="line.158"></a>
-<span class="sourceLineNo">159</span>  @Override<a name="line.159"></a>
-<span class="sourceLineNo">160</span>  public Optional&lt;Cell&gt; getLastKey() {<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    return lastKey;<a name="line.161"></a>
-<span class="sourceLineNo">162</span>  }<a name="line.162"></a>
-<span class="sourceLineNo">163</span><a name="line.163"></a>
-<span class="sourceLineNo">164</span>  @Override<a name="line.164"></a>
-<span class="sourceLineNo">165</span>  public CellComparator getComparator() {<a name="line.165"></a>
-<span class="sourceLineNo">166</span>    return comparator;<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>  @Override<a name="line.169"></a>
-<span class="sourceLineNo">170</span>  public long getMaxMemStoreTS() {<a name="line.170"></a>
-<span class="sourceLineNo">171</span>    return maxMemstoreTS;<a name="line.171"></a>
-<span class="sourceLineNo">172</span>  }<a name="line.172"></a>
-<span class="sourceLineNo">173</span><a name="line.173"></a>
-<span class="sourceLineNo">174</span>  // If true, this file was product of a major compaction.  Its then set<a name="line.174"></a>
-<span class="sourceLineNo">175</span>  // whenever you get a Reader.<a name="line.175"></a>
-<span class="sourceLineNo">176</span>  private AtomicBoolean majorCompaction = null;<a name="line.176"></a>
-<span class="sourceLineNo">177</span><a name="line.177"></a>
-<span class="sourceLineNo">178</span>  // If true, this file should not be included in minor compactions.<a name="line.178"></a>
-<span class="sourceLineNo">179</span>  // It's set whenever you get a Reader.<a name="line.179"></a>
-<span class="sourceLineNo">180</span>  private boolean excludeFromMinorCompaction = false;<a name="line.180"></a>
-<span class="sourceLineNo">181</span><a name="line.181"></a>
-<span class="sourceLineNo">182</span>  /**<a name="line.182"></a>
-<span class="sourceLineNo">183</span>   * Map of the metadata entries in the corresponding HFile. Populated when Reader is opened<a name="line.183"></a>
-<span class="sourceLineNo">184</span>   * after which it is not modified again.<a name="line.184"></a>
-<span class="sourceLineNo">185</span>   */<a name="line.185"></a>
-<span class="sourceLineNo">186</span>  private Map&lt;byte[], byte[]&gt; metadataMap;<a name="line.186"></a>
-<span class="sourceLineNo">187</span><a name="line.187"></a>
-<span class="sourceLineNo">188</span>  // StoreFile.Reader<a name="line.188"></a>
-<span class="sourceLineNo">189</span>  private volatile StoreFileReader reader;<a name="line.189"></a>
+<span class="sourceLineNo">146</span>  // firstKey, lastkey and cellComparator will be set when openReader.<a name="line.146"></a>
+<span class="sourceLineNo">147</span>  private Optional&lt;Cell&gt; firstKey;<a name="line.147"></a>
+<span class="sourceLineNo">148</span><a name="line.148"></a>
+<span class="sourceLineNo">149</span>  private Optional&lt;Cell&gt; lastKey;<a name="line.149"></a>
+<span class="sourceLineNo">150</span><a name="line.150"></a>
+<span class="sourceLineNo">151</span>  private CellComparator comparator;<a name="line.151"></a>
+<span class="sourceLineNo">152</span><a name="line.152"></a>
+<span class="sourceLineNo">153</span>  public CacheConfig getCacheConf() {<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    return cacheConf;<a name="line.154"></a>
+<span class="sourceLineNo">155</span>  }<a name="line.155"></a>
+<span class="sourceLineNo">156</span><a name="line.156"></a>
+<span class="sourceLineNo">157</span>  @Override<a name="line.157"></a>
+<span class="sourceLineNo">158</span>  public Optional&lt;Cell&gt; getFirstKey() {<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    return firstKey;<a name="line.159"></a>
+<span class="sourceLineNo">160</span>  }<a name="line.160"></a>
+<span class="sourceLineNo">161</span><a name="line.161"></a>
+<span class="sourceLineNo">162</span>  @Override<a name="line.162"></a>
+<span class="sourceLineNo">163</span>  public Optional&lt;Cell&gt; getLastKey() {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>    return lastKey;<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>  @Override<a name="line.167"></a>
+<span class="sourceLineNo">168</span>  public CellComparator getComparator() {<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    return comparator;<a name="line.169"></a>
+<span class="sourceLineNo">170</span>  }<a name="line.170"></a>
+<span class="sourceLineNo">171</span><a name="line.171"></a>
+<span class="sourceLineNo">172</span>  @Override<a name="line.172"></a>
+<span class="sourceLineNo">173</span>  public long getMaxMemStoreTS() {<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    return maxMemstoreTS;<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>  // If true, this file was product of a major compaction.  Its then set<a name="line.177"></a>
+<span class="sourceLineNo">178</span>  // whenever you get a Reader.<a name="line.178"></a>
+<span class="sourceLineNo">179</span>  private AtomicBoolean majorCompaction = null;<a name="line.179"></a>
+<span class="sourceLineNo">180</span><a name="line.180"></a>
+<span class="sourceLineNo">181</span>  // If true, this file should not be included in minor compactions.<a name="line.181"></a>
+<span class="sourceLineNo">182</span>  // It's set whenever you get a Reader.<a name="line.182"></a>
+<span class="sourceLineNo">183</span>  private boolean excludeFromMinorCompaction = false;<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>   * Map of the metadata entries in the corresponding HFile. Populated when Reader is opened<a name="line.186"></a>
+<span class="sourceLineNo">187</span>   * after which it is not modified again.<a name="line.187"></a>
+<span class="sourceLineNo">188</span>   */<a name="line.188"></a>
+<span class="sourceLineNo">189</span>  private Map&lt;byte[], byte[]&gt; metadataMap;<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>   * Bloom filter type specified in column family configuration. Does not<a name="line.192"></a>
-<span class="sourceLineNo">193</span>   * necessarily correspond to the Bloom filter type present in the HFile.<a name="line.193"></a>
-<span class="sourceLineNo">194</span>   */<a name="line.194"></a>
-<span class="sourceLineNo">195</span>  private final BloomType cfBloomType;<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>   * Constructor, loads a reader and it's indices, etc. May allocate a substantial amount of ram<a name="line.198"></a>
-<span class="sourceLineNo">199</span>   * depending on the underlying files (10-20MB?).<a name="line.199"></a>
-<span class="sourceLineNo">200</span>   * @param fs The current file system to use.<a name="line.200"></a>
-<span class="sourceLineNo">201</span>   * @param p The path of the file.<a name="line.201"></a>
-<span class="sourceLineNo">202</span>   * @param conf The current configuration.<a name="line.202"></a>
-<span class="sourceLineNo">203</span>   * @param cacheConf The cache configuration and block cache reference.<a name="line.203"></a>
-<span class="sourceLineNo">204</span>   * @param cfBloomType The bloom type to use for this store file as specified by column family<a name="line.204"></a>
-<span class="sourceLineNo">205</span>   *          configuration. This may or may not be the same as the Bloom filter type actually<a name="line.205"></a>
-<span class="sourceLineNo">206</span>   *          present in the HFile, because column family configuration might change. If this is<a name="line.206"></a>
-<span class="sourceLineNo">207</span>   *          {@link BloomType#NONE}, the existing Bloom filter is ignored.<a name="line.207"></a>
-<span class="sourceLineNo">208</span>   * @param primaryReplica true if this is a store file for primary replica, otherwise false.<a name="line.208"></a>
-<span class="sourceLineNo">209</span>   * @throws IOException<a name="line.209"></a>
-<span class="sourceLineNo">210</span>   */<a name="line.210"></a>
-<span class="sourceLineNo">211</span>  public HStoreFile(FileSystem fs, Path p, Configuration conf, CacheConfig cacheConf,<a name="line.211"></a>
-<span class="sourceLineNo">212</span>      BloomType cfBloomType, boolean primaryReplica) throws IOException {<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    this(fs, new StoreFileInfo(conf, fs, p), conf, cacheConf, cfBloomType, primaryReplica);<a name="line.213"></a>
-<span class="sourceLineNo">214</span>  }<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>   * Constructor, loads a reader and it's indices, etc. May allocate a substantial amount of ram<a name="line.217"></a>
-<span class="sourceLineNo">218</span>   * depending on the underlying files (10-20MB?).<a name="line.218"></a>
-<span class="sourceLineNo">219</span>   * @param fs fs The current file system to use.<a name="line.219"></a>
-<span class="sourceLineNo">220</span>   * @param fileInfo The store file information.<a name="line.220"></a>
-<span class="sourceLineNo">221</span>   * @param conf The current configuration.<a name="line.221"></a>
-<span class="sourceLineNo">222</span>   * @param cacheConf The cache configuration and block cache reference.<a name="line.222"></a>
-<span class="sourceLineNo">223</span>   * @param cfBloomType The bloom type to use for this store file as specified by column<a name="line.223"></a>
-<span class="sourceLineNo">224</span>   *          family configuration. This may or may not be the same as the Bloom filter type<a name="line.224"></a>
-<span class="sourceLineNo">225</span>   *          actually present in the HFile, because column family configuration might change. If<a name="line.225"></a>
-<span class="sourceLineNo">226</span>   *          this is {@link BloomType#NONE}, the existing Bloom filter is ignored.<a name="line.226"></a>
-<span class="sourceLineNo">227</span>   * @param primaryReplica true if this is a store file for primary replica, otherwise false.<a name="line.227"></a>
-<span class="sourceLineNo">228</span>   */<a name="line.228"></a>
-<span class="sourceLineNo">229</span>  public HStoreFile(FileSystem fs, StoreFileInfo fileInfo, Configuration conf, CacheConfig cacheConf,<a name="line.229"></a>
-<span class="sourceLineNo">230</span>      BloomType cfBloomType, boolean primaryReplica) {<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    this.streamReaders = ConcurrentHashMap.newKeySet();<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    this.fs = fs;<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    this.fileInfo = fileInfo;<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    this.cacheConf = cacheConf;<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    this.noReadahead =<a name="line.235"></a>
-<span class="sourceLineNo">236</span>        conf.getBoolean(STORE_FILE_READER_NO_READAHEAD, DEFAULT_STORE_FILE_READER_NO_READAHEAD);<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    if (BloomFilterFactory.isGeneralBloomEnabled(conf)) {<a name="line.237"></a>
-<span class="sourceLineNo">238</span>      this.cfBloomType = cfBloomType;<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    } else {<a name="line.239"></a>
-<span class="sourceLineNo">240</span>      LOG.info("Ignoring bloom filter check for file " + this.getPath() + ": " + "cfBloomType=" +<a name="line.240"></a>
-<span class="sourceLineNo">241</span>          cfBloomType + " (disabled in config)");<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      this.cfBloomType = BloomType.NONE;<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    }<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    this.primaryReplica = primaryReplica;<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>  /**<a name="line.247"></a>
-<span class="sourceLineNo">248</span>   * @return the StoreFile object associated to this StoreFile. null if the StoreFile is not a<a name="line.248"></a>
-<span class="sourceLineNo">249</span>   *         reference.<a name="line.249"></a>
-<span class="sourceLineNo">250</span>   */<a name="line.250"></a>
-<span class="sourceLineNo">251</span>  public StoreFileInfo getFileInfo() {<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    return this.fileInfo;<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 Path getPath() {<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    return this.fileInfo.getPath();<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>  @Override<a name="line.260"></a>
-<span class="sourceLineNo">261</span>  public Path getQualifiedPath() {<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    return this.fileInfo.getPath().makeQualified(fs.getUri(), fs.getWorkingDirectory());<a name="line.262"></a>
-<span class="sourceLineNo">263</span>  }<a name="line.263"></a>
-<span class="sourceLineNo">264</span><a name="line.264"></a>
-<span class="sourceLineNo">265</span>  @Override<a name="line.265"></a>
-<span class="sourceLineNo">266</span>  public boolean isReference() {<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    return this.fileInfo.isReference();<a name="line.267"></a>
-<span class="sourceLineNo">268</span>  }<a name="line.268"></a>
-<span class="sourceLineNo">269</span><a name="line.269"></a>
-<span class="sourceLineNo">270</span>  @Override<a name="line.270"></a>
-<span class="sourceLineNo">271</span>  public boolean isHFile() {<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    return StoreFileInfo.isHFile(this.fileInfo.getPath());<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>  @Override<a name="line.275"></a>
-<span class="sourceLineNo">276</span>  public boolean isMajorCompactionResult() {<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    if (this.majorCompaction == null) {<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      throw new NullPointerException("This has not been set yet");<a name="line.278"></a>
-<span class="sourceLineNo">279</span>    }<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    return this.majorCompaction.get();<a name="line.280"></a>
-<span class="sourceLineNo">281</span>  }<a name="line.281"></a>
-<span class="sourceLineNo">282</span><a name="line.282"></a>
-<span class="sourceLineNo">283</span>  @Override<a name="line.283"></a>
-<span class="sourceLineNo">284</span>  public boolean excludeFromMinorCompaction() {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    return this.excludeFromMinorCompaction;<a name="line.285"></a>
-<span class="sourceLineNo">286</span>  }<a name="line.286"></a>
-<span class="sourceLineNo">287</span><a name="line.287"></a>
-<span class="sourceLineNo">288</span>  @Override<a name="line.288"></a>
-<span class="sourceLineNo">289</span>  public long getMaxSequenceId() {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    return this.sequenceid;<a name="line.290"></a>
-<span class="sourceLineNo">291</span>  }<a name="line.291"></a>
-<span class="sourceLineNo">292</span><a name="line.292"></a>
-<span class="sourceLineNo">293</span>  @Override<a name="line.293"></a>
-<span class="sourceLineNo">294</span>  public long getModificationTimeStamp() throws IOException {<a name="line.294"></a>
-<span class="sourceLineNo">295</span>    return getModificationTimestamp();<a name="line.295"></a>
-<span class="sourceLineNo">296</span>  }<a name="line.296"></a>
-<span class="sourceLineNo">297</span><a name="line.297"></a>
-<span class="sourceLineNo">298</span>  @Override<a name="line.298"></a>
-<span class="sourceLineNo">299</span>  public long getModificationTimestamp() throws IOException {<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    return fileInfo.getModificationTime();<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>   * Only used by the Striped Compaction Policy<a name="line.304"></a>
-<span class="sourceLineNo">305</span>   * @param key<a name="line.305"></a>
-<span class="sourceLineNo">306</span>   * @return value associated with the metadata key<a name="line.306"></a>
-<span class="sourceLineNo">307</span>   */<a name="line.307"></a>
-<span class="sourceLineNo">308</span>  public byte[] getMetadataValue(byte[] key) {<a name="line.308"></a>
-<span class="sourceLineNo">309</span>    return metadataMap.get(key);<a name="line.309"></a>
-<span class="sourceLineNo">310</span>  }<a name="line.310"></a>
-<span class="sourceLineNo">311</span><a name="line.311"></a>
-<span class="sourceLineNo">312</span>  @Override<a name="line.312"></a>
-<span class="sourceLineNo">313</span>  public boolean isBulkLoadResult() {<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    boolean bulkLoadedHFile = false;<a name="line.314"></a>
-<span class="sourceLineNo">315</span>    String fileName = this.getPath().getName();<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    int startPos = fileName.indexOf("SeqId_");<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    if (startPos != -1) {<a name="line.317"></a>
-<span class="sourceLineNo">318</span>      bulkLoadedHFile = true;<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    }<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    return bulkLoadedHFile || (metadataMap != null &amp;&amp; metadataMap.containsKey(BULKLOAD_TIME_KEY));<a name="line.320"></a>
-<span class="sourceLineNo">321</span>  }<a name="line.321"></a>
-<span class="sourceLineNo">322</span><a name="line.322"></a>
-<span class="sourceLineNo">323</span>  public boolean isCompactedAway() {<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    return compactedAway;<a name="line.324"></a>
-<span class="sourceLineNo">325</span>  }<a name="line.325"></a>
-<span class="sourceLineNo">326</span><a name="line.326"></a>
-<span class="sourceLineNo">327</span>  @VisibleForTesting<a name="line.327"></a>
-<span class="sourceLineNo">328</span>  public int getRefCount() {<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    return refCount.get();<a name="line.329"></a>
-<span class="sourceLineNo">330</span>  }<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>   * @return true if the file is still used in reads<a name="line.333"></a>
-<span class="sourceLineNo">334</span>   */<a name="line.334"></a>
-<span class="sourceLineNo">335</span>  public boolean isReferencedInReads() {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    int rc = refCount.get();<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    assert rc &gt;= 0; // we should not go negative.<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    return rc &gt; 0;<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>  @Override<a name="line.341"></a>
-<span class="sourceLineNo">342</span>  public OptionalLong getBulkLoadTimestamp() {<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    byte[] bulkLoadTimestamp = metadataMap.get(BULKLOAD_TIME_KEY);<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    return bulkLoadTimestamp == null ? OptionalLong.empty()<a name="line.344"></a>
-<span class="sourceLineNo">345</span>        : OptionalLong.of(Bytes.toLong(bulkLoadTimestamp));<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>
-<span class="sourceLineNo">348</span>  /**<a name="line.348"></a>
-<span class="sourceLineNo">349</span>   * @return the cached value of HDFS blocks distribution. The cached value is calculated when store<a name="line.349"></a>
-<span class="sourceLineNo">350</span>   *         file is opened.<a name="line.350"></a>
-<span class="sourceLineNo">351</span>   */<a name="line.351"></a>
-<span class="sourceLineNo">352</span>  public HDFSBlocksDistribution getHDFSBlockDistribution() {<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    return this.fileInfo.getHDFSBlockDistribution();<a name="line.353"></a>
-<span class="sourceLineNo">354</span>  }<a name="line.354"></a>
-<span class="sourceLineNo">355</span><a name="line.355"></a>
-<span class="sourceLineNo">356</span>  /**<a name="line.356"></a>
-<span class="sourceLineNo">357</span>   * Opens reader on this store file. Called by Constructor.<a name="line.357"></a>
-<span class="sourceLineNo">358</span>   * @throws IOException<a name="line.358"></a>
-<span class="sourceLineNo">359</span>   * @see #closeStoreFile(boolean)<a name="line.359"></a>
-<span class="sourceLineNo">360</span>   */<a name="line.360"></a>
-<span class="sourceLineNo">361</span>  private void open() throws IOException {<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    if (this.reader != null) {<a name="line.362"></a>
-<span class="sourceLineNo">363</span>      throw new IllegalAccessError("Already open");<a name="line.363"></a>
-<span class="sourceLineNo">364</span>    }<a name="line.364"></a>
-<span class="sourceLineNo">365</span><a name="line.365"></a>
-<span class="sourceLineNo">366</span>    // Open the StoreFile.Reader<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    this.reader = fileInfo.open(this.fs, this.cacheConf, false, noReadahead ? 0L : -1L,<a name="line.367"></a>
-<span class="sourceLineNo">368</span>      primaryReplica, refCount, true);<a name="line.368"></a>
-<span class="sourceLineNo">369</span><a name="line.369"></a>
-<span class="sourceLineNo">370</span>    // Load up indices and fileinfo. This also loads Bloom filter type.<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    metadataMap = Collections.unmodifiableMap(this.reader.loadFileInfo());<a name="line.371"></a>
+<span class="sourceLineNo">191</span>  // StoreFile.Reader<a name="line.191"></a>
+<span class="sourceLineNo">192</span>  private volatile StoreFileReader reader;<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>   * Bloom filter type specified in column family configuration. Does not<a name="line.195"></a>
+<span class="sourceLineNo">196</span>   * necessarily correspond to the Bloom filter type present in the HFile.<a name="line.196"></a>
+<span class="sourceLineNo">197</span>   */<a name="line.197"></a>
+<span class="sourceLineNo">198</span>  private final BloomType cfBloomType;<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>   * Constructor, loads a reader and it's indices, etc. May allocate a substantial amount of ram<a name="line.201"></a>
+<span class="sourceLineNo">202</span>   * depending on the underlying files (10-20MB?).<a name="line.202"></a>
+<span class="sourceLineNo">203</span>   * @param fs The current file system to use.<a name="line.203"></a>
+<span class="sourceLineNo">204</span>   * @param p The path of the file.<a name="line.204"></a>
+<span class="sourceLineNo">205</span>   * @param conf The current configuration.<a name="line.205"></a>
+<span class="sourceLineNo">206</span>   * @param cacheConf The cache configuration and block cache reference.<a name="line.206"></a>
+<span class="sourceLineNo">207</span>   * @param cfBloomType The bloom type to use for this store file as specified by column family<a name="line.207"></a>
+<span class="sourceLineNo">208</span>   *          configuration. This may or may not be the same as the Bloom filter type actually<a name="line.208"></a>
+<span class="sourceLineNo">209</span>   *          present in the HFile, because column family configuration might change. If this is<a name="line.209"></a>
+<span class="sourceLineNo">210</span>   *          {@link BloomType#NONE}, the existing Bloom filter is ignored.<a name="line.210"></a>
+<span class="sourceLineNo">211</span>   * @param primaryReplica true if this is a store file for primary replica, otherwise false.<a name="line.211"></a>
+<span class="sourceLineNo">212</span>   * @throws IOException<a name="line.212"></a>
+<span class="sourceLineNo">213</span>   */<a name="line.213"></a>
+<span class="sourceLineNo">214</span>  public HStoreFile(FileSystem fs, Path p, Configuration conf, CacheConfig cacheConf,<a name="line.214"></a>
+<span class="sourceLineNo">215</span>      BloomType cfBloomType, boolean primaryReplica) throws IOException {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    this(fs, new StoreFileInfo(conf, fs, p), conf, cacheConf, cfBloomType, primaryReplica);<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>   * Constructor, loads a reader and it's indices, etc. May allocate a substantial amount of ram<a name="line.220"></a>
+<span class="sourceLineNo">221</span>   * depending on the underlying files (10-20MB?).<a name="line.221"></a>
+<span class="sourceLineNo">222</span>   * @param fs fs The current file system to use.<a name="line.222"></a>
+<span class="sourceLineNo">223</span>   * @param fileInfo The store file information.<a name="line.223"></a>
+<span class="sourceLineNo">224</span>   * @param conf The current configuration.<a name="line.224"></a>
+<span class="sourceLineNo">225</span>   * @param cacheConf The cache configuration and block cache reference.<a name="line.225"></a>
+<span class="sourceLineNo">226</span>   * @param cfBloomType The bloom type to use for this store file as specified by column<a name="line.226"></a>
+<span class="sourceLineNo">227</span>   *          family configuration. This may or may not be the same as the Bloom filter type<a name="line.227"></a>
+<span class="sourceLineNo">228</span>   *          actually present in the HFile, because column family configuration might change. If<a name="line.228"></a>
+<span class="sourceLineNo">229</span>   *          this is {@link BloomType#NONE}, the existing Bloom filter is ignored.<a name="line.229"></a>
+<span class="sourceLineNo">230</span>   * @param primaryReplica true if this is a store file for primary replica, otherwise false.<a name="line.230"></a>
+<span class="sourceLineNo">231</span>   */<a name="line.231"></a>
+<span class="sourceLineNo">232</span>  public HStoreFile(FileSystem fs, StoreFileInfo fileInfo, Configuration conf, CacheConfig cacheConf,<a name="line.232"></a>
+<span class="sourceLineNo">233</span>      BloomType cfBloomType, boolean primaryReplica) {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    this.streamReaders = ConcurrentHashMap.newKeySet();<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    this.fs = fs;<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    this.fileInfo = fileInfo;<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    this.cacheConf = cacheConf;<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    this.noReadahead =<a name="line.238"></a>
+<span class="sourceLineNo">239</span>        conf.getBoolean(STORE_FILE_READER_NO_READAHEAD, DEFAULT_STORE_FILE_READER_NO_READAHEAD);<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    if (BloomFilterFactory.isGeneralBloomEnabled(conf)) {<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      this.cfBloomType = cfBloomType;<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    } else {<a name="line.242"></a>
+<span class="sourceLineNo">243</span>      LOG.info("Ignoring bloom filter check for file " + this.getPath() + ": " + "cfBloomType=" +<a name="line.243"></a>
+<span class="sourceLineNo">244</span>          cfBloomType + " (disabled in config)");<a name="line.244"></a>
+<span class="sourceLineNo">245</span>      this.cfBloomType = BloomType.NONE;<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    }<a name="line.246"></a>
+<span class="sourceLineNo">247</span>    this.primaryReplica = primaryReplica;<a name="line.247"></a>
+<span class="sourceLineNo">248</span>  }<a name="line.248"></a>
+<span class="sourceLineNo">249</span><a name="line.249"></a>
+<span class="sourceLineNo">250</span>  /**<a name="line.250"></a>
+<span class="sourceLineNo">251</span>   * @return the StoreFile object associated to this StoreFile. null if the StoreFile is not a<a name="line.251"></a>
+<span class="sourceLineNo">252</span>   *         reference.<a name="line.252"></a>
+<span class="sourceLineNo">253</span>   */<a name="line.253"></a>
+<span class="sourceLineNo">254</span>  public StoreFileInfo getFileInfo() {<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    return this.fileInfo;<a name="line.255"></a>
+<span class="sourceLineNo">256</span>  }<a name="line.256"></a>
+<span class="sourceLineNo">257</span><a name="line.257"></a>
+<span class="sourceLineNo">258</span>  @Override<a name="line.258"></a>
+<span class="sourceLineNo">259</span>  public Path getPath() {<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    return this.fileInfo.getPath();<a name="line.260"></a>
+<span class="sourceLineNo">261</span>  }<a name="line.261"></a>
+<span class="sourceLineNo">262</span><a name="line.262"></a>
+<span class="sourceLineNo">263</span>  @Override<a name="line.263"></a>
+<span class="sourceLineNo">264</span>  public Path getQualifiedPath() {<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    return this.fileInfo.getPath().makeQualified(fs.getUri(), fs.getWorkingDirectory());<a name="line.265"></a>
+<span class="sourceLineNo">266</span>  }<a name="line.266"></a>
+<span class="sourceLineNo">267</span><a name="line.267"></a>
+<span class="sourceLineNo">268</span>  @Override<a name="line.268"></a>
+<span class="sourceLineNo">269</span>  public boolean isReference() {<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    return this.fileInfo.isReference();<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>  @Override<a name="line.273"></a>
+<span class="sourceLineNo">274</span>  public boolean isHFile() {<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    return StoreFileInfo.isHFile(this.fileInfo.getPath());<a name="line.275"></a>
+<span class="sourceLineNo">276</span>  }<a name="line.276"></a>
+<span class="sourceLineNo">277</span><a name="line.277"></a>
+<span class="sourceLineNo">278</span>  @Override<a name="line.278"></a>
+<span class="sourceLineNo">279</span>  public boolean isMajorCompactionResult() {<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    if (this.majorCompaction == null) {<a name="line.280"></a>
+<span class="sourceLineNo">281</span>      throw new NullPointerException("This has not been set yet");<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    }<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    return this.majorCompaction.get();<a name="line.283"></a>
+<span class="sourceLineNo">284</span>  }<a name="line.284"></a>
+<span class="sourceLineNo">285</span><a name="line.285"></a>
+<span class="sourceLineNo">286</span>  @Override<a name="line.286"></a>
+<span class="sourceLineNo">287</span>  public boolean excludeFromMinorCompaction() {<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    return this.excludeFromMinorCompaction;<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>  @Override<a name="line.291"></a>
+<span class="sourceLineNo">292</span>  public long getMaxSequenceId() {<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    return this.sequenceid;<a name="line.293"></a>
+<span class="sourceLineNo">294</span>  }<a name="line.294"></a>
+<span class="sourceLineNo">295</span><a name="line.295"></a>
+<span class="sourceLineNo">296</span>  @Override<a name="line.296"></a>
+<span class="sourceLineNo">297</span>  public long getModificationTimeStamp() throws IOException {<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    return getModificationTimestamp();<a name="line.298"></a>
+<span class="sourceLineNo">299</span>  }<a name="line.299"></a>
+<span class="sourceLineNo">300</span><a name="line.300"></a>
+<span class="sourceLineNo">301</span>  @Override<a name="line.301"></a>
+<span class="sourceLineNo">302</span>  public long getModificationTimestamp() throws IOException {<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    return fileInfo.getModificationTime();<a name="line.303"></a>
+<span class="sourceLineNo">304</span>  }<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>   * Only used by the Striped Compaction Policy<a name="line.307"></a>
+<span class="sourceLineNo">308</span>   * @param key<a name="line.308"></a>
+<span class="sourceLineNo">309</span>   * @return value associated with the metadata key<a name="line.309"></a>
+<span class="sourceLineNo">310</span>   */<a name="line.310"></a>
+<span class="sourceLineNo">311</span>  public byte[] getMetadataValue(byte[] key) {<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    return metadataMap.get(key);<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>  @Override<a name="line.315"></a>
+<span class="sourceLineNo">316</span>  public boolean isBulkLoadResult() {<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    boolean bulkLoadedHFile = false;<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    String fileName = this.getPath().getName();<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    int startPos = fileName.indexOf("SeqId_");<a name="line.319"></a>
+<span class="sourceLineNo">320</span>    if (startPos != -1) {<a name="line.320"></a>
+<span class="sourceLineNo">321</span>      bulkLoadedHFile = true;<a name="line.321"></a>
+<span class="sourceLineNo">322</span>    }<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    return bulkLoadedHFile || (metadataMap != null &amp;&amp; metadataMap.containsKey(BULKLOAD_TIME_KEY));<a name="line.323"></a>
+<span class="sourceLineNo">324</span>  }<a name="line.324"></a>
+<span class="sourceLineNo">325</span><a name="line.325"></a>
+<span class="sourceLineNo">326</span>  public boolean isCompactedAway() {<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    return compactedAway;<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>  @VisibleForTesting<a name="line.330"></a>
+<span class="sourceLineNo">331</span>  public int getRefCount() {<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    return refCount.get();<a name="line.332"></a>
+<span class="sourceLineNo">333</span>  }<a name="line.333"></a>
+<span class="sourceLineNo">334</span><a name="line.334"></a>
+<span class="sourceLineNo">335</span>  /**<a name="line.335"></a>
+<span class="sourceLineNo">336</span>   * @return true if the file is still used in reads<a name="line.336"></a>
+<span class="sourceLineNo">337</span>   */<a name="line.337"></a>
+<span class="sourceLineNo">338</span>  public boolean isReferencedInReads() {<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    int rc = refCount.get();<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    assert rc &gt;= 0; // we should not go negative.<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    return rc &gt; 0;<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>  @Override<a name="line.344"></a>
+<span class="sourceLineNo">345</span>  public OptionalLong getBulkLoadTimestamp() {<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    byte[] bulkLoadTimestamp = metadataMap.get(BULKLOAD_TIME_KEY);<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    return bulkLoadTimestamp == null ? OptionalLong.empty()<a name="line.347"></a>
+<span class="sourceLineNo">348</span>        : OptionalLong.of(Bytes.toLong(bulkLoadTimestamp));<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>  /**<a name="line.351"></a>
+<span class="sourceLineNo">352</span>   * @return the cached value of HDFS blocks distribution. The cached value is calculated when store<a name="line.352"></a>
+<span class="sourceLineNo">353</span>   *         file is opened.<a name="line.353"></a>
+<span class="sourceLineNo">354</span>   */<a name="line.354"></a>
+<span class="sourceLineNo">355</span>  public HDFSBlocksDistribution getHDFSBlockDistribution() {<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    return this.fileInfo.getHDFSBlockDistribution();<a name="line.356"></a>
+<span class="sourceLineNo">357</span>  }<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>   * Opens reader on this store file. Called by Constructor.<a name="line.360"></a>
+<span class="sourceLineNo">361</span>   * @throws IOException<a name="line.361"></a>
+<span class="sourceLineNo">362</span>   * @see #closeStoreFile(boolean)<a name="line.362"></a>
+<span class="sourceLineNo">363</span>   */<a name="line.363"></a>
+<span class="sourceLineNo">364</span>  private void open() throws IOException {<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    if (this.reader != null) {<a name="line.365"></a>
+<span class="sourceLineNo">366</span>      throw new IllegalAccessError("Already open");<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    }<a name="line.367"></a>
+<span class="sourceLineNo">368</span><a name="line.368"></a>
+<span class="sourceLineNo">369</span>    // Open the StoreFile.Reader<a name="line.369"></a>
+<span class="sourceLineNo">370</span>    this.reader = fileInfo.open(this.fs, this.cacheConf, false, noReadahead ? 0L : -1L,<a name="line.370"></a>
+<span class="sourceLineNo">371</span>      primaryReplica, refCount, true);<a name="line.371"></a>
 <span class="sourceLineNo">372</span><a name="line.372"></a>
-<span class="sourceLineNo">373</span>    // Read in our metadata.<a name="line.373"></a>
-<span class="sourceLineNo">374</span>    byte [] b = metadataMap.get(MAX_SEQ_ID_KEY);<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    if (b != null) {<a name="line.375"></a>
-<span class="sourceLineNo">376</span>      // By convention, if halfhfile, top half has a sequence number &gt; bottom<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      // half. Thats why we add one in below. Its done for case the two halves<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      // are ever merged back together --rare.  Without it, on open of store,<a name="line.378"></a>
-<span class="sourceLineNo">379</span>      // since store files are distinguished by sequence id, the one half would<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      // subsume the other.<a name="line.380"></a>
-<span class="sourceLineNo">381</span>      this.sequenceid = Bytes.toLong(b);<a name="line.381"></a>
-<span class="sourceLineNo">382</span>      if (fileInfo.isTopReference()) {<a name="line.382"></a>
-<span class="sourceLineNo">383</span>        this.sequenceid += 1;<a name="line.383"></a>
-<span class="sourceLineNo">384</span>      }<a name="line.384"></a>
-<span class="sourceLineNo">385</span>    }<a name="line.385"></a>
-<span class="sourceLineNo">386</span><a name="line.386"></a>
-<span class="sourceLineNo">387</span>    if (isBulkLoadResult()){<a name="line.387"></a>
-<span class="sourceLineNo">388</span>      // generate the sequenceId from the fileName<a name="line.388"></a>
-<span class="sourceLineNo">389</span>      // fileName is of the form &lt;randomName&gt;_SeqId_&lt;id-when-loaded&gt;_<a name="line.389"></a>
-<span class="sourceLineNo">390</span>      String fileName = this.getPath().getName();<a name="line.390"></a>
-<span class="sourceLineNo">391</span>      // Use lastIndexOf() to get the last, most recent bulk load seqId.<a name="line.391"></a>
-<span class="sourceLineNo">392</span>      int startPos = fileName.lastIndexOf("SeqId_");<a name="line.392"></a>
-<span class="sourceLineNo">393</span>      if (startPos != -1) {<a name="line.393"></a>
-<span class="sourceLineNo">394</span>        this.sequenceid = Long.parseLong(fileName.substring(startPos + 6,<a name="line.394"></a>
-<span class="sourceLineNo">395</span>            fileName.indexOf('_', startPos + 6)));<a name="line.395"></a>
-<span class="sourceLineNo">396</span>        // Handle reference files as done above.<a name="line.396"></a>
-<span class="sourceLineNo">397</span>        if (fileInfo.isTopReference()) {<a name="line.397"></a>
-<span class="sourceLineNo">398</span>          this.sequenceid += 1;<a name="line.398"></a>
-<span class="sourceLineNo">399</span>        }<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      }<a name="line.400"></a>
-<span class="sourceLineNo">401</span>      // SKIP_RESET_SEQ_ID only works in bulk loaded file.<a name="line.401"></a>
-<span class="sourceLineNo">402</span>      // In mob compaction, the hfile where the cells contain the path of a new mob file is bulk<a name="line.402"></a>
-<span class="sourceLineNo">403</span>      // loaded to hbase, these cells have the same seqIds with the old ones. We do not want<a name="line.403"></a>
-<span class="sourceLineNo">404</span>      // to reset new seqIds for them since this might make a mess of the visibility of cells that<a name="line.404"></a>
-<span class="sourceLineNo">405</span>      // have the same row key but different seqIds.<a name="line.405"></a>
-<span class="sourceLineNo">406</span>      boolean skipResetSeqId = isSkipResetSeqId(metadataMap.get(SKIP_RESET_SEQ_ID));<a name="line.406"></a>
-<span class="sourceLineNo">407</span>      if (skipResetSeqId) {<a name="line.407"></a>
-<span class="sourceLineNo">408</span>        // increase the seqId when it is a bulk loaded file from mob compaction.<a name="line.408"></a>
-<span class="sourceLineNo">409</span>        this.sequenceid += 1;<a name="line.409"></a>
-<span class="sourceLineNo">410</span>      }<a name="line.410"></a>
-<span class="sourceLineNo">411</span>      this.reader.setSkipResetSeqId(skipResetSeqId);<a name="line.411"></a>
-<span class="sourceLineNo">412</span>      this.reader.setBulkLoaded(true);<a name="line.412"></a>
-<span class="sourceLineNo">413</span>    }<a name="line.413"></a>
-<span class="sourceLineNo">414</span>    this.reader.setSequenceID(this.sequenceid);<a name="line.414"></a>
-<span class="sourceLineNo">415</span><a name="line.415"></a>
-<span class="sourceLineNo">416</span>    b = metadataMap.get(HFile.Writer.MAX_MEMSTORE_TS_KEY);<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    if (b != null) {<a name="line.417"></a>
-<span class="sourceLineNo">418</span>      this.maxMemstoreTS = Bytes.toLong(b);<a name="line.418"></a>
-<span class="sourceLineNo">419</span>    }<a name="line.419"></a>
-<span class="sourceLineNo">420</span><a name="line.420"></a>
-<span class="sourceLineNo">421</span>    b = metadataMap.get(MAJOR_COMPACTION_KEY);<a name="line.421"></a>
-<span class="sourceLineNo">422</span>    if (b != null) {<a name="line.422"></a>
-<span class="sourceLineNo">423</span>      boolean mc = Bytes.toBoolean(b);<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      if (this.majorCompaction == null) {<a name="line.424"></a>
-<span class="sourceLineNo">425</span>        this.majorCompaction = new AtomicBoolean(mc);<a name="line.425"></a>
-<span class="sourceLineNo">426</span>      } else {<a name="line.426"></a>
-<span class="sourceLineNo">427</span>        this.majorCompaction.set(mc);<a name="line.427"></a>
-<span class="sourceLineNo">428</span>      }<a name="line.428"></a>
-<span class="sourceLineNo">429</span>    } else {<a name="line.429"></a>
-<span class="sourceLineNo">430</span>      // Presume it is not major compacted if it doesn't explicity say so<a name="line.430"></a>
-<span class="sourceLineNo">431</span>      // HFileOutputFormat explicitly sets the major compacted key.<a name="line.431"></a>
-<span class="sourceLineNo">432</span>      this.majorCompaction = new AtomicBoolean(false);<a name="line.432"></a>
-<span class="sourceLineNo">433</span>    }<a name="line.433"></a>
-<span class="sourceLineNo">434</span><a name="line.434"></a>
-<span class="sourceLineNo">435</span>    b = metadataMap.get(EXCLUDE_FROM_MINOR_COMPACTION_KEY);<a name="line.435"></a>
-<span class="sourceLineNo">436</span>    this.excludeFromMinorCompaction = (b != null &amp;&amp; Bytes.toBoolean(b));<a name="line.436"></a>
+<span class="sourceLineNo">373</span>    // Load up indices and fileinfo. This also loads Bloom filter type.<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    metadataMap = Collections.unmodifiableMap(this.reader.loadFileInfo());<a name="line.374"></a>
+<span class="sourceLineNo">375</span><a name="line.375"></a>
+<span class="sourceLineNo">376</span>    // Read in our metadata.<a name="line.376"></a>
+<span class="sourceLineNo">377</span>    byte [] b = metadataMap.get(MAX_SEQ_ID_KEY);<a name="line.377"></a>
+<span class="sourceLineNo">378</span>    if (b != null) {<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      // By convention, if halfhfile, top half has a sequence number &gt; bottom<a name="line.379"></a>
+<span class="sourceLineNo">380</span>      // half. Thats why we add one in below. Its done for case the two halves<a name="line.380"></a>
+<span class="sourceLineNo">381</span>      // are ever merged back together --rare.  Without it, on open of store,<a name="line.381"></a>
+<span class="sourceLineNo">382</span>      // since store files are distinguished by sequence id, the one half would<a name="line.382"></a>
+<span class="sourceLineNo">383</span>      // subsume the other.<a name="line.383"></a>
+<span class="sourceLineNo">384</span>      this.sequenceid = Bytes.toLong(b);<a name="line.384"></a>
+<span class="sourceLineNo">385</span>      if (fileInfo.isTopReference()) {<a name="line.385"></a>
+<span class="sourceLineNo">386</span>        this.sequenceid += 1;<a name="line.386"></a>
+<span class="sourceLineNo">387</span>      }<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    }<a name="line.388"></a>
+<span class="sourceLineNo">389</span><a name="line.389"></a>
+<span class="sourceLineNo">390</span>    if (isBulkLoadResult()){<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      // generate the sequenceId from the fileName<a name="line.391"></a>
+<span class="sourceLineNo">392</span>      // fileName is of the form &lt;randomName&gt;_SeqId_&lt;id-when-loaded&gt;_<a name="line.392"></a>
+<span class="sourceLineNo">393</span>      String fileName = this.getPath().getName();<a name="line.393"></a>
+<span class="sourceLineNo">394</span>      // Use lastIndexOf() to get the last, most recent bulk load seqId.<a name="line.394"></a>
+<span class="sourceLineNo">395</span>      int startPos = fileName.lastIndexOf("SeqId_");<a name="line.395"></a>
+<span class="sourceLineNo">396</span>      if (startPos != -1) {<a name="line.396"></a>
+<span class="sourceLineNo">397</span>        this.sequenceid = Long.parseLong(fileName.substring(startPos + 6,<a name="line.397"></a>
+<span class="sourceLineNo">398</span>            fileName.indexOf('_', startPos + 6)));<a name="line.398"></a>
+<span class="sourceLineNo">399</span>        // Handle reference files as done above.<a name="line.399"></a>
+<span class="sourceLineNo">400</span>        if (fileInfo.isTopReference()) {<a name="line.400"></a>
+<span class="sourceLineNo">401</span>          this.sequenceid += 1;<a name="line.401"></a>
+<span class="sourceLineNo">402</span>        }<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      }<a name="line.403"></a>
+<span class="sourceLineNo">404</span>      // SKIP_RESET_SEQ_ID only works in bulk loaded file.<a name="line.404"></a>
+<span class="sourceLineNo">405</span>      // In mob compaction, the hfile where the cells contain the path of a new mob file is bulk<a name="line.405"></a>
+<span class="sourceLineNo">406</span>      // loaded to hbase, these cells have the same seqIds with the old ones. We do not want<a name="line.406"></a>
+<span class="sourceLineNo">407</span>      // to reset new seqIds for them since this might make a mess of the visibility of cells that<a name="line.407"></a>
+<span class="sourceLineNo">408</span>      // have the same row key but different seqIds.<a name="line.408"></a>
+<span class="sourceLineNo">409</span>      boolean skipResetSeqId = isSkipResetSeqId(metadataMap.get(SKIP_RESET_SEQ_ID));<a name="line.409"></a>
+<span class="sourceLineNo">410</span>      if (skipResetSeqId) {<a name="line.410"></a>
+<span class="sourceLineNo">411</span>        // increase the seqId when it is a bulk loaded file from mob compaction.<a name="line.411"></a>
+<span class="sourceLineNo">412</span>        this.sequenceid += 1;<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      }<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      this.reader.setSkipResetSeqId(skipResetSeqId);<a name="line.414"></a>
+<span class="sourceLineNo">415</span>      this.reader.setBulkLoaded(true);<a name="line.415"></a>
+<span class="sourceLineNo">416</span>    }<a name="line.416"></a>
+<span class="sourceLineNo">417</span>    this.reader.setSequenceID(this.sequenceid);<a name="line.417"></a>
+<span class="sourceLineNo">418</span><a name="line.418"></a>
+<span class="sourceLineNo">419</span>    b = metadataMap.get(HFile.Writer.MAX_MEMSTORE_TS_KEY);<a name="line.419"></a>
+<span class="sourceLineNo">420</span>    if (b != null) {<a name="line.420"></a>
+<span class="sourceLineNo">421</span>      this.maxMemstoreTS = Bytes.toLong(b);<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>    b = metadataMap.get(MAJOR_COMPACTION_KEY);<a name="line.424"></a>
+<span class="sourceLineNo">425</span>    if (b != null) {<a name="line.425"></a>
+<span class="sourceLineNo">426</span>      boolean mc = Bytes.toBoolean(b);<a name="line.426"></a>
+<span class="sourceLineNo">427</span>      if (this.majorCompaction == null) {<a name="line.427"></a>
+<span class="sourceLineNo">428</span>        this.majorCompaction = new AtomicBoolean(mc);<a name="line.428"></a>
+<span class="sourceLineNo">429</span>      } else {<a name="line.429"></a>
+<span class="sourceLineNo">430</span>        this.majorCompaction.set(mc);<a name="line.430"></a>
+<span class="sourceLineNo">431</span>      }<a name="line.431"></a>
+<span class="sourceLineNo">432</span>    } else {<a name="line.432"></a>
+<span class="sourceLineNo">433</span>      // Presume it is not major compacted if it doesn't explicity say so<a name="line.433"></a>
+<span class="sourceLineNo">434</span>      // HFileOutputFormat explicitly sets the major compacted key.<a name="line.434"></a>
+<span class="sourceLineNo">435</span>      this.majorCompaction = new AtomicBoolean(false);<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>    BloomType hfileBloomType = reader.getBloomFilterType();<a name="line.438"></a>
-<span class="sourceLineNo">439</span>    if (cfBloomType != BloomType.NONE) {<a name="line.439"></a>
-<span class="sourceLineNo">440</span>      reader.loadBloomfilter(BlockType.GENERAL_BLOOM_META);<a name="line.440"></a>
-<span class="sourceLineNo">441</span>      if (hfileBloomType != cfBloomType) {<a name="line.441"></a>
-<span class="sourceLineNo">442</span>        LOG.info("HFile Bloom filter type for "<a name="line.442"></a>
-<span class="sourceLineNo">443</span>            + reader.getHFileReader().getName() + ": " + hfileBloomType<a name="line.443"></a>
-<span class="sourceLineNo">444</span>            + ", but " + cfBloomType + " specified in column family "<a name="line.444"></a>
-<span class="sourceLineNo">445</span>            + "configuration");<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      }<a name="line.446"></a>
-<span class="sourceLineNo">447</span>    } else if (hfileBloomType != BloomType.NONE) {<a name="line.447"></a>
-<span class="sourceLineNo">448</span>      LOG.info("Bloom filter turned off by CF config for "<a name="line.448"></a>
-<span class="sourceLineNo">449</span>          + reader.getHFileReader().getName());<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    }<a name="line.450"></a>
-<span class="sourceLineNo">451</span><a name="line.451"></a>
-<span class="sourceLineNo">452</span>    // load delete family bloom filter<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    reader.loadBloomfilter(BlockType.DELETE_FAMILY_BLOOM_META);<a name="line.453"></a>
+<span class="sourceLineNo">438</span>    b = metadataMap.get(EXCLUDE_FROM_MINOR_COMPACTION_KEY);<a name="line.438"></a>
+<span class="sourceLineNo">439</span>    this.excludeFromMinorCompaction = (b != null &amp;&amp; Bytes.toBoolean(b));<a name="line.439"></a>
+<span class="sourceLineNo">440</span><a name="line.440"></a>
+<span class="sourceLineNo">441</span>    BloomType hfileBloomType = reader.getBloomFilterType();<a name="line.441"></a>
+<span class="sourceLineNo">442</span>    if (cfBloomType != BloomType.NONE) {<a name="line.442"></a>
+<span class="sourceLineNo">443</span>      reader.loadBloomfilter(BlockType.GENERAL_BLOOM_META);<a name="line.443"></a>
+<span class="sourceLineNo">444</span>      if (hfileBloomType != cfBloomType) {<a name="line.444"></a>
+<span class="sourceLineNo">445</span>        LOG.info("HFile Bloom filter type for "<a name="line.445"></a>
+<span class="sourceLineNo">446</span>            + reader.getHFileReader().getName() + ": " + hfileBloomType<a name="line.446"></a>
+<span class="sourceLineNo">447</span>            + ", but " + cfBloomType + " specified in column family "<a name="line.447"></a>
+<span class="sourceLineNo">448</span>            + "configuration");<a name="line.448"></a>
+<span class="sourceLineNo">449</span>      }<a name="line.449"></a>
+<span class="sourceLineNo">450</span>    } else if (hfileBloomType != BloomType.NONE) {<a name="line.450"></a>
+<span class="sourceLineNo">451</span>      LOG.info("Bloom filter turned off by CF config for "<a name="line.451"></a>
+<span class="sourceLineNo">452</span>          + reader.getHFileReader().getName());<a name="line.452"></a>
+<span class="sourceLineNo">453</span>    }<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>      byte[] data = metadataMap.get(TIMERANGE_KEY);<a name="line.456"></a>
-<span class="sourceLineNo">457</span>      this.reader.timeRange = data == null ? null : TimeRangeTracker.parseFrom(data).toTimeRange();<a name="line.457"></a>
-<span class="sourceLineNo">458</span>    } catch (IllegalArgumentException e) {<a name="line.458"></a>
-<span class="sourceLineNo">459</span>      LOG.error("Error reading timestamp range data from meta -- " +<a name="line.459"></a>
-<span class="sourceLineNo">460</span>          "proceeding without", e);<a name="line.460"></a>
-<span class="sourceLineNo">461</span>      this.reader.timeRange = null;<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    }<a name="line.462"></a>
-<span class="sourceLineNo">463</span>    // initialize so we can reuse them after reader closed.<a name="line.463"></a>
-<span class="sourceLineNo">464</span>    firstKey = reader.getFirstKey();<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    lastKey = reader.getLastKey();<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    comparator = reader.getComparator();<a name="line.466"></a>
-<span class="sourceLineNo">467</span>  }<a name="line.467"></a>
-<span class="sourceLineNo">468</span><a name="line.468"></a>
-<span class="sourceLineNo">469</span>  /**<a name="line.469"></a>
-<span class="sourceLineNo">470</span>   * Initialize the reader used for pread.<a name="line.470"></a>
-<span class="sourceLineNo">471</span>   */<a name="line.471"></a>
-<span class="sourceLineNo">472</span>  public void initReader() throws IOException {<a name="line.472"></a>
-<span class="sourceLineNo">473</span>    if (reader == null) {<a name="line.473"></a>
-<span class="sourceLineNo">474</span>      try {<a name="line.474"></a>
-<span class="sourceLineNo">475</span>        open();<a name="line.475"></a>
-<span class="sourceLineNo">476</span>      } catch (Exception e) {<a name="line.476"></a>
-<span class="sourceLineNo">477</span>        try {<a name="line.477"></a>
-<span class="sourceLineNo">478</span>          boolean evictOnClose = cacheConf != null ? cacheConf.shouldEvictOnClose() : true;<a name="line.478"></a>
-<span class="sourceLineNo">479</span>          this.closeStoreFile(evictOnClose);<a name="line.479"></a>
-<span class="sourceLineNo">480</span>        } catch (IOException ee) {<a name="line.480"></a>
-<span class="sourceLineNo">481</span>          LOG.warn("failed to close reader", ee);<a name="line.481"></a>
-<span class="sourceLineNo">482</span>        }<a name="line.482"></a>
-<span class="sourceLineNo">483</span>        throw e;<a name="line.483"></a>
-<span class="sourceLineNo">484</span>      }<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    }<a name="line.485"></a>
-<span class="sourceLineNo">486</span>  }<a name="line.486"></a>
-<span class="sourceLineNo">487</span><a name="line.487"></a>
-<span class="sourceLineNo">488</span>  private StoreFileReader createStreamReader(boolean canUseDropBehind) throws IOException {<a name="line.488"></a>
-<span class="sourceLineNo">489</span>    initReader();<a name="line.489"></a>
-<span class="sourceLineNo">490</span>    StoreFileReader reader = fileInfo.open(this.fs, this.cacheConf, canUseDropBehind, -1L,<a name="line.490"></a>
-<span class="sourceLineNo">491</span>      primaryReplica, refCount, false);<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    reader.copyFields(this.reader);<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    return reader;<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>   * Get a scanner which uses pread.<a name="line.497"></a>
-<span class="sourceLineNo">498</span>   * &lt;p&gt;<a name="line.498"></a>
-<span class="sourceLineNo">499</span>   * Must be called after initReader.<a name="line.499"></a>
-<span class="sourceLineNo">500</span>   */<a name="line.500"></a>
-<span class="sourceLineNo">501</span>  public StoreFileScanner getPreadScanner(boolean cacheBlocks, long readPt, long scannerOrder,<a name="line.501"></a>
-<span class="sourceLineNo">502</span>      boolean canOptimizeForNonNullColumn) {<a name="line.502"></a>
-<span class="sourceLineNo">503</span>    return getReader().getStoreFileScanner(cacheBlocks, true, false, readPt, scannerOrder,<a name="line.503"></a>
-<span class="sourceLineNo">504</span>      canOptimizeForNonNullColumn);<a name="line.504"></a>
-<span class="sourceLineNo">505</span>  }<a name="line.505"></a>
-<span class="sourceLineNo">506</span><a name="line.506"></a>
-<span class="sourceLineNo">507</span>  /**<a name="line.507"></a>
-<span class="sourceLineNo">508</span>   * Get a scanner which uses streaming read.<a name="line.508"></a>
-<span class="sourceLineNo">509</span>   * &lt;p&gt;<a name="line.509"></a>
-<span class="sourceLineNo">510</span>   * Must be called after initReader.<a name="line.510"></a>
-<span class="sourceLineNo">511</span>   */<a name="line.511"></a>
-<span class="sourceLineNo">512</span>  public StoreFileScanner getStreamScanner(boolean canUseDropBehind, boolean cacheBlocks,<a name="line.512"></a>
-<span class="sourceLineNo">513</span>      boolean isCompaction, long readPt, long scannerOrder, boolean canOptimizeForNonNullColumn)<a name="line.513"></a>
-<span class="sourceLineNo">514</span>      throws IOException {<a name="line.514"></a>
-<span class="sourceLineNo">515</span>    StoreFileReader reader = createStreamReader(canUseDropBehind);<a name="line.515"></a>
-<span class="sourceLineNo">516</span>    reader.setListener(this);<a name="line.516"></a>
-<span class="sourceLineNo">517</span>    StoreFileScanner sfScanner = reader.getStoreFileScanner(cacheBlocks, false,<a name="line.517"></a>
-<span class="sourceLineNo">518</span>      isCompaction, readPt, scannerOrder, canOptimizeForNonNullColumn);<a name="line.518"></a>
-<span class="sourceLineNo">519</span>    //Add reader once the scanner is created<a name="line.519"></a>
-<span class="sourceLineNo">520</span>    streamReaders.add(reader);<a name="line.520"></a>
-<span class="sourceLineNo">521</span>    return sfScanner;<a name="line.521"></a>
-<span class="sourceLineNo">522</span>  }<a name="line.522"></a>
-<span class="sourceLineNo">523</span><a name="line.523"></a>
-<span class="sourceLineNo">524</span>  /**<a name="line.524"></a>
-<span class="sourceLineNo">525</span>   * @return Current reader. Must call initReader first else returns null.<a name="line.525"></a>
-<span class="sourceLineNo">526</span>   * @see #initReader()<a name="line.526"></a>
-<span class="sourceLineNo">527</span>   */<a name="line.527"></a>
-<span class="sourceLineNo">528</span>  public StoreFileReader getReader() {<a name="line.528"></a>
-<span class="sourceLineNo">529</span>    return this.reader;<a name="line.529"></a>
-<span class="sourceLineNo">530</span>  }<a name="line.530"></a>
-<span class="sourceLineNo">531</span><a name="line.531"></a>
-<span class="sourceLineNo">532</span>  /**<a name="line.532"></a>
-<span class="sourceLineNo">533</span>   * @param evictOnClose whether to evict blocks belonging to this file<a name="line.533"></a>
-<span class="sourceLineNo">534</span>   * @throws IOException<a name="line.534"></a>
-<span class="sourceLineNo">535</span>   */<a name="line.535"></a>
-<span class="sourceLineNo">536</span>  public synchronized void closeStoreFile(boolean evictOnClose) throws IOException {<a name="line.536"></a>
-<span class="sourceLineNo">537</span>    if (this.reader != null) {<a name="line.537"></a>
-<span class="sourceLineNo">538</span>      this.reader.close(evictOnClose);<a name="line.538"></a>
-<span class="sourceLineNo">539</span>      this.reader = null;<a name="line.539"></a>
-<span class="sourceLineNo">540</span>    }<a name="line.540"></a>
-<span class="sourceLineNo">541</span>    closeStreamReaders(evictOnClose);<a name="line.541"></a>
-<span class="sourceLineNo">542</span>  }<a name="line.542"></a>
-<span class="sourceLineNo">543</span><a name="line.543"></a>
-<span class="sourceLineNo">544</span>  public void closeStreamReaders(boolean evictOnClose) throws IOException {<a name="line.544"></a>
-<span class="sourceLineNo">545</span>    synchronized (this) {<a name="line.545"></a>
-<span class="sourceLineNo">546</span>      for (StoreFileReader entry : streamReaders) {<a name="line.546"></a>
-<span class="sourceLineNo">547</span>        //closing the reader will remove itself from streamReaders thanks to the Listener<a name="line.547"></a>
-<span class="sourceLineNo">548</span>        entry.close(evictOnClose);<a name="line.548"></a>
-<span class="sourceLineNo">549</span>      }<a name="line.549"></a>
-<span class="sourceLineNo">550</span>      int size = streamReaders.size();<a name="line.550"></a>
-<span class="sourceLineNo">551</span>      Preconditions.checkState(size == 0,<a name="line.551"></a>
-<span class="sourceLineNo">552</span>          "There are still streamReaders post close: " + size);<a name="line.552"></a>
-<span class="sourceLineNo">553</span>    }<a name="line.553"></a>
-<span class="sourceLineNo">554</span>  }<a name="line.554"></a>
-<span class="sourceLineNo">555</span><a name="line.555"></a>
-<span class="sourceLineNo">556</span>  /**<a name="line.556"></a>
-<span class="sourceLineNo">557</span>   * Delete this file<a name="line.557"></a>
-<span class="sourceLineNo">558</span>   * @throws IOException<a name="line.558"></a>
-<span class="sourceLineNo">559</span>   */<a name="line.559"></a>
-<span class="sourceLineNo">560</span>  public void deleteStoreFile() throws IOException {<a name="line.560"></a>
-<span class="sourceLineNo">561</span>    boolean evictOnClose = cacheConf != null ? cacheConf.shouldEvictOnClose() : true;<a name="line.561"></a>
-<span class="sourceLineNo">562</span>    closeStoreFile(evictOnClose);<a name="line.562"></a>
-<span class="sourceLineNo">563</span>    this.fs.delete(getPath(), true);<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>  public void markCompactedAway() {<a name="line.566"></a>
-<span class="sourceLineNo">567</span>    this.compactedAway = true;<a name="line.567"></a>
-<span class="sourceLineNo">568</span>  }<a name="line.568"></a>
-<span class="sourceLineNo">569</span><a name="line.569"></a>
-<span class="sourceLineNo">570</span>  @Override<a name="line.570"></a>
-<span class="sourceLineNo">571</span>  public String toString() {<a name="line.571"></a>
-<span class="sourceLineNo">572</span>    return this.fileInfo.toString();<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>  @Override<a name="line.575"></a>
-<span class="sourceLineNo">576</span>  public String toStringDetailed() {<a name="line.576"></a>
-<span class="sourceLineNo">577</span>    StringBuilder sb = new StringBuilder();<a name="line.577"></a>
-<span class="sourceLineNo">578</span>    sb.append(this.getPath().toString());<a name="line.578"></a>
-<span class="sourceLineNo">579</span>    sb.append(", isReference=").append(isReference());<a name="line.579"></a>
-<span class="sourceLineNo">580</span>    sb.append(", isBulkLoadResult=").append(isBulkLoadResult());<a name="line.580"></a>
-<span class="sourceLineNo">581</span>    if (isBulkLoadResult()) {<a name="line.581"></a>
-<span class="sourceLineNo">582</span>      sb.append(", bulkLoadTS=");<a name="line.582"></a>
-<span class="sourceLineNo">583</span>      OptionalLong bulkLoadTS = getBulkLoadTimestamp();<a name="line.583"></a>
-<span class="sourceLineNo">584</span>      if (bulkLoadTS.isPresent()) {<a name="line.584"></a>
-<span class="sourceLineNo">585</span>        sb.append(bulkLoadTS.getAsLong());<a name="line.585"></a>
-<span class="sourceLineNo">586</span>      } else {<a name="line.586"></a>
-<span class="sourceLineNo">587</span>        sb.append("NotPresent");<a name="line.587"></a>
-<span class="sourceLineNo">588</span>      }<a name="line.588"></a>
-<span class="sourceLineNo">589</span>    } else {<a name="line.589"></a>
-<span class="sourceLineNo">590</span>      sb.append(", seqid=").append(getMaxSequenceId());<a name="line.590"></a>
-<span class="sourceLineNo">591</span>    }<a name="line.591"></a>
-<span class="sourceLineNo">592</span>    sb.append(", majorCompaction=").append(isMajorCompactionResult());<a name="line.592"></a>
-<span class="sourceLineNo">593</span><a name="line.593"></a>
-<span class="sourceLineNo">594</span>    return sb.toString();<a name="line.594"></a>
-<span class="sourceLineNo">595</span>  }<a name="line.595"></a>
+<span class="sourceLineNo">455</span>    // load delete family bloom filter<a name="line.455"></a>
+<span class="sourceLineNo">456</span>    reader.loadBloomfilter(BlockType.DELETE_FAMILY_BLOOM_META);<a name="line.456"></a>
+<span class="sourceLineNo">457</span><a name="line.457"></a>
+<span class="sourceLineNo">458</span>    try {<a name="line.458"></a>
+<span class="sourceLineNo">459</span>      byte[] data = metadataMap.get(TIMERANGE_KEY);<a name="line.459"></a>
+<span class="sourceLineNo">460</span>      this.reader.timeRange = data == null ? null : TimeRangeTracker.parseFrom(data).toTimeRange();<a name="line.460"></a>
+<span class="sourceLineNo">461</span>    } catch (IllegalArgumentException e) {<a name="line.461"></a>
+<span class="sourceLineNo">462</span>      LOG.error("Error reading timestamp range data from meta -- " +<a name="line.462"></a>
+<span class="sourceLineNo">463</span>          "proceeding without", e);<a name="line.463"></a>
+<span class="sourceLineNo">464</span>      this.reader.timeRange = null;<a name="line.464"></a>
+<span class="sourceLineNo">465</span>    }<a name="line.465"></a>
+<span class="sourceLineNo">466</span>    // initialize so we can reuse them after reader closed.<a name="line.466"></a>
+<span class="sourceLineNo">467</span>    firstKey = reader.getFirstKey();<a name="line.467"></a>
+<span class="sourceLineNo">468</span>    lastKey = reader.getLastKey();<a name="line.468"></a>
+<span class="sourceLineNo">469</span>    comparator = reader.getComparator();<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>   * Initialize the reader used for pread.<a name="line.473"></a>
+<span class="sourceLineNo">474</span>   */<a name="line.474"></a>
+<span class="sourceLineNo">475</span>  public void initReader() throws IOException {<a name="line.475"></a>
+<span class="sourceLineNo">476</span>    if (reader == null) {<a name="line.476"></a>
+<span class="sourceLineNo">477</span>      try {<a name="line.477"></a>
+<span class="sourceLineNo">478</span>        open();<a name="line.478"></a>
+<span class="sourceLineNo">479</span>      } catch (Exception e) {<a name="line.479"></a>
+<span class="sourceLineNo">480</span>        try {<a name="line.480"></a>
+<span class="sourceLineNo">481</span>          boolean evictOnClose = cacheConf != null ? cacheConf.shouldEvictOnClose() : true;<a name="line.481"></a>
+<span class="sourceLineNo">482</span>          this.closeStoreFile(evictOnClose);<a name="line.482"></a>
+<span class="sourceLineNo">483</span>        } catch (IOException ee) {<a name="line.483"></a>
+<span class="sourceLineNo">484</span>          LOG.warn("failed to close reader", ee);<a name="line.484"></a>
+<span class="sourceLineNo">485</span>        }<a name="line.485"></a>
+<span class="sourceLineNo">486</span>        throw e;<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>  }<a name="line.489"></a>
+<span class="sourceLineNo">490</span><a name="line.490"></a>
+<span class="sourceLineNo">491</span>  private StoreFileReader createStreamReader(boolean canUseDropBehind) throws IOException {<a name="line.491"></a>
+<span class="sourceLineNo">492</span>    initReader();<a name="line.492"></a>
+<span class="sourceLineNo">493</span>    StoreFileReader reader = fileInfo.open(this.fs, this.cacheConf, canUseDropBehind, -1L,<a name="line.493"></a>
+<span class="sourceLineNo">494</span>      primaryReplica, refCount, false);<a name="line.494"></a>
+<span class="sourceLineNo">495</span>    reader.copyFields(this.reader);<a name="line.495"></a>
+<span class="sourceLineNo">496</span>    return reader;<a name="line.496"></a>
+<span class="sourceLineNo">497</span>  }<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>   * Get a scanner which uses pread.<a name="line.500"></a>
+<span class="sourceLineNo">501</span>   * &lt;p&gt;<a name="line.501"></a>
+<span class="sourceLineNo">502</span>   * Must be called after initReader.<a name="line.502"></a>
+<span class="sourceLineNo">503</span>   */<a name="line.503"></a>
+<span class="sourceLineNo">504</span>  public StoreFileScanner getPreadScanner(boolean cacheBlocks, long readPt, long scannerOrder,<a name="line.504"></a>
+<span class="sourceLineNo">505</span>      boolean canOptimizeForNonNullColumn) {<a name="line.505"></a>
+<span class="sourceLineNo">506</span>    return getReader().getStoreFileScanner(cacheBlocks, true, false, readPt, scannerOrder,<a name="line.506"></a>
+<span class="sourceLineNo">507</span>      canOptimizeForNonNullColumn);<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>  /**<a name="line.510"></a>
+<span class="sourceLineNo">511</span>   * Get a scanner which uses streaming read.<a name="line.511"></a>
+<span class="sourceLineNo">512</span>   * &lt;p&gt;<a name="line.512"></a>
+<span class="sourceLineNo">513</span>   * Must be called after initReader.<a name="line.513"></a>
+<span class="sourceLineNo">514</span>   */<a name="line.514"></a>
+<span class="sourceLineNo">515</span>  public StoreFileScanner getStreamScanner(boolean canUseDropBehind, boolean cacheBlocks,<a name="line.515"></a>
+<span class="sourceLineNo">516</span>      boolean isCompaction, long readPt, long scannerOrder, boolean canOptimizeForNonNullColumn)<a name="line.516"></a>
+<span class="sourceLineNo">517</span>      throws IOException {<a name="line.517"></a>
+<span class="sourceLineNo">518</span>    StoreFileReader reader = createStreamReader(canUseDropBehind);<a n

<TRUNCATED>

[19/43] hbase-site git commit: Published site at 7ab77518a2569e2416a50020393aa386e7734501.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.Listener.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.Listener.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.Listener.html
index b570921..397c3a6 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.Listener.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.Listener.html
@@ -25,655 +25,757 @@
 <span class="sourceLineNo">017</span> */<a name="line.17"></a>
 <span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.regionserver;<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.regionserver.HStoreFile.BLOOM_FILTER_TYPE_KEY;<a name="line.20"></a>
-<span class="sourceLineNo">021</span>import static org.apache.hadoop.hbase.regionserver.HStoreFile.DELETE_FAMILY_COUNT;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import static org.apache.hadoop.hbase.regionserver.HStoreFile.LAST_BLOOM_KEY;<a name="line.22"></a>
-<span class="sourceLineNo">023</span><a name="line.23"></a>
-<span class="sourceLineNo">024</span>import java.io.DataInput;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import java.io.IOException;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import java.util.Map;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import java.util.Optional;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import java.util.SortedSet;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import java.util.concurrent.atomic.AtomicInteger;<a name="line.29"></a>
-<span class="sourceLineNo">030</span><a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hadoop.conf.Configuration;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.hadoop.fs.FileSystem;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hadoop.fs.Path;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.Cell;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.HBaseInterfaceAudience;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.HConstants;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.PrivateCellUtil;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.io.FSDataInputStreamWrapper;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.io.TimeRange;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.io.hfile.BlockType;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.io.hfile.CacheConfig;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.io.hfile.HFileBlock;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.io.hfile.HFileScanner;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.nio.ByteBuff;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.util.BloomFilter;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.util.BloomFilterFactory;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.yetus.audience.InterfaceStability;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.slf4j.Logger;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.slf4j.LoggerFactory;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<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> * Reader for a StoreFile.<a name="line.59"></a>
-<span class="sourceLineNo">060</span> */<a name="line.60"></a>
-<span class="sourceLineNo">061</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.PHOENIX)<a name="line.61"></a>
-<span class="sourceLineNo">062</span>@InterfaceStability.Evolving<a name="line.62"></a>
-<span class="sourceLineNo">063</span>public class StoreFileReader {<a name="line.63"></a>
-<span class="sourceLineNo">064</span>  private static final Logger LOG = LoggerFactory.getLogger(StoreFileReader.class.getName());<a name="line.64"></a>
-<span class="sourceLineNo">065</span><a name="line.65"></a>
-<span class="sourceLineNo">066</span>  protected BloomFilter generalBloomFilter = null;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>  protected BloomFilter deleteFamilyBloomFilter = null;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>  protected BloomType bloomFilterType;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>  private final HFile.Reader reader;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>  protected long sequenceID = -1;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>  protected TimeRange timeRange = null;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>  private byte[] lastBloomKey;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>  private long deleteFamilyCnt = -1;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>  private boolean bulkLoadResult = false;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>  private KeyValue.KeyOnlyKeyValue lastBloomKeyOnlyKV = null;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>  private boolean skipResetSeqId = true;<a name="line.76"></a>
-<span class="sourceLineNo">077</span><a name="line.77"></a>
-<span class="sourceLineNo">078</span>  // Counter that is incremented every time a scanner is created on the<a name="line.78"></a>
-<span class="sourceLineNo">079</span>  // store file. It is decremented when the scan on the store file is<a name="line.79"></a>
-<span class="sourceLineNo">080</span>  // done. All StoreFileReader for the same StoreFile will share this counter.<a name="line.80"></a>
-<span class="sourceLineNo">081</span>  private final AtomicInteger refCount;<a name="line.81"></a>
-<span class="sourceLineNo">082</span><a name="line.82"></a>
-<span class="sourceLineNo">083</span>  // indicate that whether this StoreFileReader is shared, i.e., used for pread. If not, we will<a name="line.83"></a>
-<span class="sourceLineNo">084</span>  // close the internal reader when readCompleted is called.<a name="line.84"></a>
-<span class="sourceLineNo">085</span>  @VisibleForTesting<a name="line.85"></a>
-<span class="sourceLineNo">086</span>  final boolean shared;<a name="line.86"></a>
-<span class="sourceLineNo">087</span><a name="line.87"></a>
-<span class="sourceLineNo">088</span>  private volatile Listener listener;<a name="line.88"></a>
-<span class="sourceLineNo">089</span><a name="line.89"></a>
-<span class="sourceLineNo">090</span>  private boolean closed = false;<a name="line.90"></a>
-<span class="sourceLineNo">091</span><a name="line.91"></a>
-<span class="sourceLineNo">092</span>  private StoreFileReader(HFile.Reader reader, AtomicInteger refCount, boolean shared) {<a name="line.92"></a>
-<span class="sourceLineNo">093</span>    this.reader = reader;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>    bloomFilterType = BloomType.NONE;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>    this.refCount = refCount;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>    this.shared = shared;<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>  public StoreFileReader(FileSystem fs, Path path, CacheConfig cacheConf,<a name="line.99"></a>
-<span class="sourceLineNo">100</span>      boolean primaryReplicaStoreFile, AtomicInteger refCount, boolean shared, Configuration conf)<a name="line.100"></a>
-<span class="sourceLineNo">101</span>      throws IOException {<a name="line.101"></a>
-<span class="sourceLineNo">102</span>    this(HFile.createReader(fs, path, cacheConf, primaryReplicaStoreFile, conf), refCount, shared);<a name="line.102"></a>
-<span class="sourceLineNo">103</span>  }<a name="line.103"></a>
-<span class="sourceLineNo">104</span><a name="line.104"></a>
-<span class="sourceLineNo">105</span>  public StoreFileReader(FileSystem fs, Path path, FSDataInputStreamWrapper in, long size,<a name="line.105"></a>
-<span class="sourceLineNo">106</span>      CacheConfig cacheConf, boolean primaryReplicaStoreFile, AtomicInteger refCount,<a name="line.106"></a>
-<span class="sourceLineNo">107</span>      boolean shared, Configuration conf) throws IOException {<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    this(HFile.createReader(fs, path, in, size, cacheConf, primaryReplicaStoreFile, conf), refCount,<a name="line.108"></a>
-<span class="sourceLineNo">109</span>        shared);<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>  void copyFields(StoreFileReader reader) {<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    this.generalBloomFilter = reader.generalBloomFilter;<a name="line.113"></a>
-<span class="sourceLineNo">114</span>    this.deleteFamilyBloomFilter = reader.deleteFamilyBloomFilter;<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    this.bloomFilterType = reader.bloomFilterType;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>    this.sequenceID = reader.sequenceID;<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    this.timeRange = reader.timeRange;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    this.lastBloomKey = reader.lastBloomKey;<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    this.bulkLoadResult = reader.bulkLoadResult;<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    this.lastBloomKeyOnlyKV = reader.lastBloomKeyOnlyKV;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    this.skipResetSeqId = reader.skipResetSeqId;<a name="line.121"></a>
-<span class="sourceLineNo">122</span>  }<a name="line.122"></a>
-<span class="sourceLineNo">123</span><a name="line.123"></a>
-<span class="sourceLineNo">124</span>  public boolean isPrimaryReplicaReader() {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    return reader.isPrimaryReplicaReader();<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>  /**<a name="line.128"></a>
-<span class="sourceLineNo">129</span>   * ONLY USE DEFAULT CONSTRUCTOR FOR UNIT TESTS<a name="line.129"></a>
-<span class="sourceLineNo">130</span>   */<a name="line.130"></a>
-<span class="sourceLineNo">131</span>  @VisibleForTesting<a name="line.131"></a>
-<span class="sourceLineNo">132</span>  StoreFileReader() {<a name="line.132"></a>
-<span class="sourceLineNo">133</span>    this.refCount = new AtomicInteger(0);<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    this.reader = null;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    this.shared = false;<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>  public CellComparator getComparator() {<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    return reader.getComparator();<a name="line.139"></a>
-<span class="sourceLineNo">140</span>  }<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>   * Get a scanner to scan over this StoreFile.<a name="line.143"></a>
-<span class="sourceLineNo">144</span>   * @param cacheBlocks should this scanner cache blocks?<a name="line.144"></a>
-<span class="sourceLineNo">145</span>   * @param pread use pread (for highly concurrent small readers)<a name="line.145"></a>
-<span class="sourceLineNo">146</span>   * @param isCompaction is scanner being used for compaction?<a name="line.146"></a>
-<span class="sourceLineNo">147</span>   * @param scannerOrder Order of this scanner relative to other scanners. See<a name="line.147"></a>
-<span class="sourceLineNo">148</span>   *          {@link KeyValueScanner#getScannerOrder()}.<a name="line.148"></a>
-<span class="sourceLineNo">149</span>   * @param canOptimizeForNonNullColumn {@code true} if we can make sure there is no null column,<a name="line.149"></a>
-<span class="sourceLineNo">150</span>   *          otherwise {@code false}. This is a hint for optimization.<a name="line.150"></a>
-<span class="sourceLineNo">151</span>   * @return a scanner<a name="line.151"></a>
-<span class="sourceLineNo">152</span>   */<a name="line.152"></a>
-<span class="sourceLineNo">153</span>  public StoreFileScanner getStoreFileScanner(boolean cacheBlocks, boolean pread,<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      boolean isCompaction, long readPt, long scannerOrder, boolean canOptimizeForNonNullColumn) {<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    return new StoreFileScanner(this, getScanner(cacheBlocks, pread, isCompaction),<a name="line.155"></a>
-<span class="sourceLineNo">156</span>        !isCompaction, reader.hasMVCCInfo(), readPt, scannerOrder, canOptimizeForNonNullColumn);<a name="line.156"></a>
-<span class="sourceLineNo">157</span>  }<a name="line.157"></a>
-<span class="sourceLineNo">158</span><a name="line.158"></a>
-<span class="sourceLineNo">159</span>  /**<a name="line.159"></a>
-<span class="sourceLineNo">160</span>   * Indicate that the scanner has started reading with this reader. We need to increment the ref<a name="line.160"></a>
-<span class="sourceLineNo">161</span>   * count so reader is not close until some object is holding the lock<a name="line.161"></a>
-<span class="sourceLineNo">162</span>   */<a name="line.162"></a>
-<span class="sourceLineNo">163</span>  void incrementRefCount() {<a name="line.163"></a>
-<span class="sourceLineNo">164</span>    refCount.incrementAndGet();<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>   * Indicate that the scanner has finished reading with this reader. We need to decrement the ref<a name="line.168"></a>
-<span class="sourceLineNo">169</span>   * count, and also, if this is not the common pread reader, we should close it.<a name="line.169"></a>
-<span class="sourceLineNo">170</span>   */<a name="line.170"></a>
-<span class="sourceLineNo">171</span>  void readCompleted() {<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    refCount.decrementAndGet();<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    if (!shared) {<a name="line.173"></a>
-<span class="sourceLineNo">174</span>      try {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>        reader.close(false);<a name="line.175"></a>
-<span class="sourceLineNo">176</span>      } catch (IOException e) {<a name="line.176"></a>
-<span class="sourceLineNo">177</span>        LOG.warn("failed to close stream reader", e);<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>  }<a name="line.180"></a>
-<span class="sourceLineNo">181</span><a name="line.181"></a>
-<span class="sourceLineNo">182</span>  /**<a name="line.182"></a>
-<span class="sourceLineNo">183</span>   * @deprecated Do not write further code which depends on this call. Instead<a name="line.183"></a>
-<span class="sourceLineNo">184</span>   *   use getStoreFileScanner() which uses the StoreFileScanner class/interface<a name="line.184"></a>
-<span class="sourceLineNo">185</span>   *   which is the preferred way to scan a store with higher level concepts.<a name="line.185"></a>
-<span class="sourceLineNo">186</span>   *<a name="line.186"></a>
-<span class="sourceLineNo">187</span>   * @param cacheBlocks should we cache the blocks?<a name="line.187"></a>
-<span class="sourceLineNo">188</span>   * @param pread use pread (for concurrent small readers)<a name="line.188"></a>
-<span class="sourceLineNo">189</span>   * @return the underlying HFileScanner<a name="line.189"></a>
-<span class="sourceLineNo">190</span>   */<a name="line.190"></a>
-<span class="sourceLineNo">191</span>  @Deprecated<a name="line.191"></a>
-<span class="sourceLineNo">192</span>  public HFileScanner getScanner(boolean cacheBlocks, boolean pread) {<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    return getScanner(cacheBlocks, pread, false);<a name="line.193"></a>
-<span class="sourceLineNo">194</span>  }<a name="line.194"></a>
-<span class="sourceLineNo">195</span><a name="line.195"></a>
-<span class="sourceLineNo">196</span>  /**<a name="line.196"></a>
-<span class="sourceLineNo">197</span>   * @deprecated Do not write further code which depends on this call. Instead<a name="line.197"></a>
-<span class="sourceLineNo">198</span>   *   use getStoreFileScanner() which uses the StoreFileScanner class/interface<a name="line.198"></a>
-<span class="sourceLineNo">199</span>   *   which is the preferred way to scan a store with higher level concepts.<a name="line.199"></a>
-<span class="sourceLineNo">200</span>   *<a name="line.200"></a>
-<span class="sourceLineNo">201</span>   * @param cacheBlocks<a name="line.201"></a>
-<span class="sourceLineNo">202</span>   *          should we cache the blocks?<a name="line.202"></a>
-<span class="sourceLineNo">203</span>   * @param pread<a name="line.203"></a>
-<span class="sourceLineNo">204</span>   *          use pread (for concurrent small readers)<a name="line.204"></a>
-<span class="sourceLineNo">205</span>   * @param isCompaction<a name="line.205"></a>
-<span class="sourceLineNo">206</span>   *          is scanner being used for compaction?<a name="line.206"></a>
-<span class="sourceLineNo">207</span>   * @return the underlying HFileScanner<a name="line.207"></a>
-<span class="sourceLineNo">208</span>   */<a name="line.208"></a>
-<span class="sourceLineNo">209</span>  @Deprecated<a name="line.209"></a>
-<span class="sourceLineNo">210</span>  public HFileScanner getScanner(boolean cacheBlocks, boolean pread,<a name="line.210"></a>
-<span class="sourceLineNo">211</span>      boolean isCompaction) {<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    return reader.getScanner(cacheBlocks, pread, isCompaction);<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>  public void close(boolean evictOnClose) throws IOException {<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    synchronized (this) {<a name="line.216"></a>
-<span class="sourceLineNo">217</span>      if (closed) {<a name="line.217"></a>
-<span class="sourceLineNo">218</span>        return;<a name="line.218"></a>
-<span class="sourceLineNo">219</span>      }<a name="line.219"></a>
-<span class="sourceLineNo">220</span>      reader.close(evictOnClose);<a name="line.220"></a>
-<span class="sourceLineNo">221</span>      closed = true;<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    }<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    if (listener != null) {<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      listener.storeFileReaderClosed(this);<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    }<a name="line.225"></a>
+<span class="sourceLineNo">020</span>import static org.apache.hadoop.hbase.regionserver.HStoreFile.BLOOM_FILTER_PARAM_KEY;<a name="line.20"></a>
+<span class="sourceLineNo">021</span>import static org.apache.hadoop.hbase.regionserver.HStoreFile.BLOOM_FILTER_TYPE_KEY;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import static org.apache.hadoop.hbase.regionserver.HStoreFile.DELETE_FAMILY_COUNT;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import static org.apache.hadoop.hbase.regionserver.HStoreFile.LAST_BLOOM_KEY;<a name="line.23"></a>
+<span class="sourceLineNo">024</span><a name="line.24"></a>
+<span class="sourceLineNo">025</span>import java.io.DataInput;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import java.io.IOException;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import java.util.Map;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import java.util.Optional;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import java.util.SortedSet;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import java.util.concurrent.atomic.AtomicInteger;<a name="line.30"></a>
+<span class="sourceLineNo">031</span><a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.conf.Configuration;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.fs.FileSystem;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.fs.Path;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.Cell;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.HBaseInterfaceAudience;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.HConstants;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.PrivateCellUtil;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.io.FSDataInputStreamWrapper;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.io.TimeRange;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.io.hfile.BlockType;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.io.hfile.CacheConfig;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.io.hfile.HFileBlock;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.io.hfile.HFileScanner;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.nio.ByteBuff;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.util.BloomFilter;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.util.BloomFilterFactory;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.yetus.audience.InterfaceStability;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.slf4j.Logger;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.slf4j.LoggerFactory;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<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> * Reader for a StoreFile.<a name="line.60"></a>
+<span class="sourceLineNo">061</span> */<a name="line.61"></a>
+<span class="sourceLineNo">062</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.PHOENIX)<a name="line.62"></a>
+<span class="sourceLineNo">063</span>@InterfaceStability.Evolving<a name="line.63"></a>
+<span class="sourceLineNo">064</span>public class StoreFileReader {<a name="line.64"></a>
+<span class="sourceLineNo">065</span>  private static final Logger LOG = LoggerFactory.getLogger(StoreFileReader.class.getName());<a name="line.65"></a>
+<span class="sourceLineNo">066</span><a name="line.66"></a>
+<span class="sourceLineNo">067</span>  protected BloomFilter generalBloomFilter = null;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>  protected BloomFilter deleteFamilyBloomFilter = null;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>  protected BloomType bloomFilterType;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>  private final HFile.Reader reader;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>  protected long sequenceID = -1;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>  protected TimeRange timeRange = null;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>  private byte[] lastBloomKey;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>  private long deleteFamilyCnt = -1;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>  private boolean bulkLoadResult = false;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>  private KeyValue.KeyOnlyKeyValue lastBloomKeyOnlyKV = null;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>  private boolean skipResetSeqId = true;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>  private int prefixLength = -1;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>  private byte[] delimiter = null;<a name="line.79"></a>
+<span class="sourceLineNo">080</span><a name="line.80"></a>
+<span class="sourceLineNo">081</span>  // Counter that is incremented every time a scanner is created on the<a name="line.81"></a>
+<span class="sourceLineNo">082</span>  // store file. It is decremented when the scan on the store file is<a name="line.82"></a>
+<span class="sourceLineNo">083</span>  // done. All StoreFileReader for the same StoreFile will share this counter.<a name="line.83"></a>
+<span class="sourceLineNo">084</span>  private final AtomicInteger refCount;<a name="line.84"></a>
+<span class="sourceLineNo">085</span><a name="line.85"></a>
+<span class="sourceLineNo">086</span>  // indicate that whether this StoreFileReader is shared, i.e., used for pread. If not, we will<a name="line.86"></a>
+<span class="sourceLineNo">087</span>  // close the internal reader when readCompleted is called.<a name="line.87"></a>
+<span class="sourceLineNo">088</span>  @VisibleForTesting<a name="line.88"></a>
+<span class="sourceLineNo">089</span>  final boolean shared;<a name="line.89"></a>
+<span class="sourceLineNo">090</span><a name="line.90"></a>
+<span class="sourceLineNo">091</span>  private volatile Listener listener;<a name="line.91"></a>
+<span class="sourceLineNo">092</span><a name="line.92"></a>
+<span class="sourceLineNo">093</span>  private boolean closed = false;<a name="line.93"></a>
+<span class="sourceLineNo">094</span><a name="line.94"></a>
+<span class="sourceLineNo">095</span>  private StoreFileReader(HFile.Reader reader, AtomicInteger refCount, boolean shared) {<a name="line.95"></a>
+<span class="sourceLineNo">096</span>    this.reader = reader;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>    bloomFilterType = BloomType.NONE;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    this.refCount = refCount;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>    this.shared = shared;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>  }<a name="line.100"></a>
+<span class="sourceLineNo">101</span><a name="line.101"></a>
+<span class="sourceLineNo">102</span>  public StoreFileReader(FileSystem fs, Path path, CacheConfig cacheConf,<a name="line.102"></a>
+<span class="sourceLineNo">103</span>      boolean primaryReplicaStoreFile, AtomicInteger refCount, boolean shared, Configuration conf)<a name="line.103"></a>
+<span class="sourceLineNo">104</span>      throws IOException {<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    this(HFile.createReader(fs, path, cacheConf, primaryReplicaStoreFile, conf), refCount, shared);<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>  public StoreFileReader(FileSystem fs, Path path, FSDataInputStreamWrapper in, long size,<a name="line.108"></a>
+<span class="sourceLineNo">109</span>      CacheConfig cacheConf, boolean primaryReplicaStoreFile, AtomicInteger refCount,<a name="line.109"></a>
+<span class="sourceLineNo">110</span>      boolean shared, Configuration conf) throws IOException {<a name="line.110"></a>
+<span class="sourceLineNo">111</span>    this(HFile.createReader(fs, path, in, size, cacheConf, primaryReplicaStoreFile, conf), refCount,<a name="line.111"></a>
+<span class="sourceLineNo">112</span>        shared);<a name="line.112"></a>
+<span class="sourceLineNo">113</span>  }<a name="line.113"></a>
+<span class="sourceLineNo">114</span><a name="line.114"></a>
+<span class="sourceLineNo">115</span>  void copyFields(StoreFileReader reader) {<a name="line.115"></a>
+<span class="sourceLineNo">116</span>    this.generalBloomFilter = reader.generalBloomFilter;<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    this.deleteFamilyBloomFilter = reader.deleteFamilyBloomFilter;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    this.bloomFilterType = reader.bloomFilterType;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>    this.sequenceID = reader.sequenceID;<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    this.timeRange = reader.timeRange;<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    this.lastBloomKey = reader.lastBloomKey;<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    this.bulkLoadResult = reader.bulkLoadResult;<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    this.lastBloomKeyOnlyKV = reader.lastBloomKeyOnlyKV;<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    this.skipResetSeqId = reader.skipResetSeqId;<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    this.prefixLength = reader.prefixLength;<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    this.delimiter = reader.delimiter;<a name="line.126"></a>
+<span class="sourceLineNo">127</span>  }<a name="line.127"></a>
+<span class="sourceLineNo">128</span><a name="line.128"></a>
+<span class="sourceLineNo">129</span>  public boolean isPrimaryReplicaReader() {<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    return reader.isPrimaryReplicaReader();<a name="line.130"></a>
+<span class="sourceLineNo">131</span>  }<a name="line.131"></a>
+<span class="sourceLineNo">132</span><a name="line.132"></a>
+<span class="sourceLineNo">133</span>  /**<a name="line.133"></a>
+<span class="sourceLineNo">134</span>   * ONLY USE DEFAULT CONSTRUCTOR FOR UNIT TESTS<a name="line.134"></a>
+<span class="sourceLineNo">135</span>   */<a name="line.135"></a>
+<span class="sourceLineNo">136</span>  @VisibleForTesting<a name="line.136"></a>
+<span class="sourceLineNo">137</span>  StoreFileReader() {<a name="line.137"></a>
+<span class="sourceLineNo">138</span>    this.refCount = new AtomicInteger(0);<a name="line.138"></a>
+<span class="sourceLineNo">139</span>    this.reader = null;<a name="line.139"></a>
+<span class="sourceLineNo">140</span>    this.shared = false;<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>  public CellComparator getComparator() {<a name="line.143"></a>
+<span class="sourceLineNo">144</span>    return reader.getComparator();<a name="line.144"></a>
+<span class="sourceLineNo">145</span>  }<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>   * Get a scanner to scan over this StoreFile.<a name="line.148"></a>
+<span class="sourceLineNo">149</span>   * @param cacheBlocks should this scanner cache blocks?<a name="line.149"></a>
+<span class="sourceLineNo">150</span>   * @param pread use pread (for highly concurrent small readers)<a name="line.150"></a>
+<span class="sourceLineNo">151</span>   * @param isCompaction is scanner being used for compaction?<a name="line.151"></a>
+<span class="sourceLineNo">152</span>   * @param scannerOrder Order of this scanner relative to other scanners. See<a name="line.152"></a>
+<span class="sourceLineNo">153</span>   *          {@link KeyValueScanner#getScannerOrder()}.<a name="line.153"></a>
+<span class="sourceLineNo">154</span>   * @param canOptimizeForNonNullColumn {@code true} if we can make sure there is no null column,<a name="line.154"></a>
+<span class="sourceLineNo">155</span>   *          otherwise {@code false}. This is a hint for optimization.<a name="line.155"></a>
+<span class="sourceLineNo">156</span>   * @return a scanner<a name="line.156"></a>
+<span class="sourceLineNo">157</span>   */<a name="line.157"></a>
+<span class="sourceLineNo">158</span>  public StoreFileScanner getStoreFileScanner(boolean cacheBlocks, boolean pread,<a name="line.158"></a>
+<span class="sourceLineNo">159</span>      boolean isCompaction, long readPt, long scannerOrder, boolean canOptimizeForNonNullColumn) {<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    return new StoreFileScanner(this, getScanner(cacheBlocks, pread, isCompaction),<a name="line.160"></a>
+<span class="sourceLineNo">161</span>        !isCompaction, reader.hasMVCCInfo(), readPt, scannerOrder, canOptimizeForNonNullColumn);<a name="line.161"></a>
+<span class="sourceLineNo">162</span>  }<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>   * Return the ref count associated with the reader whenever a scanner associated with the<a name="line.165"></a>
+<span class="sourceLineNo">166</span>   * reader is opened.<a name="line.166"></a>
+<span class="sourceLineNo">167</span>   */<a name="line.167"></a>
+<span class="sourceLineNo">168</span>  int getRefCount() {<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    return refCount.get();<a name="line.169"></a>
+<span class="sourceLineNo">170</span>  }<a name="line.170"></a>
+<span class="sourceLineNo">171</span><a name="line.171"></a>
+<span class="sourceLineNo">172</span>  /**<a name="line.172"></a>
+<span class="sourceLineNo">173</span>   * Indicate that the scanner has started reading with this reader. We need to increment the ref<a name="line.173"></a>
+<span class="sourceLineNo">174</span>   * count so reader is not close until some object is holding the lock<a name="line.174"></a>
+<span class="sourceLineNo">175</span>   */<a name="line.175"></a>
+<span class="sourceLineNo">176</span>  void incrementRefCount() {<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    refCount.incrementAndGet();<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>  /**<a name="line.180"></a>
+<span class="sourceLineNo">181</span>   * Indicate that the scanner has finished reading with this reader. We need to decrement the ref<a name="line.181"></a>
+<span class="sourceLineNo">182</span>   * count, and also, if this is not the common pread reader, we should close it.<a name="line.182"></a>
+<span class="sourceLineNo">183</span>   */<a name="line.183"></a>
+<span class="sourceLineNo">184</span>  void readCompleted() {<a name="line.184"></a>
+<span class="sourceLineNo">185</span>    refCount.decrementAndGet();<a name="line.185"></a>
+<span class="sourceLineNo">186</span>    if (!shared) {<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      try {<a name="line.187"></a>
+<span class="sourceLineNo">188</span>        reader.close(false);<a name="line.188"></a>
+<span class="sourceLineNo">189</span>      } catch (IOException e) {<a name="line.189"></a>
+<span class="sourceLineNo">190</span>        LOG.warn("failed to close stream reader", e);<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>  /**<a name="line.195"></a>
+<span class="sourceLineNo">196</span>   * @deprecated Do not write further code which depends on this call. Instead<a name="line.196"></a>
+<span class="sourceLineNo">197</span>   *   use getStoreFileScanner() which uses the StoreFileScanner class/interface<a name="line.197"></a>
+<span class="sourceLineNo">198</span>   *   which is the preferred way to scan a store with higher level concepts.<a name="line.198"></a>
+<span class="sourceLineNo">199</span>   *<a name="line.199"></a>
+<span class="sourceLineNo">200</span>   * @param cacheBlocks should we cache the blocks?<a name="line.200"></a>
+<span class="sourceLineNo">201</span>   * @param pread use pread (for concurrent small readers)<a name="line.201"></a>
+<span class="sourceLineNo">202</span>   * @return the underlying HFileScanner<a name="line.202"></a>
+<span class="sourceLineNo">203</span>   */<a name="line.203"></a>
+<span class="sourceLineNo">204</span>  @Deprecated<a name="line.204"></a>
+<span class="sourceLineNo">205</span>  public HFileScanner getScanner(boolean cacheBlocks, boolean pread) {<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    return getScanner(cacheBlocks, pread, false);<a name="line.206"></a>
+<span class="sourceLineNo">207</span>  }<a name="line.207"></a>
+<span class="sourceLineNo">208</span><a name="line.208"></a>
+<span class="sourceLineNo">209</span>  /**<a name="line.209"></a>
+<span class="sourceLineNo">210</span>   * @deprecated Do not write further code which depends on this call. Instead<a name="line.210"></a>
+<span class="sourceLineNo">211</span>   *   use getStoreFileScanner() which uses the StoreFileScanner class/interface<a name="line.211"></a>
+<span class="sourceLineNo">212</span>   *   which is the preferred way to scan a store with higher level concepts.<a name="line.212"></a>
+<span class="sourceLineNo">213</span>   *<a name="line.213"></a>
+<span class="sourceLineNo">214</span>   * @param cacheBlocks<a name="line.214"></a>
+<span class="sourceLineNo">215</span>   *          should we cache the blocks?<a name="line.215"></a>
+<span class="sourceLineNo">216</span>   * @param pread<a name="line.216"></a>
+<span class="sourceLineNo">217</span>   *          use pread (for concurrent small readers)<a name="line.217"></a>
+<span class="sourceLineNo">218</span>   * @param isCompaction<a name="line.218"></a>
+<span class="sourceLineNo">219</span>   *          is scanner being used for compaction?<a name="line.219"></a>
+<span class="sourceLineNo">220</span>   * @return the underlying HFileScanner<a name="line.220"></a>
+<span class="sourceLineNo">221</span>   */<a name="line.221"></a>
+<span class="sourceLineNo">222</span>  @Deprecated<a name="line.222"></a>
+<span class="sourceLineNo">223</span>  public HFileScanner getScanner(boolean cacheBlocks, boolean pread,<a name="line.223"></a>
+<span class="sourceLineNo">224</span>      boolean isCompaction) {<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    return reader.getScanner(cacheBlocks, pread, isCompaction);<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>  /**<a name="line.228"></a>
-<span class="sourceLineNo">229</span>   * Check if this storeFile may contain keys within the TimeRange that<a name="line.229"></a>
-<span class="sourceLineNo">230</span>   * have not expired (i.e. not older than oldestUnexpiredTS).<a name="line.230"></a>
-<span class="sourceLineNo">231</span>   * @param timeRange the timeRange to restrict<a name="line.231"></a>
-<span class="sourceLineNo">232</span>   * @param oldestUnexpiredTS the oldest timestamp that is not expired, as<a name="line.232"></a>
-<span class="sourceLineNo">233</span>   *          determined by the column family's TTL<a name="line.233"></a>
-<span class="sourceLineNo">234</span>   * @return false if queried keys definitely don't exist in this StoreFile<a name="line.234"></a>
-<span class="sourceLineNo">235</span>   */<a name="line.235"></a>
-<span class="sourceLineNo">236</span>  boolean passesTimerangeFilter(TimeRange tr, long oldestUnexpiredTS) {<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    return this.timeRange == null? true:<a name="line.237"></a>
-<span class="sourceLineNo">238</span>      this.timeRange.includesTimeRange(tr) &amp;&amp; this.timeRange.getMax() &gt;= oldestUnexpiredTS;<a name="line.238"></a>
+<span class="sourceLineNo">228</span>  public void close(boolean evictOnClose) throws IOException {<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    synchronized (this) {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>      if (closed) {<a name="line.230"></a>
+<span class="sourceLineNo">231</span>        return;<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      }<a name="line.232"></a>
+<span class="sourceLineNo">233</span>      reader.close(evictOnClose);<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      closed = true;<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    }<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    if (listener != null) {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      listener.storeFileReaderClosed(this);<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    }<a name="line.238"></a>
 <span class="sourceLineNo">239</span>  }<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>   * Checks whether the given scan passes the Bloom filter (if present). Only<a name="line.242"></a>
-<span class="sourceLineNo">243</span>   * checks Bloom filters for single-row or single-row-column scans. Bloom<a name="line.243"></a>
-<span class="sourceLineNo">244</span>   * filter checking for multi-gets is implemented as part of the store<a name="line.244"></a>
-<span class="sourceLineNo">245</span>   * scanner system (see {@link StoreFileScanner#seek(Cell)} and uses<a name="line.245"></a>
-<span class="sourceLineNo">246</span>   * the lower-level API {@link #passesGeneralRowBloomFilter(byte[], int, int)}<a name="line.246"></a>
-<span class="sourceLineNo">247</span>   * and {@link #passesGeneralRowColBloomFilter(Cell)}.<a name="line.247"></a>
-<span class="sourceLineNo">248</span>   *<a name="line.248"></a>
-<span class="sourceLineNo">249</span>   * @param scan the scan specification. Used to determine the row, and to<a name="line.249"></a>
-<span class="sourceLineNo">250</span>   *          check whether this is a single-row ("get") scan.<a name="line.250"></a>
-<span class="sourceLineNo">251</span>   * @param columns the set of columns. Only used for row-column Bloom<a name="line.251"></a>
-<span class="sourceLineNo">252</span>   *          filters.<a name="line.252"></a>
-<span class="sourceLineNo">253</span>   * @return true if the scan with the given column set passes the Bloom<a name="line.253"></a>
-<span class="sourceLineNo">254</span>   *         filter, or if the Bloom filter is not applicable for the scan.<a name="line.254"></a>
-<span class="sourceLineNo">255</span>   *         False if the Bloom filter is applicable and the scan fails it.<a name="line.255"></a>
-<span class="sourceLineNo">256</span>   */<a name="line.256"></a>
-<span class="sourceLineNo">257</span>  boolean passesBloomFilter(Scan scan, final SortedSet&lt;byte[]&gt; columns) {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    // Multi-column non-get scans will use Bloom filters through the<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    // lower-level API function that this function calls.<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    if (!scan.isGetScan()) {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      return true;<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    }<a name="line.262"></a>
-<span class="sourceLineNo">263</span><a name="line.263"></a>
-<span class="sourceLineNo">264</span>    byte[] row = scan.getStartRow();<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    switch (this.bloomFilterType) {<a name="line.265"></a>
-<span class="sourceLineNo">266</span>      case ROW:<a name="line.266"></a>
-<span class="sourceLineNo">267</span>        return passesGeneralRowBloomFilter(row, 0, row.length);<a name="line.267"></a>
-<span class="sourceLineNo">268</span><a name="line.268"></a>
-<span class="sourceLineNo">269</span>      case ROWCOL:<a name="line.269"></a>
-<span class="sourceLineNo">270</span>        if (columns != null &amp;&amp; columns.size() == 1) {<a name="line.270"></a>
-<span class="sourceLineNo">271</span>          byte[] column = columns.first();<a name="line.271"></a>
-<span class="sourceLineNo">272</span>          // create the required fake key<a name="line.272"></a>
-<span class="sourceLineNo">273</span>          Cell kvKey = PrivateCellUtil.createFirstOnRow(row, HConstants.EMPTY_BYTE_ARRAY, column);<a name="line.273"></a>
-<span class="sourceLineNo">274</span>          return passesGeneralRowColBloomFilter(kvKey);<a name="line.274"></a>
-<span class="sourceLineNo">275</span>        }<a name="line.275"></a>
-<span class="sourceLineNo">276</span><a name="line.276"></a>
-<span class="sourceLineNo">277</span>        // For multi-column queries the Bloom filter is checked from the<a name="line.277"></a>
-<span class="sourceLineNo">278</span>        // seekExact operation.<a name="line.278"></a>
-<span class="sourceLineNo">279</span>        return true;<a name="line.279"></a>
-<span class="sourceLineNo">280</span><a name="line.280"></a>
-<span class="sourceLineNo">281</span>      default:<a name="line.281"></a>
-<span class="sourceLineNo">282</span>        return true;<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><a name="line.285"></a>
-<span class="sourceLineNo">286</span>  public boolean passesDeleteFamilyBloomFilter(byte[] row, int rowOffset,<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      int rowLen) {<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    // Cache Bloom filter as a local variable in case it is set to null by<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    // another thread on an IO error.<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    BloomFilter bloomFilter = this.deleteFamilyBloomFilter;<a name="line.290"></a>
-<span class="sourceLineNo">291</span><a name="line.291"></a>
-<span class="sourceLineNo">292</span>    // Empty file or there is no delete family at all<a name="line.292"></a>
-<span class="sourceLineNo">293</span>    if (reader.getTrailer().getEntryCount() == 0 || deleteFamilyCnt == 0) {<a name="line.293"></a>
-<span class="sourceLineNo">294</span>      return false;<a name="line.294"></a>
-<span class="sourceLineNo">295</span>    }<a name="line.295"></a>
-<span class="sourceLineNo">296</span><a name="line.296"></a>
-<span class="sourceLineNo">297</span>    if (bloomFilter == null) {<a name="line.297"></a>
-<span class="sourceLineNo">298</span>      return true;<a name="line.298"></a>
+<span class="sourceLineNo">242</span>   * Check if this storeFile may contain keys within the TimeRange that<a name="line.242"></a>
+<span class="sourceLineNo">243</span>   * have not expired (i.e. not older than oldestUnexpiredTS).<a name="line.243"></a>
+<span class="sourceLineNo">244</span>   * @param tr the timeRange to restrict<a name="line.244"></a>
+<span class="sourceLineNo">245</span>   * @param oldestUnexpiredTS the oldest timestamp that is not expired, as<a name="line.245"></a>
+<span class="sourceLineNo">246</span>   *          determined by the column family's TTL<a name="line.246"></a>
+<span class="sourceLineNo">247</span>   * @return false if queried keys definitely don't exist in this StoreFile<a name="line.247"></a>
+<span class="sourceLineNo">248</span>   */<a name="line.248"></a>
+<span class="sourceLineNo">249</span>  boolean passesTimerangeFilter(TimeRange tr, long oldestUnexpiredTS) {<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    return this.timeRange == null? true:<a name="line.250"></a>
+<span class="sourceLineNo">251</span>      this.timeRange.includesTimeRange(tr) &amp;&amp; this.timeRange.getMax() &gt;= oldestUnexpiredTS;<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>   * Checks whether the given scan passes the Bloom filter (if present). Only<a name="line.255"></a>
+<span class="sourceLineNo">256</span>   * checks Bloom filters for single-row or single-row-column scans. Bloom<a name="line.256"></a>
+<span class="sourceLineNo">257</span>   * filter checking for multi-gets is implemented as part of the store<a name="line.257"></a>
+<span class="sourceLineNo">258</span>   * scanner system (see {@link StoreFileScanner#seek(Cell)} and uses<a name="line.258"></a>
+<span class="sourceLineNo">259</span>   * the lower-level API {@link #passesGeneralRowBloomFilter(byte[], int, int)}<a name="line.259"></a>
+<span class="sourceLineNo">260</span>   * and {@link #passesGeneralRowColBloomFilter(Cell)}.<a name="line.260"></a>
+<span class="sourceLineNo">261</span>   *<a name="line.261"></a>
+<span class="sourceLineNo">262</span>   * @param scan the scan specification. Used to determine the row, and to<a name="line.262"></a>
+<span class="sourceLineNo">263</span>   *          check whether this is a single-row ("get") scan.<a name="line.263"></a>
+<span class="sourceLineNo">264</span>   * @param columns the set of columns. Only used for row-column Bloom<a name="line.264"></a>
+<span class="sourceLineNo">265</span>   *          filters.<a name="line.265"></a>
+<span class="sourceLineNo">266</span>   * @return true if the scan with the given column set passes the Bloom<a name="line.266"></a>
+<span class="sourceLineNo">267</span>   *         filter, or if the Bloom filter is not applicable for the scan.<a name="line.267"></a>
+<span class="sourceLineNo">268</span>   *         False if the Bloom filter is applicable and the scan fails it.<a name="line.268"></a>
+<span class="sourceLineNo">269</span>   */<a name="line.269"></a>
+<span class="sourceLineNo">270</span>  boolean passesBloomFilter(Scan scan, final SortedSet&lt;byte[]&gt; columns) {<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    byte[] row = scan.getStartRow();<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    switch (this.bloomFilterType) {<a name="line.272"></a>
+<span class="sourceLineNo">273</span>      case ROW:<a name="line.273"></a>
+<span class="sourceLineNo">274</span>        if (!scan.isGetScan()) {<a name="line.274"></a>
+<span class="sourceLineNo">275</span>          return true;<a name="line.275"></a>
+<span class="sourceLineNo">276</span>        }<a name="line.276"></a>
+<span class="sourceLineNo">277</span>        return passesGeneralRowBloomFilter(row, 0, row.length);<a name="line.277"></a>
+<span class="sourceLineNo">278</span><a name="line.278"></a>
+<span class="sourceLineNo">279</span>      case ROWCOL:<a name="line.279"></a>
+<span class="sourceLineNo">280</span>        if (!scan.isGetScan()) {<a name="line.280"></a>
+<span class="sourceLineNo">281</span>          return true;<a name="line.281"></a>
+<span class="sourceLineNo">282</span>        }<a name="line.282"></a>
+<span class="sourceLineNo">283</span>        if (columns != null &amp;&amp; columns.size() == 1) {<a name="line.283"></a>
+<span class="sourceLineNo">284</span>          byte[] column = columns.first();<a name="line.284"></a>
+<span class="sourceLineNo">285</span>          // create the required fake key<a name="line.285"></a>
+<span class="sourceLineNo">286</span>          Cell kvKey = PrivateCellUtil.createFirstOnRow(row, HConstants.EMPTY_BYTE_ARRAY, column);<a name="line.286"></a>
+<span class="sourceLineNo">287</span>          return passesGeneralRowColBloomFilter(kvKey);<a name="line.287"></a>
+<span class="sourceLineNo">288</span>        }<a name="line.288"></a>
+<span class="sourceLineNo">289</span><a name="line.289"></a>
+<span class="sourceLineNo">290</span>        // For multi-column queries the Bloom filter is checked from the<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        // seekExact operation.<a name="line.291"></a>
+<span class="sourceLineNo">292</span>        return true;<a name="line.292"></a>
+<span class="sourceLineNo">293</span>      case ROWPREFIX_FIXED_LENGTH:<a name="line.293"></a>
+<span class="sourceLineNo">294</span>        return passesGeneralRowPrefixBloomFilter(scan);<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      case ROWPREFIX_DELIMITED:<a name="line.295"></a>
+<span class="sourceLineNo">296</span>        return passesGeneralDelimitedRowPrefixBloomFilter(scan);<a name="line.296"></a>
+<span class="sourceLineNo">297</span>      default:<a name="line.297"></a>
+<span class="sourceLineNo">298</span>        return true;<a name="line.298"></a>
 <span class="sourceLineNo">299</span>    }<a name="line.299"></a>
-<span class="sourceLineNo">300</span><a name="line.300"></a>
-<span class="sourceLineNo">301</span>    try {<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      if (!bloomFilter.supportsAutoLoading()) {<a name="line.302"></a>
-<span class="sourceLineNo">303</span>        return true;<a name="line.303"></a>
-<span class="sourceLineNo">304</span>      }<a name="line.304"></a>
-<span class="sourceLineNo">305</span>      return bloomFilter.contains(row, rowOffset, rowLen, null);<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    } catch (IllegalArgumentException e) {<a name="line.306"></a>
-<span class="sourceLineNo">307</span>      LOG.error("Bad Delete Family bloom filter data -- proceeding without",<a name="line.307"></a>
-<span class="sourceLineNo">308</span>          e);<a name="line.308"></a>
-<span class="sourceLineNo">309</span>      setDeleteFamilyBloomFilterFaulty();<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    }<a name="line.310"></a>
-<span class="sourceLineNo">311</span><a name="line.311"></a>
-<span class="sourceLineNo">312</span>    return true;<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>  /**<a name="line.315"></a>
-<span class="sourceLineNo">316</span>   * A method for checking Bloom filters. Called directly from<a name="line.316"></a>
-<span class="sourceLineNo">317</span>   * StoreFileScanner in case of a multi-column query.<a name="line.317"></a>
-<span class="sourceLineNo">318</span>   *<a name="line.318"></a>
-<span class="sourceLineNo">319</span>   * @return True if passes<a name="line.319"></a>
-<span class="sourceLineNo">320</span>   */<a name="line.320"></a>
-<span class="sourceLineNo">321</span>  public boolean passesGeneralRowBloomFilter(byte[] row, int rowOffset, int rowLen) {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    BloomFilter bloomFilter = this.generalBloomFilter;<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    if (bloomFilter == null) {<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      return true;<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    }<a name="line.325"></a>
-<span class="sourceLineNo">326</span><a name="line.326"></a>
-<span class="sourceLineNo">327</span>    // Used in ROW bloom<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    byte[] key = null;<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    if (rowOffset != 0 || rowLen != row.length) {<a name="line.329"></a>
-<span class="sourceLineNo">330</span>      throw new AssertionError(<a name="line.330"></a>
-<span class="sourceLineNo">331</span>          "For row-only Bloom filters the row " + "must occupy the whole array");<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    }<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    key = row;<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    return checkGeneralBloomFilter(key, null, bloomFilter);<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>   * A method for checking Bloom filters. Called directly from<a name="line.338"></a>
-<span class="sourceLineNo">339</span>   * StoreFileScanner in case of a multi-column query.<a name="line.339"></a>
-<span class="sourceLineNo">340</span>   *<a name="line.340"></a>
-<span class="sourceLineNo">341</span>   * @param cell<a name="line.341"></a>
-<span class="sourceLineNo">342</span>   *          the cell to check if present in BloomFilter<a name="line.342"></a>
-<span class="sourceLineNo">343</span>   * @return True if passes<a name="line.343"></a>
-<span class="sourceLineNo">344</span>   */<a name="line.344"></a>
-<span class="sourceLineNo">345</span>  public boolean passesGeneralRowColBloomFilter(Cell cell) {<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    BloomFilter bloomFilter = this.generalBloomFilter;<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    if (bloomFilter == null) {<a name="line.347"></a>
-<span class="sourceLineNo">348</span>      return true;<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    }<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    // Used in ROW_COL bloom<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    Cell kvKey = null;<a name="line.351"></a>
-<span class="sourceLineNo">352</span>    // Already if the incoming key is a fake rowcol key then use it as it is<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    if (cell.getTypeByte() == KeyValue.Type.Maximum.getCode() &amp;&amp; cell.getFamilyLength() == 0) {<a name="line.353"></a>
-<span class="sourceLineNo">354</span>      kvKey = cell;<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    } else {<a name="line.355"></a>
-<span class="sourceLineNo">356</span>      kvKey = PrivateCellUtil.createFirstOnRowCol(cell);<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    }<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    return checkGeneralBloomFilter(null, kvKey, bloomFilter);<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>  private boolean checkGeneralBloomFilter(byte[] key, Cell kvKey, BloomFilter bloomFilter) {<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    // Empty file<a name="line.362"></a>
-<span class="sourceLineNo">363</span>    if (reader.getTrailer().getEntryCount() == 0) {<a name="line.363"></a>
-<span class="sourceLineNo">364</span>      return false;<a name="line.364"></a>
+<span class="sourceLineNo">300</span>  }<a name="line.300"></a>
+<span class="sourceLineNo">301</span><a name="line.301"></a>
+<span class="sourceLineNo">302</span>  public boolean passesDeleteFamilyBloomFilter(byte[] row, int rowOffset,<a name="line.302"></a>
+<span class="sourceLineNo">303</span>      int rowLen) {<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    // Cache Bloom filter as a local variable in case it is set to null by<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    // another thread on an IO error.<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    BloomFilter bloomFilter = this.deleteFamilyBloomFilter;<a name="line.306"></a>
+<span class="sourceLineNo">307</span><a name="line.307"></a>
+<span class="sourceLineNo">308</span>    // Empty file or there is no delete family at all<a name="line.308"></a>
+<span class="sourceLineNo">309</span>    if (reader.getTrailer().getEntryCount() == 0 || deleteFamilyCnt == 0) {<a name="line.309"></a>
+<span class="sourceLineNo">310</span>      return false;<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    }<a name="line.311"></a>
+<span class="sourceLineNo">312</span><a name="line.312"></a>
+<span class="sourceLineNo">313</span>    if (bloomFilter == null) {<a name="line.313"></a>
+<span class="sourceLineNo">314</span>      return true;<a name="line.314"></a>
+<span class="sourceLineNo">315</span>    }<a name="line.315"></a>
+<span class="sourceLineNo">316</span><a name="line.316"></a>
+<span class="sourceLineNo">317</span>    try {<a name="line.317"></a>
+<span class="sourceLineNo">318</span>      if (!bloomFilter.supportsAutoLoading()) {<a name="line.318"></a>
+<span class="sourceLineNo">319</span>        return true;<a name="line.319"></a>
+<span class="sourceLineNo">320</span>      }<a name="line.320"></a>
+<span class="sourceLineNo">321</span>      return bloomFilter.contains(row, rowOffset, rowLen, null);<a name="line.321"></a>
+<span class="sourceLineNo">322</span>    } catch (IllegalArgumentException e) {<a name="line.322"></a>
+<span class="sourceLineNo">323</span>      LOG.error("Bad Delete Family bloom filter data -- proceeding without",<a name="line.323"></a>
+<span class="sourceLineNo">324</span>          e);<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      setDeleteFamilyBloomFilterFaulty();<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    }<a name="line.326"></a>
+<span class="sourceLineNo">327</span><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><a name="line.330"></a>
+<span class="sourceLineNo">331</span>  /**<a name="line.331"></a>
+<span class="sourceLineNo">332</span>   * A method for checking Bloom filters. Called directly from<a name="line.332"></a>
+<span class="sourceLineNo">333</span>   * StoreFileScanner in case of a multi-column query.<a name="line.333"></a>
+<span class="sourceLineNo">334</span>   *<a name="line.334"></a>
+<span class="sourceLineNo">335</span>   * @return True if passes<a name="line.335"></a>
+<span class="sourceLineNo">336</span>   */<a name="line.336"></a>
+<span class="sourceLineNo">337</span>  private boolean passesGeneralRowBloomFilter(byte[] row, int rowOffset, int rowLen) {<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    BloomFilter bloomFilter = this.generalBloomFilter;<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    if (bloomFilter == null) {<a name="line.339"></a>
+<span class="sourceLineNo">340</span>      return true;<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>    // Used in ROW bloom<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    byte[] key = null;<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    if (rowOffset != 0 || rowLen != row.length) {<a name="line.345"></a>
+<span class="sourceLineNo">346</span>      throw new AssertionError(<a name="line.346"></a>
+<span class="sourceLineNo">347</span>          "For row-only Bloom filters the row must occupy the whole array");<a name="line.347"></a>
+<span class="sourceLineNo">348</span>    }<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    key = row;<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    return checkGeneralBloomFilter(key, null, bloomFilter);<a name="line.350"></a>
+<span class="sourceLineNo">351</span>  }<a name="line.351"></a>
+<span class="sourceLineNo">352</span><a name="line.352"></a>
+<span class="sourceLineNo">353</span>  /**<a name="line.353"></a>
+<span class="sourceLineNo">354</span>   * A method for checking Bloom filters. Called directly from<a name="line.354"></a>
+<span class="sourceLineNo">355</span>   * StoreFileScanner in case of a multi-column query.<a name="line.355"></a>
+<span class="sourceLineNo">356</span>   *<a name="line.356"></a>
+<span class="sourceLineNo">357</span>   * @param cell<a name="line.357"></a>
+<span class="sourceLineNo">358</span>   *          the cell to check if present in BloomFilter<a name="line.358"></a>
+<span class="sourceLineNo">359</span>   * @return True if passes<a name="line.359"></a>
+<span class="sourceLineNo">360</span>   */<a name="line.360"></a>
+<span class="sourceLineNo">361</span>  public boolean passesGeneralRowColBloomFilter(Cell cell) {<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    BloomFilter bloomFilter = this.generalBloomFilter;<a name="line.362"></a>
+<span class="sourceLineNo">363</span>    if (bloomFilter == null) {<a name="line.363"></a>
+<span class="sourceLineNo">364</span>      return true;<a name="line.364"></a>
 <span class="sourceLineNo">365</span>    }<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    HFileBlock bloomBlock = null;<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    try {<a name="line.367"></a>
-<span class="sourceLineNo">368</span>      boolean shouldCheckBloom;<a name="line.368"></a>
-<span class="sourceLineNo">369</span>      ByteBuff bloom;<a name="line.369"></a>
-<span class="sourceLineNo">370</span>      if (bloomFilter.supportsAutoLoading()) {<a name="line.370"></a>
-<span class="sourceLineNo">371</span>        bloom = null;<a name="line.371"></a>
-<span class="sourceLineNo">372</span>        shouldCheckBloom = true;<a name="line.372"></a>
-<span class="sourceLineNo">373</span>      } else {<a name="line.373"></a>
-<span class="sourceLineNo">374</span>        bloomBlock = reader.getMetaBlock(HFile.BLOOM_FILTER_DATA_KEY, true);<a name="line.374"></a>
-<span class="sourceLineNo">375</span>        bloom = bloomBlock.getBufferWithoutHeader();<a name="line.375"></a>
-<span class="sourceLineNo">376</span>        shouldCheckBloom = bloom != null;<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      }<a name="line.377"></a>
-<span class="sourceLineNo">378</span><a name="line.378"></a>
-<span class="sourceLineNo">379</span>      if (shouldCheckBloom) {<a name="line.379"></a>
-<span class="sourceLineNo">380</span>        boolean exists;<a name="line.380"></a>
-<span class="sourceLineNo">381</span><a name="line.381"></a>
-<span class="sourceLineNo">382</span>        // Whether the primary Bloom key is greater than the last Bloom key<a name="line.382"></a>
-<span class="sourceLineNo">383</span>        // from the file info. For row-column Bloom filters this is not yet<a name="line.383"></a>
-<span class="sourceLineNo">384</span>        // a sufficient condition to return false.<a name="line.384"></a>
-<span class="sourceLineNo">385</span>        boolean keyIsAfterLast = (lastBloomKey != null);<a name="line.385"></a>
-<span class="sourceLineNo">386</span>        // hbase:meta does not have blooms. So we need not have special interpretation<a name="line.386"></a>
-<span class="sourceLineNo">387</span>        // of the hbase:meta cells.  We can safely use Bytes.BYTES_RAWCOMPARATOR for ROW Bloom<a name="line.387"></a>
-<span class="sourceLineNo">388</span>        if (keyIsAfterLast) {<a name="line.388"></a>
-<span class="sourceLineNo">389</span>          if (bloomFilterType == BloomType.ROW) {<a name="line.389"></a>
-<span class="sourceLineNo">390</span>            keyIsAfterLast = (Bytes.BYTES_RAWCOMPARATOR.compare(key, lastBloomKey) &gt; 0);<a name="line.390"></a>
-<span class="sourceLineNo">391</span>          } else {<a name="line.391"></a>
-<span class="sourceLineNo">392</span>            keyIsAfterLast = (CellComparator.getInstance().compare(kvKey, lastBloomKeyOnlyKV)) &gt; 0;<a name="line.392"></a>
-<span class="sourceLineNo">393</span>          }<a name="line.393"></a>
-<span class="sourceLineNo">394</span>        }<a name="line.394"></a>
-<span class="sourceLineNo">395</span><a name="line.395"></a>
-<span class="sourceLineNo">396</span>        if (bloomFilterType == BloomType.ROWCOL) {<a name="line.396"></a>
-<span class="sourceLineNo">397</span>          // Since a Row Delete is essentially a DeleteFamily applied to all<a name="line.397"></a>
-<span class="sourceLineNo">398</span>          // columns, a file might be skipped if using row+col Bloom filter.<a name="line.398"></a>
-<span class="sourceLineNo">399</span>          // In order to ensure this file is included an additional check is<a name="line.399"></a>
-<span class="sourceLineNo">400</span>          // required looking only for a row bloom.<a name="line.400"></a>
-<span class="sourceLineNo">401</span>          Cell rowBloomKey = PrivateCellUtil.createFirstOnRow(kvKey);<a name="line.401"></a>
-<span class="sourceLineNo">402</span>          // hbase:meta does not have blooms. So we need not have special interpretation<a name="line.402"></a>
-<span class="sourceLineNo">403</span>          // of the hbase:meta cells.  We can safely use Bytes.BYTES_RAWCOMPARATOR for ROW Bloom<a name="line.403"></a>
-<span class="sourceLineNo">404</span>          if (keyIsAfterLast<a name="line.404"></a>
-<span class="sourceLineNo">405</span>              &amp;&amp; (CellComparator.getInstance().compare(rowBloomKey, lastBloomKeyOnlyKV)) &gt; 0) {<a name="line.405"></a>
-<span class="sourceLineNo">406</span>            exists = false;<a name="line.406"></a>
-<span class="sourceLineNo">407</span>          } else {<a name="line.407"></a>
-<span class="sourceLineNo">408</span>            exists =<a name="line.408"></a>
-<span class="sourceLineNo">409</span>                bloomFilter.contains(kvKey, bloom, BloomType.ROWCOL) ||<a name="line.409"></a>
-<span class="sourceLineNo">410</span>                bloomFilter.contains(rowBloomKey, bloom, BloomType.ROWCOL);<a name="line.410"></a>
-<span class="sourceLineNo">411</span>          }<a name="line.411"></a>
-<span class="sourceLineNo">412</span>        } else {<a name="line.412"></a>
-<span class="sourceLineNo">413</span>          exists = !keyIsAfterLast<a name="line.413"></a>
-<span class="sourceLineNo">414</span>              &amp;&amp; bloomFilter.contains(key, 0, key.length, bloom);<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>        return exists;<a name="line.417"></a>
-<span class="sourceLineNo">418</span>      }<a name="line.418"></a>
-<span class="sourceLineNo">419</span>    } catch (IOException e) {<a name="line.419"></a>
-<span class="sourceLineNo">420</span>      LOG.error("Error reading bloom filter data -- proceeding without",<a name="line.420"></a>
-<span class="sourceLineNo">421</span>          e);<a name="line.421"></a>
-<span class="sourceLineNo">422</span>      setGeneralBloomFilterFaulty();<a name="line.422"></a>
-<span class="sourceLineNo">423</span>    } catch (IllegalArgumentException e) {<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      LOG.error("Bad bloom filter data -- proceeding without", e);<a name="line.424"></a>
-<span class="sourceLineNo">425</span>      setGeneralBloomFilterFaulty();<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    } finally {<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      // Return the bloom block so that its ref count can be decremented.<a name="line.427"></a>
-<span class="sourceLineNo">428</span>      reader.returnBlock(bloomBlock);<a name="line.428"></a>
-<span class="sourceLineNo">429</span>    }<a name="line.429"></a>
-<span class="sourceLineNo">430</span>    return true;<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>  /**<a name="line.433"></a>
-<span class="sourceLineNo">434</span>   * Checks whether the given scan rowkey range overlaps with the current storefile's<a name="line.434"></a>
-<span class="sourceLineNo">435</span>   * @param scan the scan specification. Used to determine the rowkey range.<a name="line.435"></a>
-<span class="sourceLineNo">436</span>   * @return true if there is overlap, false otherwise<a name="line.436"></a>
-<span class="sourceLineNo">437</span>   */<a name="line.437"></a>
-<span class="sourceLineNo">438</span>  public boolean passesKeyRangeFilter(Scan scan) {<a name="line.438"></a>
-<span class="sourceLineNo">439</span>    Optional&lt;Cell&gt; firstKeyKV = this.getFirstKey();<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    Optional&lt;Cell&gt; lastKeyKV = this.getLastKey();<a name="line.440"></a>
-<span class="sourceLineNo">441</span>    if (!firstKeyKV.isPresent() || !lastKeyKV.isPresent()) {<a name="line.441"></a>
-<span class="sourceLineNo">442</span>      // the file is empty<a name="line.442"></a>
-<span class="sourceLineNo">443</span>      return false;<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    }<a name="line.444"></a>
-<span class="sourceLineNo">445</span>    if (Bytes.equals(scan.getStartRow(), HConstants.EMPTY_START_ROW) &amp;&amp;<a name="line.445"></a>
-<span class="sourceLineNo">446</span>        Bytes.equals(scan.getStopRow(), HConstants.EMPTY_END_ROW)) {<a name="line.446"></a>
-<span class="sourceLineNo">447</span>      return true;<a name="line.447"></a>
-<span class="sourceLineNo">448</span>    }<a name="line.448"></a>
-<span class="sourceLineNo">449</span>    byte[] smallestScanRow = scan.isReversed() ? scan.getStopRow() : scan.getStartRow();<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    byte[] largestScanRow = scan.isReversed() ? scan.getStartRow() : scan.getStopRow();<a name="line.450"></a>
-<span class="sourceLineNo">451</span>    boolean nonOverLapping = (getComparator()<a name="line.451"></a>
-<span class="sourceLineNo">452</span>        .compareRows(firstKeyKV.get(), largestScanRow, 0, largestScanRow.length) &gt; 0 &amp;&amp;<a name="line.452"></a>
-<span class="sourceLineNo">453</span>        !Bytes.equals(scan.isReversed() ? scan.getStartRow() : scan.getStopRow(),<a name="line.453"></a>
-<span class="sourceLineNo">454</span>          HConstants.EMPTY_END_ROW)) ||<a name="line.454"></a>
-<span class="sourceLineNo">455</span>        getComparator().compareRows(lastKeyKV.get(), smallestScanRow, 0,<a name="line.455"></a>
-<span class="sourceLineNo">456</span>          smallestScanRow.length) &lt; 0;<a name="line.456"></a>
-<span class="sourceLineNo">457</span>    return !nonOverLapping;<a name="line.457"></a>
-<span class="sourceLineNo">458</span>  }<a name="line.458"></a>
-<span class="sourceLineNo">459</span><a name="line.459"></a>
-<span class="sourceLineNo">460</span>  public Map&lt;byte[], byte[]&gt; loadFileInfo() throws IOException {<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    Map&lt;byte [], byte []&gt; fi = reader.loadFileInfo();<a name="line.461"></a>
-<span class="sourceLineNo">462</span><a name="line.462"></a>
-<span class="sourceLineNo">463</span>    byte[] b = fi.get(BLOOM_FILTER_TYPE_KEY);<a name="line.463"></a>
-<span class="sourceLineNo">464</span>    if (b != null) {<a name="line.464"></a>
-<span class="sourceLineNo">465</span>      bloomFilterType = BloomType.valueOf(Bytes.toString(b));<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    }<a name="line.466"></a>
+<span class="sourceLineNo">366</span>    // Used in ROW_COL bloom<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    Cell kvKey = null;<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    // Already if the incoming key is a fake rowcol key then use it as it is<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    if (cell.getTypeByte() == KeyValue.Type.Maximum.getCode() &amp;&amp; cell.getFamilyLength() == 0) {<a name="line.369"></a>
+<span class="sourceLineNo">370</span>      kvKey = cell;<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    } else {<a name="line.371"></a>
+<span class="sourceLineNo">372</span>      kvKey = PrivateCellUtil.createFirstOnRowCol(cell);<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    }<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    return checkGeneralBloomFilter(null, kvKey, bloomFilter);<a name="line.374"></a>
+<span class="sourceLineNo">375</span>  }<a name="line.375"></a>
+<span class="sourceLineNo">376</span><a name="line.376"></a>
+<span class="sourceLineNo">377</span>  /**<a name="line.377"></a>
+<span class="sourceLineNo">378</span>   * A method for checking Bloom filters. Called directly from<a name="line.378"></a>
+<span class="sourceLineNo">379</span>   * StoreFileScanner in case of a multi-column query.<a name="line.379"></a>
+<span class="sourceLineNo">380</span>   *<a name="line.380"></a>
+<span class="sourceLineNo">381</span>   * @return True if passes<a name="line.381"></a>
+<span class="sourceLineNo">382</span>   */<a name="line.382"></a>
+<span class="sourceLineNo">383</span>  private boolean passesGeneralRowPrefixBloomFilter(Scan scan) {<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    BloomFilter bloomFilter = this.generalBloomFilter;<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    if (bloomFilter == null) {<a name="line.385"></a>
+<span class="sourceLineNo">386</span>      return true;<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    }<a name="line.387"></a>
+<span class="sourceLineNo">388</span><a name="line.388"></a>
+<span class="sourceLineNo">389</span>    byte[] row = scan.getStartRow();<a name="line.389"></a>
+<span class="sourceLineNo">390</span>    byte[] rowPrefix;<a name="line.390"></a>
+<span class="sourceLineNo">391</span>    if (scan.isGetScan()) {<a name="line.391"></a>
+<span class="sourceLineNo">392</span>      rowPrefix = Bytes.copy(row, 0, Math.min(prefixLength, row.length));<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    } else {<a name="line.393"></a>
+<span class="sourceLineNo">394</span>      // For non-get scans<a name="line.394"></a>
+<span class="sourceLineNo">395</span>      // Find out the common prefix of startRow and stopRow.<a name="line.395"></a>
+<span class="sourceLineNo">396</span>      int commonLength = Bytes.findCommonPrefix(scan.getStartRow(), scan.getStopRow(),<a name="line.396"></a>
+<span class="sourceLineNo">397</span>          scan.getStartRow().length, scan.getStopRow().length, 0, 0);<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      // startRow and stopRow don't have the common prefix.<a name="line.398"></a>
+<span class="sourceLineNo">399</span>      // Or the common prefix length is less than prefixLength<a name="line.399"></a>
+<span class="sourceLineNo">400</span>      if (commonLength &lt;= 0 || commonLength &lt; prefixLength) {<a name="line.400"></a>
+<span class="sourceLineNo">401</span>        return true;<a name="line.401"></a>
+<span class="sourceLineNo">402</span>      }<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      rowPrefix = Bytes.copy(row, 0, prefixLength);<a name="line.403"></a>
+<span class="sourceLineNo">404</span>    }<a name="line.404"></a>
+<span class="sourceLineNo">405</span>    return checkGeneralBloomFilter(rowPrefix, null, bloomFilter);<a name="line.405"></a>
+<span class="sourceLineNo">406</span>  }<a name="line.406"></a>
+<span class="sourceLineNo">407</span><a name="line.407"></a>
+<span class="sourceLineNo">408</span>  /**<a name="line.408"></a>
+<span class="sourceLineNo">409</span>   * A method for checking Bloom filters. Called directly from<a name="line.409"></a>
+<span class="sourceLineNo">410</span>   * StoreFileScanner in case of a multi-column query.<a name="line.410"></a>
+<span class="sourceLineNo">411</span>   *<a name="line.411"></a>
+<span class="sourceLineNo">412</span>   * @return True if passes<a name="line.412"></a>
+<span class="sourceLineNo">413</span>   */<a name="line.413"></a>
+<span class="sourceLineNo">414</span>  private boolean passesGeneralDelimitedRowPrefixBloomFilter(Scan scan) {<a name="line.414"></a>
+<span class="sourceLineNo">415</span>    BloomFilter bloomFilter = this.generalBloomFilter;<a name="line.415"></a>
+<span class="sourceLineNo">416</span>    if (bloomFilter == null) {<a name="line.416"></a>
+<span class="sourceLineNo">417</span>      return true;<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>    byte[] row = scan.getStartRow();<a name="line.420"></a>
+<span class="sourceLineNo">421</span>    byte[] rowPrefix;<a name="line.421"></a>
+<span class="sourceLineNo">422</span>    if (scan.isGetScan()) {<a name="line.422"></a>
+<span class="sourceLineNo">423</span>      int rowPrefixLength = Bytes.indexOf(row, delimiter);<a name="line.423"></a>
+<span class="sourceLineNo">424</span>      if (rowPrefixLength &lt;= 0) {<a name="line.424"></a>
+<span class="sourceLineNo">425</span>        rowPrefix = row;<a name="line.425"></a>
+<span class="sourceLineNo">426</span>      } else {<a name="line.426"></a>
+<span class="sourceLineNo">427</span>        rowPrefix = Bytes.copy(row, 0, rowPrefixLength);<a name="line.427"></a>
+<span class="sourceLineNo">428</span>      }<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    } else {<a name="line.429"></a>
+<span class="sourceLineNo">430</span>      // For non-get scans<a name="line.430"></a>
+<span class="sourceLineNo">431</span>      // If startRow does not contain delimiter, return true directly.<a name="line.431"></a>
+<span class="sourceLineNo">432</span>      int startRowPrefixLength = Bytes.indexOf(row, delimiter);<a name="line.432"></a>
+<span class="sourceLineNo">433</span>      if (startRowPrefixLength &lt;= 0) {<a name="line.433"></a>
+<span class="sourceLineNo">434</span>        return true;<a name="line.434"></a>
+<span class="sourceLineNo">435</span>      }<a name="line.435"></a>
+<span class="sourceLineNo">436</span>      // If stopRow does not have the same prefix as startRow, return true directly.<a name="line.436"></a>
+<span class="sourceLineNo">437</span>      int commonLength = Bytes.findCommonPrefix(scan.getStartRow(), scan.getStopRow(),<a name="line.437"></a>
+<span class="sourceLineNo">438</span>          startRowPrefixLength, scan.getStopRow().length, 0, 0);<a name="line.438"></a>
+<span class="sourceLineNo">439</span>      if (commonLength &lt; startRowPrefixLength) {<a name="line.439"></a>
+<span class="sourceLineNo">440</span>        return true;<a name="line.440"></a>
+<span class="sourceLineNo">441</span>      }<a name="line.441"></a>
+<span class="sourceLineNo">442</span>      rowPrefix = Bytes.copy(row, 0, startRowPrefixLength);<a name="line.442"></a>
+<span class="sourceLineNo">443</span>    }<a name="line.443"></a>
+<span class="sourceLineNo">444</span>    return checkGeneralBloomFilter(rowPrefix, null, bloomFilter);<a name="line.444"></a>
+<span class="sourceLineNo">445</span>  }<a name="line.445"></a>
+<span class="sourceLineNo">446</span><a name="line.446"></a>
+<span class="sourceLineNo">447</span>  private boolean checkGeneralBloomFilter(byte[] key, Cell kvKey, BloomFilter bloomFilter) {<a name="line.447"></a>
+<span class="sourceLineNo">448</span>    // Empty file<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    if (reader.getTrailer().getEntryCount() == 0) {<a name="line.449"></a>
+<span class="sourceLineNo">450</span>      return false;<a name="line.450"></a>
+<span class="sourceLineNo">451</span>    }<a name="line.451"></a>
+<span class="sourceLineNo">452</span>    HFileBlock bloomBlock = null;<a name="line.452"></a>
+<span class="sourceLineNo">453</span>    try {<a name="line.453"></a>
+<span class="sourceLineNo">454</span>      boolean shouldCheckBloom;<a name="line.454"></a>
+<span class="sourceLineNo">455</span>      ByteBuff bloom;<a name="line.455"></a>
+<span class="sourceLineNo">456</span>      if (bloomFilter.supportsAutoLoading()) {<a name="line.456"></a>
+<span class="sourceLineNo">457</span>        bloom = null;<a name="line.457"></a>
+<span class="sourceLineNo">458</span>        shouldCheckBloom = true;<a name="line.458"></a>
+<span class="sourceLineNo">459</span>      } else {<a name="line.459"></a>
+<span class="sourceLineNo">460</span>        bloomBlock = reader.getMetaBlock(HFile.BLOOM_FILTER_DATA_KEY, true);<a name="line.460"></a>
+<span class="sourceLineNo">461</span>        bloom = bloomBlock.getBufferWithoutHeader();<a name="line.461"></a>
+<span class="sourceLineNo">462</span>        shouldCheckBloom = bloom != null;<a name="line.462"></a>
+<span class="sourceLineNo">463</span>      }<a name="line.463"></a>
+<span class="sourceLineNo">464</span><a name="line.464"></a>
+<span class="sourceLineNo">465</span>      if (shouldCheckBloom) {<a name="line.465"></a>
+<span class="sourceLineNo">466</span>        boolean exists;<a name="line.466"></a>
 <span class="sourceLineNo">467</span><a name="line.467"></a>
-<span class="sourceLineNo">468</span>    lastBloomKey = fi.get(LAST_BLOOM_KEY);<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    if(bloomFilterType == BloomType.ROWCOL) {<a name="line.469"></a>
-<span class="sourceLineNo">470</span>      lastBloomKeyOnlyKV = new KeyValue.KeyOnlyKeyValue(lastBloomKey, 0, lastBloomKey.length);<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    }<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    byte[] cnt = fi.get(DELETE_FAMILY_COUNT);<a name="line.472"></a>
-<span class="sourceLineNo">473</span>    if (cnt != null) {<a name="line.473"></a>
-<span class="sourceLineNo">474</span>      deleteFamilyCnt = Bytes.toLong(cnt);<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>    return fi;<a name="line.477"></a>
-<span class="sourceLineNo">478</span>  }<a name="line.478"></a>
-<span class="sourceLineNo">479</span><a name="line.479"></a>
-<span class="sourceLineNo">480</span>  public void loadBloomfilter() {<a name="line.480"></a>
-<span class="sourceLineNo">481</span>    this.loadBloomfilter(BlockType.GENERAL_BLOOM_META);<a name="line.481"></a>
-<span class="sourceLineNo">482</span>    this.loadBloomfilter(BlockTy

<TRUNCATED>

[27/43] hbase-site git commit: Published site at 7ab77518a2569e2416a50020393aa386e7734501.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html b/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html
index ab76d10..5ee521a 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html
@@ -81,862 +81,913 @@
 <span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.regionserver.BloomType;<a name="line.73"></a>
 <span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.regionserver.HStore;<a name="line.74"></a>
 <span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.regionserver.StoreFileWriter;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.util.MapReduceExtendedCell;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.io.NullWritable;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.io.SequenceFile;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.io.Text;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.mapreduce.Job;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.mapreduce.OutputCommitter;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.mapreduce.OutputFormat;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.mapreduce.RecordWriter;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.hadoop.mapreduce.TaskAttemptContext;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.apache.hadoop.mapreduce.lib.output.FileOutputCommitter;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.mapreduce.lib.partition.TotalOrderPartitioner;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.slf4j.Logger;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.slf4j.LoggerFactory;<a name="line.93"></a>
-<span class="sourceLineNo">094</span><a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<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> * Writes HFiles. Passed Cells must arrive in order.<a name="line.98"></a>
-<span class="sourceLineNo">099</span> * Writes current time as the sequence id for the file. Sets the major compacted<a name="line.99"></a>
-<span class="sourceLineNo">100</span> * attribute on created @{link {@link HFile}s. Calling write(null,null) will forcibly roll<a name="line.100"></a>
-<span class="sourceLineNo">101</span> * all HFiles being written.<a name="line.101"></a>
-<span class="sourceLineNo">102</span> * &lt;p&gt;<a name="line.102"></a>
-<span class="sourceLineNo">103</span> * Using this class as part of a MapReduce job is best done<a name="line.103"></a>
-<span class="sourceLineNo">104</span> * using {@link #configureIncrementalLoad(Job, TableDescriptor, RegionLocator)}.<a name="line.104"></a>
-<span class="sourceLineNo">105</span> */<a name="line.105"></a>
-<span class="sourceLineNo">106</span>@InterfaceAudience.Public<a name="line.106"></a>
-<span class="sourceLineNo">107</span>public class HFileOutputFormat2<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    extends FileOutputFormat&lt;ImmutableBytesWritable, Cell&gt; {<a name="line.108"></a>
-<span class="sourceLineNo">109</span>  private static final Logger LOG = LoggerFactory.getLogger(HFileOutputFormat2.class);<a name="line.109"></a>
-<span class="sourceLineNo">110</span>  static class TableInfo {<a name="line.110"></a>
-<span class="sourceLineNo">111</span>    private TableDescriptor tableDesctiptor;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>    private RegionLocator regionLocator;<a name="line.112"></a>
-<span class="sourceLineNo">113</span><a name="line.113"></a>
-<span class="sourceLineNo">114</span>    public TableInfo(TableDescriptor tableDesctiptor, RegionLocator regionLocator) {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      this.tableDesctiptor = tableDesctiptor;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>      this.regionLocator = regionLocator;<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    }<a name="line.117"></a>
-<span class="sourceLineNo">118</span><a name="line.118"></a>
-<span class="sourceLineNo">119</span>    /**<a name="line.119"></a>
-<span class="sourceLineNo">120</span>     * The modification for the returned HTD doesn't affect the inner TD.<a name="line.120"></a>
-<span class="sourceLineNo">121</span>     * @return A clone of inner table descriptor<a name="line.121"></a>
-<span class="sourceLineNo">122</span>     * @deprecated use {@link #getTableDescriptor}<a name="line.122"></a>
-<span class="sourceLineNo">123</span>     */<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    @Deprecated<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    public HTableDescriptor getHTableDescriptor() {<a name="line.125"></a>
-<span class="sourceLineNo">126</span>      return new HTableDescriptor(tableDesctiptor);<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    }<a name="line.127"></a>
-<span class="sourceLineNo">128</span><a name="line.128"></a>
-<span class="sourceLineNo">129</span>    public TableDescriptor getTableDescriptor() {<a name="line.129"></a>
-<span class="sourceLineNo">130</span>      return tableDesctiptor;<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    }<a name="line.131"></a>
-<span class="sourceLineNo">132</span><a name="line.132"></a>
-<span class="sourceLineNo">133</span>    public RegionLocator getRegionLocator() {<a name="line.133"></a>
-<span class="sourceLineNo">134</span>      return regionLocator;<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>  protected static final byte[] tableSeparator = Bytes.toBytes(";");<a name="line.138"></a>
-<span class="sourceLineNo">139</span><a name="line.139"></a>
-<span class="sourceLineNo">140</span>  protected static byte[] combineTableNameSuffix(byte[] tableName, byte[] suffix) {<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    return Bytes.add(tableName, tableSeparator, suffix);<a name="line.141"></a>
-<span class="sourceLineNo">142</span>  }<a name="line.142"></a>
-<span class="sourceLineNo">143</span><a name="line.143"></a>
-<span class="sourceLineNo">144</span>  // The following constants are private since these are used by<a name="line.144"></a>
-<span class="sourceLineNo">145</span>  // HFileOutputFormat2 to internally transfer data between job setup and<a name="line.145"></a>
-<span class="sourceLineNo">146</span>  // reducer run using conf.<a name="line.146"></a>
-<span class="sourceLineNo">147</span>  // These should not be changed by the client.<a name="line.147"></a>
-<span class="sourceLineNo">148</span>  static final String COMPRESSION_FAMILIES_CONF_KEY =<a name="line.148"></a>
-<span class="sourceLineNo">149</span>      "hbase.hfileoutputformat.families.compression";<a name="line.149"></a>
-<span class="sourceLineNo">150</span>  static final String BLOOM_TYPE_FAMILIES_CONF_KEY =<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      "hbase.hfileoutputformat.families.bloomtype";<a name="line.151"></a>
-<span class="sourceLineNo">152</span>  static final String BLOCK_SIZE_FAMILIES_CONF_KEY =<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      "hbase.mapreduce.hfileoutputformat.blocksize";<a name="line.153"></a>
-<span class="sourceLineNo">154</span>  static final String DATABLOCK_ENCODING_FAMILIES_CONF_KEY =<a name="line.154"></a>
-<span class="sourceLineNo">155</span>      "hbase.mapreduce.hfileoutputformat.families.datablock.encoding";<a name="line.155"></a>
-<span class="sourceLineNo">156</span><a name="line.156"></a>
-<span class="sourceLineNo">157</span>  // This constant is public since the client can modify this when setting<a name="line.157"></a>
-<span class="sourceLineNo">158</span>  // up their conf object and thus refer to this symbol.<a name="line.158"></a>
-<span class="sourceLineNo">159</span>  // It is present for backwards compatibility reasons. Use it only to<a name="line.159"></a>
-<span class="sourceLineNo">160</span>  // override the auto-detection of datablock encoding.<a name="line.160"></a>
-<span class="sourceLineNo">161</span>  public static final String DATABLOCK_ENCODING_OVERRIDE_CONF_KEY =<a name="line.161"></a>
-<span class="sourceLineNo">162</span>      "hbase.mapreduce.hfileoutputformat.datablock.encoding";<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>   * Keep locality while generating HFiles for bulkload. See HBASE-12596<a name="line.165"></a>
-<span class="sourceLineNo">166</span>   */<a name="line.166"></a>
-<span class="sourceLineNo">167</span>  public static final String LOCALITY_SENSITIVE_CONF_KEY =<a name="line.167"></a>
-<span class="sourceLineNo">168</span>      "hbase.bulkload.locality.sensitive.enabled";<a name="line.168"></a>
-<span class="sourceLineNo">169</span>  private static final boolean DEFAULT_LOCALITY_SENSITIVE = true;<a name="line.169"></a>
-<span class="sourceLineNo">170</span>  static final String OUTPUT_TABLE_NAME_CONF_KEY =<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      "hbase.mapreduce.hfileoutputformat.table.name";<a name="line.171"></a>
-<span class="sourceLineNo">172</span>  static final String MULTI_TABLE_HFILEOUTPUTFORMAT_CONF_KEY =<a name="line.172"></a>
-<span class="sourceLineNo">173</span>          "hbase.mapreduce.use.multi.table.hfileoutputformat";<a name="line.173"></a>
-<span class="sourceLineNo">174</span><a name="line.174"></a>
-<span class="sourceLineNo">175</span>  public static final String STORAGE_POLICY_PROPERTY = HStore.BLOCK_STORAGE_POLICY_KEY;<a name="line.175"></a>
-<span class="sourceLineNo">176</span>  public static final String STORAGE_POLICY_PROPERTY_CF_PREFIX = STORAGE_POLICY_PROPERTY + ".";<a name="line.176"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.util.BloomFilterUtil;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.util.MapReduceExtendedCell;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hadoop.io.NullWritable;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hadoop.io.SequenceFile;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hadoop.io.Text;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hadoop.mapreduce.Job;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hadoop.mapreduce.OutputCommitter;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hadoop.mapreduce.OutputFormat;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.hadoop.mapreduce.RecordWriter;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.hadoop.mapreduce.TaskAttemptContext;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.hadoop.mapreduce.lib.output.FileOutputCommitter;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import org.apache.hadoop.mapreduce.lib.partition.TotalOrderPartitioner;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import org.slf4j.Logger;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import org.slf4j.LoggerFactory;<a name="line.94"></a>
+<span class="sourceLineNo">095</span><a name="line.95"></a>
+<span class="sourceLineNo">096</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<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> * Writes HFiles. Passed Cells must arrive in order.<a name="line.99"></a>
+<span class="sourceLineNo">100</span> * Writes current time as the sequence id for the file. Sets the major compacted<a name="line.100"></a>
+<span class="sourceLineNo">101</span> * attribute on created @{link {@link HFile}s. Calling write(null,null) will forcibly roll<a name="line.101"></a>
+<span class="sourceLineNo">102</span> * all HFiles being written.<a name="line.102"></a>
+<span class="sourceLineNo">103</span> * &lt;p&gt;<a name="line.103"></a>
+<span class="sourceLineNo">104</span> * Using this class as part of a MapReduce job is best done<a name="line.104"></a>
+<span class="sourceLineNo">105</span> * using {@link #configureIncrementalLoad(Job, TableDescriptor, RegionLocator)}.<a name="line.105"></a>
+<span class="sourceLineNo">106</span> */<a name="line.106"></a>
+<span class="sourceLineNo">107</span>@InterfaceAudience.Public<a name="line.107"></a>
+<span class="sourceLineNo">108</span>public class HFileOutputFormat2<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    extends FileOutputFormat&lt;ImmutableBytesWritable, Cell&gt; {<a name="line.109"></a>
+<span class="sourceLineNo">110</span>  private static final Logger LOG = LoggerFactory.getLogger(HFileOutputFormat2.class);<a name="line.110"></a>
+<span class="sourceLineNo">111</span>  static class TableInfo {<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    private TableDescriptor tableDesctiptor;<a name="line.112"></a>
+<span class="sourceLineNo">113</span>    private RegionLocator regionLocator;<a name="line.113"></a>
+<span class="sourceLineNo">114</span><a name="line.114"></a>
+<span class="sourceLineNo">115</span>    public TableInfo(TableDescriptor tableDesctiptor, RegionLocator regionLocator) {<a name="line.115"></a>
+<span class="sourceLineNo">116</span>      this.tableDesctiptor = tableDesctiptor;<a name="line.116"></a>
+<span class="sourceLineNo">117</span>      this.regionLocator = regionLocator;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    }<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>     * The modification for the returned HTD doesn't affect the inner TD.<a name="line.121"></a>
+<span class="sourceLineNo">122</span>     * @return A clone of inner table descriptor<a name="line.122"></a>
+<span class="sourceLineNo">123</span>     * @deprecated use {@link #getTableDescriptor}<a name="line.123"></a>
+<span class="sourceLineNo">124</span>     */<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    @Deprecated<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    public HTableDescriptor getHTableDescriptor() {<a name="line.126"></a>
+<span class="sourceLineNo">127</span>      return new HTableDescriptor(tableDesctiptor);<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    }<a name="line.128"></a>
+<span class="sourceLineNo">129</span><a name="line.129"></a>
+<span class="sourceLineNo">130</span>    public TableDescriptor getTableDescriptor() {<a name="line.130"></a>
+<span class="sourceLineNo">131</span>      return tableDesctiptor;<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    }<a name="line.132"></a>
+<span class="sourceLineNo">133</span><a name="line.133"></a>
+<span class="sourceLineNo">134</span>    public RegionLocator getRegionLocator() {<a name="line.134"></a>
+<span class="sourceLineNo">135</span>      return regionLocator;<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>  protected static final byte[] tableSeparator = Bytes.toBytes(";");<a name="line.139"></a>
+<span class="sourceLineNo">140</span><a name="line.140"></a>
+<span class="sourceLineNo">141</span>  protected static byte[] combineTableNameSuffix(byte[] tableName, byte[] suffix) {<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    return Bytes.add(tableName, tableSeparator, suffix);<a name="line.142"></a>
+<span class="sourceLineNo">143</span>  }<a name="line.143"></a>
+<span class="sourceLineNo">144</span><a name="line.144"></a>
+<span class="sourceLineNo">145</span>  // The following constants are private since these are used by<a name="line.145"></a>
+<span class="sourceLineNo">146</span>  // HFileOutputFormat2 to internally transfer data between job setup and<a name="line.146"></a>
+<span class="sourceLineNo">147</span>  // reducer run using conf.<a name="line.147"></a>
+<span class="sourceLineNo">148</span>  // These should not be changed by the client.<a name="line.148"></a>
+<span class="sourceLineNo">149</span>  static final String COMPRESSION_FAMILIES_CONF_KEY =<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      "hbase.hfileoutputformat.families.compression";<a name="line.150"></a>
+<span class="sourceLineNo">151</span>  static final String BLOOM_TYPE_FAMILIES_CONF_KEY =<a name="line.151"></a>
+<span class="sourceLineNo">152</span>      "hbase.hfileoutputformat.families.bloomtype";<a name="line.152"></a>
+<span class="sourceLineNo">153</span>  static final String BLOOM_PARAM_FAMILIES_CONF_KEY =<a name="line.153"></a>
+<span class="sourceLineNo">154</span>      "hbase.hfileoutputformat.families.bloomparam";<a name="line.154"></a>
+<span class="sourceLineNo">155</span>  static final String BLOCK_SIZE_FAMILIES_CONF_KEY =<a name="line.155"></a>
+<span class="sourceLineNo">156</span>      "hbase.mapreduce.hfileoutputformat.blocksize";<a name="line.156"></a>
+<span class="sourceLineNo">157</span>  static final String DATABLOCK_ENCODING_FAMILIES_CONF_KEY =<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      "hbase.mapreduce.hfileoutputformat.families.datablock.encoding";<a name="line.158"></a>
+<span class="sourceLineNo">159</span><a name="line.159"></a>
+<span class="sourceLineNo">160</span>  // This constant is public since the client can modify this when setting<a name="line.160"></a>
+<span class="sourceLineNo">161</span>  // up their conf object and thus refer to this symbol.<a name="line.161"></a>
+<span class="sourceLineNo">162</span>  // It is present for backwards compatibility reasons. Use it only to<a name="line.162"></a>
+<span class="sourceLineNo">163</span>  // override the auto-detection of datablock encoding.<a name="line.163"></a>
+<span class="sourceLineNo">164</span>  public static final String DATABLOCK_ENCODING_OVERRIDE_CONF_KEY =<a name="line.164"></a>
+<span class="sourceLineNo">165</span>      "hbase.mapreduce.hfileoutputformat.datablock.encoding";<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>   * Keep locality while generating HFiles for bulkload. See HBASE-12596<a name="line.168"></a>
+<span class="sourceLineNo">169</span>   */<a name="line.169"></a>
+<span class="sourceLineNo">170</span>  public static final String LOCALITY_SENSITIVE_CONF_KEY =<a name="line.170"></a>
+<span class="sourceLineNo">171</span>      "hbase.bulkload.locality.sensitive.enabled";<a name="line.171"></a>
+<span class="sourceLineNo">172</span>  private static final boolean DEFAULT_LOCALITY_SENSITIVE = true;<a name="line.172"></a>
+<span class="sourceLineNo">173</span>  static final String OUTPUT_TABLE_NAME_CONF_KEY =<a name="line.173"></a>
+<span class="sourceLineNo">174</span>      "hbase.mapreduce.hfileoutputformat.table.name";<a name="line.174"></a>
+<span class="sourceLineNo">175</span>  static final String MULTI_TABLE_HFILEOUTPUTFORMAT_CONF_KEY =<a name="line.175"></a>
+<span class="sourceLineNo">176</span>          "hbase.mapreduce.use.multi.table.hfileoutputformat";<a name="line.176"></a>
 <span class="sourceLineNo">177</span><a name="line.177"></a>
-<span class="sourceLineNo">178</span>  @Override<a name="line.178"></a>
-<span class="sourceLineNo">179</span>  public RecordWriter&lt;ImmutableBytesWritable, Cell&gt; getRecordWriter(<a name="line.179"></a>
-<span class="sourceLineNo">180</span>      final TaskAttemptContext context) throws IOException, InterruptedException {<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    return createRecordWriter(context, this.getOutputCommitter(context));<a name="line.181"></a>
-<span class="sourceLineNo">182</span>  }<a name="line.182"></a>
-<span class="sourceLineNo">183</span><a name="line.183"></a>
-<span class="sourceLineNo">184</span>  protected static byte[] getTableNameSuffixedWithFamily(byte[] tableName, byte[] family) {<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    return combineTableNameSuffix(tableName, family);<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>  static &lt;V extends Cell&gt; RecordWriter&lt;ImmutableBytesWritable, V&gt;<a name="line.188"></a>
-<span class="sourceLineNo">189</span>      createRecordWriter(final TaskAttemptContext context, final OutputCommitter committer)<a name="line.189"></a>
-<span class="sourceLineNo">190</span>          throws IOException {<a name="line.190"></a>
-<span class="sourceLineNo">191</span><a name="line.191"></a>
-<span class="sourceLineNo">192</span>    // Get the path of the temporary output file<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    final Path outputDir = ((FileOutputCommitter)committer).getWorkPath();<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    final Configuration conf = context.getConfiguration();<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    final boolean writeMultipleTables = conf.getBoolean(MULTI_TABLE_HFILEOUTPUTFORMAT_CONF_KEY, false) ;<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    final String writeTableNames = conf.get(OUTPUT_TABLE_NAME_CONF_KEY);<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    if (writeTableNames==null || writeTableNames.isEmpty()) {<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      throw new IllegalArgumentException("Configuration parameter " + OUTPUT_TABLE_NAME_CONF_KEY<a name="line.198"></a>
-<span class="sourceLineNo">199</span>              + " cannot be empty");<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    }<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    final FileSystem fs = outputDir.getFileSystem(conf);<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    // These configs. are from hbase-*.xml<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    final long maxsize = conf.getLong(HConstants.HREGION_MAX_FILESIZE,<a name="line.203"></a>
-<span class="sourceLineNo">204</span>        HConstants.DEFAULT_MAX_FILE_SIZE);<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    // Invented config.  Add to hbase-*.xml if other than default compression.<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    final String defaultCompressionStr = conf.get("hfile.compression",<a name="line.206"></a>
-<span class="sourceLineNo">207</span>        Compression.Algorithm.NONE.getName());<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    final Algorithm defaultCompression = HFileWriterImpl<a name="line.208"></a>
-<span class="sourceLineNo">209</span>        .compressionByName(defaultCompressionStr);<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    final boolean compactionExclude = conf.getBoolean(<a name="line.210"></a>
-<span class="sourceLineNo">211</span>        "hbase.mapreduce.hfileoutputformat.compaction.exclude", false);<a name="line.211"></a>
-<span class="sourceLineNo">212</span><a name="line.212"></a>
-<span class="sourceLineNo">213</span>    final Set&lt;String&gt; allTableNames = Arrays.stream(writeTableNames.split(<a name="line.213"></a>
-<span class="sourceLineNo">214</span>            Bytes.toString(tableSeparator))).collect(Collectors.toSet());<a name="line.214"></a>
+<span class="sourceLineNo">178</span>  public static final String STORAGE_POLICY_PROPERTY = HStore.BLOCK_STORAGE_POLICY_KEY;<a name="line.178"></a>
+<span class="sourceLineNo">179</span>  public static final String STORAGE_POLICY_PROPERTY_CF_PREFIX = STORAGE_POLICY_PROPERTY + ".";<a name="line.179"></a>
+<span class="sourceLineNo">180</span><a name="line.180"></a>
+<span class="sourceLineNo">181</span>  @Override<a name="line.181"></a>
+<span class="sourceLineNo">182</span>  public RecordWriter&lt;ImmutableBytesWritable, Cell&gt; getRecordWriter(<a name="line.182"></a>
+<span class="sourceLineNo">183</span>      final TaskAttemptContext context) throws IOException, InterruptedException {<a name="line.183"></a>
+<span class="sourceLineNo">184</span>    return createRecordWriter(context, this.getOutputCommitter(context));<a name="line.184"></a>
+<span class="sourceLineNo">185</span>  }<a name="line.185"></a>
+<span class="sourceLineNo">186</span><a name="line.186"></a>
+<span class="sourceLineNo">187</span>  protected static byte[] getTableNameSuffixedWithFamily(byte[] tableName, byte[] family) {<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    return combineTableNameSuffix(tableName, family);<a name="line.188"></a>
+<span class="sourceLineNo">189</span>  }<a name="line.189"></a>
+<span class="sourceLineNo">190</span><a name="line.190"></a>
+<span class="sourceLineNo">191</span>  static &lt;V extends Cell&gt; RecordWriter&lt;ImmutableBytesWritable, V&gt;<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      createRecordWriter(final TaskAttemptContext context, final OutputCommitter committer)<a name="line.192"></a>
+<span class="sourceLineNo">193</span>          throws IOException {<a name="line.193"></a>
+<span class="sourceLineNo">194</span><a name="line.194"></a>
+<span class="sourceLineNo">195</span>    // Get the path of the temporary output file<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    final Path outputDir = ((FileOutputCommitter)committer).getWorkPath();<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    final Configuration conf = context.getConfiguration();<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    final boolean writeMultipleTables = conf.getBoolean(MULTI_TABLE_HFILEOUTPUTFORMAT_CONF_KEY, false) ;<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    final String writeTableNames = conf.get(OUTPUT_TABLE_NAME_CONF_KEY);<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    if (writeTableNames==null || writeTableNames.isEmpty()) {<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      throw new IllegalArgumentException("Configuration parameter " + OUTPUT_TABLE_NAME_CONF_KEY<a name="line.201"></a>
+<span class="sourceLineNo">202</span>              + " cannot be empty");<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    }<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    final FileSystem fs = outputDir.getFileSystem(conf);<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    // These configs. are from hbase-*.xml<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    final long maxsize = conf.getLong(HConstants.HREGION_MAX_FILESIZE,<a name="line.206"></a>
+<span class="sourceLineNo">207</span>        HConstants.DEFAULT_MAX_FILE_SIZE);<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    // Invented config.  Add to hbase-*.xml if other than default compression.<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    final String defaultCompressionStr = conf.get("hfile.compression",<a name="line.209"></a>
+<span class="sourceLineNo">210</span>        Compression.Algorithm.NONE.getName());<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    final Algorithm defaultCompression = HFileWriterImpl<a name="line.211"></a>
+<span class="sourceLineNo">212</span>        .compressionByName(defaultCompressionStr);<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    final boolean compactionExclude = conf.getBoolean(<a name="line.213"></a>
+<span class="sourceLineNo">214</span>        "hbase.mapreduce.hfileoutputformat.compaction.exclude", false);<a name="line.214"></a>
 <span class="sourceLineNo">215</span><a name="line.215"></a>
-<span class="sourceLineNo">216</span>    // create a map from column family to the compression algorithm<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    final Map&lt;byte[], Algorithm&gt; compressionMap = createFamilyCompressionMap(conf);<a name="line.217"></a>
-<span class="sourceLineNo">218</span>    final Map&lt;byte[], BloomType&gt; bloomTypeMap = createFamilyBloomTypeMap(conf);<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    final Map&lt;byte[], Integer&gt; blockSizeMap = createFamilyBlockSizeMap(conf);<a name="line.219"></a>
-<span class="sourceLineNo">220</span><a name="line.220"></a>
-<span class="sourceLineNo">221</span>    String dataBlockEncodingStr = conf.get(DATABLOCK_ENCODING_OVERRIDE_CONF_KEY);<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    final Map&lt;byte[], DataBlockEncoding&gt; datablockEncodingMap<a name="line.222"></a>
-<span class="sourceLineNo">223</span>        = createFamilyDataBlockEncodingMap(conf);<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    final DataBlockEncoding overriddenEncoding;<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    if (dataBlockEncodingStr != null) {<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      overriddenEncoding = DataBlockEncoding.valueOf(dataBlockEncodingStr);<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    } else {<a name="line.227"></a>
-<span class="sourceLineNo">228</span>      overriddenEncoding = null;<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>    return new RecordWriter&lt;ImmutableBytesWritable, V&gt;() {<a name="line.231"></a>
-<span class="sourceLineNo">232</span>      // Map of families to writers and how much has been output on the writer.<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      private final Map&lt;byte[], WriterLength&gt; writers =<a name="line.233"></a>
-<span class="sourceLineNo">234</span>              new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      private byte[] previousRow = HConstants.EMPTY_BYTE_ARRAY;<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      private final long now = EnvironmentEdgeManager.currentTime();<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      private boolean rollRequested = false;<a name="line.237"></a>
-<span class="sourceLineNo">238</span><a name="line.238"></a>
-<span class="sourceLineNo">239</span>      @Override<a name="line.239"></a>
-<span class="sourceLineNo">240</span>      public void write(ImmutableBytesWritable row, V cell)<a name="line.240"></a>
-<span class="sourceLineNo">241</span>          throws IOException {<a name="line.241"></a>
-<span class="sourceLineNo">242</span>        Cell kv = cell;<a name="line.242"></a>
-<span class="sourceLineNo">243</span>        // null input == user explicitly wants to flush<a name="line.243"></a>
-<span class="sourceLineNo">244</span>        if (row == null &amp;&amp; kv == null) {<a name="line.244"></a>
-<span class="sourceLineNo">245</span>          rollWriters(null);<a name="line.245"></a>
-<span class="sourceLineNo">246</span>          return;<a name="line.246"></a>
-<span class="sourceLineNo">247</span>        }<a name="line.247"></a>
-<span class="sourceLineNo">248</span><a name="line.248"></a>
-<span class="sourceLineNo">249</span>        byte[] rowKey = CellUtil.cloneRow(kv);<a name="line.249"></a>
-<span class="sourceLineNo">250</span>        int length = (PrivateCellUtil.estimatedSerializedSizeOf(kv)) - Bytes.SIZEOF_INT;<a name="line.250"></a>
-<span class="sourceLineNo">251</span>        byte[] family = CellUtil.cloneFamily(kv);<a name="line.251"></a>
-<span class="sourceLineNo">252</span>        byte[] tableNameBytes = null;<a name="line.252"></a>
-<span class="sourceLineNo">253</span>        if (writeMultipleTables) {<a name="line.253"></a>
-<span class="sourceLineNo">254</span>          tableNameBytes = MultiTableHFileOutputFormat.getTableName(row.get());<a name="line.254"></a>
-<span class="sourceLineNo">255</span>          tableNameBytes =<a name="line.255"></a>
-<span class="sourceLineNo">256</span>              TableName.valueOf(tableNameBytes).getNameWithNamespaceInclAsString()<a name="line.256"></a>
-<span class="sourceLineNo">257</span>              .getBytes(Charset.defaultCharset());<a name="line.257"></a>
-<span class="sourceLineNo">258</span>          if (!allTableNames.contains(Bytes.toString(tableNameBytes))) {<a name="line.258"></a>
-<span class="sourceLineNo">259</span>            throw new IllegalArgumentException("TableName '" + Bytes.toString(tableNameBytes) +<a name="line.259"></a>
-<span class="sourceLineNo">260</span>                    "' not" + " expected");<a name="line.260"></a>
-<span class="sourceLineNo">261</span>          }<a name="line.261"></a>
-<span class="sourceLineNo">262</span>        } else {<a name="line.262"></a>
-<span class="sourceLineNo">263</span>          tableNameBytes = Bytes.toBytes(writeTableNames);<a name="line.263"></a>
-<span class="sourceLineNo">264</span>        }<a name="line.264"></a>
-<span class="sourceLineNo">265</span>        String tableName = Bytes.toString(tableNameBytes);<a name="line.265"></a>
-<span class="sourceLineNo">266</span>        Path tableRelPath = getTableRelativePath(tableNameBytes);<a name="line.266"></a>
-<span class="sourceLineNo">267</span>        byte[] tableAndFamily = getTableNameSuffixedWithFamily(tableNameBytes, family);<a name="line.267"></a>
-<span class="sourceLineNo">268</span><a name="line.268"></a>
-<span class="sourceLineNo">269</span>        WriterLength wl = this.writers.get(tableAndFamily);<a name="line.269"></a>
-<span class="sourceLineNo">270</span><a name="line.270"></a>
-<span class="sourceLineNo">271</span>        // If this is a new column family, verify that the directory exists<a name="line.271"></a>
-<span class="sourceLineNo">272</span>        if (wl == null) {<a name="line.272"></a>
-<span class="sourceLineNo">273</span>          Path writerPath = null;<a name="line.273"></a>
-<span class="sourceLineNo">274</span>          if (writeMultipleTables) {<a name="line.274"></a>
-<span class="sourceLineNo">275</span>            writerPath = new Path(outputDir,new Path(tableRelPath, Bytes<a name="line.275"></a>
-<span class="sourceLineNo">276</span>                    .toString(family)));<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>          else {<a name="line.279"></a>
-<span class="sourceLineNo">280</span>            writerPath = new Path(outputDir, Bytes.toString(family));<a name="line.280"></a>
-<span class="sourceLineNo">281</span>          }<a name="line.281"></a>
-<span class="sourceLineNo">282</span>          fs.mkdirs(writerPath);<a name="line.282"></a>
-<span class="sourceLineNo">283</span>          configureStoragePolicy(conf, fs, tableAndFamily, writerPath);<a name="line.283"></a>
-<span class="sourceLineNo">284</span>        }<a name="line.284"></a>
-<span class="sourceLineNo">285</span><a name="line.285"></a>
-<span class="sourceLineNo">286</span>        if (wl != null &amp;&amp; wl.written + length &gt;= maxsize) {<a name="line.286"></a>
-<span class="sourceLineNo">287</span>          this.rollRequested = true;<a name="line.287"></a>
+<span class="sourceLineNo">216</span>    final Set&lt;String&gt; allTableNames = Arrays.stream(writeTableNames.split(<a name="line.216"></a>
+<span class="sourceLineNo">217</span>            Bytes.toString(tableSeparator))).collect(Collectors.toSet());<a name="line.217"></a>
+<span class="sourceLineNo">218</span><a name="line.218"></a>
+<span class="sourceLineNo">219</span>    // create a map from column family to the compression algorithm<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    final Map&lt;byte[], Algorithm&gt; compressionMap = createFamilyCompressionMap(conf);<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    final Map&lt;byte[], BloomType&gt; bloomTypeMap = createFamilyBloomTypeMap(conf);<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    final Map&lt;byte[], String&gt; bloomParamMap = createFamilyBloomParamMap(conf);<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    final Map&lt;byte[], Integer&gt; blockSizeMap = createFamilyBlockSizeMap(conf);<a name="line.223"></a>
+<span class="sourceLineNo">224</span><a name="line.224"></a>
+<span class="sourceLineNo">225</span>    String dataBlockEncodingStr = conf.get(DATABLOCK_ENCODING_OVERRIDE_CONF_KEY);<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    final Map&lt;byte[], DataBlockEncoding&gt; datablockEncodingMap<a name="line.226"></a>
+<span class="sourceLineNo">227</span>        = createFamilyDataBlockEncodingMap(conf);<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    final DataBlockEncoding overriddenEncoding;<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    if (dataBlockEncodingStr != null) {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>      overriddenEncoding = DataBlockEncoding.valueOf(dataBlockEncodingStr);<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    } else {<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      overriddenEncoding = null;<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    }<a name="line.233"></a>
+<span class="sourceLineNo">234</span><a name="line.234"></a>
+<span class="sourceLineNo">235</span>    return new RecordWriter&lt;ImmutableBytesWritable, V&gt;() {<a name="line.235"></a>
+<span class="sourceLineNo">236</span>      // Map of families to writers and how much has been output on the writer.<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      private final Map&lt;byte[], WriterLength&gt; writers =<a name="line.237"></a>
+<span class="sourceLineNo">238</span>              new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.238"></a>
+<span class="sourceLineNo">239</span>      private byte[] previousRow = HConstants.EMPTY_BYTE_ARRAY;<a name="line.239"></a>
+<span class="sourceLineNo">240</span>      private final long now = EnvironmentEdgeManager.currentTime();<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      private boolean rollRequested = false;<a name="line.241"></a>
+<span class="sourceLineNo">242</span><a name="line.242"></a>
+<span class="sourceLineNo">243</span>      @Override<a name="line.243"></a>
+<span class="sourceLineNo">244</span>      public void write(ImmutableBytesWritable row, V cell)<a name="line.244"></a>
+<span class="sourceLineNo">245</span>          throws IOException {<a name="line.245"></a>
+<span class="sourceLineNo">246</span>        Cell kv = cell;<a name="line.246"></a>
+<span class="sourceLineNo">247</span>        // null input == user explicitly wants to flush<a name="line.247"></a>
+<span class="sourceLineNo">248</span>        if (row == null &amp;&amp; kv == null) {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>          rollWriters(null);<a name="line.249"></a>
+<span class="sourceLineNo">250</span>          return;<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>
+<span class="sourceLineNo">253</span>        byte[] rowKey = CellUtil.cloneRow(kv);<a name="line.253"></a>
+<span class="sourceLineNo">254</span>        int length = (PrivateCellUtil.estimatedSerializedSizeOf(kv)) - Bytes.SIZEOF_INT;<a name="line.254"></a>
+<span class="sourceLineNo">255</span>        byte[] family = CellUtil.cloneFamily(kv);<a name="line.255"></a>
+<span class="sourceLineNo">256</span>        byte[] tableNameBytes = null;<a name="line.256"></a>
+<span class="sourceLineNo">257</span>        if (writeMultipleTables) {<a name="line.257"></a>
+<span class="sourceLineNo">258</span>          tableNameBytes = MultiTableHFileOutputFormat.getTableName(row.get());<a name="line.258"></a>
+<span class="sourceLineNo">259</span>          tableNameBytes =<a name="line.259"></a>
+<span class="sourceLineNo">260</span>              TableName.valueOf(tableNameBytes).getNameWithNamespaceInclAsString()<a name="line.260"></a>
+<span class="sourceLineNo">261</span>              .getBytes(Charset.defaultCharset());<a name="line.261"></a>
+<span class="sourceLineNo">262</span>          if (!allTableNames.contains(Bytes.toString(tableNameBytes))) {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>            throw new IllegalArgumentException("TableName '" + Bytes.toString(tableNameBytes) +<a name="line.263"></a>
+<span class="sourceLineNo">264</span>                    "' not" + " expected");<a name="line.264"></a>
+<span class="sourceLineNo">265</span>          }<a name="line.265"></a>
+<span class="sourceLineNo">266</span>        } else {<a name="line.266"></a>
+<span class="sourceLineNo">267</span>          tableNameBytes = Bytes.toBytes(writeTableNames);<a name="line.267"></a>
+<span class="sourceLineNo">268</span>        }<a name="line.268"></a>
+<span class="sourceLineNo">269</span>        String tableName = Bytes.toString(tableNameBytes);<a name="line.269"></a>
+<span class="sourceLineNo">270</span>        Path tableRelPath = getTableRelativePath(tableNameBytes);<a name="line.270"></a>
+<span class="sourceLineNo">271</span>        byte[] tableAndFamily = getTableNameSuffixedWithFamily(tableNameBytes, family);<a name="line.271"></a>
+<span class="sourceLineNo">272</span><a name="line.272"></a>
+<span class="sourceLineNo">273</span>        WriterLength wl = this.writers.get(tableAndFamily);<a name="line.273"></a>
+<span class="sourceLineNo">274</span><a name="line.274"></a>
+<span class="sourceLineNo">275</span>        // If this is a new column family, verify that the directory exists<a name="line.275"></a>
+<span class="sourceLineNo">276</span>        if (wl == null) {<a name="line.276"></a>
+<span class="sourceLineNo">277</span>          Path writerPath = null;<a name="line.277"></a>
+<span class="sourceLineNo">278</span>          if (writeMultipleTables) {<a name="line.278"></a>
+<span class="sourceLineNo">279</span>            writerPath = new Path(outputDir,new Path(tableRelPath, Bytes<a name="line.279"></a>
+<span class="sourceLineNo">280</span>                    .toString(family)));<a name="line.280"></a>
+<span class="sourceLineNo">281</span><a name="line.281"></a>
+<span class="sourceLineNo">282</span>          }<a name="line.282"></a>
+<span class="sourceLineNo">283</span>          else {<a name="line.283"></a>
+<span class="sourceLineNo">284</span>            writerPath = new Path(outputDir, Bytes.toString(family));<a name="line.284"></a>
+<span class="sourceLineNo">285</span>          }<a name="line.285"></a>
+<span class="sourceLineNo">286</span>          fs.mkdirs(writerPath);<a name="line.286"></a>
+<span class="sourceLineNo">287</span>          configureStoragePolicy(conf, fs, tableAndFamily, writerPath);<a name="line.287"></a>
 <span class="sourceLineNo">288</span>        }<a name="line.288"></a>
 <span class="sourceLineNo">289</span><a name="line.289"></a>
-<span class="sourceLineNo">290</span>        // This can only happen once a row is finished though<a name="line.290"></a>
-<span class="sourceLineNo">291</span>        if (rollRequested &amp;&amp; Bytes.compareTo(this.previousRow, rowKey) != 0) {<a name="line.291"></a>
-<span class="sourceLineNo">292</span>          rollWriters(wl);<a name="line.292"></a>
-<span class="sourceLineNo">293</span>        }<a name="line.293"></a>
-<span class="sourceLineNo">294</span><a name="line.294"></a>
-<span class="sourceLineNo">295</span>        // create a new WAL writer, if necessary<a name="line.295"></a>
-<span class="sourceLineNo">296</span>        if (wl == null || wl.writer == null) {<a name="line.296"></a>
-<span class="sourceLineNo">297</span>          if (conf.getBoolean(LOCALITY_SENSITIVE_CONF_KEY, DEFAULT_LOCALITY_SENSITIVE)) {<a name="line.297"></a>
-<span class="sourceLineNo">298</span>            HRegionLocation loc = null;<a name="line.298"></a>
-<span class="sourceLineNo">299</span><a name="line.299"></a>
-<span class="sourceLineNo">300</span>            if (tableName != null) {<a name="line.300"></a>
-<span class="sourceLineNo">301</span>              try (Connection connection = ConnectionFactory.createConnection(conf);<a name="line.301"></a>
-<span class="sourceLineNo">302</span>                     RegionLocator locator =<a name="line.302"></a>
-<span class="sourceLineNo">303</span>                       connection.getRegionLocator(TableName.valueOf(tableName))) {<a name="line.303"></a>
-<span class="sourceLineNo">304</span>                loc = locator.getRegionLocation(rowKey);<a name="line.304"></a>
-<span class="sourceLineNo">305</span>              } catch (Throwable e) {<a name="line.305"></a>
-<span class="sourceLineNo">306</span>                LOG.warn("There's something wrong when locating rowkey: " +<a name="line.306"></a>
-<span class="sourceLineNo">307</span>                  Bytes.toString(rowKey) + " for tablename: " + tableName, e);<a name="line.307"></a>
-<span class="sourceLineNo">308</span>                loc = null;<a name="line.308"></a>
-<span class="sourceLineNo">309</span>              } }<a name="line.309"></a>
-<span class="sourceLineNo">310</span><a name="line.310"></a>
-<span class="sourceLineNo">311</span>            if (null == loc) {<a name="line.311"></a>
-<span class="sourceLineNo">312</span>              if (LOG.isTraceEnabled()) {<a name="line.312"></a>
-<span class="sourceLineNo">313</span>                LOG.trace("failed to get region location, so use default writer for rowkey: " +<a name="line.313"></a>
-<span class="sourceLineNo">314</span>                  Bytes.toString(rowKey));<a name="line.314"></a>
-<span class="sourceLineNo">315</span>              }<a name="line.315"></a>
-<span class="sourceLineNo">316</span>              wl = getNewWriter(tableNameBytes, family, conf, null);<a name="line.316"></a>
-<span class="sourceLineNo">317</span>            } else {<a name="line.317"></a>
-<span class="sourceLineNo">318</span>              if (LOG.isDebugEnabled()) {<a name="line.318"></a>
-<span class="sourceLineNo">319</span>                LOG.debug("first rowkey: [" + Bytes.toString(rowKey) + "]");<a name="line.319"></a>
-<span class="sourceLineNo">320</span>              }<a name="line.320"></a>
-<span class="sourceLineNo">321</span>              InetSocketAddress initialIsa =<a name="line.321"></a>
-<span class="sourceLineNo">322</span>                  new InetSocketAddress(loc.getHostname(), loc.getPort());<a name="line.322"></a>
-<span class="sourceLineNo">323</span>              if (initialIsa.isUnresolved()) {<a name="line.323"></a>
-<span class="sourceLineNo">324</span>                if (LOG.isTraceEnabled()) {<a name="line.324"></a>
-<span class="sourceLineNo">325</span>                  LOG.trace("failed to resolve bind address: " + loc.getHostname() + ":"<a name="line.325"></a>
-<span class="sourceLineNo">326</span>                      + loc.getPort() + ", so use default writer");<a name="line.326"></a>
-<span class="sourceLineNo">327</span>                }<a name="line.327"></a>
-<span class="sourceLineNo">328</span>                wl = getNewWriter(tableNameBytes, family, conf, null);<a name="line.328"></a>
-<span class="sourceLineNo">329</span>              } else {<a name="line.329"></a>
-<span class="sourceLineNo">330</span>                if (LOG.isDebugEnabled()) {<a name="line.330"></a>
-<span class="sourceLineNo">331</span>                  LOG.debug("use favored nodes writer: " + initialIsa.getHostString());<a name="line.331"></a>
-<span class="sourceLineNo">332</span>                }<a name="line.332"></a>
-<span class="sourceLineNo">333</span>                wl = getNewWriter(tableNameBytes, family, conf, new InetSocketAddress[] { initialIsa<a name="line.333"></a>
-<span class="sourceLineNo">334</span>                });<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>          } else {<a name="line.337"></a>
-<span class="sourceLineNo">338</span>            wl = getNewWriter(tableNameBytes, family, conf, null);<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>        // we now have the proper WAL writer. full steam ahead<a name="line.342"></a>
-<span class="sourceLineNo">343</span>        PrivateCellUtil.updateLatestStamp(cell, this.now);<a name="line.343"></a>
-<span class="sourceLineNo">344</span>        wl.writer.append(kv);<a name="line.344"></a>
-<span class="sourceLineNo">345</span>        wl.written += length;<a name="line.345"></a>
-<span class="sourceLineNo">346</span><a name="line.346"></a>
-<span class="sourceLineNo">347</span>        // Copy the row so we know when a row transition.<a name="line.347"></a>
-<span class="sourceLineNo">348</span>        this.previousRow = rowKey;<a name="line.348"></a>
-<span class="sourceLineNo">349</span>      }<a name="line.349"></a>
+<span class="sourceLineNo">290</span>        if (wl != null &amp;&amp; wl.written + length &gt;= maxsize) {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>          this.rollRequested = true;<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>        // This can only happen once a row is finished though<a name="line.294"></a>
+<span class="sourceLineNo">295</span>        if (rollRequested &amp;&amp; Bytes.compareTo(this.previousRow, rowKey) != 0) {<a name="line.295"></a>
+<span class="sourceLineNo">296</span>          rollWriters(wl);<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>        // create a new WAL writer, if necessary<a name="line.299"></a>
+<span class="sourceLineNo">300</span>        if (wl == null || wl.writer == null) {<a name="line.300"></a>
+<span class="sourceLineNo">301</span>          if (conf.getBoolean(LOCALITY_SENSITIVE_CONF_KEY, DEFAULT_LOCALITY_SENSITIVE)) {<a name="line.301"></a>
+<span class="sourceLineNo">302</span>            HRegionLocation loc = null;<a name="line.302"></a>
+<span class="sourceLineNo">303</span><a name="line.303"></a>
+<span class="sourceLineNo">304</span>            if (tableName != null) {<a name="line.304"></a>
+<span class="sourceLineNo">305</span>              try (Connection connection = ConnectionFactory.createConnection(conf);<a name="line.305"></a>
+<span class="sourceLineNo">306</span>                     RegionLocator locator =<a name="line.306"></a>
+<span class="sourceLineNo">307</span>                       connection.getRegionLocator(TableName.valueOf(tableName))) {<a name="line.307"></a>
+<span class="sourceLineNo">308</span>                loc = locator.getRegionLocation(rowKey);<a name="line.308"></a>
+<span class="sourceLineNo">309</span>              } catch (Throwable e) {<a name="line.309"></a>
+<span class="sourceLineNo">310</span>                LOG.warn("There's something wrong when locating rowkey: " +<a name="line.310"></a>
+<span class="sourceLineNo">311</span>                  Bytes.toString(rowKey) + " for tablename: " + tableName, e);<a name="line.311"></a>
+<span class="sourceLineNo">312</span>                loc = null;<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>            if (null == loc) {<a name="line.315"></a>
+<span class="sourceLineNo">316</span>              if (LOG.isTraceEnabled()) {<a name="line.316"></a>
+<span class="sourceLineNo">317</span>                LOG.trace("failed to get region location, so use default writer for rowkey: " +<a name="line.317"></a>
+<span class="sourceLineNo">318</span>                  Bytes.toString(rowKey));<a name="line.318"></a>
+<span class="sourceLineNo">319</span>              }<a name="line.319"></a>
+<span class="sourceLineNo">320</span>              wl = getNewWriter(tableNameBytes, family, conf, null);<a name="line.320"></a>
+<span class="sourceLineNo">321</span>            } else {<a name="line.321"></a>
+<span class="sourceLineNo">322</span>              if (LOG.isDebugEnabled()) {<a name="line.322"></a>
+<span class="sourceLineNo">323</span>                LOG.debug("first rowkey: [" + Bytes.toString(rowKey) + "]");<a name="line.323"></a>
+<span class="sourceLineNo">324</span>              }<a name="line.324"></a>
+<span class="sourceLineNo">325</span>              InetSocketAddress initialIsa =<a name="line.325"></a>
+<span class="sourceLineNo">326</span>                  new InetSocketAddress(loc.getHostname(), loc.getPort());<a name="line.326"></a>
+<span class="sourceLineNo">327</span>              if (initialIsa.isUnresolved()) {<a name="line.327"></a>
+<span class="sourceLineNo">328</span>                if (LOG.isTraceEnabled()) {<a name="line.328"></a>
+<span class="sourceLineNo">329</span>                  LOG.trace("failed to resolve bind address: " + loc.getHostname() + ":"<a name="line.329"></a>
+<span class="sourceLineNo">330</span>                      + loc.getPort() + ", so use default writer");<a name="line.330"></a>
+<span class="sourceLineNo">331</span>                }<a name="line.331"></a>
+<span class="sourceLineNo">332</span>                wl = getNewWriter(tableNameBytes, family, conf, null);<a name="line.332"></a>
+<span class="sourceLineNo">333</span>              } else {<a name="line.333"></a>
+<span class="sourceLineNo">334</span>                if (LOG.isDebugEnabled()) {<a name="line.334"></a>
+<span class="sourceLineNo">335</span>                  LOG.debug("use favored nodes writer: " + initialIsa.getHostString());<a name="line.335"></a>
+<span class="sourceLineNo">336</span>                }<a name="line.336"></a>
+<span class="sourceLineNo">337</span>                wl = getNewWriter(tableNameBytes, family, conf, new InetSocketAddress[] { initialIsa<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>          } else {<a name="line.341"></a>
+<span class="sourceLineNo">342</span>            wl = getNewWriter(tableNameBytes, family, conf, null);<a name="line.342"></a>
+<span class="sourceLineNo">343</span>          }<a name="line.343"></a>
+<span class="sourceLineNo">344</span>        }<a name="line.344"></a>
+<span class="sourceLineNo">345</span><a name="line.345"></a>
+<span class="sourceLineNo">346</span>        // we now have the proper WAL writer. full steam ahead<a name="line.346"></a>
+<span class="sourceLineNo">347</span>        PrivateCellUtil.updateLatestStamp(cell, this.now);<a name="line.347"></a>
+<span class="sourceLineNo">348</span>        wl.writer.append(kv);<a name="line.348"></a>
+<span class="sourceLineNo">349</span>        wl.written += length;<a name="line.349"></a>
 <span class="sourceLineNo">350</span><a name="line.350"></a>
-<span class="sourceLineNo">351</span>      private Path getTableRelativePath(byte[] tableNameBytes) {<a name="line.351"></a>
-<span class="sourceLineNo">352</span>        String tableName = Bytes.toString(tableNameBytes);<a name="line.352"></a>
-<span class="sourceLineNo">353</span>        String[] tableNameParts = tableName.split(":");<a name="line.353"></a>
-<span class="sourceLineNo">354</span>        Path tableRelPath = new Path(tableName.split(":")[0]);<a name="line.354"></a>
-<span class="sourceLineNo">355</span>        if (tableNameParts.length &gt; 1) {<a name="line.355"></a>
-<span class="sourceLineNo">356</span>          tableRelPath = new Path(tableRelPath, tableName.split(":")[1]);<a name="line.356"></a>
-<span class="sourceLineNo">357</span>        }<a name="line.357"></a>
-<span class="sourceLineNo">358</span>        return tableRelPath;<a name="line.358"></a>
-<span class="sourceLineNo">359</span>      }<a name="line.359"></a>
-<span class="sourceLineNo">360</span>      private void rollWriters(WriterLength writerLength) throws IOException {<a name="line.360"></a>
-<span class="sourceLineNo">361</span>        if (writerLength != null) {<a name="line.361"></a>
-<span class="sourceLineNo">362</span>          closeWriter(writerLength);<a name="line.362"></a>
-<span class="sourceLineNo">363</span>        } else {<a name="line.363"></a>
-<span class="sourceLineNo">364</span>          for (WriterLength wl : this.writers.values()) {<a name="line.364"></a>
-<span class="sourceLineNo">365</span>            closeWriter(wl);<a name="line.365"></a>
-<span class="sourceLineNo">366</span>          }<a name="line.366"></a>
-<span class="sourceLineNo">367</span>        }<a name="line.367"></a>
-<span class="sourceLineNo">368</span>        this.rollRequested = false;<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>      private void closeWriter(WriterLength wl) throws IOException {<a name="line.371"></a>
-<span class="sourceLineNo">372</span>        if (wl.writer != null) {<a name="line.372"></a>
-<span class="sourceLineNo">373</span>          LOG.info(<a name="line.373"></a>
-<span class="sourceLineNo">374</span>              "Writer=" + wl.writer.getPath() + ((wl.written == 0)? "": ", wrote=" + wl.written));<a name="line.374"></a>
-<span class="sourceLineNo">375</span>          close(wl.writer);<a name="line.375"></a>
-<span class="sourceLineNo">376</span>        }<a name="line.376"></a>
-<span class="sourceLineNo">377</span>        wl.writer = null;<a name="line.377"></a>
-<span class="sourceLineNo">378</span>        wl.written = 0;<a name="line.378"></a>
-<span class="sourceLineNo">379</span>      }<a name="line.379"></a>
-<span class="sourceLineNo">380</span><a name="line.380"></a>
-<span class="sourceLineNo">381</span>      /*<a name="line.381"></a>
-<span class="sourceLineNo">382</span>       * Create a new StoreFile.Writer.<a name="line.382"></a>
-<span class="sourceLineNo">383</span>       * @param family<a name="line.383"></a>
-<span class="sourceLineNo">384</span>       * @return A WriterLength, containing a new StoreFile.Writer.<a name="line.384"></a>
-<span class="sourceLineNo">385</span>       * @throws IOException<a name="line.385"></a>
-<span class="sourceLineNo">386</span>       */<a name="line.386"></a>
-<span class="sourceLineNo">387</span>      @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="BX_UNBOXING_IMMEDIATELY_REBOXED",<a name="line.387"></a>
-<span class="sourceLineNo">388</span>          justification="Not important")<a name="line.388"></a>
-<span class="sourceLineNo">389</span>      private WriterLength getNewWriter(byte[] tableName, byte[] family, Configuration<a name="line.389"></a>
-<span class="sourceLineNo">390</span>              conf, InetSocketAddress[] favoredNodes) throws IOException {<a name="line.390"></a>
-<span class="sourceLineNo">391</span>        byte[] tableAndFamily = getTableNameSuffixedWithFamily(tableName, family);<a name="line.391"></a>
-<span class="sourceLineNo">392</span>        Path familydir = new Path(outputDir, Bytes.toString(family));<a name="line.392"></a>
-<span class="sourceLineNo">393</span>        if (writeMultipleTables) {<a name="line.393"></a>
-<span class="sourceLineNo">394</span>          familydir = new Path(outputDir,<a name="line.394"></a>
-<span class="sourceLineNo">395</span>                  new Path(getTableRelativePath(tableName), Bytes.toString(family)));<a name="line.395"></a>
-<span class="sourceLineNo">396</span>        }<a name="line.396"></a>
-<span class="sourceLineNo">397</span>        WriterLength wl = new WriterLength();<a name="line.397"></a>
-<span class="sourceLineNo">398</span>        Algorithm compression = compressionMap.get(tableAndFamily);<a name="line.398"></a>
-<span class="sourceLineNo">399</span>        compression = compression == null ? defaultCompression : compression;<a name="line.399"></a>
-<span class="sourceLineNo">400</span>        BloomType bloomType = bloomTypeMap.get(tableAndFamily);<a name="line.400"></a>
-<span class="sourceLineNo">401</span>        bloomType = bloomType == null ? BloomType.NONE : bloomType;<a name="line.401"></a>
-<span class="sourceLineNo">402</span>        Integer blockSize = blockSizeMap.get(tableAndFamily);<a name="line.402"></a>
-<span class="sourceLineNo">403</span>        blockSize = blockSize == null ? HConstants.DEFAULT_BLOCKSIZE : blockSize;<a name="line.403"></a>
-<span class="sourceLineNo">404</span>        DataBlockEncoding encoding = overriddenEncoding;<a name="line.404"></a>
-<span class="sourceLineNo">405</span>        encoding = encoding == null ? datablockEncodingMap.get(tableAndFamily) : encoding;<a name="line.405"></a>
-<span class="sourceLineNo">406</span>        encoding = encoding == null ? DataBlockEncoding.NONE : encoding;<a name="line.406"></a>
-<span class="sourceLineNo">407</span>        Configuration tempConf = new Configuration(conf);<a name="line.407"></a>
-<span class="sourceLineNo">408</span>        tempConf.setFloat(HConstants.HFILE_BLOCK_CACHE_SIZE_KEY, 0.0f);<a name="line.408"></a>
-<span class="sourceLineNo">409</span>        HFileContextBuilder contextBuilder = new HFileContextBuilder()<a name="line.409"></a>
-<span class="sourceLineNo">410</span>                                    .withCompression(compression)<a name="line.410"></a>
-<span class="sourceLineNo">411</span>                                    .withChecksumType(HStore.getChecksumType(conf))<a name="line.411"></a>
-<span class="sourceLineNo">412</span>                                    .withBytesPerCheckSum(HStore.getBytesPerChecksum(conf))<a name="line.412"></a>
-<span class="sourceLineNo">413</span>                                    .withBlockSize(blockSize);<a name="line.413"></a>
-<span class="sourceLineNo">414</span><a name="line.414"></a>
-<span class="sourceLineNo">415</span>        if (HFile.getFormatVersion(conf) &gt;= HFile.MIN_FORMAT_VERSION_WITH_TAGS) {<a name="line.415"></a>
-<span class="sourceLineNo">416</span>          contextBuilder.withIncludesTags(true);<a name="line.416"></a>
-<span class="sourceLineNo">417</span>        }<a name="line.417"></a>
-<span class="sourceLineNo">418</span><a name="line.418"></a>
-<span class="sourceLineNo">419</span>        contextBuilder.withDataBlockEncoding(encoding);<a name="line.419"></a>
-<span class="sourceLineNo">420</span>        HFileContext hFileContext = contextBuilder.build();<a name="line.420"></a>
-<span class="sourceLineNo">421</span>        if (null == favoredNodes) {<a name="line.421"></a>
-<span class="sourceLineNo">422</span>          wl.writer =<a name="line.422"></a>
-<span class="sourceLineNo">423</span>              new StoreFileWriter.Builder(conf, new CacheConfig(tempConf), fs)<a name="line.423"></a>
-<span class="sourceLineNo">424</span>                  .withOutputDir(familydir).withBloomType(bloomType)<a name="line.424"></a>
-<span class="sourceLineNo">425</span>                  .withComparator(CellComparator.getInstance()).withFileContext(hFileContext).build();<a name="line.425"></a>
-<span class="sourceLineNo">426</span>        } else {<a name="line.426"></a>
-<span class="sourceLineNo">427</span>          wl.writer =<a name="line.427"></a>
-<span class="sourceLineNo">428</span>              new StoreFileWriter.Builder(conf, new CacheConfig(tempConf), new HFileSystem(fs))<a name="line.428"></a>
-<span class="sourceLineNo">429</span>                  .withOutputDir(familydir).withBloomType(bloomType)<a name="line.429"></a>
-<span class="sourceLineNo">430</span>                  .withComparator(CellComparator.getInstance()).withFileContext(hFileContext)<a name="line.430"></a>
-<span class="sourceLineNo">431</span>                  .withFavoredNodes(favoredNodes).build();<a name="line.431"></a>
-<span class="sourceLineNo">432</span>        }<a name="line.432"></a>
-<span class="sourceLineNo">433</span><a name="line.433"></a>
-<span class="sourceLineNo">434</span>        this.writers.put(tableAndFamily, wl);<a name="line.434"></a>
-<span class="sourceLineNo">435</span>        return wl;<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>      private void close(final StoreFileWriter w) throws IOException {<a name="line.438"></a>
-<span class="sourceLineNo">439</span>        if (w != null) {<a name="line.439"></a>
-<span class="sourceLineNo">440</span>          w.appendFileInfo(BULKLOAD_TIME_KEY,<a name="line.440"></a>
-<span class="sourceLineNo">441</span>              Bytes.toBytes(System.currentTimeMillis()));<a name="line.441"></a>
-<span class="sourceLineNo">442</span>          w.appendFileInfo(BULKLOAD_TASK_KEY,<a name="line.442"></a>
-<span class="sourceLineNo">443</span>              Bytes.toBytes(context.getTaskAttemptID().toString()));<a name="line.443"></a>
-<span class="sourceLineNo">444</span>          w.appendFileInfo(MAJOR_COMPACTION_KEY,<a name="line.444"></a>
-<span class="sourceLineNo">445</span>              Bytes.toBytes(true));<a name="line.445"></a>
-<span class="sourceLineNo">446</span>          w.appendFileInfo(EXCLUDE_FROM_MINOR_COMPACTION_KEY,<a name="line.446"></a>
-<span class="sourceLineNo">447</span>              Bytes.toBytes(compactionExclude));<a name="line.447"></a>
-<span class="sourceLineNo">448</span>          w.appendTrackedTimestampsToMetadata();<a name="line.448"></a>
-<span class="sourceLineNo">449</span>          w.close();<a name="line.449"></a>
-<span class="sourceLineNo">450</span>        }<a name="line.450"></a>
-<span class="sourceLineNo">451</span>      }<a name="line.451"></a>
-<span class="sourceLineNo">452</span><a name="line.452"></a>
-<span class="sourceLineNo">453</span>      @Override<a name="line.453"></a>
-<span class="sourceLineNo">454</span>      public void close(TaskAttemptContext c)<a name="line.454"></a>
-<span class="sourceLineNo">455</span>      throws IOException, InterruptedException {<a name="line.455"></a>
-<span class="sourceLineNo">456</span>        for (WriterLength wl: this.writers.values()) {<a name="line.456"></a>
-<span class="sourceLineNo">457</span>          close(wl.writer);<a name="line.457"></a>
-<span class="sourceLineNo">458</span>        }<a name="line.458"></a>
-<span class="sourceLineNo">459</span>      }<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">351</span>        // Copy the row so we know when a row transition.<a name="line.351"></a>
+<span class="sourceLineNo">352</span>        this.previousRow = rowKey;<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 Path getTableRelativePath(byte[] tableNameBytes) {<a name="line.355"></a>
+<span class="sourceLineNo">356</span>        String tableName = Bytes.toString(tableNameBytes);<a name="line.356"></a>
+<span class="sourceLineNo">357</span>        String[] tableNameParts = tableName.split(":");<a name="line.357"></a>
+<span class="sourceLineNo">358</span>        Path tableRelPath = new Path(tableName.split(":")[0]);<a name="line.358"></a>
+<span class="sourceLineNo">359</span>        if (tableNameParts.length &gt; 1) {<a name="line.359"></a>
+<span class="sourceLineNo">360</span>          tableRelPath = new Path(tableRelPath, tableName.split(":")[1]);<a name="line.360"></a>
+<span class="sourceLineNo">361</span>        }<a name="line.361"></a>
+<span class="sourceLineNo">362</span>        return tableRelPath;<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      }<a name="line.363"></a>
+<span class="sourceLineNo">364</span>      private void rollWriters(WriterLength writerLength) throws IOException {<a name="line.364"></a>
+<span class="sourceLineNo">365</span>        if (writerLength != null) {<a name="line.365"></a>
+<span class="sourceLineNo">366</span>          closeWriter(writerLength);<a name="line.366"></a>
+<span class="sourceLineNo">367</span>        } else {<a name="line.367"></a>
+<span class="sourceLineNo">368</span>          for (WriterLength wl : this.writers.values()) {<a name="line.368"></a>
+<span class="sourceLineNo">369</span>            closeWriter(wl);<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>        this.rollRequested = false;<a name="line.372"></a>
+<span class="sourceLineNo">373</span>      }<a name="line.373"></a>
+<span class="sourceLineNo">374</span><a name="line.374"></a>
+<span class="sourceLineNo">375</span>      private void closeWriter(WriterLength wl) throws IOException {<a name="line.375"></a>
+<span class="sourceLineNo">376</span>        if (wl.writer != null) {<a name="line.376"></a>
+<span class="sourceLineNo">377</span>          LOG.info(<a name="line.377"></a>
+<span class="sourceLineNo">378</span>              "Writer=" + wl.writer.getPath() + ((wl.written == 0)? "": ", wrote=" + wl.written));<a name="line.378"></a>
+<span class="sourceLineNo">379</span>          close(wl.writer);<a name="line.379"></a>
+<span class="sourceLineNo">380</span>        }<a name="line.380"></a>
+<span class="sourceLineNo">381</span>        wl.writer = null;<a name="line.381"></a>
+<span class="sourceLineNo">382</span>        wl.written = 0;<a name="line.382"></a>
+<span class="sourceLineNo">383</span>      }<a name="line.383"></a>
+<span class="sourceLineNo">384</span><a name="line.384"></a>
+<span class="sourceLineNo">385</span>      /*<a name="line.385"></a>
+<span class="sourceLineNo">386</span>       * Create a new StoreFile.Writer.<a name="line.386"></a>
+<span class="sourceLineNo">387</span>       * @param family<a name="line.387"></a>
+<span class="sourceLineNo">388</span>       * @return A WriterLength, containing a new StoreFile.Writer.<a name="line.388"></a>
+<span class="sourceLineNo">389</span>       * @throws IOException<a name="line.389"></a>
+<span class="sourceLineNo">390</span>       */<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="BX_UNBOXING_IMMEDIATELY_REBOXED",<a name="line.391"></a>
+<span class="sourceLineNo">392</span>          justification="Not important")<a name="line.392"></a>
+<span class="sourceLineNo">393</span>      private WriterLength getNewWriter(byte[] tableName, byte[] family, Configuration<a name="line.393"></a>
+<span class="sourceLineNo">394</span>              conf, InetSocketAddress[] favoredNodes) throws IOException {<a name="line.394"></a>
+<span class="sourceLineNo">395</span>        byte[] tableAndFamily = getTableNameSuffixedWithFamily(tableName, family);<a name="line.395"></a>
+<span class="sourceLineNo">396</span>        Path familydir = new Path(outputDir, Bytes.toString(family));<a name="line.396"></a>
+<span class="sourceLineNo">397</span>        if (writeMultipleTables) {<a name="line.397"></a>
+<span class="sourceLineNo">398</span>          familydir = new Path(outputDir,<a name="line.398"></a>
+<span class="sourceLineNo">399</span>                  new Path(getTableRelativePath(tableName), Bytes.toString(family)));<a name="line.399"></a>
+<span class="sourceLineNo">400</span>        }<a name="line.400"></a>
+<span class="sourceLineNo">401</span>        WriterLength wl = new WriterLength();<a name="line.401"></a>
+<span class="sourceLineNo">402</span>        Algorithm compression = compressionMap.get(tableAndFamily);<a name="line.402"></a>
+<span class="sourceLineNo">403</span>        compression = compression == null ? defaultCompression : compression;<a name="line.403"></a>
+<span class="sourceLineNo">404</span>        BloomType bloomType = bloomTypeMap.get(tableAndFamily);<a name="line.404"></a>
+<span class="sourceLineNo">405</span>        bloomType = bloomType == null ? BloomType.NONE : bloomType;<a name="line.405"></a>
+<span class="sourceLineNo">406</span>        String bloomParam = bloomParamMap.get(tableAndFamily);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>        if (bloomType == BloomType.ROWPREFIX_FIXED_LENGTH) {<a name="line.407"></a>
+<span class="sourceLineNo">408</span>          conf.set(BloomFilterUtil.PREFIX_LENGTH_KEY, bloomParam);<a name="line.408"></a>
+<span class="sourceLineNo">409</span>        } else if (bloomType == BloomType.ROWPREFIX_DELIMITED) {<a name="line.409"></a>
+<span class="sourceLineNo">410</span>          conf.set(BloomFilterUtil.DELIMITER_KEY, bloomParam);<a name="line.410"></a>
+<span class="sourceLineNo">411</span>        }<a name="line.411"></a>
+<span class="sourceLineNo">412</span>        Integer blockSize = blockSizeMap.get(tableAndFamily);<a name="line.412"></a>
+<span class="sourceLineNo">413</span>        blockSize = blockSize == null ? HConstants.DEFAULT_BLOCKSIZE : blockSize;<a name="line.413"></a>
+<span class="sourceLineNo">414</span>        DataBlockEncoding encoding = overriddenEncoding;<a name="line.414"></a>
+<span class="sourceLineNo">415</span>        encoding = encoding == null ? datablockEncodingMap.get(tableAndFamily) : encoding;<a name="line.415"></a>
+<span class="sourceLineNo">416</span>        encoding = encoding == null ? DataBlockEncoding.NONE : encoding;<a name="line.416"></a>
+<span class="sourceLineNo">417</span>        Configuration tempConf = new Configuration(conf);<a name="line.417"></a>
+<span class="sourceLineNo">418</span>        tempConf.setFloat(HConstants.HFILE_BLOCK_CACHE_SIZE_KEY, 0.0f);<a name="line.418"></a>
+<span class="sourceLineNo">419</span>        HFileContextBuilder contextBuilder = new HFileContextBuilder()<a name="line.419"></a>
+<span class="sourceLineNo">420</span>                                    .withCompression(compression)<a name="line.420"></a>
+<span class="sourceLineNo">421</span>                                    .withChecksumType(HStore.getChecksumType(conf))<a name="line.421"></a>
+<span class="sourceLineNo">422</span>                                    .withBytesPerCheckSum(HStore.getBytesPerChecksum(conf))<a name="line.422"></a>
+<span class="sourceLineNo">423</span>                                    .withBlockSize(blockSize);<a name="line.423"></a>
+<span class="sourceLineNo">424</span><a name="line.424"></a>
+<span class="sourceLineNo">425</span>        if (HFile.getFormatVersion(conf) &gt;= HFile.MIN_FORMAT_VERSION_WITH_TAGS) {<a name="line.425"></a>
+<span class="sourceLineNo">426</span>          contextBuilder.withIncludesTags(true);<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>        contextBuilder.withDataBlockEncoding(encoding);<a name="line.429"></a>
+<span class="sourceLineNo">430</span>        HFileContext hFileContext = contextBuilder.build();<a name="line.430"></a>
+<span class="sourceLineNo">431</span>        if (null == favoredNodes) {<a name="line.431"></a>
+<span class="sourceLineNo">432</span>          wl.writer =<a name="line.432"></a>
+<span class="sourceLineNo">433</span>              new StoreFileWriter.Builder(conf, new CacheConfig(tempConf), fs)<a name="line.433"></a>
+<span class="sourceLineNo">434</span>                  .withOutputDir(familydir).withBloomType(bloomType)<a name="line.434"></a>
+<span class="sourceLineNo">435</span>                  .withComparator(CellComparator.getInstance()).withFileContext(hFileContext).build();<a name="line.435"></a>
+<span class="sourceLineNo">436</span>        } else {<a name="line.436"></a>
+<span class="sourceLineNo">437</span>          wl.writer =<a name="line.437"></a>
+<span class="sourceLineNo">438</span>              new StoreFileWriter.Builder(conf, new CacheConfig(tempConf), new HFileSystem(fs))<a name="line.438"></a>
+<span class="sourceLineNo">439</span>                  .withOutputDir(familydir).withBloomType(bloomType)<a name="line.439"></a>
+<span class="sourceLineNo">440</span>                  .withComparator(CellComparator.getInstance()).withFileContext(hFileContext)<a name="line.440"></a>
+<span class="sourceLineNo">441</span>                  .withFavoredNodes(favoredNodes).build();<a name="line.441"></a>
+<span class="sourceLineNo">442</span>        }<a name="line.442"></a>
+<span class="sourceLineNo">443</span><a name="line.443"></a>
+<span class="sourceLineNo">444</span>        this.writers.put(tableAndFamily, wl);<a name="line.444"></a>
+<span class="sourceLineNo">445</span>        return wl;<a name="line.445"></a>
+<span class="sourceLineNo">446</span>      }<a name="line.446"></a>
+<span class="sourceLineNo">447</span><a name="line.447"></a>
+<span class="sourceLineNo">448</span>      private void close(final StoreFileWriter w) throws IOException {<a name="line.448"></a>
+<span class="sourceLineNo">449</span>        if (w != null) {<a name="line.449"></a>
+<span class="sourceLineNo">450</span>          w.appendFileInfo(BULKLOAD_TIME_KEY,<a name="line.450"></a>
+<span class="sourceLineNo">451</span>              Bytes.toBytes(System.currentTimeMillis()));<a name="line.451"></a>
+<span class="sourceLineNo">452</span>          w.appendFileInfo(BULKLOAD_TASK_KEY,<a name="line.452"></a>
+<span class="sourceLineNo">453</span>              Bytes.toBytes(context.getTaskAttemptID().toString()));<a name="line.453"></a>
+<span class="sourceLineNo">454</span>          w.appendFileInfo(MAJOR_COMPACTION_KEY,<a name="line.454"></a>
+<span class="sourceLineNo">455</span>              Bytes.toBytes(true));<a name="line.455"></a>
+<span class="sourceLineNo">456</span>          w.appendFileInfo(EXCLUDE_FROM_MINOR_COMPACTION_KEY,<a name="line.456"></a>
+<span class="sourceLineNo">457</span>              Bytes.toBytes(compactionExclude));<a name="line.457"></a>
+<span class="sourceLineNo">458</span>          w.appendTrackedTimestampsToMetadata();<a name="line.458"></a>
+<span class="sourceLineNo">459</span>          w.close();<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><a name="line.462"></a>
-<span class="sourceLineNo">463</span>  /**<a name="line.463"></a>
-<span class="sourceLineNo">464</span>   * Configure block storage policy for CF after the directory is created.<a name="line.464"></a>
-<span class="sourceLineNo">465</span>   */<a name="line.465"></a>
-<span class="sourceLineNo">466</span>  static void configureStoragePolicy(final Configuration conf, final FileSystem fs,<a name="line.466"></a>
-<span class="sourceLineNo">467</span>      byte[] tableAndFamily, Path cfPath) {<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    if (null == conf || null == fs || null == tableAndFamily || null == cfPath) {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>      return;<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>    String policy =<a name="line.472"></a>
-<span class="sourceLineNo">473</span>        conf.get(STORAGE_POLICY_PROPERTY_CF_PREFIX + Bytes.toString(tableAndFamily),<a name="line.473"></a>
-<span class="sourceLineNo">474</span>          conf.get(STORAGE_POLICY_PROPERTY));<a name="line.474"></a>
-<span class="sourceLineNo">475</span>    FSUtils.setStoragePolicy(fs, cfPath, policy);<a name="line.475"></a>
-<span class="sourceLineNo">476</span>  }<a name="line.476"></a>
-<span class="sourceLineNo">477</span><a name="line.477"></a>
-<span class="sourceLineNo">478</span>  /*<a name="line.478"></a>
-<span class="sourceLineNo">479</span>   * Data structure to hold a Writer and amount of data written on it.<a name="line.479"></a>
-<span class="sourceLineNo">480</span>   */<a name="line.480"></a>
-<span class="sourceLineNo">481</span>  static class WriterLength {<a name="line.481"></a>
-<span class="sourceLineNo">482</span>    long written = 0;<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    StoreFileWriter writer = null;<a name="line.483"></a>
-<span class="sourceLineNo">484</span>  }<a name="line.484"></a>
-<span class="sourceLineNo">485</span><a name="line.485"></a>
-<span class="sourceLineNo">486</span>  /**<a name="line.486"></a>
-<span class="sourceLineNo">487</span>   * Return the start keys of all of the regions in this table,<a name="line.487"></a>
-<span class="sourceLineNo">488</span>   * as a list of ImmutableBytesWritable.<a name="line.488"></a>
-<span class="sourceLineNo">489</span>   */<a name="line.489"></a>
-<span class="sourceLineNo">490</span>  private static List&lt;ImmutableBytesWritable&gt; getRegionStartKeys(List&lt;RegionLocator&gt; regionLocators,<a name="line.490"></a>
-<span class="sourceLineNo">491</span>                                                                 boolean writeMultipleTables)<a name="line.491"></a>
-<span class="sourceLineNo">492</span>          throws IOException {<a name="line.492"></a>
-<span class="sourceLineNo">493</span><a name="line.493"></a>
-<span class="sourceLineNo">494</span>    ArrayList&lt;ImmutableBytesWritable&gt; ret = new ArrayList&lt;&gt;();<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    for(RegionLocator regionLocator : regionLocators)<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    {<a name="line.496"></a>
-<span class="sourceLineNo">497</span>      TableName tableName = regionLocator.getName();<a name="line.497"></a>
-<span class="sourceLineNo">498</span>      LOG.info("Looking up current regions for table " + tableName);<a name="line.498"></a>
-<span class="sourceLineNo">499</span>      byte[][] byteKeys = regionLocator.getStartKeys();<a name="line.499"></a>
-<span class="sourceLineNo">500</span>      for (byte[] byteKey : byteKeys) {<a name="line.500"></a>
-<span class="sourceLineNo">501</span>        byte[] fullKey = byteKey; //HFileOutputFormat2 use case<a name="line.501"></a>
-<span class="sourceLineNo">502</span>        if (writeMultipleTables)<a name="line.502"></a>
-<span class="sourceLineNo">503</span>        {<a name="line.503"></a>
-<span class="sourceLineNo">504</span>          //MultiTableHFileOutputFormat use case<a name="line.504"></a>
-<span class="sourceLineNo">505</span>          fullKey = combineTableNameSuffix(tableName.getName(), byteKey);<a name="line.505"></a>
-<span class="sourceLineNo">506</span>        }<a name="line.506"></a>
-<span class="sourceLineNo">507</span>        if (LOG.isDebugEnabled()) {<a name="line.507"></a>
-<span class="sourceLineNo">508</span>          LOG.debug("SplitPoint startkey for table [" + tableName + "]: [" + Bytes.toStringBinary<a name="line.508"></a>
-<span class="sourceLineNo">509</span>                  (fullKey) + "]");<a name="line.509"></a>
-<span class="sourceLineNo">510</span>        }<a name="line.510"></a>
-<span class="sourceLineNo">511</span>        ret.add(new ImmutableBytesWritable(fullKey));<a name="line.511"></a>
-<span class="sourceLineNo">512</span>      }<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    }<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    return ret;<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 out a {@link SequenceFile} that can be read by<a name="line.518"></a>
-<span class="sourceLineNo">519</span>   * {@link TotalOrderPartitioner} that contains the split points in startKeys.<a name="line.519"></a>
-<span class="sourceLineNo">520</span>   */<a name="line.520"></a>
-<span class="sourceLineNo">521</span>  @SuppressWarnings("deprecation")<a name="line.521"></a>
-<span class="sourceLineNo">522</span>  private static void writePartitions(Configuration conf, Path partitionsPath,<a name="line.522"></a>
-<span class="sourceLineNo">523</span>      List&lt;ImmutableBytesWritable&gt; startKeys, boolean writeMultipleTables) throws IOException {<a name="line.523"></a>
-<span class="sourceLineNo">524</span>    LOG.info("Writing partition information to " + partitionsPath);<a name="line.524"></a>
-<span class="sourceLineNo">525</span>    if (startKeys.isEmpty()) {<a name="line.525"></a>
-<span class="sourceLineNo">526</span>      throw new IllegalArgumentException("No regions passed");<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>    // We're generating a list of split points, and we don't ever<a name="line.529"></a>
-<span class="sourceLineNo">530</span>    // have keys &lt; the first region (which has an empty start key)<a name="line.530"></a>
-<span class="sourceLineNo">531</span>    // so we need to remove it. Otherwise we would end up with an<a name="line.531"></a>
-<span class="sourceLineNo">532</span>    // empty reducer with index 0<a name="line.532"></a>
-<span class="sourceLineNo">533</span>    TreeSet&lt;ImmutableBytesWritable&gt; sorted = new TreeSet&lt;&gt;(startKeys);<a name="line.533"></a>
-<span class="sourceLineNo">534</span>    ImmutableBytesWritable first = sorted.first();<a name="line.534"></a>
-<span class="sourceLineNo">535</span>    if (writeMultipleTables) {<a name="line.535"></a>
-<span class="sourceLineNo">536</span>      first = new ImmutableBytesWritable(MultiTableHFileOutputFormat.getSuffix(sorted.first<a nam

<TRUNCATED>

[43/43] hbase-site git commit: Published site at 7ab77518a2569e2416a50020393aa386e7734501.

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


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

Branch: refs/heads/asf-site
Commit: bbe517ae5fce28fdda228b2e8a8de4ace0441416
Parents: a54d31a
Author: jenkins <bu...@apache.org>
Authored: Sat Sep 22 14:50:43 2018 +0000
Committer: jenkins <bu...@apache.org>
Committed: Sat Sep 22 14:50:43 2018 +0000

----------------------------------------------------------------------
 acid-semantics.html                             |     4 +-
 apache_hbase_reference_guide.pdf                |     4 +-
 .../hbase/mapreduce/HFileOutputFormat2.html     |    26 +-
 .../hadoop/hbase/regionserver/BloomType.html    |    32 +-
 .../hbase/zookeeper/MiniZooKeeperCluster.html   |    12 +-
 .../hbase/mapreduce/HFileOutputFormat2.html     |  1743 +-
 .../hadoop/hbase/regionserver/BloomType.html    |    12 +-
 .../hbase/zookeeper/MiniZooKeeperCluster.html   |   596 +-
 book.html                                       |     2 +-
 bulk-loads.html                                 |     4 +-
 checkstyle-aggregate.html                       | 18270 ++++++++---------
 checkstyle.rss                                  |    50 +-
 coc.html                                        |     4 +-
 dependencies.html                               |     4 +-
 dependency-convergence.html                     |     4 +-
 dependency-info.html                            |     4 +-
 dependency-management.html                      |     4 +-
 devapidocs/allclasses-frame.html                |     2 +
 devapidocs/allclasses-noframe.html              |     2 +
 devapidocs/constant-values.html                 |    45 +-
 devapidocs/index-all.html                       |    70 +
 .../hadoop/hbase/backup/package-tree.html       |     4 +-
 .../org/apache/hadoop/hbase/class-use/Cell.html |    26 +-
 .../hadoop/hbase/class-use/CellComparator.html  |    10 +
 .../class-use/ColumnFamilyDescriptor.html       |    22 +-
 .../hadoop/hbase/client/class-use/Scan.html     |    12 +
 .../hadoop/hbase/client/package-tree.html       |    24 +-
 .../hadoop/hbase/executor/package-tree.html     |     2 +-
 .../hadoop/hbase/filter/package-tree.html       |     8 +-
 .../hadoop/hbase/io/HalfStoreFileReader.html    |     2 +-
 .../hadoop/hbase/io/hfile/package-tree.html     |     6 +-
 .../apache/hadoop/hbase/ipc/package-tree.html   |     2 +-
 .../mapreduce/HFileOutputFormat2.TableInfo.html |    14 +-
 .../HFileOutputFormat2.WriterLength.html        |     8 +-
 .../hbase/mapreduce/HFileOutputFormat2.html     |   152 +-
 .../mapreduce/MultiTableHFileOutputFormat.html  |     4 +-
 .../hadoop/hbase/mapreduce/package-tree.html    |     4 +-
 .../master/HMaster.InitializationMonitor.html   |    20 +-
 .../master/HMaster.MasterStoppedException.html  |     4 +-
 .../hbase/master/HMaster.RedirectServlet.html   |    12 +-
 .../master/HMaster.TableDescriptorGetter.html   |     4 +-
 .../org/apache/hadoop/hbase/master/HMaster.html |   838 +-
 .../hadoop/hbase/master/MasterRpcServices.html  |     8 +-
 .../hbase/master/balancer/package-tree.html     |     2 +-
 .../hadoop/hbase/master/package-tree.html       |     6 +-
 .../hbase/master/procedure/package-tree.html    |     4 +-
 .../org/apache/hadoop/hbase/package-tree.html   |    16 +-
 .../hadoop/hbase/procedure2/package-tree.html   |     4 +-
 .../hadoop/hbase/quotas/package-tree.html       |     6 +-
 .../hadoop/hbase/regionserver/BloomType.html    |    36 +-
 .../hadoop/hbase/regionserver/HStoreFile.html   |   212 +-
 .../regionserver/StoreFileReader.Listener.html  |     4 +-
 .../hbase/regionserver/StoreFileReader.html     |   350 +-
 .../regionserver/StoreFileWriter.Builder.html   |    46 +-
 .../hbase/regionserver/StoreFileWriter.html     |    93 +-
 .../hbase/regionserver/class-use/BloomType.html |     5 +
 .../hadoop/hbase/regionserver/package-tree.html |    18 +-
 .../regionserver/querymatcher/package-tree.html |     2 +-
 .../hbase/regionserver/wal/package-tree.html    |     2 +-
 .../hadoop/hbase/rest/model/package-tree.html   |     2 +-
 .../hbase/security/access/package-tree.html     |     4 +-
 .../hadoop/hbase/security/package-tree.html     |     2 +-
 .../hadoop/hbase/thrift/package-tree.html       |     2 +-
 .../hadoop/hbase/util/BloomFilterUtil.html      |   104 +-
 .../hadoop/hbase/util/RowBloomContext.html      |     4 +
 .../hadoop/hbase/util/RowColBloomHashKey.html   |     4 +-
 .../util/RowPrefixDelimiterBloomContext.html    |   376 +
 .../util/RowPrefixFixedLengthBloomContext.html  |   376 +
 .../hadoop/hbase/util/ServerCommandLine.html    |     4 +-
 .../hbase/util/class-use/BloomContext.html      |    12 +
 .../hbase/util/class-use/BloomFilterWriter.html |    10 +
 .../hbase/util/class-use/RowBloomContext.html   |    50 +-
 .../RowPrefixDelimiterBloomContext.html         |   125 +
 .../RowPrefixFixedLengthBloomContext.html       |   125 +
 .../apache/hadoop/hbase/util/package-frame.html |     2 +
 .../hadoop/hbase/util/package-summary.html      |    12 +
 .../apache/hadoop/hbase/util/package-tree.html  |    15 +-
 .../apache/hadoop/hbase/util/package-use.html   |    11 +-
 .../apache/hadoop/hbase/wal/package-tree.html   |     2 +-
 .../hbase/zookeeper/MiniZooKeeperCluster.html   |    20 +-
 devapidocs/overview-tree.html                   |     7 +-
 .../org/apache/hadoop/hbase/Version.html        |     6 +-
 .../CompoundBloomFilterWriter.MetaWriter.html   |    12 +-
 .../CompoundBloomFilterWriter.ReadyChunk.html   |    12 +-
 .../io/hfile/CompoundBloomFilterWriter.html     |    12 +-
 .../mapreduce/HFileOutputFormat2.TableInfo.html |  1743 +-
 .../HFileOutputFormat2.WriterLength.html        |  1743 +-
 .../hbase/mapreduce/HFileOutputFormat2.html     |  1743 +-
 .../master/HMaster.InitializationMonitor.html   |  7574 +++----
 .../master/HMaster.MasterStoppedException.html  |  7574 +++----
 .../hbase/master/HMaster.RedirectServlet.html   |  7574 +++----
 .../master/HMaster.TableDescriptorGetter.html   |  7574 +++----
 .../org/apache/hadoop/hbase/master/HMaster.html |  7574 +++----
 .../MasterRpcServices.BalanceSwitchMode.html    |   243 +-
 .../hadoop/hbase/master/MasterRpcServices.html  |   243 +-
 .../hadoop/hbase/regionserver/BloomType.html    |    12 +-
 .../regionserver/HStore.StoreFlusherImpl.html   |    14 +-
 .../hadoop/hbase/regionserver/HStore.html       |    14 +-
 .../hadoop/hbase/regionserver/HStoreFile.html   |  1047 +-
 .../regionserver/StoreFileReader.Listener.html  |  1376 +-
 .../hbase/regionserver/StoreFileReader.html     |  1376 +-
 .../regionserver/StoreFileWriter.Builder.html   |   899 +-
 .../hbase/regionserver/StoreFileWriter.html     |   899 +-
 .../hadoop/hbase/util/BloomFilterChunk.html     |     6 +-
 .../hadoop/hbase/util/BloomFilterUtil.html      |   566 +-
 .../util/RowPrefixDelimiterBloomContext.html    |   134 +
 .../util/RowPrefixFixedLengthBloomContext.html  |   130 +
 .../hbase/zookeeper/MiniZooKeeperCluster.html   |   596 +-
 downloads.html                                  |     4 +-
 export_control.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            |     1 +
 testdevapidocs/allclasses-noframe.html          |     1 +
 testdevapidocs/constant-values.html             |   178 +-
 testdevapidocs/index-all.html                   |    60 +
 .../chaos/actions/ChangeBloomFilterAction.html  |    12 +-
 .../hbase/class-use/HBaseClassTestRule.html     |   156 +-
 .../hbase/class-use/HBaseTestingUtility.html    |   120 +-
 .../hfile/TestSeekBeforeWithInlineBlocks.html   |    36 +-
 .../hadoop/hbase/io/hfile/package-tree.html     |     2 +-
 .../org/apache/hadoop/hbase/package-tree.html   |    12 +-
 .../hadoop/hbase/procedure2/package-tree.html   |     2 +-
 .../regionserver/CreateRandomStoreFile.html     |   115 +-
 .../hbase/regionserver/MockHStoreFile.html      |     2 +-
 .../regionserver/TestMultiColumnScanner.html    |    60 +-
 .../regionserver/TestReversibleScanners.html    |     4 +-
 .../regionserver/TestRowPrefixBloomFilter.html  |   678 +
 .../hbase/regionserver/TestRowTooBig.html       |     4 +-
 .../regionserver/TestScanWithBloomError.html    |    46 +-
 .../regionserver/TestSeekOptimizations.html     |    92 +-
 .../class-use/TestRowPrefixBloomFilter.html     |   125 +
 .../hbase/regionserver/package-frame.html       |     1 +
 .../hbase/regionserver/package-summary.html     |   148 +-
 .../hadoop/hbase/regionserver/package-tree.html |     5 +-
 .../apache/hadoop/hbase/test/package-tree.html  |     4 +-
 .../hbase/util/LoadTestTool.WorkerThread.html   |     8 +-
 .../apache/hadoop/hbase/util/LoadTestTool.html  |   339 +-
 .../apache/hadoop/hbase/wal/package-tree.html   |     2 +-
 testdevapidocs/overview-tree.html               |     1 +
 .../chaos/actions/ChangeBloomFilterAction.html  |    78 +-
 .../hfile/TestSeekBeforeWithInlineBlocks.html   |   297 +-
 .../regionserver/CreateRandomStoreFile.html     |   553 +-
 .../hbase/regionserver/TestHStoreFile.html      |     2 +-
 .../regionserver/TestMultiColumnScanner.html    |   581 +-
 .../regionserver/TestRowPrefixBloomFilter.html  |   471 +
 .../regionserver/TestScanWithBloomError.html    |   343 +-
 .../regionserver/TestSeekOptimizations.html     |   875 +-
 .../hbase/util/LoadTestTool.WorkerThread.html   |  1658 +-
 .../apache/hadoop/hbase/util/LoadTestTool.html  |  1658 +-
 168 files changed, 43830 insertions(+), 39839 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/acid-semantics.html
----------------------------------------------------------------------
diff --git a/acid-semantics.html b/acid-semantics.html
index 8a549c4..8bf0900 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="20180921" />
+    <meta name="Date-Revision-yyyymmdd" content="20180922" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Apache HBase (TM) ACID Properties
@@ -601,7 +601,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: 2018-09-21</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-22</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/apache_hbase_reference_guide.pdf
----------------------------------------------------------------------
diff --git a/apache_hbase_reference_guide.pdf b/apache_hbase_reference_guide.pdf
index 0017202..d2dc33e 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:20180921143334+00'00')
-/CreationDate (D:20180921144923+00'00')
+/ModDate (D:20180922143213+00'00')
+/CreationDate (D:20180922144725+00'00')
 >>
 endobj
 2 0 obj

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/apidocs/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html
----------------------------------------------------------------------
diff --git a/apidocs/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html b/apidocs/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html
index 44de7d7..1173a66 100644
--- a/apidocs/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html
+++ b/apidocs/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html
@@ -124,7 +124,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Public
-public class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.107">HFileOutputFormat2</a>
+public class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.108">HFileOutputFormat2</a>
 extends org.apache.hadoop.mapreduce.lib.output.FileOutputFormat&lt;<a href="../../../../../org/apache/hadoop/hbase/io/ImmutableBytesWritable.html" title="class in org.apache.hadoop.hbase.io">ImmutableBytesWritable</a>,<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;</pre>
 <div class="block">Writes HFiles. Passed Cells must arrive in order.
  Writes current time as the sequence id for the file. Sets the major compacted
@@ -284,7 +284,7 @@ extends org.apache.hadoop.mapreduce.lib.output.FileOutputFormat&lt;<a href="../.
 <ul class="blockList">
 <li class="blockList">
 <h4>tableSeparator</h4>
-<pre>protected static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.138">tableSeparator</a></pre>
+<pre>protected static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.139">tableSeparator</a></pre>
 </li>
 </ul>
 <a name="DATABLOCK_ENCODING_OVERRIDE_CONF_KEY">
@@ -293,7 +293,7 @@ extends org.apache.hadoop.mapreduce.lib.output.FileOutputFormat&lt;<a href="../.
 <ul class="blockList">
 <li class="blockList">
 <h4>DATABLOCK_ENCODING_OVERRIDE_CONF_KEY</h4>
-<pre>public static final&nbsp;<a href="https://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/mapreduce/HFileOutputFormat2.html#line.161">DATABLOCK_ENCODING_OVERRIDE_CONF_KEY</a></pre>
+<pre>public static final&nbsp;<a href="https://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/mapreduce/HFileOutputFormat2.html#line.164">DATABLOCK_ENCODING_OVERRIDE_CONF_KEY</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.mapreduce.HFileOutputFormat2.DATABLOCK_ENCODING_OVERRIDE_CONF_KEY">Constant Field Values</a></dd>
@@ -306,7 +306,7 @@ extends org.apache.hadoop.mapreduce.lib.output.FileOutputFormat&lt;<a href="../.
 <ul class="blockList">
 <li class="blockList">
 <h4>LOCALITY_SENSITIVE_CONF_KEY</h4>
-<pre>public static final&nbsp;<a href="https://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/mapreduce/HFileOutputFormat2.html#line.167">LOCALITY_SENSITIVE_CONF_KEY</a></pre>
+<pre>public static final&nbsp;<a href="https://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/mapreduce/HFileOutputFormat2.html#line.170">LOCALITY_SENSITIVE_CONF_KEY</a></pre>
 <div class="block">Keep locality while generating HFiles for bulkload. See HBASE-12596</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -320,7 +320,7 @@ extends org.apache.hadoop.mapreduce.lib.output.FileOutputFormat&lt;<a href="../.
 <ul class="blockList">
 <li class="blockList">
 <h4>STORAGE_POLICY_PROPERTY</h4>
-<pre>public static final&nbsp;<a href="https://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/mapreduce/HFileOutputFormat2.html#line.175">STORAGE_POLICY_PROPERTY</a></pre>
+<pre>public static final&nbsp;<a href="https://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/mapreduce/HFileOutputFormat2.html#line.178">STORAGE_POLICY_PROPERTY</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.mapreduce.HFileOutputFormat2.STORAGE_POLICY_PROPERTY">Constant Field Values</a></dd>
@@ -333,7 +333,7 @@ extends org.apache.hadoop.mapreduce.lib.output.FileOutputFormat&lt;<a href="../.
 <ul class="blockListLast">
 <li class="blockList">
 <h4>STORAGE_POLICY_PROPERTY_CF_PREFIX</h4>
-<pre>public static final&nbsp;<a href="https://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/mapreduce/HFileOutputFormat2.html#line.176">STORAGE_POLICY_PROPERTY_CF_PREFIX</a></pre>
+<pre>public static final&nbsp;<a href="https://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/mapreduce/HFileOutputFormat2.html#line.179">STORAGE_POLICY_PROPERTY_CF_PREFIX</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.mapreduce.HFileOutputFormat2.STORAGE_POLICY_PROPERTY_CF_PREFIX">Constant Field Values</a></dd>
@@ -354,7 +354,7 @@ extends org.apache.hadoop.mapreduce.lib.output.FileOutputFormat&lt;<a href="../.
 <ul class="blockListLast">
 <li class="blockList">
 <h4>HFileOutputFormat2</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.107">HFileOutputFormat2</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.108">HFileOutputFormat2</a>()</pre>
 </li>
 </ul>
 </li>
@@ -371,7 +371,7 @@ extends org.apache.hadoop.mapreduce.lib.output.FileOutputFormat&lt;<a href="../.
 <ul class="blockList">
 <li class="blockList">
 <h4>combineTableNameSuffix</h4>
-<pre>protected static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.140">combineTableNameSuffix</a>(byte[]&nbsp;tableName,
+<pre>protected static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.141">combineTableNameSuffix</a>(byte[]&nbsp;tableName,
                                                byte[]&nbsp;suffix)</pre>
 </li>
 </ul>
@@ -381,7 +381,7 @@ extends org.apache.hadoop.mapreduce.lib.output.FileOutputFormat&lt;<a href="../.
 <ul class="blockList">
 <li class="blockList">
 <h4>getRecordWriter</h4>
-<pre>public&nbsp;org.apache.hadoop.mapreduce.RecordWriter&lt;<a href="../../../../../org/apache/hadoop/hbase/io/ImmutableBytesWritable.html" title="class in org.apache.hadoop.hbase.io">ImmutableBytesWritable</a>,<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.179">getRecordWriter</a>(org.apache.hadoop.mapreduce.TaskAttemptContext&nbsp;context)
+<pre>public&nbsp;org.apache.hadoop.mapreduce.RecordWriter&lt;<a href="../../../../../org/apache/hadoop/hbase/io/ImmutableBytesWritable.html" title="class in org.apache.hadoop.hbase.io">ImmutableBytesWritable</a>,<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.182">getRecordWriter</a>(org.apache.hadoop.mapreduce.TaskAttemptContext&nbsp;context)
                                                                                       throws <a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <dl>
@@ -399,7 +399,7 @@ extends org.apache.hadoop.mapreduce.lib.output.FileOutputFormat&lt;<a href="../.
 <ul class="blockList">
 <li class="blockList">
 <h4>getTableNameSuffixedWithFamily</h4>
-<pre>protected static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.184">getTableNameSuffixedWithFamily</a>(byte[]&nbsp;tableName,
+<pre>protected static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.187">getTableNameSuffixedWithFamily</a>(byte[]&nbsp;tableName,
                                                        byte[]&nbsp;family)</pre>
 </li>
 </ul>
@@ -409,7 +409,7 @@ extends org.apache.hadoop.mapreduce.lib.output.FileOutputFormat&lt;<a href="../.
 <ul class="blockList">
 <li class="blockList">
 <h4>configureIncrementalLoad</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.575">configureIncrementalLoad</a>(org.apache.hadoop.mapreduce.Job&nbsp;job,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.585">configureIncrementalLoad</a>(org.apache.hadoop.mapreduce.Job&nbsp;job,
                                             <a href="../../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;table,
                                             <a href="../../../../../org/apache/hadoop/hbase/client/RegionLocator.html" title="interface in org.apache.hadoop.hbase.client">RegionLocator</a>&nbsp;regionLocator)
                                      throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -437,7 +437,7 @@ extends org.apache.hadoop.mapreduce.lib.output.FileOutputFormat&lt;<a href="../.
 <ul class="blockList">
 <li class="blockList">
 <h4>configureIncrementalLoad</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.594">configureIncrementalLoad</a>(org.apache.hadoop.mapreduce.Job&nbsp;job,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.604">configureIncrementalLoad</a>(org.apache.hadoop.mapreduce.Job&nbsp;job,
                                             <a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;tableDescriptor,
                                             <a href="../../../../../org/apache/hadoop/hbase/client/RegionLocator.html" title="interface in org.apache.hadoop.hbase.client">RegionLocator</a>&nbsp;regionLocator)
                                      throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -465,7 +465,7 @@ extends org.apache.hadoop.mapreduce.lib.output.FileOutputFormat&lt;<a href="../.
 <ul class="blockListLast">
 <li class="blockList">
 <h4>configureIncrementalLoadMap</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.678">configureIncrementalLoadMap</a>(org.apache.hadoop.mapreduce.Job&nbsp;job,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.690">configureIncrementalLoadMap</a>(org.apache.hadoop.mapreduce.Job&nbsp;job,
                                                <a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;tableDescriptor)
                                         throws <a href="https://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>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/apidocs/org/apache/hadoop/hbase/regionserver/BloomType.html
----------------------------------------------------------------------
diff --git a/apidocs/org/apache/hadoop/hbase/regionserver/BloomType.html b/apidocs/org/apache/hadoop/hbase/regionserver/BloomType.html
index d790605..6bba8fe 100644
--- a/apidocs/org/apache/hadoop/hbase/regionserver/BloomType.html
+++ b/apidocs/org/apache/hadoop/hbase/regionserver/BloomType.html
@@ -153,6 +153,16 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?i
 <div class="block">Bloom enabled with Table row &amp; column (family+qualifier) as Key</div>
 </td>
 </tr>
+<tr class="rowColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/BloomType.html#ROWPREFIX_DELIMITED">ROWPREFIX_DELIMITED</a></span></code>
+<div class="block">Bloom enabled with Table row prefix as Key, specify the delimiter of the prefix</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/BloomType.html#ROWPREFIX_FIXED_LENGTH">ROWPREFIX_FIXED_LENGTH</a></span></code>
+<div class="block">Bloom enabled with Table row prefix as Key, specify the length of the prefix</div>
+</td>
+</tr>
 </table>
 </li>
 </ul>
@@ -233,13 +243,33 @@ the order they are declared.</div>
 <a name="ROWCOL">
 <!--   -->
 </a>
-<ul class="blockListLast">
+<ul class="blockList">
 <li class="blockList">
 <h4>ROWCOL</h4>
 <pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/BloomType.html" title="enum in org.apache.hadoop.hbase.regionserver">BloomType</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/BloomType.html#line.37">ROWCOL</a></pre>
 <div class="block">Bloom enabled with Table row &amp; column (family+qualifier) as Key</div>
 </li>
 </ul>
+<a name="ROWPREFIX_FIXED_LENGTH">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>ROWPREFIX_FIXED_LENGTH</h4>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/BloomType.html" title="enum in org.apache.hadoop.hbase.regionserver">BloomType</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/BloomType.html#line.41">ROWPREFIX_FIXED_LENGTH</a></pre>
+<div class="block">Bloom enabled with Table row prefix as Key, specify the length of the prefix</div>
+</li>
+</ul>
+<a name="ROWPREFIX_DELIMITED">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>ROWPREFIX_DELIMITED</h4>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/BloomType.html" title="enum in org.apache.hadoop.hbase.regionserver">BloomType</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/BloomType.html#line.45">ROWPREFIX_DELIMITED</a></pre>
+<div class="block">Bloom enabled with Table row prefix as Key, specify the delimiter of the prefix</div>
+</li>
+</ul>
 </li>
 </ul>
 <!-- ============ METHOD DETAIL ========== -->

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/apidocs/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html
----------------------------------------------------------------------
diff --git a/apidocs/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html b/apidocs/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html
index f80f3b3..5839bd6 100644
--- a/apidocs/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html
+++ b/apidocs/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html
@@ -326,7 +326,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>startup</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#line.181">startup</a>(<a href="https://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)
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#line.183">startup</a>(<a href="https://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)
             throws <a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <dl>
@@ -342,7 +342,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>startup</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#line.197">startup</a>(<a href="https://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,
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#line.199">startup</a>(<a href="https://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)
             throws <a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
@@ -365,7 +365,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>shutdown</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#line.299">shutdown</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#line.301">shutdown</a>()
               throws <a href="https://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>
@@ -379,7 +379,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>killCurrentActiveZooKeeperServer</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#line.333">killCurrentActiveZooKeeperServer</a>()
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#line.335">killCurrentActiveZooKeeperServer</a>()
                                      throws <a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <dl>
@@ -398,7 +398,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>killOneBackupZooKeeperServer</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#line.373">killOneBackupZooKeeperServer</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#line.375">killOneBackupZooKeeperServer</a>()
                                   throws <a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <div class="block">Kill one back up ZK servers.</div>
@@ -415,7 +415,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getClientPort</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#line.469">getClientPort</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#line.471">getClientPort</a>()</pre>
 </li>
 </ul>
 </li>


[09/43] hbase-site git commit: Published site at 7ab77518a2569e2416a50020393aa386e7734501.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html
index c816405..af3aee5 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html
@@ -109,7 +109,7 @@ var activeTableTab = "activeTableTab";
 <li class="blockList">
 <hr>
 <br>
-<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.66">TestSeekOptimizations</a>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.67">TestSeekOptimizations</a>
 extends <a href="https://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 various seek optimizations for correctness and check if they are
  actually saving I/O operations.</div>
@@ -388,7 +388,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>CLASS_RULE</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.69">CLASS_RULE</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.70">CLASS_RULE</a></pre>
 </li>
 </ul>
 <a name="LOG">
@@ -397,7 +397,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.72">LOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.73">LOG</a></pre>
 </li>
 </ul>
 <a name="FAMILY">
@@ -406,7 +406,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>FAMILY</h4>
-<pre>private static final&nbsp;<a href="https://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/TestSeekOptimizations.html#line.76">FAMILY</a></pre>
+<pre>private static final&nbsp;<a href="https://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/TestSeekOptimizations.html#line.77">FAMILY</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.TestSeekOptimizations.FAMILY">Constant Field Values</a></dd>
@@ -419,7 +419,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>FAMILY_BYTES</h4>
-<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.77">FAMILY_BYTES</a></pre>
+<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.78">FAMILY_BYTES</a></pre>
 </li>
 </ul>
 <a name="PUTS_PER_ROW_COL">
@@ -428,7 +428,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>PUTS_PER_ROW_COL</h4>
-<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.79">PUTS_PER_ROW_COL</a></pre>
+<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.80">PUTS_PER_ROW_COL</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.TestSeekOptimizations.PUTS_PER_ROW_COL">Constant Field Values</a></dd>
@@ -441,7 +441,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>DELETES_PER_ROW_COL</h4>
-<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.80">DELETES_PER_ROW_COL</a></pre>
+<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.81">DELETES_PER_ROW_COL</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.TestSeekOptimizations.DELETES_PER_ROW_COL">Constant Field Values</a></dd>
@@ -454,7 +454,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>NUM_ROWS</h4>
-<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.82">NUM_ROWS</a></pre>
+<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.83">NUM_ROWS</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.TestSeekOptimizations.NUM_ROWS">Constant Field Values</a></dd>
@@ -467,7 +467,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>NUM_COLS</h4>
-<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.83">NUM_COLS</a></pre>
+<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.84">NUM_COLS</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.TestSeekOptimizations.NUM_COLS">Constant Field Values</a></dd>
@@ -480,7 +480,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>VERBOSE</h4>
-<pre>private static final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.85">VERBOSE</a></pre>
+<pre>private static final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.86">VERBOSE</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.TestSeekOptimizations.VERBOSE">Constant Field Values</a></dd>
@@ -493,7 +493,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>USE_MANY_STORE_FILES</h4>
-<pre>private static final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.91">USE_MANY_STORE_FILES</a></pre>
+<pre>private static final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.92">USE_MANY_STORE_FILES</a></pre>
 <div class="block">Disable this when this test fails hopelessly and you need to debug a
  simpler case.</div>
 <dl>
@@ -508,7 +508,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>COLUMN_SETS</h4>
-<pre>private static final&nbsp;int[][] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.93">COLUMN_SETS</a></pre>
+<pre>private static final&nbsp;int[][] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.94">COLUMN_SETS</a></pre>
 </li>
 </ul>
 <a name="ROW_RANGES">
@@ -517,7 +517,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>ROW_RANGES</h4>
-<pre>private static final&nbsp;int[][] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.104">ROW_RANGES</a></pre>
+<pre>private static final&nbsp;int[][] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.105">ROW_RANGES</a></pre>
 </li>
 </ul>
 <a name="MAX_VERSIONS_VALUES">
@@ -526,7 +526,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>MAX_VERSIONS_VALUES</h4>
-<pre>private static final&nbsp;int[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.112">MAX_VERSIONS_VALUES</a></pre>
+<pre>private static final&nbsp;int[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.113">MAX_VERSIONS_VALUES</a></pre>
 </li>
 </ul>
 <a name="region">
@@ -535,7 +535,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>region</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.115">region</a></pre>
+<pre>private&nbsp;org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.116">region</a></pre>
 </li>
 </ul>
 <a name="put">
@@ -544,7 +544,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>put</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.client.Put <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.116">put</a></pre>
+<pre>private&nbsp;org.apache.hadoop.hbase.client.Put <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.117">put</a></pre>
 </li>
 </ul>
 <a name="del">
@@ -553,7 +553,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>del</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.client.Delete <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.117">del</a></pre>
+<pre>private&nbsp;org.apache.hadoop.hbase.client.Delete <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.118">del</a></pre>
 </li>
 </ul>
 <a name="rand">
@@ -562,7 +562,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>rand</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true" title="class or interface in java.util">Random</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.118">rand</a></pre>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true" title="class or interface in java.util">Random</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.119">rand</a></pre>
 </li>
 </ul>
 <a name="putTimestamps">
@@ -571,7 +571,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>putTimestamps</h4>
-<pre>private&nbsp;<a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.119">putTimestamps</a></pre>
+<pre>private&nbsp;<a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.120">putTimestamps</a></pre>
 </li>
 </ul>
 <a name="delTimestamps">
@@ -580,7 +580,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>delTimestamps</h4>
-<pre>private&nbsp;<a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.120">delTimestamps</a></pre>
+<pre>private&nbsp;<a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.121">delTimestamps</a></pre>
 </li>
 </ul>
 <a name="expectedKVs">
@@ -589,7 +589,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>expectedKVs</h4>
-<pre>private&nbsp;<a href="https://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.hbase.Cell&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.121">expectedKVs</a></pre>
+<pre>private&nbsp;<a href="https://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.hbase.Cell&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.122">expectedKVs</a></pre>
 </li>
 </ul>
 <a name="comprAlgo">
@@ -598,7 +598,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>comprAlgo</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.io.compress.Compression.Algorithm <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.123">comprAlgo</a></pre>
+<pre>private&nbsp;org.apache.hadoop.hbase.io.compress.Compression.Algorithm <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.124">comprAlgo</a></pre>
 </li>
 </ul>
 <a name="bloomType">
@@ -607,7 +607,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>bloomType</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.regionserver.BloomType <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.124">bloomType</a></pre>
+<pre>private&nbsp;org.apache.hadoop.hbase.regionserver.BloomType <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.125">bloomType</a></pre>
 </li>
 </ul>
 <a name="totalSeekDiligent">
@@ -616,7 +616,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>totalSeekDiligent</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.126">totalSeekDiligent</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.127">totalSeekDiligent</a></pre>
 </li>
 </ul>
 <a name="totalSeekLazy">
@@ -625,7 +625,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>totalSeekLazy</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.126">totalSeekLazy</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.127">totalSeekLazy</a></pre>
 </li>
 </ul>
 <a name="TEST_UTIL">
@@ -634,7 +634,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <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/regionserver/TestSeekOptimizations.html#line.128">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/regionserver/TestSeekOptimizations.html#line.129">TEST_UTIL</a></pre>
 </li>
 </ul>
 </li>
@@ -651,7 +651,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestSeekOptimizations</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.135">TestSeekOptimizations</a>(org.apache.hadoop.hbase.io.compress.Compression.Algorithm&nbsp;comprAlgo,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.136">TestSeekOptimizations</a>(org.apache.hadoop.hbase.io.compress.Compression.Algorithm&nbsp;comprAlgo,
                              org.apache.hadoop.hbase.regionserver.BloomType&nbsp;bloomType)</pre>
 </li>
 </ul>
@@ -669,7 +669,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>parameters</h4>
-<pre>public static final&nbsp;<a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.131">parameters</a>()</pre>
+<pre>public static final&nbsp;<a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.132">parameters</a>()</pre>
 </li>
 </ul>
 <a name="setUp--">
@@ -678,7 +678,7 @@ extends <a href="https://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/regionserver/TestSeekOptimizations.html#line.142">setUp</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.143">setUp</a>()</pre>
 </li>
 </ul>
 <a name="testMultipleTimestampRanges--">
@@ -687,7 +687,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testMultipleTimestampRanges</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.148">testMultipleTimestampRanges</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.151">testMultipleTimestampRanges</a>()
                                  throws <a href="https://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>
@@ -701,7 +701,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testScan</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.202">testScan</a>(int[]&nbsp;columnArr,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.205">testScan</a>(int[]&nbsp;columnArr,
                       boolean&nbsp;lazySeekEnabled,
                       int&nbsp;startRow,
                       int&nbsp;endRow,
@@ -719,7 +719,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>filterExpectedResults</h4>
-<pre>private&nbsp;<a href="https://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.hbase.Cell&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.266">filterExpectedResults</a>(<a href="https://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="https://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;qualSet,
+<pre>private&nbsp;<a href="https://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.hbase.Cell&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.269">filterExpectedResults</a>(<a href="https://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="https://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;qualSet,
                                                                  byte[]&nbsp;startRow,
                                                                  byte[]&nbsp;endRow,
                                                                  int&nbsp;maxVersions)</pre>
@@ -731,7 +731,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>prepareExpectedKVs</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.304">prepareExpectedKVs</a>(long&nbsp;latestDelTS)</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.307">prepareExpectedKVs</a>(long&nbsp;latestDelTS)</pre>
 </li>
 </ul>
 <a name="put-java.lang.String-long-">
@@ -740,7 +740,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>put</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.315">put</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;qual,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.318">put</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;qual,
                 long&nbsp;ts)</pre>
 </li>
 </ul>
@@ -750,7 +750,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>createValue</h4>
-<pre>private&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.326">createValue</a>(long&nbsp;ts)</pre>
+<pre>private&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.329">createValue</a>(long&nbsp;ts)</pre>
 </li>
 </ul>
 <a name="delAtTimestamp-java.lang.String-long-">
@@ -759,7 +759,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>delAtTimestamp</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.330">delAtTimestamp</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;qual,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.333">delAtTimestamp</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;qual,
                            long&nbsp;ts)</pre>
 </li>
 </ul>
@@ -769,7 +769,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>logDelete</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.335">logDelete</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;qual,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.338">logDelete</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;qual,
                        long&nbsp;ts,
                        <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;delType)</pre>
 </li>
@@ -780,7 +780,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>delUpToTimestamp</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.343">delUpToTimestamp</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;qual,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.346">delUpToTimestamp</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;qual,
                               long&nbsp;upToTS)</pre>
 </li>
 </ul>
@@ -790,7 +790,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>randLong</h4>
-<pre>private&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.348">randLong</a>(long&nbsp;n)</pre>
+<pre>private&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.351">randLong</a>(long&nbsp;n)</pre>
 </li>
 </ul>
 <a name="randBetween-long-long-">
@@ -799,7 +799,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>randBetween</h4>
-<pre>private&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.355">randBetween</a>(long&nbsp;a,
+<pre>private&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.358">randBetween</a>(long&nbsp;a,
                          long&nbsp;b)</pre>
 </li>
 </ul>
@@ -809,7 +809,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>rowStr</h4>
-<pre>private final&nbsp;<a href="https://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/TestSeekOptimizations.html#line.361">rowStr</a>(int&nbsp;i)</pre>
+<pre>private final&nbsp;<a href="https://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/TestSeekOptimizations.html#line.364">rowStr</a>(int&nbsp;i)</pre>
 </li>
 </ul>
 <a name="rowBytes-int-">
@@ -818,7 +818,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>rowBytes</h4>
-<pre>private final&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.365">rowBytes</a>(int&nbsp;i)</pre>
+<pre>private final&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.368">rowBytes</a>(int&nbsp;i)</pre>
 </li>
 </ul>
 <a name="getQualStr-int-">
@@ -827,7 +827,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getQualStr</h4>
-<pre>private final&nbsp;<a href="https://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/TestSeekOptimizations.html#line.372">getQualStr</a>(int&nbsp;i)</pre>
+<pre>private final&nbsp;<a href="https://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/TestSeekOptimizations.html#line.375">getQualStr</a>(int&nbsp;i)</pre>
 </li>
 </ul>
 <a name="createTimestampRange-long-long-long-">
@@ -836,7 +836,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>createTimestampRange</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.376">createTimestampRange</a>(long&nbsp;minTS,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.379">createTimestampRange</a>(long&nbsp;minTS,
                                  long&nbsp;maxTS,
                                  long&nbsp;deleteUpToTS)
                           throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -852,7 +852,7 @@ extends <a href="https://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/regionserver/TestSeekOptimizations.html#line.446">tearDown</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.449">tearDown</a>()
               throws <a href="https://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>
@@ -866,7 +866,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>assertKVListsEqual</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.458">assertKVListsEqual</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;additionalMsg,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#line.461">assertKVListsEqual</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;additionalMsg,
                                <a href="https://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.Cell&gt;&nbsp;expected,
                                <a href="https://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.Cell&gt;&nbsp;actual)</pre>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/testdevapidocs/org/apache/hadoop/hbase/regionserver/class-use/TestRowPrefixBloomFilter.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/class-use/TestRowPrefixBloomFilter.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/class-use/TestRowPrefixBloomFilter.html
new file mode 100644
index 0000000..aa2bb70
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/class-use/TestRowPrefixBloomFilter.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.regionserver.TestRowPrefixBloomFilter (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.regionserver.TestRowPrefixBloomFilter (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/regionserver/TestRowPrefixBloomFilter.html" title="class in org.apache.hadoop.hbase.regionserver">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/class-use/TestRowPrefixBloomFilter.html" target="_top">Frames</a></li>
+<li><a href="TestRowPrefixBloomFilter.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.TestRowPrefixBloomFilter" class="title">Uses of Class<br>org.apache.hadoop.hbase.regionserver.TestRowPrefixBloomFilter</h2>
+</div>
+<div class="classUseContainer">No usage of org.apache.hadoop.hbase.regionserver.TestRowPrefixBloomFilter</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/TestRowPrefixBloomFilter.html" title="class in org.apache.hadoop.hbase.regionserver">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/class-use/TestRowPrefixBloomFilter.html" target="_top">Frames</a></li>
+<li><a href="TestRowPrefixBloomFilter.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;2018 <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/bbe517ae/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-frame.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-frame.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-frame.html
index a7c7d94..4f0b7af 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-frame.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-frame.html
@@ -217,6 +217,7 @@
 <li><a href="TestRemoveRegionMetrics.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestRemoveRegionMetrics</a></li>
 <li><a href="TestResettingCounters.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestResettingCounters</a></li>
 <li><a href="TestReversibleScanners.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestReversibleScanners</a></li>
+<li><a href="TestRowPrefixBloomFilter.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestRowPrefixBloomFilter</a></li>
 <li><a href="TestRowTooBig.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestRowTooBig</a></li>
 <li><a href="TestRpcSchedulerFactory.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestRpcSchedulerFactory</a></li>
 <li><a href="TestRSKilledWhenInitializing.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestRSKilledWhenInitializing</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-summary.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-summary.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-summary.html
index fb26734..96513d7 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-summary.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-summary.html
@@ -1113,355 +1113,361 @@
 </td>
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html" title="class in org.apache.hadoop.hbase.regionserver">TestRowPrefixBloomFilter</a></td>
+<td class="colLast">
+<div class="block">Test TestRowPrefixBloomFilter</div>
+</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRowTooBig.html" title="class in org.apache.hadoop.hbase.regionserver">TestRowTooBig</a></td>
 <td class="colLast">
 <div class="block">Test case to check HRS throws <code>RowTooBigException</code>
  when row size exceeds configured limits.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRpcSchedulerFactory.html" title="class in org.apache.hadoop.hbase.regionserver">TestRpcSchedulerFactory</a></td>
 <td class="colLast">
 <div class="block">A silly test that does nothing but make sure an rpcscheduler factory makes what it says
  it is going to make.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRSKilledWhenInitializing.html" title="class in org.apache.hadoop.hbase.regionserver">TestRSKilledWhenInitializing</a></td>
 <td class="colLast">
 <div class="block">Tests that a regionserver that dies after reporting for duty gets removed
  from list of online regions.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRSKilledWhenInitializing.RegisterAndDieRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">TestRSKilledWhenInitializing.RegisterAndDieRegionServer</a></td>
 <td class="colLast">
 <div class="block">A RegionServer that reports for duty and then immediately dies if it is the first to receive
  the response to a reportForDuty.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRSStatusServlet.html" title="class in org.apache.hadoop.hbase.regionserver">TestRSStatusServlet</a></td>
 <td class="colLast">
 <div class="block">Tests for the region server status page and its template.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScanner.html" title="class in org.apache.hadoop.hbase.regionserver">TestScanner</a></td>
 <td class="colLast">
 <div class="block">Test of a long-lived scanner validating as we go.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerHeartbeatMessages.html" title="class in org.apache.hadoop.hbase.regionserver">TestScannerHeartbeatMessages</a></td>
 <td class="colLast">
 <div class="block">Here we test to make sure that scans return the expected Results when the server is sending the
  Client heartbeat messages.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerHeartbeatMessages.HeartbeatHRegion.html" title="class in org.apache.hadoop.hbase.regionserver">TestScannerHeartbeatMessages.HeartbeatHRegion</a></td>
 <td class="colLast">
 <div class="block">Custom HRegion class that instantiates <code>RegionScanner</code>s with configurable sleep times
  between fetches of row Results and/or column family cells.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerHeartbeatMessages.HeartbeatHRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">TestScannerHeartbeatMessages.HeartbeatHRegionServer</a></td>
 <td class="colLast">
 <div class="block">Custom HRegionServer instance that instantiates <a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerHeartbeatMessages.HeartbeatRPCServices.html" title="class in org.apache.hadoop.hbase.regionserver"><code>TestScannerHeartbeatMessages.HeartbeatRPCServices</code></a> in place of
  <code>RSRpcServices</code> to allow us to toggle support for heartbeat messages</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerHeartbeatMessages.HeartbeatKVHeap.html" title="class in org.apache.hadoop.hbase.regionserver">TestScannerHeartbeatMessages.HeartbeatKVHeap</a></td>
 <td class="colLast">
 <div class="block">Custom KV Heap that can be configured to sleep/wait in between retrievals of column family
  cells.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerHeartbeatMessages.HeartbeatRegionScanner.html" title="class in org.apache.hadoop.hbase.regionserver">TestScannerHeartbeatMessages.HeartbeatRegionScanner</a></td>
 <td class="colLast">
 <div class="block">Custom RegionScanner that can be configured to sleep between retrievals of row Results and/or
  column family cells</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerHeartbeatMessages.HeartbeatReversedKVHeap.html" title="class in org.apache.hadoop.hbase.regionserver">TestScannerHeartbeatMessages.HeartbeatReversedKVHeap</a></td>
 <td class="colLast">
 <div class="block">Custom reversed KV Heap that can be configured to sleep in between retrievals of column family
  cells.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerHeartbeatMessages.HeartbeatReversedRegionScanner.html" title="class in org.apache.hadoop.hbase.regionserver">TestScannerHeartbeatMessages.HeartbeatReversedRegionScanner</a></td>
 <td class="colLast">
 <div class="block">Custom ReversedRegionScanner that can be configured to sleep between retrievals of row Results
  and/or column family cells</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerHeartbeatMessages.HeartbeatRPCServices.html" title="class in org.apache.hadoop.hbase.regionserver">TestScannerHeartbeatMessages.HeartbeatRPCServices</a></td>
 <td class="colLast">
 <div class="block">Custom RSRpcServices instance that allows heartbeat support to be toggled</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerHeartbeatMessages.SparseCellFilter.html" title="class in org.apache.hadoop.hbase.regionserver">TestScannerHeartbeatMessages.SparseCellFilter</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerHeartbeatMessages.SparseRowFilter.html" title="class in org.apache.hadoop.hbase.regionserver">TestScannerHeartbeatMessages.SparseRowFilter</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerRetriableFailure.html" title="class in org.apache.hadoop.hbase.regionserver">TestScannerRetriableFailure</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerRetriableFailure.FaultyScannerObserver.html" title="class in org.apache.hadoop.hbase.regionserver">TestScannerRetriableFailure.FaultyScannerObserver</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerWithBulkload.html" title="class in org.apache.hadoop.hbase.regionserver">TestScannerWithBulkload</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerWithCorruptHFile.html" title="class in org.apache.hadoop.hbase.regionserver">TestScannerWithCorruptHFile</a></td>
 <td class="colLast">
 <div class="block">Tests a scanner on a corrupt hfile.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerWithCorruptHFile.CorruptHFileCoprocessor.html" title="class in org.apache.hadoop.hbase.regionserver">TestScannerWithCorruptHFile.CorruptHFileCoprocessor</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScanWithBloomError.html" title="class in org.apache.hadoop.hbase.regionserver">TestScanWithBloomError</a></td>
 <td class="colLast">
 <div class="block">Test a multi-column scanner when there is a Bloom filter false-positive.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSCVFWithMiniCluster.html" title="class in org.apache.hadoop.hbase.regionserver">TestSCVFWithMiniCluster</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html" title="class in org.apache.hadoop.hbase.regionserver">TestSeekOptimizations</a></td>
 <td class="colLast">
 <div class="block">Test various seek optimizations for correctness and check if they are
  actually saving I/O operations.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestServerCustomProtocol.html" title="class in org.apache.hadoop.hbase.regionserver">TestServerCustomProtocol</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestServerCustomProtocol.PingHandler.html" title="class in org.apache.hadoop.hbase.regionserver">TestServerCustomProtocol.PingHandler</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestServerNonceManager.html" title="class in org.apache.hadoop.hbase.regionserver">TestServerNonceManager</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestServerNonceManager.TestRunnable.html" title="class in org.apache.hadoop.hbase.regionserver">TestServerNonceManager.TestRunnable</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSettingTimeoutOnBlockingPoint.html" title="class in org.apache.hadoop.hbase.regionserver">TestSettingTimeoutOnBlockingPoint</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSettingTimeoutOnBlockingPoint.SleepCoprocessor.html" title="class in org.apache.hadoop.hbase.regionserver">TestSettingTimeoutOnBlockingPoint.SleepCoprocessor</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestShutdownWhileWALBroken.html" title="class in org.apache.hadoop.hbase.regionserver">TestShutdownWhileWALBroken</a></td>
 <td class="colLast">
 <div class="block">See HBASE-19929 for more details.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestShutdownWhileWALBroken.MyRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">TestShutdownWhileWALBroken.MyRegionServer</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSimpleTimeRangeTracker.html" title="class in org.apache.hadoop.hbase.regionserver">TestSimpleTimeRangeTracker</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSplitLogWorker.html" title="class in org.apache.hadoop.hbase.regionserver">TestSplitLogWorker</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSplitLogWorker.DummyServer.html" title="class in org.apache.hadoop.hbase.regionserver">TestSplitLogWorker.DummyServer</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.html" title="class in org.apache.hadoop.hbase.regionserver">TestSplitTransactionOnCluster</a></td>
 <td class="colLast">
 <div class="block">The below tests are testing split region against a running cluster</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.CustomSplitPolicy.html" title="class in org.apache.hadoop.hbase.regionserver">TestSplitTransactionOnCluster.CustomSplitPolicy</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.FailingSplitMasterObserver.html" title="class in org.apache.hadoop.hbase.regionserver">TestSplitTransactionOnCluster.FailingSplitMasterObserver</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.MyMaster.html" title="class in org.apache.hadoop.hbase.regionserver">TestSplitTransactionOnCluster.MyMaster</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.MyMasterRpcServices.html" title="class in org.apache.hadoop.hbase.regionserver">TestSplitTransactionOnCluster.MyMasterRpcServices</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSplitWalDataLoss.html" title="class in org.apache.hadoop.hbase.regionserver">TestSplitWalDataLoss</a></td>
 <td class="colLast">
 <div class="block">Testcase for https://issues.apache.org/jira/browse/HBASE-13811</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreFileInfo.html" title="class in org.apache.hadoop.hbase.regionserver">TestStoreFileInfo</a></td>
 <td class="colLast">
 <div class="block">Test HStoreFile</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreFileRefresherChore.html" title="class in org.apache.hadoop.hbase.regionserver">TestStoreFileRefresherChore</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreFileRefresherChore.FailingHRegionFileSystem.html" title="class in org.apache.hadoop.hbase.regionserver">TestStoreFileRefresherChore.FailingHRegionFileSystem</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreFileRefresherChore.StaleStorefileRefresherChore.html" title="class in org.apache.hadoop.hbase.regionserver">TestStoreFileRefresherChore.StaleStorefileRefresherChore</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreFileScannerWithTagCompression.html" title="class in org.apache.hadoop.hbase.regionserver">TestStoreFileScannerWithTagCompression</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreScanner.html" title="class in org.apache.hadoop.hbase.regionserver">TestStoreScanner</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellGridStoreScanner.html" title="class in org.apache.hadoop.hbase.regionserver">TestStoreScanner.CellGridStoreScanner</a></td>
 <td class="colLast">
 <div class="block">A StoreScanner for our CELL_GRID above.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellWithVersionsNoOptimizeStoreScanner.html" title="class in org.apache.hadoop.hbase.regionserver">TestStoreScanner.CellWithVersionsNoOptimizeStoreScanner</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellWithVersionsStoreScanner.html" title="class in org.apache.hadoop.hbase.regionserver">TestStoreScanner.CellWithVersionsStoreScanner</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreScanner.KeyValueHeapWithCount.html" title="class in org.apache.hadoop.hbase.regionserver">TestStoreScanner.KeyValueHeapWithCount</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStripeStoreEngine.html" title="class in org.apache.hadoop.hbase.regionserver">TestStripeStoreEngine</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStripeStoreEngine.TestStoreEngine.html" title="class in org.apache.hadoop.hbase.regionserver">TestStripeStoreEngine.TestStoreEngine</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStripeStoreFileManager.html" title="class in org.apache.hadoop.hbase.regionserver">TestStripeStoreFileManager</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSwitchToStreamRead.html" title="class in org.apache.hadoop.hbase.regionserver">TestSwitchToStreamRead</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSwitchToStreamRead.MatchLastRowCellNextColFilter.html" title="class in org.apache.hadoop.hbase.regionserver">TestSwitchToStreamRead.MatchLastRowCellNextColFilter</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSwitchToStreamRead.MatchLastRowCellNextRowFilter.html" title="class in org.apache.hadoop.hbase.regionserver">TestSwitchToStreamRead.MatchLastRowCellNextRowFilter</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSwitchToStreamRead.MatchLastRowFilterRowFilter.html" title="class in org.apache.hadoop.hbase.regionserver">TestSwitchToStreamRead.MatchLastRowFilterRowFilter</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSwitchToStreamRead.MatchLastRowKeyFilter.html" title="class in org.apache.hadoop.hbase.regionserver">TestSwitchToStreamRead.MatchLastRowKeyFilter</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSyncTimeRangeTracker.html" title="class in org.apache.hadoop.hbase.regionserver">TestSyncTimeRangeTracker</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSyncTimeRangeTracker.RandomTestData.html" title="class in org.apache.hadoop.hbase.regionserver">TestSyncTimeRangeTracker.RandomTestData</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSyncTimeRangeTracker.TrtUpdateRunnable.html" title="class in org.apache.hadoop.hbase.regionserver">TestSyncTimeRangeTracker.TrtUpdateRunnable</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestTags.html" title="class in org.apache.hadoop.hbase.regionserver">TestTags</a></td>
 <td class="colLast">
 <div class="block">Class that test tags</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestTags.TestCoprocessorForTags.html" title="class in org.apache.hadoop.hbase.regionserver">TestTags.TestCoprocessorForTags</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestTimestampFilterSeekHint.html" title="class in org.apache.hadoop.hbase.regionserver">TestTimestampFilterSeekHint</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestWalAndCompactingMemStoreFlush.html" title="class in org.apache.hadoop.hbase.regionserver">TestWalAndCompactingMemStoreFlush</a></td>
 <td class="colLast">
 <div class="block">This test verifies the correctness of the Per Column Family flushing strategy
  when part of the memstores are compacted memstores</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestWALLockup.html" title="class in org.apache.hadoop.hbase.regionserver">TestWALLockup</a></td>
 <td class="colLast">
 <div class="block">Testing for lock up of FSHLog.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestWALLockup.DodgyFSLog.html" title="class in org.apache.hadoop.hbase.regionserver">TestWALLockup.DodgyFSLog</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestWALLockup.DummyServer.html" title="class in org.apache.hadoop.hbase.regionserver">TestWALLockup.DummyServer</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestWALLockup.DummyWALActionsListener.html" title="class in org.apache.hadoop.hbase.regionserver">TestWALLockup.DummyWALActionsListener</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestWALMonotonicallyIncreasingSeqId.html" title="class in org.apache.hadoop.hbase.regionserver">TestWALMonotonicallyIncreasingSeqId</a></td>
 <td class="colLast">
 <div class="block">Test for HBASE-17471.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestWideScanner.html" title="class in org.apache.hadoop.hbase.regionserver">TestWideScanner</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/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 e3953cd..fa259db 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
@@ -565,6 +565,7 @@
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRemoveRegionMetrics.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestRemoveRegionMetrics</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestResettingCounters.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestResettingCounters</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestReversibleScanners.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestReversibleScanners</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestRowPrefixBloomFilter</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRowTooBig.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestRowTooBig</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRpcSchedulerFactory.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestRpcSchedulerFactory</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRSKilledWhenInitializing.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestRSKilledWhenInitializing</span></a></li>
@@ -669,11 +670,11 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.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/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/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/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/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/TestMultiLogThreshold.ActionType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestMultiLogThreshold.ActionType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/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 cb17cac..3c4b4a9 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html
@@ -253,10 +253,10 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.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/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.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/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/IntegrationTestWithCellVisibilityLoadAndVerify.Counters.html" title="enum in org.apache.hadoop.hbase.test"><span class="typeNameLink">IntegrationTestWithCellVisibilityLoadAndVerify.Counters</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>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/testdevapidocs/org/apache/hadoop/hbase/util/LoadTestTool.WorkerThread.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/util/LoadTestTool.WorkerThread.html b/testdevapidocs/org/apache/hadoop/hbase/util/LoadTestTool.WorkerThread.html
index 89a5f2a..8a6c671 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/util/LoadTestTool.WorkerThread.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/util/LoadTestTool.WorkerThread.html
@@ -122,7 +122,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>class <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.910">LoadTestTool.WorkerThread</a>
+<pre>class <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.928">LoadTestTool.WorkerThread</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true" title="class or interface in java.lang">Thread</a></pre>
 </li>
 </ul>
@@ -240,7 +240,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>workerArgs</h4>
-<pre>private&nbsp;<a href="https://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/util/LoadTestTool.WorkerThread.html#line.911">workerArgs</a></pre>
+<pre>private&nbsp;<a href="https://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/util/LoadTestTool.WorkerThread.html#line.929">workerArgs</a></pre>
 </li>
 </ul>
 </li>
@@ -257,7 +257,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>WorkerThread</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.WorkerThread.html#line.913">WorkerThread</a>(int&nbsp;i,
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.WorkerThread.html#line.931">WorkerThread</a>(int&nbsp;i,
              <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;args)</pre>
 </li>
 </ul>
@@ -275,7 +275,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>run</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.WorkerThread.html#line.919">run</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.WorkerThread.html#line.937">run</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="https://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="https://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>


[33/43] hbase-site git commit: Published site at 7ab77518a2569e2416a50020393aa386e7734501.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/devapidocs/org/apache/hadoop/hbase/regionserver/StoreFileReader.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/StoreFileReader.html b/devapidocs/org/apache/hadoop/hbase/regionserver/StoreFileReader.html
index e6791f6..1cbfe1c 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/StoreFileReader.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/StoreFileReader.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":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":42,"i18":42,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":10,"i32":10,"i33":10,"i34":10,"i35":10,"i36":10,"i37":10,"i38":10,"i39":10,"i40":10,"i41":10,"i42":10,"i43":10,"i44":10,"i45":10,"i46":10,"i47":10};
+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":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":42,"i21":42,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":10,"i32":10,"i33":10,"i34":10,"i35":10,"i36":10,"i37":10,"i38":10,"i39":10,"i40":10,"i41":10,"i42":10,"i43":10,"i44":10,"i45":10,"i46":10,"i47":10,"i48":10,"i49":10,"i50":10,"i51":10,"i52":10};
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"],32:["t6","Deprecated Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -115,7 +115,7 @@ var activeTableTab = "activeTableTab";
 <br>
 <pre>@InterfaceAudience.LimitedPrivate(value="Phoenix")
  @InterfaceStability.Evolving
-public class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.63">StoreFileReader</a>
+public class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.64">StoreFileReader</a>
 extends <a href="https://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">Reader for a StoreFile.</div>
 </li>
@@ -176,25 +176,33 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#deleteFamilyCnt">deleteFamilyCnt</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><code>private byte[]</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#delimiter">delimiter</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/util/BloomFilter.html" title="interface in org.apache.hadoop.hbase.util">BloomFilter</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#generalBloomFilter">generalBloomFilter</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private byte[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#lastBloomKey">lastBloomKey</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue.KeyOnlyKeyValue</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#lastBloomKeyOnlyKV">lastBloomKeyOnlyKV</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.Listener.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFileReader.Listener</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#listener">listener</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static org.slf4j.Logger</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#LOG">LOG</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/regionserver/StoreFileReader.html#prefixLength">prefixLength</a></span></code>&nbsp;</td>
+</tr>
 <tr class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFile.Reader.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFile.Reader</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#reader">reader</a></span></code>&nbsp;</td>
@@ -314,49 +322,64 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getDeleteFamilyCnt--">getDeleteFamilyCnt</a></span>()</code>&nbsp;</td>
 </tr>
 <tr id="i7" class="rowColor">
+<td class="colFirst"><code>byte[]</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getDelimiter--">getDelimiter</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i8" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getEntries--">getEntries</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i8" class="altColor">
+<tr id="i9" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getFilterEntries--">getFilterEntries</a></span>()</code>
 <div class="block">The number of Bloom filter entries in this store file, or an estimate
  thereof, if the Bloom filter is not loaded.</div>
 </td>
 </tr>
-<tr id="i9" class="rowColor">
+<tr id="i10" class="altColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html?is-external=true" title="class or interface in java.util">Optional</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getFirstKey--">getFirstKey</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i10" class="altColor">
+<tr id="i11" class="rowColor">
 <td class="colFirst"><code>(package private) <a href="../../../../../org/apache/hadoop/hbase/util/BloomFilter.html" title="interface in org.apache.hadoop.hbase.util">BloomFilter</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getGeneralBloomFilter--">getGeneralBloomFilter</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i11" class="rowColor">
+<tr id="i12" class="altColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getHFileMinorVersion--">getHFileMinorVersion</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i12" class="altColor">
+<tr id="i13" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFile.Reader.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFile.Reader</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getHFileReader--">getHFileReader</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i13" class="rowColor">
+<tr id="i14" class="altColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getHFileVersion--">getHFileVersion</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i14" class="altColor">
+<tr id="i15" class="rowColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html?is-external=true" title="class or interface in java.util">Optional</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getLastKey--">getLastKey</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i15" class="rowColor">
+<tr id="i16" class="altColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html?is-external=true" title="class or interface in java.util">Optional</a>&lt;byte[]&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getLastRowKey--">getLastRowKey</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i16" class="altColor">
+<tr id="i17" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getMaxTimestamp--">getMaxTimestamp</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i17" class="rowColor">
+<tr id="i18" class="altColor">
+<td class="colFirst"><code>int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getPrefixLength--">getPrefixLength</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i19" class="rowColor">
+<td class="colFirst"><code>(package private) int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getRefCount--">getRefCount</a></span>()</code>
+<div class="block">Return the ref count associated with the reader whenever a scanner associated with the
+ reader is opened.</div>
+</td>
+</tr>
+<tr id="i20" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanner.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFileScanner</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getScanner-boolean-boolean-">getScanner</a></span>(boolean&nbsp;cacheBlocks,
           boolean&nbsp;pread)</code>
@@ -367,7 +390,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </div>
 </td>
 </tr>
-<tr id="i18" class="altColor">
+<tr id="i21" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanner.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFileScanner</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getScanner-boolean-boolean-boolean-">getScanner</a></span>(boolean&nbsp;cacheBlocks,
           boolean&nbsp;pread,
@@ -379,11 +402,11 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </div>
 </td>
 </tr>
-<tr id="i19" class="rowColor">
+<tr id="i22" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getSequenceID--">getSequenceID</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i20" class="altColor">
+<tr id="i23" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileScanner.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileScanner</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getStoreFileScanner-boolean-boolean-boolean-long-long-boolean-">getStoreFileScanner</a></span>(boolean&nbsp;cacheBlocks,
                    boolean&nbsp;pread,
@@ -394,94 +417,106 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <div class="block">Get a scanner to scan over this StoreFile.</div>
 </td>
 </tr>
-<tr id="i21" class="rowColor">
+<tr id="i24" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getTotalBloomSize--">getTotalBloomSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i22" class="altColor">
+<tr id="i25" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getTotalUncompressedBytes--">getTotalUncompressedBytes</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i23" class="rowColor">
+<tr id="i26" class="altColor">
 <td class="colFirst"><code>(package private) long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getUncompressedDataIndexSize--">getUncompressedDataIndexSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i24" class="altColor">
+<tr id="i27" class="rowColor">
 <td class="colFirst"><code>(package private) void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#incrementRefCount--">incrementRefCount</a></span>()</code>
 <div class="block">Indicate that the scanner has started reading with this reader.</div>
 </td>
 </tr>
-<tr id="i25" class="rowColor">
+<tr id="i28" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#indexSize--">indexSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i26" class="altColor">
+<tr id="i29" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#isBulkLoaded--">isBulkLoaded</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i27" class="rowColor">
+<tr id="i30" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#isPrimaryReplicaReader--">isPrimaryReplicaReader</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i28" class="altColor">
+<tr id="i31" class="rowColor">
 <td class="colFirst"><code>(package private) boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#isSkipResetSeqId--">isSkipResetSeqId</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i29" class="rowColor">
+<tr id="i32" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#length--">length</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i30" class="altColor">
+<tr id="i33" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#loadBloomfilter--">loadBloomfilter</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i31" class="rowColor">
+<tr id="i34" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#loadBloomfilter-org.apache.hadoop.hbase.io.hfile.BlockType-">loadBloomfilter</a></span>(<a href="../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.html" title="enum in org.apache.hadoop.hbase.io.hfile">BlockType</a>&nbsp;blockType)</code>&nbsp;</td>
 </tr>
-<tr id="i32" class="altColor">
+<tr id="i35" class="rowColor">
 <td class="colFirst"><code><a href="https://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[],byte[]&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#loadFileInfo--">loadFileInfo</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i33" class="rowColor">
+<tr id="i36" class="altColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html?is-external=true" title="class or interface in java.util">Optional</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#midKey--">midKey</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i34" class="altColor">
+<tr id="i37" class="rowColor">
 <td class="colFirst"><code>(package private) boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#passesBloomFilter-org.apache.hadoop.hbase.client.Scan-java.util.SortedSet-">passesBloomFilter</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan,
                  <a href="https://docs.oracle.com/javase/8/docs/api/java/util/SortedSet.html?is-external=true" title="class or interface in java.util">SortedSet</a>&lt;byte[]&gt;&nbsp;columns)</code>
 <div class="block">Checks whether the given scan passes the Bloom filter (if present).</div>
 </td>
 </tr>
-<tr id="i35" class="rowColor">
+<tr id="i38" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#passesDeleteFamilyBloomFilter-byte:A-int-int-">passesDeleteFamilyBloomFilter</a></span>(byte[]&nbsp;row,
                              int&nbsp;rowOffset,
                              int&nbsp;rowLen)</code>&nbsp;</td>
 </tr>
-<tr id="i36" class="altColor">
-<td class="colFirst"><code>boolean</code></td>
+<tr id="i39" class="rowColor">
+<td class="colFirst"><code>private boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#passesGeneralDelimitedRowPrefixBloomFilter-org.apache.hadoop.hbase.client.Scan-">passesGeneralDelimitedRowPrefixBloomFilter</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan)</code>
+<div class="block">A method for checking Bloom filters.</div>
+</td>
+</tr>
+<tr id="i40" class="altColor">
+<td class="colFirst"><code>private boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#passesGeneralRowBloomFilter-byte:A-int-int-">passesGeneralRowBloomFilter</a></span>(byte[]&nbsp;row,
                            int&nbsp;rowOffset,
                            int&nbsp;rowLen)</code>
 <div class="block">A method for checking Bloom filters.</div>
 </td>
 </tr>
-<tr id="i37" class="rowColor">
+<tr id="i41" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#passesGeneralRowColBloomFilter-org.apache.hadoop.hbase.Cell-">passesGeneralRowColBloomFilter</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</code>
 <div class="block">A method for checking Bloom filters.</div>
 </td>
 </tr>
-<tr id="i38" class="altColor">
+<tr id="i42" class="altColor">
+<td class="colFirst"><code>private boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#passesGeneralRowPrefixBloomFilter-org.apache.hadoop.hbase.client.Scan-">passesGeneralRowPrefixBloomFilter</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan)</code>
+<div class="block">A method for checking Bloom filters.</div>
+</td>
+</tr>
+<tr id="i43" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#passesKeyRangeFilter-org.apache.hadoop.hbase.client.Scan-">passesKeyRangeFilter</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan)</code>
 <div class="block">Checks whether the given scan rowkey range overlaps with the current storefile's</div>
 </td>
 </tr>
-<tr id="i39" class="rowColor">
+<tr id="i44" class="altColor">
 <td class="colFirst"><code>(package private) boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#passesTimerangeFilter-org.apache.hadoop.hbase.io.TimeRange-long-">passesTimerangeFilter</a></span>(<a href="../../../../../org/apache/hadoop/hbase/io/TimeRange.html" title="class in org.apache.hadoop.hbase.io">TimeRange</a>&nbsp;tr,
                      long&nbsp;oldestUnexpiredTS)</code>
@@ -489,37 +524,37 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
  have not expired (i.e.</div>
 </td>
 </tr>
-<tr id="i40" class="altColor">
+<tr id="i45" class="rowColor">
 <td class="colFirst"><code>(package private) void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#readCompleted--">readCompleted</a></span>()</code>
 <div class="block">Indicate that the scanner has finished reading with this reader.</div>
 </td>
 </tr>
-<tr id="i41" class="rowColor">
+<tr id="i46" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#setBloomFilterFaulty-org.apache.hadoop.hbase.io.hfile.BlockType-">setBloomFilterFaulty</a></span>(<a href="../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.html" title="enum in org.apache.hadoop.hbase.io.hfile">BlockType</a>&nbsp;blockType)</code>&nbsp;</td>
 </tr>
-<tr id="i42" class="altColor">
+<tr id="i47" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#setBulkLoaded-boolean-">setBulkLoaded</a></span>(boolean&nbsp;bulkLoadResult)</code>&nbsp;</td>
 </tr>
-<tr id="i43" class="rowColor">
+<tr id="i48" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#setDeleteFamilyBloomFilterFaulty--">setDeleteFamilyBloomFilterFaulty</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i44" class="altColor">
+<tr id="i49" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#setGeneralBloomFilterFaulty--">setGeneralBloomFilterFaulty</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i45" class="rowColor">
+<tr id="i50" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#setListener-org.apache.hadoop.hbase.regionserver.StoreFileReader.Listener-">setListener</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.Listener.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFileReader.Listener</a>&nbsp;listener)</code>&nbsp;</td>
 </tr>
-<tr id="i46" class="altColor">
+<tr id="i51" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#setSequenceID-long-">setSequenceID</a></span>(long&nbsp;sequenceID)</code>&nbsp;</td>
 </tr>
-<tr id="i47" class="rowColor">
+<tr id="i52" class="altColor">
 <td class="colFirst"><code>(package private) void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#setSkipResetSeqId-boolean-">setSkipResetSeqId</a></span>(boolean&nbsp;skipResetSeqId)</code>&nbsp;</td>
 </tr>
@@ -551,7 +586,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.64">LOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.65">LOG</a></pre>
 </li>
 </ul>
 <a name="generalBloomFilter">
@@ -560,7 +595,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>generalBloomFilter</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/BloomFilter.html" title="interface in org.apache.hadoop.hbase.util">BloomFilter</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.66">generalBloomFilter</a></pre>
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/BloomFilter.html" title="interface in org.apache.hadoop.hbase.util">BloomFilter</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.67">generalBloomFilter</a></pre>
 </li>
 </ul>
 <a name="deleteFamilyBloomFilter">
@@ -569,7 +604,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteFamilyBloomFilter</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/BloomFilter.html" title="interface in org.apache.hadoop.hbase.util">BloomFilter</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.67">deleteFamilyBloomFilter</a></pre>
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/BloomFilter.html" title="interface in org.apache.hadoop.hbase.util">BloomFilter</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.68">deleteFamilyBloomFilter</a></pre>
 </li>
 </ul>
 <a name="bloomFilterType">
@@ -578,7 +613,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>bloomFilterType</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/BloomType.html" title="enum in org.apache.hadoop.hbase.regionserver">BloomType</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.68">bloomFilterType</a></pre>
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/BloomType.html" title="enum in org.apache.hadoop.hbase.regionserver">BloomType</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.69">bloomFilterType</a></pre>
 </li>
 </ul>
 <a name="reader">
@@ -587,7 +622,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>reader</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFile.Reader.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFile.Reader</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.69">reader</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFile.Reader.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFile.Reader</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.70">reader</a></pre>
 </li>
 </ul>
 <a name="sequenceID">
@@ -596,7 +631,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>sequenceID</h4>
-<pre>protected&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.70">sequenceID</a></pre>
+<pre>protected&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.71">sequenceID</a></pre>
 </li>
 </ul>
 <a name="timeRange">
@@ -605,7 +640,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>timeRange</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/TimeRange.html" title="class in org.apache.hadoop.hbase.io">TimeRange</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.71">timeRange</a></pre>
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/TimeRange.html" title="class in org.apache.hadoop.hbase.io">TimeRange</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.72">timeRange</a></pre>
 </li>
 </ul>
 <a name="lastBloomKey">
@@ -614,7 +649,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>lastBloomKey</h4>
-<pre>private&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.72">lastBloomKey</a></pre>
+<pre>private&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.73">lastBloomKey</a></pre>
 </li>
 </ul>
 <a name="deleteFamilyCnt">
@@ -623,7 +658,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteFamilyCnt</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.73">deleteFamilyCnt</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.74">deleteFamilyCnt</a></pre>
 </li>
 </ul>
 <a name="bulkLoadResult">
@@ -632,7 +667,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>bulkLoadResult</h4>
-<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.74">bulkLoadResult</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.75">bulkLoadResult</a></pre>
 </li>
 </ul>
 <a name="lastBloomKeyOnlyKV">
@@ -641,7 +676,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>lastBloomKeyOnlyKV</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue.KeyOnlyKeyValue</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.75">lastBloomKeyOnlyKV</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue.KeyOnlyKeyValue</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.76">lastBloomKeyOnlyKV</a></pre>
 </li>
 </ul>
 <a name="skipResetSeqId">
@@ -650,7 +685,25 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>skipResetSeqId</h4>
-<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.76">skipResetSeqId</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.77">skipResetSeqId</a></pre>
+</li>
+</ul>
+<a name="prefixLength">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>prefixLength</h4>
+<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.78">prefixLength</a></pre>
+</li>
+</ul>
+<a name="delimiter">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>delimiter</h4>
+<pre>private&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.79">delimiter</a></pre>
 </li>
 </ul>
 <a name="refCount">
@@ -659,7 +712,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>refCount</h4>
-<pre>private final&nbsp;<a href="https://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/StoreFileReader.html#line.81">refCount</a></pre>
+<pre>private final&nbsp;<a href="https://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/StoreFileReader.html#line.84">refCount</a></pre>
 </li>
 </ul>
 <a name="shared">
@@ -668,7 +721,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>shared</h4>
-<pre>final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.86">shared</a></pre>
+<pre>final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.89">shared</a></pre>
 </li>
 </ul>
 <a name="listener">
@@ -677,7 +730,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>listener</h4>
-<pre>private volatile&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.Listener.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFileReader.Listener</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.88">listener</a></pre>
+<pre>private volatile&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.Listener.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFileReader.Listener</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.91">listener</a></pre>
 </li>
 </ul>
 <a name="closed">
@@ -686,7 +739,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>closed</h4>
-<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.90">closed</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.93">closed</a></pre>
 </li>
 </ul>
 </li>
@@ -703,7 +756,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>StoreFileReader</h4>
-<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.92">StoreFileReader</a>(<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFile.Reader.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFile.Reader</a>&nbsp;reader,
+<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.95">StoreFileReader</a>(<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFile.Reader.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFile.Reader</a>&nbsp;reader,
                         <a href="https://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>&nbsp;refCount,
                         boolean&nbsp;shared)</pre>
 </li>
@@ -714,7 +767,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>StoreFileReader</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.99">StoreFileReader</a>(org.apache.hadoop.fs.FileSystem&nbsp;fs,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.102">StoreFileReader</a>(org.apache.hadoop.fs.FileSystem&nbsp;fs,
                        org.apache.hadoop.fs.Path&nbsp;path,
                        <a href="../../../../../org/apache/hadoop/hbase/io/hfile/CacheConfig.html" title="class in org.apache.hadoop.hbase.io.hfile">CacheConfig</a>&nbsp;cacheConf,
                        boolean&nbsp;primaryReplicaStoreFile,
@@ -734,7 +787,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>StoreFileReader</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.105">StoreFileReader</a>(org.apache.hadoop.fs.FileSystem&nbsp;fs,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.108">StoreFileReader</a>(org.apache.hadoop.fs.FileSystem&nbsp;fs,
                        org.apache.hadoop.fs.Path&nbsp;path,
                        <a href="../../../../../org/apache/hadoop/hbase/io/FSDataInputStreamWrapper.html" title="class in org.apache.hadoop.hbase.io">FSDataInputStreamWrapper</a>&nbsp;in,
                        long&nbsp;size,
@@ -756,7 +809,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>StoreFileReader</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.132">StoreFileReader</a>()</pre>
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.137">StoreFileReader</a>()</pre>
 <div class="block">ONLY USE DEFAULT CONSTRUCTOR FOR UNIT TESTS</div>
 </li>
 </ul>
@@ -774,7 +827,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>copyFields</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.112">copyFields</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a>&nbsp;reader)</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.115">copyFields</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a>&nbsp;reader)</pre>
 </li>
 </ul>
 <a name="isPrimaryReplicaReader--">
@@ -783,7 +836,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>isPrimaryReplicaReader</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.124">isPrimaryReplicaReader</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.129">isPrimaryReplicaReader</a>()</pre>
 </li>
 </ul>
 <a name="getComparator--">
@@ -792,7 +845,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getComparator</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.138">getComparator</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.143">getComparator</a>()</pre>
 </li>
 </ul>
 <a name="getStoreFileScanner-boolean-boolean-boolean-long-long-boolean-">
@@ -801,7 +854,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getStoreFileScanner</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileScanner.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileScanner</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.153">getStoreFileScanner</a>(boolean&nbsp;cacheBlocks,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileScanner.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileScanner</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.158">getStoreFileScanner</a>(boolean&nbsp;cacheBlocks,
                                             boolean&nbsp;pread,
                                             boolean&nbsp;isCompaction,
                                             long&nbsp;readPt,
@@ -822,13 +875,24 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </dl>
 </li>
 </ul>
+<a name="getRefCount--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getRefCount</h4>
+<pre>int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.168">getRefCount</a>()</pre>
+<div class="block">Return the ref count associated with the reader whenever a scanner associated with the
+ reader is opened.</div>
+</li>
+</ul>
 <a name="incrementRefCount--">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>incrementRefCount</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.163">incrementRefCount</a>()</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.176">incrementRefCount</a>()</pre>
 <div class="block">Indicate that the scanner has started reading with this reader. We need to increment the ref
  count so reader is not close until some object is holding the lock</div>
 </li>
@@ -839,7 +903,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>readCompleted</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.171">readCompleted</a>()</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.184">readCompleted</a>()</pre>
 <div class="block">Indicate that the scanner has finished reading with this reader. We need to decrement the ref
  count, and also, if this is not the common pread reader, we should close it.</div>
 </li>
@@ -851,7 +915,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <li class="blockList">
 <h4>getScanner</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanner.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFileScanner</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.192">getScanner</a>(boolean&nbsp;cacheBlocks,
+public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanner.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFileScanner</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.205">getScanner</a>(boolean&nbsp;cacheBlocks,
                                            boolean&nbsp;pread)</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">Do not write further code which depends on this call. Instead
    use getStoreFileScanner() which uses the StoreFileScanner class/interface
@@ -872,7 +936,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <li class="blockList">
 <h4>getScanner</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanner.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFileScanner</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.210">getScanner</a>(boolean&nbsp;cacheBlocks,
+public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanner.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFileScanner</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.223">getScanner</a>(boolean&nbsp;cacheBlocks,
                                            boolean&nbsp;pread,
                                            boolean&nbsp;isCompaction)</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">Do not write further code which depends on this call. Instead
@@ -894,7 +958,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>close</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.215">close</a>(boolean&nbsp;evictOnClose)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.228">close</a>(boolean&nbsp;evictOnClose)
            throws <a href="https://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>
@@ -908,13 +972,13 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>passesTimerangeFilter</h4>
-<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.236">passesTimerangeFilter</a>(<a href="../../../../../org/apache/hadoop/hbase/io/TimeRange.html" title="class in org.apache.hadoop.hbase.io">TimeRange</a>&nbsp;tr,
+<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.249">passesTimerangeFilter</a>(<a href="../../../../../org/apache/hadoop/hbase/io/TimeRange.html" title="class in org.apache.hadoop.hbase.io">TimeRange</a>&nbsp;tr,
                               long&nbsp;oldestUnexpiredTS)</pre>
 <div class="block">Check if this storeFile may contain keys within the TimeRange that
  have not expired (i.e. not older than oldestUnexpiredTS).</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>timeRange</code> - the timeRange to restrict</dd>
+<dd><code>tr</code> - the timeRange to restrict</dd>
 <dd><code>oldestUnexpiredTS</code> - the oldest timestamp that is not expired, as
           determined by the column family's TTL</dd>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -928,7 +992,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>passesBloomFilter</h4>
-<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.257">passesBloomFilter</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan,
+<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.270">passesBloomFilter</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan,
                           <a href="https://docs.oracle.com/javase/8/docs/api/java/util/SortedSet.html?is-external=true" title="class or interface in java.util">SortedSet</a>&lt;byte[]&gt;&nbsp;columns)</pre>
 <div class="block">Checks whether the given scan passes the Bloom filter (if present). Only
  checks Bloom filters for single-row or single-row-column scans. Bloom
@@ -955,7 +1019,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>passesDeleteFamilyBloomFilter</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.286">passesDeleteFamilyBloomFilter</a>(byte[]&nbsp;row,
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.302">passesDeleteFamilyBloomFilter</a>(byte[]&nbsp;row,
                                              int&nbsp;rowOffset,
                                              int&nbsp;rowLen)</pre>
 </li>
@@ -966,9 +1030,9 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>passesGeneralRowBloomFilter</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.321">passesGeneralRowBloomFilter</a>(byte[]&nbsp;row,
-                                           int&nbsp;rowOffset,
-                                           int&nbsp;rowLen)</pre>
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.337">passesGeneralRowBloomFilter</a>(byte[]&nbsp;row,
+                                            int&nbsp;rowOffset,
+                                            int&nbsp;rowLen)</pre>
 <div class="block">A method for checking Bloom filters. Called directly from
  StoreFileScanner in case of a multi-column query.</div>
 <dl>
@@ -983,7 +1047,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>passesGeneralRowColBloomFilter</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.345">passesGeneralRowColBloomFilter</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.361">passesGeneralRowColBloomFilter</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</pre>
 <div class="block">A method for checking Bloom filters. Called directly from
  StoreFileScanner in case of a multi-column query.</div>
 <dl>
@@ -994,13 +1058,43 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 </dl>
 </li>
 </ul>
+<a name="passesGeneralRowPrefixBloomFilter-org.apache.hadoop.hbase.client.Scan-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>passesGeneralRowPrefixBloomFilter</h4>
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.383">passesGeneralRowPrefixBloomFilter</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan)</pre>
+<div class="block">A method for checking Bloom filters. Called directly from
+ StoreFileScanner in case of a multi-column query.</div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>True if passes</dd>
+</dl>
+</li>
+</ul>
+<a name="passesGeneralDelimitedRowPrefixBloomFilter-org.apache.hadoop.hbase.client.Scan-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>passesGeneralDelimitedRowPrefixBloomFilter</h4>
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.414">passesGeneralDelimitedRowPrefixBloomFilter</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan)</pre>
+<div class="block">A method for checking Bloom filters. Called directly from
+ StoreFileScanner in case of a multi-column query.</div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>True if passes</dd>
+</dl>
+</li>
+</ul>
 <a name="checkGeneralBloomFilter-byte:A-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.util.BloomFilter-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>checkGeneralBloomFilter</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.361">checkGeneralBloomFilter</a>(byte[]&nbsp;key,
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.447">checkGeneralBloomFilter</a>(byte[]&nbsp;key,
                                         <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;kvKey,
                                         <a href="../../../../../org/apache/hadoop/hbase/util/BloomFilter.html" title="interface in org.apache.hadoop.hbase.util">BloomFilter</a>&nbsp;bloomFilter)</pre>
 </li>
@@ -1011,7 +1105,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>passesKeyRangeFilter</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.438">passesKeyRangeFilter</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.524">passesKeyRangeFilter</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan)</pre>
 <div class="block">Checks whether the given scan rowkey range overlaps with the current storefile's</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -1027,7 +1121,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>loadFileInfo</h4>
-<pre>public&nbsp;<a href="https://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[],byte[]&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.460">loadFileInfo</a>()
+<pre>public&nbsp;<a href="https://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[],byte[]&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.546">loadFileInfo</a>()
                                 throws <a href="https://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>
@@ -1041,7 +1135,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>loadBloomfilter</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.480">loadBloomfilter</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.573">loadBloomfilter</a>()</pre>
 </li>
 </ul>
 <a name="loadBloomfilter-org.apache.hadoop.hbase.io.hfile.BlockType-">
@@ -1050,7 +1144,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>loadBloomfilter</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.485">loadBloomfilter</a>(<a href="../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.html" title="enum in org.apache.hadoop.hbase.io.hfile">BlockType</a>&nbsp;blockType)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.578">loadBloomfilter</a>(<a href="../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.html" title="enum in org.apache.hadoop.hbase.io.hfile">BlockType</a>&nbsp;blockType)</pre>
 </li>
 </ul>
 <a name="setBloomFilterFaulty-org.apache.hadoop.hbase.io.hfile.BlockType-">
@@ -1059,7 +1153,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>setBloomFilterFaulty</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.534">setBloomFilterFaulty</a>(<a href="../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.html" title="enum in org.apache.hadoop.hbase.io.hfile">BlockType</a>&nbsp;blockType)</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.627">setBloomFilterFaulty</a>(<a href="../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.html" title="enum in org.apache.hadoop.hbase.io.hfile">BlockType</a>&nbsp;blockType)</pre>
 </li>
 </ul>
 <a name="getFilterEntries--">
@@ -1068,7 +1162,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>getFilterEntries</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.549">getFilterEntries</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.642">getFilterEntries</a>()</pre>
 <div class="block">The number of Bloom filter entries in this store file, or an estimate
  thereof, if the Bloom filter is not loaded. This always returns an upper
  bound of the number of Bloom filter entries.</div>
@@ -1084,7 +1178,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>setGeneralBloomFilterFaulty</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.554">setGeneralBloomFilterFaulty</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.647">setGeneralBloomFilterFaulty</a>()</pre>
 </li>
 </ul>
 <a name="setDeleteFamilyBloomFilterFaulty--">
@@ -1093,7 +1187,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>setDeleteFamilyBloomFilterFaulty</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.558">setDeleteFamilyBloomFilterFaulty</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.651">setDeleteFamilyBloomFilterFaulty</a>()</pre>
 </li>
 </ul>
 <a name="getLastKey--">
@@ -1102,7 +1196,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>getLastKey</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html?is-external=true" title="class or interface in java.util">Optional</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.562">getLastKey</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html?is-external=true" title="class or interface in java.util">Optional</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.655">getLastKey</a>()</pre>
 </li>
 </ul>
 <a name="getLastRowKey--">
@@ -1111,7 +1205,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>getLastRowKey</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html?is-external=true" title="class or interface in java.util">Optional</a>&lt;byte[]&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.566">getLastRowKey</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html?is-external=true" title="class or interface in java.util">Optional</a>&lt;byte[]&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.659">getLastRowKey</a>()</pre>
 </li>
 </ul>
 <a name="midKey--">
@@ -1120,7 +1214,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>midKey</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html?is-external=true" title="class or interface in java.util">Optional</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.570">midKey</a>()
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html?is-external=true" title="class or interface in java.util">Optional</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.663">midKey</a>()
                       throws <a href="https://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>
@@ -1134,7 +1228,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>length</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.574">length</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.667">length</a>()</pre>
 </li>
 </ul>
 <a name="getTotalUncompressedBytes--">
@@ -1143,7 +1237,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>getTotalUncompressedBytes</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.578">getTotalUncompressedBytes</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.671">getTotalUncompressedBytes</a>()</pre>
 </li>
 </ul>
 <a name="getEntries--">
@@ -1152,7 +1246,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>getEntries</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.582">getEntries</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.675">getEntries</a>()</pre>
 </li>
 </ul>
 <a name="getDeleteFamilyCnt--">
@@ -1161,7 +1255,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>getDeleteFamilyCnt</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.586">getDeleteFamilyCnt</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.679">getDeleteFamilyCnt</a>()</pre>
 </li>
 </ul>
 <a name="getFirstKey--">
@@ -1170,7 +1264,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>getFirstKey</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html?is-external=true" title="class or interface in java.util">Optional</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.590">getFirstKey</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html?is-external=true" title="class or interface in java.util">Optional</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.683">getFirstKey</a>()</pre>
 </li>
 </ul>
 <a name="indexSize--">
@@ -1179,7 +1273,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>indexSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.594">indexSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.687">indexSize</a>()</pre>
 </li>
 </ul>
 <a name="getBloomFilterType--">
@@ -1188,7 +1282,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>getBloomFilterType</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/BloomType.html" title="enum in org.apache.hadoop.hbase.regionserver">BloomType</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.598">getBloomFilterType</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/BloomType.html" title="enum in org.apache.hadoop.hbase.regionserver">BloomType</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.691">getBloomFilterType</a>()</pre>
 </li>
 </ul>
 <a name="getSequenceID--">
@@ -1197,7 +1291,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>getSequenceID</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.602">getSequenceID</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.695">getSequenceID</a>()</pre>
 </li>
 </ul>
 <a name="setSequenceID-long-">
@@ -1206,7 +1300,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>setSequenceID</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.606">setSequenceID</a>(long&nbsp;sequenceID)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.699">setSequenceID</a>(long&nbsp;sequenceID)</pre>
 </li>
 </ul>
 <a name="setBulkLoaded-boolean-">
@@ -1215,7 +1309,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>setBulkLoaded</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.610">setBulkLoaded</a>(boolean&nbsp;bulkLoadResult)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.703">setBulkLoaded</a>(boolean&nbsp;bulkLoadResult)</pre>
 </li>
 </ul>
 <a name="isBulkLoaded--">
@@ -1224,7 +1318,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>isBulkLoaded</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.614">isBulkLoaded</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.707">isBulkLoaded</a>()</pre>
 </li>
 </ul>
 <a name="getGeneralBloomFilter--">
@@ -1233,7 +1327,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>getGeneralBloomFilter</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/util/BloomFilter.html" title="interface in org.apache.hadoop.hbase.util">BloomFilter</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.618">getGeneralBloomFilter</a>()</pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/util/BloomFilter.html" title="interface in org.apache.hadoop.hbase.util">BloomFilter</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.711">getGeneralBloomFilter</a>()</pre>
 </li>
 </ul>
 <a name="getUncompressedDataIndexSize--">
@@ -1242,7 +1336,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>getUncompressedDataIndexSize</h4>
-<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.622">getUncompressedDataIndexSize</a>()</pre>
+<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.715">getUncompressedDataIndexSize</a>()</pre>
 </li>
 </ul>
 <a name="getTotalBloomSize--">
@@ -1251,7 +1345,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>getTotalBloomSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.626">getTotalBloomSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.719">getTotalBloomSize</a>()</pre>
 </li>
 </ul>
 <a name="getHFileVersion--">
@@ -1260,7 +1354,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>getHFileVersion</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.632">getHFileVersion</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.725">getHFileVersion</a>()</pre>
 </li>
 </ul>
 <a name="getHFileMinorVersion--">
@@ -1269,7 +1363,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>getHFileMinorVersion</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.636">getHFileMinorVersion</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.729">getHFileMinorVersion</a>()</pre>
 </li>
 </ul>
 <a name="getHFileReader--">
@@ -1278,7 +1372,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>getHFileReader</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFile.Reader.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFile.Reader</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.640">getHFileReader</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFile.Reader.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFile.Reader</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.733">getHFileReader</a>()</pre>
 </li>
 </ul>
 <a name="disableBloomFilterForTesting--">
@@ -1287,7 +1381,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>disableBloomFilterForTesting</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.644">disableBloomFilterForTesting</a>()</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.737">disableBloomFilterForTesting</a>()</pre>
 </li>
 </ul>
 <a name="getMaxTimestamp--">
@@ -1296,7 +1390,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>getMaxTimestamp</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.649">getMaxTimestamp</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.742">getMaxTimestamp</a>()</pre>
 </li>
 </ul>
 <a name="isSkipResetSeqId--">
@@ -1305,7 +1399,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>isSkipResetSeqId</h4>
-<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.653">isSkipResetSeqId</a>()</pre>
+<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.746">isSkipResetSeqId</a>()</pre>
 </li>
 </ul>
 <a name="setSkipResetSeqId-boolean-">
@@ -1314,16 +1408,34 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>setSkipResetSeqId</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.657">setSkipResetSeqId</a>(boolean&nbsp;skipResetSeqId)</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.750">setSkipResetSeqId</a>(boolean&nbsp;skipResetSeqId)</pre>
 </li>
 </ul>
 <a name="setListener-org.apache.hadoop.hbase.regionserver.StoreFileReader.Listener-">
 <!--   -->
 </a>
-<ul class="blockListLast">
+<ul class="blockList">
 <li class="blockList">
 <h4>setListener</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.661">setListener</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.Listener.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFileReader.Listener</a>&nbsp;listener)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.754">setListener</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.Listener.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFileReader.Listener</a>&nbsp;listener)</pre>
+</li>
+</ul>
+<a name="getPrefixLength--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getPrefixLength</h4>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.763">getPrefixLength</a>()</pre>
+</li>
+</ul>
+<a name="getDelimiter--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>getDelimiter</h4>
+<pre>public&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.767">getDelimiter</a>()</pre>
 </li>
 </ul>
 </li>


[34/43] hbase-site git commit: Published site at 7ab77518a2569e2416a50020393aa386e7734501.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/devapidocs/org/apache/hadoop/hbase/regionserver/HStoreFile.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/HStoreFile.html b/devapidocs/org/apache/hadoop/hbase/regionserver/HStoreFile.html
index ec635e7..9f0e3d8 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/HStoreFile.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/HStoreFile.html
@@ -148,157 +148,163 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static byte[]</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#BLOOM_FILTER_PARAM_KEY">BLOOM_FILTER_PARAM_KEY</a></span></code>
+<div class="block">Bloom filter param in FileInfo</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static byte[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#BLOOM_FILTER_TYPE_KEY">BLOOM_FILTER_TYPE_KEY</a></span></code>
 <div class="block">Bloom filter Type in FileInfo</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static byte[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#BULKLOAD_TASK_KEY">BULKLOAD_TASK_KEY</a></span></code>
 <div class="block">Meta key set when store file is a result of a bulk load</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static byte[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#BULKLOAD_TIME_KEY">BULKLOAD_TIME_KEY</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/io/hfile/CacheConfig.html" title="class in org.apache.hadoop.hbase.io.hfile">CacheConfig</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#cacheConf">cacheConf</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/regionserver/BloomType.html" title="enum in org.apache.hadoop.hbase.regionserver">BloomType</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#cfBloomType">cfBloomType</a></span></code>
 <div class="block">Bloom filter type specified in column family configuration.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#compactedAway">compactedAway</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#comparator">comparator</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#DEFAULT_STORE_FILE_READER_NO_READAHEAD">DEFAULT_STORE_FILE_READER_NO_READAHEAD</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static byte[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#DELETE_FAMILY_COUNT">DELETE_FAMILY_COUNT</a></span></code>
 <div class="block">Delete Family Count in FileInfo</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static byte[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#EARLIEST_PUT_TS">EARLIEST_PUT_TS</a></span></code>
 <div class="block">Key for timestamp of earliest-put in metadata</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static byte[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#EXCLUDE_FROM_MINOR_COMPACTION_KEY">EXCLUDE_FROM_MINOR_COMPACTION_KEY</a></span></code>
 <div class="block">Minor compaction flag in FileInfo</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#excludeFromMinorCompaction">excludeFromMinorCompaction</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileInfo.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileInfo</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#fileInfo">fileInfo</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html?is-external=true" title="class or interface in java.util">Optional</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#firstKey">firstKey</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private org.apache.hadoop.fs.FileSystem</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#fs">fs</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static byte[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#LAST_BLOOM_KEY">LAST_BLOOM_KEY</a></span></code>
 <div class="block">Last Bloom filter key in FileInfo</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html?is-external=true" title="class or interface in java.util">Optional</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#lastKey">lastKey</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static org.slf4j.Logger</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#LOG">LOG</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static byte[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#MAJOR_COMPACTION_KEY">MAJOR_COMPACTION_KEY</a></span></code>
 <div class="block">Major compaction flag in FileInfo</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private <a href="https://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/regionserver/HStoreFile.html#majorCompaction">majorCompaction</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static byte[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#MAX_SEQ_ID_KEY">MAX_SEQ_ID_KEY</a></span></code>
 <div class="block">Max Sequence ID in FileInfo</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#maxMemstoreTS">maxMemstoreTS</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private <a href="https://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[],byte[]&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#metadataMap">metadataMap</a></span></code>
 <div class="block">Map of the metadata entries in the corresponding HFile.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static byte[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#MOB_CELLS_COUNT">MOB_CELLS_COUNT</a></span></code>
 <div class="block">Key for the number of mob cells in metadata</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#noReadahead">noReadahead</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#primaryReplica">primaryReplica</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#reader">reader</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private <a href="https://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></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#refCount">refCount</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#sequenceid">sequenceid</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static byte[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#SKIP_RESET_SEQ_ID">SKIP_RESET_SEQ_ID</a></span></code>
 <div class="block">Key for skipping resetting sequence id in metadata.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="https://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/regionserver/HStoreFile.html#STORE_FILE_READER_NO_READAHEAD">STORE_FILE_READER_NO_READAHEAD</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private <a href="https://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/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#streamReaders">streamReaders</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static byte[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#TIMERANGE_KEY">TIMERANGE_KEY</a></span></code>
 <div class="block">Key for Timerange information in metadata</div>
@@ -644,13 +650,23 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <div class="block">Bloom filter Type in FileInfo</div>
 </li>
 </ul>
+<a name="BLOOM_FILTER_PARAM_KEY">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>BLOOM_FILTER_PARAM_KEY</h4>
+<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.90">BLOOM_FILTER_PARAM_KEY</a></pre>
+<div class="block">Bloom filter param in FileInfo</div>
+</li>
+</ul>
 <a name="DELETE_FAMILY_COUNT">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>DELETE_FAMILY_COUNT</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.90">DELETE_FAMILY_COUNT</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.93">DELETE_FAMILY_COUNT</a></pre>
 <div class="block">Delete Family Count in FileInfo</div>
 </li>
 </ul>
@@ -660,7 +676,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>LAST_BLOOM_KEY</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.93">LAST_BLOOM_KEY</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.96">LAST_BLOOM_KEY</a></pre>
 <div class="block">Last Bloom filter key in FileInfo</div>
 </li>
 </ul>
@@ -670,7 +686,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>TIMERANGE_KEY</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.96">TIMERANGE_KEY</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.99">TIMERANGE_KEY</a></pre>
 <div class="block">Key for Timerange information in metadata</div>
 </li>
 </ul>
@@ -680,7 +696,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>EARLIEST_PUT_TS</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.99">EARLIEST_PUT_TS</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.102">EARLIEST_PUT_TS</a></pre>
 <div class="block">Key for timestamp of earliest-put in metadata</div>
 </li>
 </ul>
@@ -690,7 +706,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>MOB_CELLS_COUNT</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.102">MOB_CELLS_COUNT</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.105">MOB_CELLS_COUNT</a></pre>
 <div class="block">Key for the number of mob cells in metadata</div>
 </li>
 </ul>
@@ -700,7 +716,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>BULKLOAD_TASK_KEY</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.105">BULKLOAD_TASK_KEY</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.108">BULKLOAD_TASK_KEY</a></pre>
 <div class="block">Meta key set when store file is a result of a bulk load</div>
 </li>
 </ul>
@@ -710,7 +726,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>BULKLOAD_TIME_KEY</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.106">BULKLOAD_TIME_KEY</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.109">BULKLOAD_TIME_KEY</a></pre>
 </li>
 </ul>
 <a name="SKIP_RESET_SEQ_ID">
@@ -719,7 +735,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>SKIP_RESET_SEQ_ID</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.112">SKIP_RESET_SEQ_ID</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.115">SKIP_RESET_SEQ_ID</a></pre>
 <div class="block">Key for skipping resetting sequence id in metadata. For bulk loaded hfiles, the scanner resets
  the cell seqId with the latest one, if this metadata is set as true, the reset is skipped.</div>
 </li>
@@ -730,7 +746,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>fileInfo</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileInfo.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileInfo</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.114">fileInfo</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileInfo.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileInfo</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.117">fileInfo</a></pre>
 </li>
 </ul>
 <a name="fs">
@@ -739,7 +755,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>fs</h4>
-<pre>private final&nbsp;org.apache.hadoop.fs.FileSystem <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.115">fs</a></pre>
+<pre>private final&nbsp;org.apache.hadoop.fs.FileSystem <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.118">fs</a></pre>
 </li>
 </ul>
 <a name="cacheConf">
@@ -748,7 +764,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>cacheConf</h4>
-<pre>private final&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/HStoreFile.html#line.118">cacheConf</a></pre>
+<pre>private final&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/HStoreFile.html#line.121">cacheConf</a></pre>
 </li>
 </ul>
 <a name="refCount">
@@ -757,7 +773,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>refCount</h4>
-<pre>private final&nbsp;<a href="https://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/HStoreFile.html#line.123">refCount</a></pre>
+<pre>private final&nbsp;<a href="https://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/HStoreFile.html#line.126">refCount</a></pre>
 </li>
 </ul>
 <a name="streamReaders">
@@ -766,7 +782,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>streamReaders</h4>
-<pre>private final&nbsp;<a href="https://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/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.126">streamReaders</a></pre>
+<pre>private final&nbsp;<a href="https://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/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.129">streamReaders</a></pre>
 </li>
 </ul>
 <a name="noReadahead">
@@ -775,7 +791,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>noReadahead</h4>
-<pre>private final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.128">noReadahead</a></pre>
+<pre>private final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.131">noReadahead</a></pre>
 </li>
 </ul>
 <a name="primaryReplica">
@@ -784,7 +800,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>primaryReplica</h4>
-<pre>private final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.130">primaryReplica</a></pre>
+<pre>private final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.133">primaryReplica</a></pre>
 </li>
 </ul>
 <a name="compactedAway">
@@ -793,7 +809,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>compactedAway</h4>
-<pre>private volatile&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.133">compactedAway</a></pre>
+<pre>private volatile&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.136">compactedAway</a></pre>
 </li>
 </ul>
 <a name="sequenceid">
@@ -802,7 +818,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>sequenceid</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.137">sequenceid</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.140">sequenceid</a></pre>
 </li>
 </ul>
 <a name="maxMemstoreTS">
@@ -811,7 +827,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>maxMemstoreTS</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.141">maxMemstoreTS</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.144">maxMemstoreTS</a></pre>
 </li>
 </ul>
 <a name="firstKey">
@@ -820,7 +836,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>firstKey</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html?is-external=true" title="class or interface in java.util">Optional</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/HStoreFile.html#line.144">firstKey</a></pre>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html?is-external=true" title="class or interface in java.util">Optional</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/HStoreFile.html#line.147">firstKey</a></pre>
 </li>
 </ul>
 <a name="lastKey">
@@ -829,7 +845,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>lastKey</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html?is-external=true" title="class or interface in java.util">Optional</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/HStoreFile.html#line.146">lastKey</a></pre>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html?is-external=true" title="class or interface in java.util">Optional</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/HStoreFile.html#line.149">lastKey</a></pre>
 </li>
 </ul>
 <a name="comparator">
@@ -838,7 +854,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>comparator</h4>
-<pre>private&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/HStoreFile.html#line.148">comparator</a></pre>
+<pre>private&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/HStoreFile.html#line.151">comparator</a></pre>
 </li>
 </ul>
 <a name="majorCompaction">
@@ -847,7 +863,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>majorCompaction</h4>
-<pre>private&nbsp;<a href="https://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/HStoreFile.html#line.176">majorCompaction</a></pre>
+<pre>private&nbsp;<a href="https://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/HStoreFile.html#line.179">majorCompaction</a></pre>
 </li>
 </ul>
 <a name="excludeFromMinorCompaction">
@@ -856,7 +872,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>excludeFromMinorCompaction</h4>
-<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.180">excludeFromMinorCompaction</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.183">excludeFromMinorCompaction</a></pre>
 </li>
 </ul>
 <a name="metadataMap">
@@ -865,7 +881,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>metadataMap</h4>
-<pre>private&nbsp;<a href="https://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[],byte[]&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.186">metadataMap</a></pre>
+<pre>private&nbsp;<a href="https://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[],byte[]&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.189">metadataMap</a></pre>
 <div class="block">Map of the metadata entries in the corresponding HFile. Populated when Reader is opened
  after which it is not modified again.</div>
 </li>
@@ -876,7 +892,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>reader</h4>
-<pre>private volatile&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.189">reader</a></pre>
+<pre>private volatile&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.192">reader</a></pre>
 </li>
 </ul>
 <a name="cfBloomType">
@@ -885,7 +901,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockListLast">
 <li class="blockList">
 <h4>cfBloomType</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/BloomType.html" title="enum in org.apache.hadoop.hbase.regionserver">BloomType</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.195">cfBloomType</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/BloomType.html" title="enum in org.apache.hadoop.hbase.regionserver">BloomType</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.198">cfBloomType</a></pre>
 <div class="block">Bloom filter type specified in column family configuration. Does not
  necessarily correspond to the Bloom filter type present in the HFile.</div>
 </li>
@@ -904,7 +920,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>HStoreFile</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.211">HStoreFile</a>(org.apache.hadoop.fs.FileSystem&nbsp;fs,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.214">HStoreFile</a>(org.apache.hadoop.fs.FileSystem&nbsp;fs,
                   org.apache.hadoop.fs.Path&nbsp;p,
                   org.apache.hadoop.conf.Configuration&nbsp;conf,
                   <a href="../../../../../org/apache/hadoop/hbase/io/hfile/CacheConfig.html" title="class in org.apache.hadoop.hbase.io.hfile">CacheConfig</a>&nbsp;cacheConf,
@@ -935,7 +951,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockListLast">
 <li class="blockList">
 <h4>HStoreFile</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.229">HStoreFile</a>(org.apache.hadoop.fs.FileSystem&nbsp;fs,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.232">HStoreFile</a>(org.apache.hadoop.fs.FileSystem&nbsp;fs,
                   <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileInfo.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileInfo</a>&nbsp;fileInfo,
                   org.apache.hadoop.conf.Configuration&nbsp;conf,
                   <a href="../../../../../org/apache/hadoop/hbase/io/hfile/CacheConfig.html" title="class in org.apache.hadoop.hbase.io.hfile">CacheConfig</a>&nbsp;cacheConf,
@@ -971,7 +987,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getCacheConf</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/CacheConfig.html" title="class in org.apache.hadoop.hbase.io.hfile">CacheConfig</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.150">getCacheConf</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/CacheConfig.html" title="class in org.apache.hadoop.hbase.io.hfile">CacheConfig</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.153">getCacheConf</a>()</pre>
 </li>
 </ul>
 <a name="getFirstKey--">
@@ -980,7 +996,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getFirstKey</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html?is-external=true" title="class or interface in java.util">Optional</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.155">getFirstKey</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html?is-external=true" title="class or interface in java.util">Optional</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.158">getFirstKey</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html#getFirstKey--">StoreFile</a></code></span></div>
 <div class="block">Get the first key in this store file.</div>
 <dl>
@@ -995,7 +1011,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getLastKey</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html?is-external=true" title="class or interface in java.util">Optional</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.160">getLastKey</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html?is-external=true" title="class or interface in java.util">Optional</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.163">getLastKey</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html#getLastKey--">StoreFile</a></code></span></div>
 <div class="block">Get the last key in this store file.</div>
 <dl>
@@ -1010,7 +1026,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getComparator</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.165">getComparator</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.168">getComparator</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html#getComparator--">StoreFile</a></code></span></div>
 <div class="block">Get the comparator for comparing two cells.</div>
 <dl>
@@ -1025,7 +1041,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getMaxMemStoreTS</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.170">getMaxMemStoreTS</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.173">getMaxMemStoreTS</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html#getMaxMemStoreTS--">StoreFile</a></code></span></div>
 <div class="block">Get max of the MemstoreTS in the KV's in this store file.</div>
 <dl>
@@ -1040,7 +1056,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getFileInfo</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileInfo.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileInfo</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.251">getFileInfo</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileInfo.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileInfo</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.254">getFileInfo</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>the StoreFile object associated to this StoreFile. null if the StoreFile is not a
@@ -1054,7 +1070,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getPath</h4>
-<pre>public&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.256">getPath</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.259">getPath</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html#getPath--">getPath</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a></code></dd>
@@ -1069,7 +1085,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getQualifiedPath</h4>
-<pre>public&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.261">getQualifiedPath</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.264">getQualifiedPath</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html#getQualifiedPath--">getQualifiedPath</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a></code></dd>
@@ -1084,7 +1100,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>isReference</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.266">isReference</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.269">isReference</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html#isReference--">isReference</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a></code></dd>
@@ -1099,7 +1115,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>isHFile</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.271">isHFile</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.274">isHFile</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html#isHFile--">isHFile</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a></code></dd>
@@ -1114,7 +1130,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>isMajorCompactionResult</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.276">isMajorCompactionResult</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.279">isMajorCompactionResult</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html#isMajorCompactionResult--">isMajorCompactionResult</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a></code></dd>
@@ -1129,7 +1145,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>excludeFromMinorCompaction</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.284">excludeFromMinorCompaction</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.287">excludeFromMinorCompaction</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html#excludeFromMinorCompaction--">excludeFromMinorCompaction</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a></code></dd>
@@ -1144,7 +1160,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getMaxSequenceId</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.289">getMaxSequenceId</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.292">getMaxSequenceId</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html#getMaxSequenceId--">getMaxSequenceId</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a></code></dd>
@@ -1159,7 +1175,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getModificationTimeStamp</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.294">getModificationTimeStamp</a>()
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.297">getModificationTimeStamp</a>()
                               throws <a href="https://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/StoreFile.html#getModificationTimeStamp--">StoreFile</a></code></span></div>
 <div class="block">Get the modification time of this store file. Usually will access the file system so throws
@@ -1180,7 +1196,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getModificationTimestamp</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.299">getModificationTimestamp</a>()
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.302">getModificationTimestamp</a>()
                               throws <a href="https://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/StoreFile.html#getModificationTimestamp--">StoreFile</a></code></span></div>
 <div class="block">Get the modification time of this store file. Usually will access the file system so throws
@@ -1199,7 +1215,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getMetadataValue</h4>
-<pre>public&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.308">getMetadataValue</a>(byte[]&nbsp;key)</pre>
+<pre>public&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.311">getMetadataValue</a>(byte[]&nbsp;key)</pre>
 <div class="block">Only used by the Striped Compaction Policy</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -1215,7 +1231,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>isBulkLoadResult</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.313">isBulkLoadResult</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.316">isBulkLoadResult</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html#isBulkLoadResult--">StoreFile</a></code></span></div>
 <div class="block">Check if this storefile was created by bulk load. When a hfile is bulk loaded into HBase, we
  append <code>'_SeqId_&lt;id-when-loaded&gt;'</code> to the hfile name, unless
@@ -1236,7 +1252,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>isCompactedAway</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.323">isCompactedAway</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.326">isCompactedAway</a>()</pre>
 </li>
 </ul>
 <a name="getRefCount--">
@@ -1245,7 +1261,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getRefCount</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.328">getRefCount</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.331">getRefCount</a>()</pre>
 </li>
 </ul>
 <a name="isReferencedInReads--">
@@ -1254,7 +1270,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>isReferencedInReads</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.335">isReferencedInReads</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.338">isReferencedInReads</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>true if the file is still used in reads</dd>
@@ -1267,7 +1283,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getBulkLoadTimestamp</h4>
-<pre>public&nbsp;<a href="https://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/HStoreFile.html#line.342">getBulkLoadTimestamp</a>()</pre>
+<pre>public&nbsp;<a href="https://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/HStoreFile.html#line.345">getBulkLoadTimestamp</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html#getBulkLoadTimestamp--">StoreFile</a></code></span></div>
 <div class="block">Return the timestamp at which this bulk load file was generated.</div>
 <dl>
@@ -1282,7 +1298,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getHDFSBlockDistribution</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HDFSBlocksDistribution.html" title="class in org.apache.hadoop.hbase">HDFSBlocksDistribution</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.352">getHDFSBlockDistribution</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HDFSBlocksDistribution.html" title="class in org.apache.hadoop.hbase">HDFSBlocksDistribution</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.355">getHDFSBlockDistribution</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>the cached value of HDFS blocks distribution. The cached value is calculated when store
@@ -1296,7 +1312,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>open</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.361">open</a>()
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.364">open</a>()
            throws <a href="https://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">Opens reader on this store file. Called by Constructor.</div>
 <dl>
@@ -1313,7 +1329,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>initReader</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.472">initReader</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.475">initReader</a>()
                 throws <a href="https://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">Initialize the reader used for pread.</div>
 <dl>
@@ -1328,7 +1344,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>createStreamReader</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.488">createStreamReader</a>(boolean&nbsp;canUseDropBehind)
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.491">createStreamReader</a>(boolean&nbsp;canUseDropBehind)
                                     throws <a href="https://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>
@@ -1342,7 +1358,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getPreadScanner</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileScanner.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileScanner</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.501">getPreadScanner</a>(boolean&nbsp;cacheBlocks,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileScanner.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileScanner</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.504">getPreadScanner</a>(boolean&nbsp;cacheBlocks,
                                         long&nbsp;readPt,
                                         long&nbsp;scannerOrder,
                                         boolean&nbsp;canOptimizeForNonNullColumn)</pre>
@@ -1357,7 +1373,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getStreamScanner</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileScanner.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileScanner</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.512">getStreamScanner</a>(boolean&nbsp;canUseDropBehind,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileScanner.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileScanner</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.515">getStreamScanner</a>(boolean&nbsp;canUseDropBehind,
                                          boolean&nbsp;cacheBlocks,
                                          boolean&nbsp;isCompaction,
                                          long&nbsp;readPt,
@@ -1379,7 +1395,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getReader</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.528">getReader</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.531">getReader</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>Current reader. Must call initReader first else returns null.</dd>
@@ -1394,7 +1410,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>closeStoreFile</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.536">closeStoreFile</a>(boolean&nbsp;evictOnClose)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.539">closeStoreFile</a>(boolean&nbsp;evictOnClose)
                     throws <a href="https://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>
@@ -1410,7 +1426,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>closeStreamReaders</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.544">closeStreamReaders</a>(boolean&nbsp;evictOnClose)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.547">closeStreamReaders</a>(boolean&nbsp;evictOnClose)
                         throws <a href="https://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>
@@ -1424,7 +1440,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteStoreFile</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.560">deleteStoreFile</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.563">deleteStoreFile</a>()
                      throws <a href="https://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">Delete this file</div>
 <dl>
@@ -1439,7 +1455,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>markCompactedAway</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.566">markCompactedAway</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.569">markCompactedAway</a>()</pre>
 </li>
 </ul>
 <a name="toString--">
@@ -1448,7 +1464,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>toString</h4>
-<pre>public&nbsp;<a href="https://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/HStoreFile.html#line.571">toString</a>()</pre>
+<pre>public&nbsp;<a href="https://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/HStoreFile.html#line.574">toString</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="https://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="https://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>
@@ -1461,7 +1477,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>toStringDetailed</h4>
-<pre>public&nbsp;<a href="https://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/HStoreFile.html#line.576">toStringDetailed</a>()</pre>
+<pre>public&nbsp;<a href="https://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/HStoreFile.html#line.579">toStringDetailed</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html#toStringDetailed--">toStringDetailed</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a></code></dd>
@@ -1476,7 +1492,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>isSkipResetSeqId</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.602">isSkipResetSeqId</a>(byte[]&nbsp;skipResetSeqId)</pre>
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.605">isSkipResetSeqId</a>(byte[]&nbsp;skipResetSeqId)</pre>
 <div class="block">Gets whether to skip resetting the sequence id for cells.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -1492,7 +1508,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getMinimumTimestamp</h4>
-<pre>public&nbsp;<a href="https://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/HStoreFile.html#line.610">getMinimumTimestamp</a>()</pre>
+<pre>public&nbsp;<a href="https://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/HStoreFile.html#line.613">getMinimumTimestamp</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html#getMinimumTimestamp--">StoreFile</a></code></span></div>
 <div class="block">Get the min timestamp of all the cells in the store file.</div>
 <dl>
@@ -1507,7 +1523,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getMaximumTimestamp</h4>
-<pre>public&nbsp;<a href="https://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/HStoreFile.html#line.616">getMaximumTimestamp</a>()</pre>
+<pre>public&nbsp;<a href="https://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/HStoreFile.html#line.619">getMaximumTimestamp</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html#getMaximumTimestamp--">StoreFile</a></code></span></div>
 <div class="block">Get the max timestamp of all the cells in the store file.</div>
 <dl>
@@ -1522,7 +1538,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockListLast">
 <li class="blockList">
 <h4>storeFileReaderClosed</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.622">storeFileReaderClosed</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a>&nbsp;reader)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.625">storeFileReaderClosed</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a>&nbsp;reader)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.Listener.html#storeFileReaderClosed-org.apache.hadoop.hbase.regionserver.StoreFileReader-">storeFileReaderClosed</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.Listener.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFileReader.Listener</a></code></dd>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/devapidocs/org/apache/hadoop/hbase/regionserver/StoreFileReader.Listener.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/StoreFileReader.Listener.html b/devapidocs/org/apache/hadoop/hbase/regionserver/StoreFileReader.Listener.html
index 2b8598f..f2a4bfd 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/StoreFileReader.Listener.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/StoreFileReader.Listener.html
@@ -109,7 +109,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static interface <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.665">StoreFileReader.Listener</a></pre>
+<pre>public static interface <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.758">StoreFileReader.Listener</a></pre>
 </li>
 </ul>
 </div>
@@ -153,7 +153,7 @@ var activeTableTab = "activeTableTab";
 <ul class="blockListLast">
 <li class="blockList">
 <h4>storeFileReaderClosed</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.Listener.html#line.666">storeFileReaderClosed</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a>&nbsp;reader)</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.Listener.html#line.759">storeFileReaderClosed</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a>&nbsp;reader)</pre>
 </li>
 </ul>
 </li>


[10/43] hbase-site git commit: Published site at 7ab77518a2569e2416a50020393aa386e7734501.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html
new file mode 100644
index 0000000..2766c8d
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html
@@ -0,0 +1,678 @@
+<!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>TestRowPrefixBloomFilter (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="TestRowPrefixBloomFilter (Apache HBase 3.0.0-SNAPSHOT Test API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":9,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":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/TestRowPrefixBloomFilter.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/TestReversibleScanners.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRowTooBig.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html" target="_top">Frames</a></li>
+<li><a href="TestRowPrefixBloomFilter.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.regionserver</div>
+<h2 title="Class TestRowPrefixBloomFilter" class="title">Class TestRowPrefixBloomFilter</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li><a href="https://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.TestRowPrefixBloomFilter</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/regionserver/TestRowPrefixBloomFilter.html#line.63">TestRowPrefixBloomFilter</a>
+extends <a href="https://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 TestRowPrefixBloomFilter</div>
+</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/regionserver/TestRowPrefixBloomFilter.html#BLOCKSIZE_SMALL">BLOCKSIZE_SMALL</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private org.apache.hadoop.hbase.io.hfile.CacheConfig</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#cacheConf">cacheConf</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/regionserver/TestRowPrefixBloomFilter.html#CKBYTES">CKBYTES</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private static org.apache.hadoop.hbase.util.ChecksumType</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#CKTYPE">CKTYPE</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private static org.apache.hadoop.conf.Configuration</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#conf">conf</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private static <a href="https://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/regionserver/TestRowPrefixBloomFilter.html#delimiter">delimiter</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private static float</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#err">err</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private static org.apache.hadoop.fs.FileSystem</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#fs">fs</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private static <a href="https://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/regionserver/TestRowPrefixBloomFilter.html#invalidFormatter">invalidFormatter</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#localfs">localfs</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private static org.slf4j.Logger</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#LOG">LOG</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>org.junit.rules.TestName</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#name">name</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private static <a href="https://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/regionserver/TestRowPrefixBloomFilter.html#prefixFormatter">prefixFormatter</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/regionserver/TestRowPrefixBloomFilter.html#prefixLength">prefixLength</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private static <a href="https://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/regionserver/TestRowPrefixBloomFilter.html#suffixFormatter">suffixFormatter</a></span></code>&nbsp;</td>
+</tr>
+<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/regionserver/TestRowPrefixBloomFilter.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private static org.apache.hadoop.fs.Path</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#testDir">testDir</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/regionserver/TestRowPrefixBloomFilter.html#TestRowPrefixBloomFilter--">TestRowPrefixBloomFilter</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>private static org.apache.hadoop.hbase.regionserver.StoreFileScanner</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#getStoreFileScanner-org.apache.hadoop.hbase.regionserver.StoreFileReader-">getStoreFileScanner</a></span>(org.apache.hadoop.hbase.regionserver.StoreFileReader&nbsp;reader)</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/regionserver/TestRowPrefixBloomFilter.html#setUp--">setUp</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/regionserver/TestRowPrefixBloomFilter.html#tearDown--">tearDown</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/regionserver/TestRowPrefixBloomFilter.html#testRowPrefixBloomFilter--">testRowPrefixBloomFilter</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/regionserver/TestRowPrefixBloomFilter.html#testRowPrefixBloomFilterWithGet--">testRowPrefixBloomFilterWithGet</a></span>()</code>&nbsp;</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/TestRowPrefixBloomFilter.html#testRowPrefixBloomFilterWithScan--">testRowPrefixBloomFilterWithScan</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i6" class="altColor">
+<td class="colFirst"><code>private void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#writeStoreFile-org.apache.hadoop.fs.Path-org.apache.hadoop.hbase.regionserver.BloomType-int-int-int-">writeStoreFile</a></span>(org.apache.hadoop.fs.Path&nbsp;f,
+              org.apache.hadoop.hbase.regionserver.BloomType&nbsp;bt,
+              int&nbsp;expKeys,
+              int&nbsp;prefixRowCount,
+              int&nbsp;suffixRowCount)</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="https://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="https://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="https://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="https://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="https://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="https://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="https://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="https://docs.oracle.com/javase/8/docs/api/ja
 va/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://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="https://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="https://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="https://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="CLASS_RULE">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>CLASS_RULE</h4>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#line.66">CLASS_RULE</a></pre>
+</li>
+</ul>
+<a name="LOG">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>LOG</h4>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#line.69">LOG</a></pre>
+</li>
+</ul>
+<a name="TEST_UTIL">
+<!--   -->
+</a>
+<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/regionserver/TestRowPrefixBloomFilter.html#line.70">TEST_UTIL</a></pre>
+</li>
+</ul>
+<a name="cacheConf">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>cacheConf</h4>
+<pre>private&nbsp;org.apache.hadoop.hbase.io.hfile.CacheConfig <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#line.71">cacheConf</a></pre>
+</li>
+</ul>
+<a name="CKTYPE">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>CKTYPE</h4>
+<pre>private static final&nbsp;org.apache.hadoop.hbase.util.ChecksumType <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#line.72">CKTYPE</a></pre>
+</li>
+</ul>
+<a name="CKBYTES">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>CKBYTES</h4>
+<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#line.73">CKBYTES</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.TestRowPrefixBloomFilter.CKBYTES">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="localfs">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>localfs</h4>
+<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#line.74">localfs</a></pre>
+</li>
+</ul>
+<a name="conf">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>conf</h4>
+<pre>private static&nbsp;org.apache.hadoop.conf.Configuration <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#line.75">conf</a></pre>
+</li>
+</ul>
+<a name="fs">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>fs</h4>
+<pre>private static&nbsp;org.apache.hadoop.fs.FileSystem <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#line.76">fs</a></pre>
+</li>
+</ul>
+<a name="testDir">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>testDir</h4>
+<pre>private static&nbsp;org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#line.77">testDir</a></pre>
+</li>
+</ul>
+<a name="BLOCKSIZE_SMALL">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>BLOCKSIZE_SMALL</h4>
+<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#line.78">BLOCKSIZE_SMALL</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.TestRowPrefixBloomFilter.BLOCKSIZE_SMALL">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="err">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>err</h4>
+<pre>private static final&nbsp;float <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#line.79">err</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.TestRowPrefixBloomFilter.err">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="prefixLength">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>prefixLength</h4>
+<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#line.80">prefixLength</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.TestRowPrefixBloomFilter.prefixLength">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="delimiter">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>delimiter</h4>
+<pre>private static final&nbsp;<a href="https://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/TestRowPrefixBloomFilter.html#line.81">delimiter</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.TestRowPrefixBloomFilter.delimiter">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="invalidFormatter">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>invalidFormatter</h4>
+<pre>private static final&nbsp;<a href="https://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/TestRowPrefixBloomFilter.html#line.82">invalidFormatter</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.TestRowPrefixBloomFilter.invalidFormatter">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="prefixFormatter">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>prefixFormatter</h4>
+<pre>private static final&nbsp;<a href="https://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/TestRowPrefixBloomFilter.html#line.83">prefixFormatter</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.TestRowPrefixBloomFilter.prefixFormatter">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="suffixFormatter">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>suffixFormatter</h4>
+<pre>private static final&nbsp;<a href="https://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/TestRowPrefixBloomFilter.html#line.84">suffixFormatter</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.TestRowPrefixBloomFilter.suffixFormatter">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="name">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>name</h4>
+<pre>public&nbsp;org.junit.rules.TestName <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#line.87">name</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="TestRowPrefixBloomFilter--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>TestRowPrefixBloomFilter</h4>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#line.63">TestRowPrefixBloomFilter</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&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#line.90">setUp</a>()
+           throws <a href="https://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="https://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>
+<a name="tearDown--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>tearDown</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#line.119">tearDown</a>()
+              throws <a href="https://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="https://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>
+<a name="getStoreFileScanner-org.apache.hadoop.hbase.regionserver.StoreFileReader-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getStoreFileScanner</h4>
+<pre>private static&nbsp;org.apache.hadoop.hbase.regionserver.StoreFileScanner&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#line.131">getStoreFileScanner</a>(org.apache.hadoop.hbase.regionserver.StoreFileReader&nbsp;reader)</pre>
+</li>
+</ul>
+<a name="writeStoreFile-org.apache.hadoop.fs.Path-org.apache.hadoop.hbase.regionserver.BloomType-int-int-int-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>writeStoreFile</h4>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#line.135">writeStoreFile</a>(org.apache.hadoop.fs.Path&nbsp;f,
+                            org.apache.hadoop.hbase.regionserver.BloomType&nbsp;bt,
+                            int&nbsp;expKeys,
+                            int&nbsp;prefixRowCount,
+                            int&nbsp;suffixRowCount)
+                     throws <a href="https://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="https://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="testRowPrefixBloomFilter--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>testRowPrefixBloomFilter</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#line.175">testRowPrefixBloomFilter</a>()
+                              throws <a href="https://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="https://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>
+<a name="testRowPrefixBloomFilterWithGet--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>testRowPrefixBloomFilterWithGet</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#line.257">testRowPrefixBloomFilterWithGet</a>()
+                                     throws <a href="https://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="https://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>
+<a name="testRowPrefixBloomFilterWithScan--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>testRowPrefixBloomFilterWithScan</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#line.314">testRowPrefixBloomFilterWithScan</a>()
+                                      throws <a href="https://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="https://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/TestRowPrefixBloomFilter.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/TestReversibleScanners.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRowTooBig.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html" target="_top">Frames</a></li>
+<li><a href="TestRowPrefixBloomFilter.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;2018 <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/bbe517ae/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRowTooBig.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRowTooBig.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRowTooBig.html
index 7c848fc..20b93ec 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRowTooBig.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRowTooBig.html
@@ -49,7 +49,7 @@ var activeTableTab = "activeTableTab";
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestReversibleScanners.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRpcSchedulerFactory.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
@@ -387,7 +387,7 @@ extends <a href="https://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/regionserver/TestReversibleScanners.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRpcSchedulerFactory.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestScanWithBloomError.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestScanWithBloomError.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestScanWithBloomError.html
index 4a33912..c337416 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestScanWithBloomError.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestScanWithBloomError.html
@@ -109,7 +109,7 @@ var activeTableTab = "activeTableTab";
 <li class="blockList">
 <hr>
 <br>
-<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestScanWithBloomError.html#line.66">TestScanWithBloomError</a>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestScanWithBloomError.html#line.67">TestScanWithBloomError</a>
 extends <a href="https://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 a multi-column scanner when there is a Bloom filter false-positive.
  This is needed for the multi-column Bloom filter optimization.</div>
@@ -277,7 +277,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>CLASS_RULE</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestScanWithBloomError.html#line.69">CLASS_RULE</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestScanWithBloomError.html#line.70">CLASS_RULE</a></pre>
 </li>
 </ul>
 <a name="LOG">
@@ -286,7 +286,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestScanWithBloomError.html#line.72">LOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestScanWithBloomError.html#line.73">LOG</a></pre>
 </li>
 </ul>
 <a name="TABLE_NAME">
@@ -295,7 +295,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>TABLE_NAME</h4>
-<pre>private static final&nbsp;<a href="https://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/TestScanWithBloomError.html#line.75">TABLE_NAME</a></pre>
+<pre>private static final&nbsp;<a href="https://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/TestScanWithBloomError.html#line.76">TABLE_NAME</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.TestScanWithBloomError.TABLE_NAME">Constant Field Values</a></dd>
@@ -308,7 +308,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>FAMILY</h4>
-<pre>private static final&nbsp;<a href="https://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/TestScanWithBloomError.html#line.76">FAMILY</a></pre>
+<pre>private static final&nbsp;<a href="https://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/TestScanWithBloomError.html#line.77">FAMILY</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.TestScanWithBloomError.FAMILY">Constant Field Values</a></dd>
@@ -321,7 +321,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>FAMILY_BYTES</h4>
-<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestScanWithBloomError.html#line.77">FAMILY_BYTES</a></pre>
+<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestScanWithBloomError.html#line.78">FAMILY_BYTES</a></pre>
 </li>
 </ul>
 <a name="ROW">
@@ -330,7 +330,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>ROW</h4>
-<pre>private static final&nbsp;<a href="https://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/TestScanWithBloomError.html#line.78">ROW</a></pre>
+<pre>private static final&nbsp;<a href="https://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/TestScanWithBloomError.html#line.79">ROW</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.TestScanWithBloomError.ROW">Constant Field Values</a></dd>
@@ -343,7 +343,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>QUALIFIER_PREFIX</h4>
-<pre>private static final&nbsp;<a href="https://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/TestScanWithBloomError.html#line.79">QUALIFIER_PREFIX</a></pre>
+<pre>private static final&nbsp;<a href="https://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/TestScanWithBloomError.html#line.80">QUALIFIER_PREFIX</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.TestScanWithBloomError.QUALIFIER_PREFIX">Constant Field Values</a></dd>
@@ -356,7 +356,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>ROW_BYTES</h4>
-<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestScanWithBloomError.html#line.80">ROW_BYTES</a></pre>
+<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestScanWithBloomError.html#line.81">ROW_BYTES</a></pre>
 </li>
 </ul>
 <a name="allColIds">
@@ -365,7 +365,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>allColIds</h4>
-<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/NavigableSet.html?is-external=true" title="class or interface in java.util">NavigableSet</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestScanWithBloomError.html#line.81">allColIds</a></pre>
+<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/NavigableSet.html?is-external=true" title="class or interface in java.util">NavigableSet</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestScanWithBloomError.html#line.82">allColIds</a></pre>
 </li>
 </ul>
 <a name="region">
@@ -374,7 +374,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>region</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestScanWithBloomError.html#line.82">region</a></pre>
+<pre>private&nbsp;org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestScanWithBloomError.html#line.83">region</a></pre>
 </li>
 </ul>
 <a name="bloomType">
@@ -383,7 +383,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>bloomType</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.regionserver.BloomType <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestScanWithBloomError.html#line.83">bloomType</a></pre>
+<pre>private&nbsp;org.apache.hadoop.hbase.regionserver.BloomType <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestScanWithBloomError.html#line.84">bloomType</a></pre>
 </li>
 </ul>
 <a name="fs">
@@ -392,7 +392,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>fs</h4>
-<pre>private&nbsp;org.apache.hadoop.fs.FileSystem <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestScanWithBloomError.html#line.84">fs</a></pre>
+<pre>private&nbsp;org.apache.hadoop.fs.FileSystem <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestScanWithBloomError.html#line.85">fs</a></pre>
 </li>
 </ul>
 <a name="conf">
@@ -401,7 +401,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>conf</h4>
-<pre>private&nbsp;org.apache.hadoop.conf.Configuration <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestScanWithBloomError.html#line.85">conf</a></pre>
+<pre>private&nbsp;org.apache.hadoop.conf.Configuration <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestScanWithBloomError.html#line.86">conf</a></pre>
 </li>
 </ul>
 <a name="TEST_UTIL">
@@ -410,7 +410,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <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/regionserver/TestScanWithBloomError.html#line.87">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/regionserver/TestScanWithBloomError.html#line.88">TEST_UTIL</a></pre>
 </li>
 </ul>
 </li>
@@ -427,7 +427,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestScanWithBloomError</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestScanWithBloomError.html#line.98">TestScanWithBloomError</a>(org.apache.hadoop.hbase.regionserver.BloomType&nbsp;bloomType)</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestScanWithBloomError.html#line.99">TestScanWithBloomError</a>(org.apache.hadoop.hbase.regionserver.BloomType&nbsp;bloomType)</pre>
 </li>
 </ul>
 </li>
@@ -444,7 +444,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>parameters</h4>
-<pre>public static final&nbsp;<a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestScanWithBloomError.html#line.90">parameters</a>()</pre>
+<pre>public static final&nbsp;<a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestScanWithBloomError.html#line.91">parameters</a>()</pre>
 </li>
 </ul>
 <a name="setUp--">
@@ -453,7 +453,7 @@ extends <a href="https://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/regionserver/TestScanWithBloomError.html#line.103">setUp</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestScanWithBloomError.html#line.104">setUp</a>()
            throws <a href="https://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>
@@ -467,7 +467,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testThreeStoreFiles</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestScanWithBloomError.html#line.109">testThreeStoreFiles</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestScanWithBloomError.html#line.112">testThreeStoreFiles</a>()
                          throws <a href="https://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>
@@ -481,7 +481,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>scanColSet</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestScanWithBloomError.html#line.123">scanColSet</a>(int[]&nbsp;colSet,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestScanWithBloomError.html#line.126">scanColSet</a>(int[]&nbsp;colSet,
                         int[]&nbsp;expectedResultCols)
                  throws <a href="https://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>
@@ -496,7 +496,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>addColumnSetToScan</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestScanWithBloomError.html#line.193">addColumnSetToScan</a>(org.apache.hadoop.hbase.client.Scan&nbsp;scan,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestScanWithBloomError.html#line.196">addColumnSetToScan</a>(org.apache.hadoop.hbase.client.Scan&nbsp;scan,
                                 int[]&nbsp;colIds)</pre>
 </li>
 </ul>
@@ -506,7 +506,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>qualFromId</h4>
-<pre>private&nbsp;<a href="https://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/TestScanWithBloomError.html#line.200">qualFromId</a>(int&nbsp;colId)</pre>
+<pre>private&nbsp;<a href="https://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/TestScanWithBloomError.html#line.203">qualFromId</a>(int&nbsp;colId)</pre>
 </li>
 </ul>
 <a name="createStoreFile-int:A-">
@@ -515,7 +515,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>createStoreFile</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestScanWithBloomError.html#line.204">createStoreFile</a>(int[]&nbsp;colIds)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestScanWithBloomError.html#line.207">createStoreFile</a>(int[]&nbsp;colIds)
                       throws <a href="https://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>


[31/43] hbase-site git commit: Published site at 7ab77518a2569e2416a50020393aa386e7734501.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/devapidocs/org/apache/hadoop/hbase/util/BloomFilterUtil.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/util/BloomFilterUtil.html b/devapidocs/org/apache/hadoop/hbase/util/BloomFilterUtil.html
index ea94e55..9aa2f19 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/BloomFilterUtil.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/BloomFilterUtil.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":9,"i5":9,"i6":9,"i7":9,"i8":9,"i9":9,"i10":9,"i11":9,"i12":9,"i13":9};
+var methods = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":9,"i5":9,"i6":9,"i7":9,"i8":9,"i9":9,"i10":9,"i11":9,"i12":9,"i13":9,"i14":9};
 var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -110,7 +110,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Private
-public final class <a href="../../../../../src-html/org/apache/hadoop/hbase/util/BloomFilterUtil.html#line.34">BloomFilterUtil</a>
+public final class <a href="../../../../../src-html/org/apache/hadoop/hbase/util/BloomFilterUtil.html#line.36">BloomFilterUtil</a>
 extends <a href="https://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">Utility methods related to BloomFilters</div>
 </li>
@@ -138,11 +138,19 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </td>
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><code>static <a href="https://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/util/BloomFilterUtil.html#DELIMITER_KEY">DELIMITER_KEY</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><code>static double</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/BloomFilterUtil.html#LOG2_SQUARED">LOG2_SQUARED</a></span></code>
 <div class="block">Used in computing the optimal Bloom filter size.</div>
 </td>
 </tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static <a href="https://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/util/BloomFilterUtil.html#PREFIX_LENGTH_KEY">PREFIX_LENGTH_KEY</a></span></code>&nbsp;</td>
+</tr>
 <tr class="altColor">
 <td class="colFirst"><code>private static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true" title="class or interface in java.util">Random</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/BloomFilterUtil.html#randomGeneratorForTest">randomGeneratorForTest</a></span></code>
@@ -278,6 +286,11 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </td>
 </tr>
 <tr id="i10" class="altColor">
+<td class="colFirst"><code>static byte[]</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/BloomFilterUtil.html#getBloomFilterParam-org.apache.hadoop.hbase.regionserver.BloomType-org.apache.hadoop.conf.Configuration-">getBloomFilterParam</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/BloomType.html" title="enum in org.apache.hadoop.hbase.regionserver">BloomType</a>&nbsp;bloomFilterType,
+                   org.apache.hadoop.conf.Configuration&nbsp;conf)</code>&nbsp;</td>
+</tr>
+<tr id="i11" class="rowColor">
 <td class="colFirst"><code>static long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/BloomFilterUtil.html#idealMaxKeys-long-double-">idealMaxKeys</a></span>(long&nbsp;bitSize,
             double&nbsp;errorRate)</code>
@@ -287,18 +300,18 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
  (hence the "ideal" in the function name).</div>
 </td>
 </tr>
-<tr id="i11" class="rowColor">
+<tr id="i12" class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/BloomFilterUtil.html#optimalFunctionCount-int-long-">optimalFunctionCount</a></span>(int&nbsp;maxKeys,
                     long&nbsp;bitSize)</code>&nbsp;</td>
 </tr>
-<tr id="i12" class="altColor">
+<tr id="i13" class="rowColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/BloomFilterUtil.html#setRandomGeneratorForTest-java.util.Random-">setRandomGeneratorForTest</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true" title="class or interface in java.util">Random</a>&nbsp;random)</code>
 <div class="block">Sets a random generator to be used for look-ups instead of computing hashes.</div>
 </td>
 </tr>
-<tr id="i13" class="rowColor">
+<tr id="i14" class="altColor">
 <td class="colFirst"><code>static <a href="https://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/util/BloomFilterUtil.html#toString-org.apache.hadoop.hbase.util.BloomFilterChunk-">toString</a></span>(<a href="../../../../../org/apache/hadoop/hbase/util/BloomFilterChunk.html" title="class in org.apache.hadoop.hbase.util">BloomFilterChunk</a>&nbsp;bloomFilter)</code>&nbsp;</td>
 </tr>
@@ -330,7 +343,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>STATS_RECORD_SEP</h4>
-<pre>public static final&nbsp;<a href="https://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/util/BloomFilterUtil.html#line.37">STATS_RECORD_SEP</a></pre>
+<pre>public static final&nbsp;<a href="https://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/util/BloomFilterUtil.html#line.39">STATS_RECORD_SEP</a></pre>
 <div class="block">Record separator for the Bloom filter statistics human-readable string</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -344,7 +357,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG2_SQUARED</h4>
-<pre>public static final&nbsp;double <a href="../../../../../src-html/org/apache/hadoop/hbase/util/BloomFilterUtil.html#line.42">LOG2_SQUARED</a></pre>
+<pre>public static final&nbsp;double <a href="../../../../../src-html/org/apache/hadoop/hbase/util/BloomFilterUtil.html#line.44">LOG2_SQUARED</a></pre>
 <div class="block">Used in computing the optimal Bloom filter size. This approximately equals
  0.480453.</div>
 </li>
@@ -355,18 +368,44 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>randomGeneratorForTest</h4>
-<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true" title="class or interface in java.util">Random</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/util/BloomFilterUtil.html#line.48">randomGeneratorForTest</a></pre>
+<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true" title="class or interface in java.util">Random</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/util/BloomFilterUtil.html#line.50">randomGeneratorForTest</a></pre>
 <div class="block">A random number generator to use for "fake lookups" when testing to
  estimate the ideal false positive rate.</div>
 </li>
 </ul>
+<a name="PREFIX_LENGTH_KEY">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>PREFIX_LENGTH_KEY</h4>
+<pre>public static final&nbsp;<a href="https://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/util/BloomFilterUtil.html#line.52">PREFIX_LENGTH_KEY</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.util.BloomFilterUtil.PREFIX_LENGTH_KEY">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="DELIMITER_KEY">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>DELIMITER_KEY</h4>
+<pre>public static final&nbsp;<a href="https://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/util/BloomFilterUtil.html#line.53">DELIMITER_KEY</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.util.BloomFilterUtil.DELIMITER_KEY">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
 <a name="bitvals">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>bitvals</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/util/BloomFilterUtil.html#line.51">bitvals</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/util/BloomFilterUtil.html#line.56">bitvals</a></pre>
 <div class="block">Bit-value lookup array to prevent doing the same work over and over</div>
 </li>
 </ul>
@@ -384,7 +423,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>BloomFilterUtil</h4>
-<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/BloomFilterUtil.html#line.65">BloomFilterUtil</a>()</pre>
+<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/BloomFilterUtil.html#line.70">BloomFilterUtil</a>()</pre>
 <div class="block">Private constructor to keep this class from being instantiated.</div>
 </li>
 </ul>
@@ -402,7 +441,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>computeBitSize</h4>
-<pre>public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/BloomFilterUtil.html#line.76">computeBitSize</a>(long&nbsp;maxKeys,
+<pre>public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/BloomFilterUtil.html#line.81">computeBitSize</a>(long&nbsp;maxKeys,
                                   double&nbsp;errorRate)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -422,7 +461,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>setRandomGeneratorForTest</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/BloomFilterUtil.html#line.89">setRandomGeneratorForTest</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true" title="class or interface in java.util">Random</a>&nbsp;random)</pre>
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/BloomFilterUtil.html#line.94">setRandomGeneratorForTest</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true" title="class or interface in java.util">Random</a>&nbsp;random)</pre>
 <div class="block">Sets a random generator to be used for look-ups instead of computing hashes. Can be used to
  simulate uniformity of accesses better in a test environment. Should not be set in a real
  environment where correctness matters!
@@ -440,7 +479,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>idealMaxKeys</h4>
-<pre>public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/BloomFilterUtil.html#line.104">idealMaxKeys</a>(long&nbsp;bitSize,
+<pre>public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/BloomFilterUtil.html#line.109">idealMaxKeys</a>(long&nbsp;bitSize,
                                 double&nbsp;errorRate)</pre>
 <div class="block">The maximum number of keys we can put into a Bloom filter of a certain
  size to maintain the given error rate, assuming the number of hash
@@ -463,7 +502,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>computeMaxKeys</h4>
-<pre>public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/BloomFilterUtil.html#line.121">computeMaxKeys</a>(long&nbsp;bitSize,
+<pre>public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/BloomFilterUtil.html#line.126">computeMaxKeys</a>(long&nbsp;bitSize,
                                   double&nbsp;errorRate,
                                   int&nbsp;hashCount)</pre>
 <div class="block">The maximum number of keys we can put into a Bloom filter of a certain
@@ -486,7 +525,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>actualErrorRate</h4>
-<pre>public static&nbsp;double&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/BloomFilterUtil.html#line.139">actualErrorRate</a>(long&nbsp;maxKeys,
+<pre>public static&nbsp;double&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/BloomFilterUtil.html#line.144">actualErrorRate</a>(long&nbsp;maxKeys,
                                      long&nbsp;bitSize,
                                      int&nbsp;functionCount)</pre>
 <div class="block">Computes the actual error rate for the given number of elements, number
@@ -510,7 +549,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>computeFoldableByteSize</h4>
-<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/BloomFilterUtil.html#line.153">computeFoldableByteSize</a>(long&nbsp;bitSize,
+<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/BloomFilterUtil.html#line.158">computeFoldableByteSize</a>(long&nbsp;bitSize,
                                           int&nbsp;foldFactor)</pre>
 <div class="block">Increases the given byte size of a Bloom filter until it can be folded by
  the given factor.</div>
@@ -529,7 +568,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>optimalFunctionCount</h4>
-<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/BloomFilterUtil.html#line.168">optimalFunctionCount</a>(int&nbsp;maxKeys,
+<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/BloomFilterUtil.html#line.173">optimalFunctionCount</a>(int&nbsp;maxKeys,
                                        long&nbsp;bitSize)</pre>
 </li>
 </ul>
@@ -539,7 +578,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>createBySize</h4>
-<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/BloomFilterChunk.html" title="class in org.apache.hadoop.hbase.util">BloomFilterChunk</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/BloomFilterUtil.html#line.188">createBySize</a>(int&nbsp;byteSizeHint,
+<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/BloomFilterChunk.html" title="class in org.apache.hadoop.hbase.util">BloomFilterChunk</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/BloomFilterUtil.html#line.193">createBySize</a>(int&nbsp;byteSizeHint,
                                             double&nbsp;errorRate,
                                             int&nbsp;hashType,
                                             int&nbsp;foldFactor,
@@ -564,7 +603,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>contains</h4>
-<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/BloomFilterUtil.html#line.205">contains</a>(byte[]&nbsp;buf,
+<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/BloomFilterUtil.html#line.210">contains</a>(byte[]&nbsp;buf,
                                int&nbsp;offset,
                                int&nbsp;length,
                                <a href="../../../../../org/apache/hadoop/hbase/nio/ByteBuff.html" title="class in org.apache.hadoop.hbase.nio">ByteBuff</a>&nbsp;bloomBuf,
@@ -580,7 +619,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>contains</h4>
-<pre>private static&nbsp;&lt;T&gt;&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/BloomFilterUtil.html#line.212">contains</a>(<a href="../../../../../org/apache/hadoop/hbase/nio/ByteBuff.html" title="class in org.apache.hadoop.hbase.nio">ByteBuff</a>&nbsp;bloomBuf,
+<pre>private static&nbsp;&lt;T&gt;&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/BloomFilterUtil.html#line.217">contains</a>(<a href="../../../../../org/apache/hadoop/hbase/nio/ByteBuff.html" title="class in org.apache.hadoop.hbase.nio">ByteBuff</a>&nbsp;bloomBuf,
                                     int&nbsp;bloomOffset,
                                     int&nbsp;bloomSize,
                                     <a href="../../../../../org/apache/hadoop/hbase/util/Hash.html" title="class in org.apache.hadoop.hbase.util">Hash</a>&nbsp;hash,
@@ -594,7 +633,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>contains</h4>
-<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/BloomFilterUtil.html#line.240">contains</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/BloomFilterUtil.html#line.245">contains</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/nio/ByteBuff.html" title="class in org.apache.hadoop.hbase.nio">ByteBuff</a>&nbsp;bloomBuf,
                                int&nbsp;bloomOffset,
                                int&nbsp;bloomSize,
@@ -609,7 +648,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>checkBit</h4>
-<pre>static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/BloomFilterUtil.html#line.253">checkBit</a>(int&nbsp;pos,
+<pre>static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/BloomFilterUtil.html#line.258">checkBit</a>(int&nbsp;pos,
                         <a href="../../../../../org/apache/hadoop/hbase/nio/ByteBuff.html" title="class in org.apache.hadoop.hbase.nio">ByteBuff</a>&nbsp;bloomBuf,
                         int&nbsp;bloomOffset)</pre>
 <div class="block">Check if bit at specified index is 1.</div>
@@ -627,7 +666,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>formatStats</h4>
-<pre>public static&nbsp;<a href="https://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/util/BloomFilterUtil.html#line.268">formatStats</a>(<a href="../../../../../org/apache/hadoop/hbase/util/BloomFilterBase.html" title="interface in org.apache.hadoop.hbase.util">BloomFilterBase</a>&nbsp;bloomFilter)</pre>
+<pre>public static&nbsp;<a href="https://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/util/BloomFilterUtil.html#line.273">formatStats</a>(<a href="../../../../../org/apache/hadoop/hbase/util/BloomFilterBase.html" title="interface in org.apache.hadoop.hbase.util">BloomFilterBase</a>&nbsp;bloomFilter)</pre>
 <div class="block">A human-readable string with statistics for the given Bloom filter.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -641,10 +680,25 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <a name="toString-org.apache.hadoop.hbase.util.BloomFilterChunk-">
 <!--   -->
 </a>
-<ul class="blockListLast">
+<ul class="blockList">
 <li class="blockList">
 <h4>toString</h4>
-<pre>public static&nbsp;<a href="https://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/util/BloomFilterUtil.html#line.283">toString</a>(<a href="../../../../../org/apache/hadoop/hbase/util/BloomFilterChunk.html" title="class in org.apache.hadoop.hbase.util">BloomFilterChunk</a>&nbsp;bloomFilter)</pre>
+<pre>public static&nbsp;<a href="https://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/util/BloomFilterUtil.html#line.288">toString</a>(<a href="../../../../../org/apache/hadoop/hbase/util/BloomFilterChunk.html" title="class in org.apache.hadoop.hbase.util">BloomFilterChunk</a>&nbsp;bloomFilter)</pre>
+</li>
+</ul>
+<a name="getBloomFilterParam-org.apache.hadoop.hbase.regionserver.BloomType-org.apache.hadoop.conf.Configuration-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>getBloomFilterParam</h4>
+<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/BloomFilterUtil.html#line.293">getBloomFilterParam</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/BloomType.html" title="enum in org.apache.hadoop.hbase.regionserver">BloomType</a>&nbsp;bloomFilterType,
+                                         org.apache.hadoop.conf.Configuration&nbsp;conf)
+                                  throws <a href="https://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="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang">IllegalArgumentException</a></code></dd>
+</dl>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/devapidocs/org/apache/hadoop/hbase/util/RowBloomContext.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/util/RowBloomContext.html b/devapidocs/org/apache/hadoop/hbase/util/RowBloomContext.html
index 88d090c..8024aa4 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/RowBloomContext.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/RowBloomContext.html
@@ -112,6 +112,10 @@ var activeTableTab = "activeTableTab";
 <div class="description">
 <ul class="blockList">
 <li class="blockList">
+<dl>
+<dt>Direct Known Subclasses:</dt>
+<dd><a href="../../../../../org/apache/hadoop/hbase/util/RowPrefixDelimiterBloomContext.html" title="class in org.apache.hadoop.hbase.util">RowPrefixDelimiterBloomContext</a>, <a href="../../../../../org/apache/hadoop/hbase/util/RowPrefixFixedLengthBloomContext.html" title="class in org.apache.hadoop.hbase.util">RowPrefixFixedLengthBloomContext</a></dd>
+</dl>
 <hr>
 <br>
 <pre>@InterfaceAudience.Private

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/devapidocs/org/apache/hadoop/hbase/util/RowColBloomHashKey.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/util/RowColBloomHashKey.html b/devapidocs/org/apache/hadoop/hbase/util/RowColBloomHashKey.html
index 6a78177..cfa0d36 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/RowColBloomHashKey.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/RowColBloomHashKey.html
@@ -50,7 +50,7 @@ var activeTableTab = "activeTableTab";
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/hadoop/hbase/util/RowColBloomContext.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/util/ServerCommandLine.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/util/RowPrefixDelimiterBloomContext.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/hadoop/hbase/util/RowColBloomHashKey.html" target="_top">Frames</a></li>
@@ -329,7 +329,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/CellHashKey.html" t
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/hadoop/hbase/util/RowColBloomContext.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/util/ServerCommandLine.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/util/RowPrefixDelimiterBloomContext.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/hadoop/hbase/util/RowColBloomHashKey.html" target="_top">Frames</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/devapidocs/org/apache/hadoop/hbase/util/RowPrefixDelimiterBloomContext.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/util/RowPrefixDelimiterBloomContext.html b/devapidocs/org/apache/hadoop/hbase/util/RowPrefixDelimiterBloomContext.html
new file mode 100644
index 0000000..bbefca0
--- /dev/null
+++ b/devapidocs/org/apache/hadoop/hbase/util/RowPrefixDelimiterBloomContext.html
@@ -0,0 +1,376 @@
+<!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>RowPrefixDelimiterBloomContext (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="RowPrefixDelimiterBloomContext (Apache HBase 3.0.0-SNAPSHOT API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10,"i1":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/RowPrefixDelimiterBloomContext.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/util/RowColBloomHashKey.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/util/RowPrefixFixedLengthBloomContext.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/util/RowPrefixDelimiterBloomContext.html" target="_top">Frames</a></li>
+<li><a href="RowPrefixDelimiterBloomContext.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.util</div>
+<h2 title="Class RowPrefixDelimiterBloomContext" class="title">Class RowPrefixDelimiterBloomContext</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li><a href="https://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/util/BloomContext.html" title="class in org.apache.hadoop.hbase.util">org.apache.hadoop.hbase.util.BloomContext</a></li>
+<li>
+<ul class="inheritance">
+<li><a href="../../../../../org/apache/hadoop/hbase/util/RowBloomContext.html" title="class in org.apache.hadoop.hbase.util">org.apache.hadoop.hbase.util.RowBloomContext</a></li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.util.RowPrefixDelimiterBloomContext</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<hr>
+<br>
+<pre>@InterfaceAudience.Private
+public class <a href="../../../../../src-html/org/apache/hadoop/hbase/util/RowPrefixDelimiterBloomContext.html#line.34">RowPrefixDelimiterBloomContext</a>
+extends <a href="../../../../../org/apache/hadoop/hbase/util/RowBloomContext.html" title="class in org.apache.hadoop.hbase.util">RowBloomContext</a></pre>
+<div class="block">Handles ROWPREFIX_DELIMITED bloom related context.
+ It works with both ByteBufferedCell and byte[] backed cells</div>
+</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 byte[]</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/RowPrefixDelimiterBloomContext.html#delimiter">delimiter</a></span></code>&nbsp;</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.org.apache.hadoop.hbase.util.BloomContext">
+<!--   -->
+</a>
+<h3>Fields inherited from class&nbsp;org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/BloomContext.html" title="class in org.apache.hadoop.hbase.util">BloomContext</a></h3>
+<code><a href="../../../../../org/apache/hadoop/hbase/util/BloomContext.html#bloomFilterWriter">bloomFilterWriter</a>, <a href="../../../../../org/apache/hadoop/hbase/util/BloomContext.html#comparator">comparator</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/util/RowPrefixDelimiterBloomContext.html#RowPrefixDelimiterBloomContext-org.apache.hadoop.hbase.util.BloomFilterWriter-org.apache.hadoop.hbase.CellComparator-byte:A-">RowPrefixDelimiterBloomContext</a></span>(<a href="../../../../../org/apache/hadoop/hbase/util/BloomFilterWriter.html" title="interface in org.apache.hadoop.hbase.util">BloomFilterWriter</a>&nbsp;bloomFilterWriter,
+                              <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator,
+                              byte[]&nbsp;delimiter)</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>private <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/util/RowPrefixDelimiterBloomContext.html#getDelimitedRowPrefixCell-org.apache.hadoop.hbase.Cell-">getDelimitedRowPrefixCell</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</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/util/RowPrefixDelimiterBloomContext.html#writeBloom-org.apache.hadoop.hbase.Cell-">writeBloom</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</code>
+<div class="block">Bloom information from the cell is retrieved</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.util.RowBloomContext">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/RowBloomContext.html" title="class in org.apache.hadoop.hbase.util">RowBloomContext</a></h3>
+<code><a href="../../../../../org/apache/hadoop/hbase/util/RowBloomContext.html#addLastBloomKey-org.apache.hadoop.hbase.io.hfile.HFile.Writer-">addLastBloomKey</a>, <a href="../../../../../org/apache/hadoop/hbase/util/RowBloomContext.html#isNewKey-org.apache.hadoop.hbase.Cell-">isNewKey</a></code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.util.BloomContext">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/BloomContext.html" title="class in org.apache.hadoop.hbase.util">BloomContext</a></h3>
+<code><a href="../../../../../org/apache/hadoop/hbase/util/BloomContext.html#getLastCell--">getLastCell</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="https://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="https://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="https://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="https://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="https://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="https://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="https://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="https://docs.oracle.com/javase/8/docs/api/ja
 va/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://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="https://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="https://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="https://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="delimiter">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>delimiter</h4>
+<pre>private final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/util/RowPrefixDelimiterBloomContext.html#line.35">delimiter</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="RowPrefixDelimiterBloomContext-org.apache.hadoop.hbase.util.BloomFilterWriter-org.apache.hadoop.hbase.CellComparator-byte:A-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>RowPrefixDelimiterBloomContext</h4>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/RowPrefixDelimiterBloomContext.html#line.37">RowPrefixDelimiterBloomContext</a>(<a href="../../../../../org/apache/hadoop/hbase/util/BloomFilterWriter.html" title="interface in org.apache.hadoop.hbase.util">BloomFilterWriter</a>&nbsp;bloomFilterWriter,
+                                      <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator,
+                                      byte[]&nbsp;delimiter)</pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="writeBloom-org.apache.hadoop.hbase.Cell-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>writeBloom</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/RowPrefixDelimiterBloomContext.html#line.43">writeBloom</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)
+                throws <a href="https://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/util/BloomContext.html#writeBloom-org.apache.hadoop.hbase.Cell-">BloomContext</a></code></span></div>
+<div class="block">Bloom information from the cell is retrieved</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
+<dd><code><a href="../../../../../org/apache/hadoop/hbase/util/BloomContext.html#writeBloom-org.apache.hadoop.hbase.Cell-">writeBloom</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/util/BloomContext.html" title="class in org.apache.hadoop.hbase.util">BloomContext</a></code></dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://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="getDelimitedRowPrefixCell-org.apache.hadoop.hbase.Cell-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>getDelimitedRowPrefixCell</h4>
+<pre>private&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/util/RowPrefixDelimiterBloomContext.html#line.51">getDelimitedRowPrefixCell</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</pre>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>cell</code> - the new cell</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>the new cell created by delimited row prefix</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/RowPrefixDelimiterBloomContext.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/util/RowColBloomHashKey.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/util/RowPrefixFixedLengthBloomContext.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/util/RowPrefixDelimiterBloomContext.html" target="_top">Frames</a></li>
+<li><a href="RowPrefixDelimiterBloomContext.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;2018 <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/bbe517ae/devapidocs/org/apache/hadoop/hbase/util/RowPrefixFixedLengthBloomContext.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/util/RowPrefixFixedLengthBloomContext.html b/devapidocs/org/apache/hadoop/hbase/util/RowPrefixFixedLengthBloomContext.html
new file mode 100644
index 0000000..0c3e92b
--- /dev/null
+++ b/devapidocs/org/apache/hadoop/hbase/util/RowPrefixFixedLengthBloomContext.html
@@ -0,0 +1,376 @@
+<!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>RowPrefixFixedLengthBloomContext (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="RowPrefixFixedLengthBloomContext (Apache HBase 3.0.0-SNAPSHOT API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10,"i1":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/RowPrefixFixedLengthBloomContext.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/util/RowPrefixDelimiterBloomContext.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/util/ServerCommandLine.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/util/RowPrefixFixedLengthBloomContext.html" target="_top">Frames</a></li>
+<li><a href="RowPrefixFixedLengthBloomContext.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.util</div>
+<h2 title="Class RowPrefixFixedLengthBloomContext" class="title">Class RowPrefixFixedLengthBloomContext</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li><a href="https://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/util/BloomContext.html" title="class in org.apache.hadoop.hbase.util">org.apache.hadoop.hbase.util.BloomContext</a></li>
+<li>
+<ul class="inheritance">
+<li><a href="../../../../../org/apache/hadoop/hbase/util/RowBloomContext.html" title="class in org.apache.hadoop.hbase.util">org.apache.hadoop.hbase.util.RowBloomContext</a></li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.util.RowPrefixFixedLengthBloomContext</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<hr>
+<br>
+<pre>@InterfaceAudience.Private
+public class <a href="../../../../../src-html/org/apache/hadoop/hbase/util/RowPrefixFixedLengthBloomContext.html#line.34">RowPrefixFixedLengthBloomContext</a>
+extends <a href="../../../../../org/apache/hadoop/hbase/util/RowBloomContext.html" title="class in org.apache.hadoop.hbase.util">RowBloomContext</a></pre>
+<div class="block">Handles ROWPREFIX bloom related context.
+ It works with both ByteBufferedCell and byte[] backed cells</div>
+</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 int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/RowPrefixFixedLengthBloomContext.html#prefixLength">prefixLength</a></span></code>&nbsp;</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.org.apache.hadoop.hbase.util.BloomContext">
+<!--   -->
+</a>
+<h3>Fields inherited from class&nbsp;org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/BloomContext.html" title="class in org.apache.hadoop.hbase.util">BloomContext</a></h3>
+<code><a href="../../../../../org/apache/hadoop/hbase/util/BloomContext.html#bloomFilterWriter">bloomFilterWriter</a>, <a href="../../../../../org/apache/hadoop/hbase/util/BloomContext.html#comparator">comparator</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/util/RowPrefixFixedLengthBloomContext.html#RowPrefixFixedLengthBloomContext-org.apache.hadoop.hbase.util.BloomFilterWriter-org.apache.hadoop.hbase.CellComparator-int-">RowPrefixFixedLengthBloomContext</a></span>(<a href="../../../../../org/apache/hadoop/hbase/util/BloomFilterWriter.html" title="interface in org.apache.hadoop.hbase.util">BloomFilterWriter</a>&nbsp;bloomFilterWriter,
+                                <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator,
+                                int&nbsp;prefixLength)</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>private <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/util/RowPrefixFixedLengthBloomContext.html#getRowPrefixCell-org.apache.hadoop.hbase.Cell-">getRowPrefixCell</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</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/util/RowPrefixFixedLengthBloomContext.html#writeBloom-org.apache.hadoop.hbase.Cell-">writeBloom</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</code>
+<div class="block">Bloom information from the cell is retrieved</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.util.RowBloomContext">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/RowBloomContext.html" title="class in org.apache.hadoop.hbase.util">RowBloomContext</a></h3>
+<code><a href="../../../../../org/apache/hadoop/hbase/util/RowBloomContext.html#addLastBloomKey-org.apache.hadoop.hbase.io.hfile.HFile.Writer-">addLastBloomKey</a>, <a href="../../../../../org/apache/hadoop/hbase/util/RowBloomContext.html#isNewKey-org.apache.hadoop.hbase.Cell-">isNewKey</a></code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.util.BloomContext">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/BloomContext.html" title="class in org.apache.hadoop.hbase.util">BloomContext</a></h3>
+<code><a href="../../../../../org/apache/hadoop/hbase/util/BloomContext.html#getLastCell--">getLastCell</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="https://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="https://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="https://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="https://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="https://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="https://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="https://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="https://docs.oracle.com/javase/8/docs/api/ja
 va/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://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="https://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="https://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="https://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="prefixLength">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>prefixLength</h4>
+<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/RowPrefixFixedLengthBloomContext.html#line.35">prefixLength</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="RowPrefixFixedLengthBloomContext-org.apache.hadoop.hbase.util.BloomFilterWriter-org.apache.hadoop.hbase.CellComparator-int-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>RowPrefixFixedLengthBloomContext</h4>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/RowPrefixFixedLengthBloomContext.html#line.37">RowPrefixFixedLengthBloomContext</a>(<a href="../../../../../org/apache/hadoop/hbase/util/BloomFilterWriter.html" title="interface in org.apache.hadoop.hbase.util">BloomFilterWriter</a>&nbsp;bloomFilterWriter,
+                                        <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator,
+                                        int&nbsp;prefixLength)</pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="writeBloom-org.apache.hadoop.hbase.Cell-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>writeBloom</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/RowPrefixFixedLengthBloomContext.html#line.43">writeBloom</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)
+                throws <a href="https://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/util/BloomContext.html#writeBloom-org.apache.hadoop.hbase.Cell-">BloomContext</a></code></span></div>
+<div class="block">Bloom information from the cell is retrieved</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
+<dd><code><a href="../../../../../org/apache/hadoop/hbase/util/BloomContext.html#writeBloom-org.apache.hadoop.hbase.Cell-">writeBloom</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/util/BloomContext.html" title="class in org.apache.hadoop.hbase.util">BloomContext</a></code></dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://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="getRowPrefixCell-org.apache.hadoop.hbase.Cell-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>getRowPrefixCell</h4>
+<pre>private&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/util/RowPrefixFixedLengthBloomContext.html#line.51">getRowPrefixCell</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</pre>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>cell</code> - the cell</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>the new cell created by row prefix</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/RowPrefixFixedLengthBloomContext.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/util/RowPrefixDelimiterBloomContext.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/util/ServerCommandLine.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/util/RowPrefixFixedLengthBloomContext.html" target="_top">Frames</a></li>
+<li><a href="RowPrefixFixedLengthBloomContext.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;2018 <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/bbe517ae/devapidocs/org/apache/hadoop/hbase/util/ServerCommandLine.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/util/ServerCommandLine.html b/devapidocs/org/apache/hadoop/hbase/util/ServerCommandLine.html
index eec8285..bcda1f0 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/ServerCommandLine.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/ServerCommandLine.html
@@ -49,7 +49,7 @@ var activeTableTab = "activeTableTab";
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/util/RowColBloomHashKey.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/util/RowPrefixFixedLengthBloomContext.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../org/apache/hadoop/hbase/util/ServerRegionReplicaUtil.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
@@ -406,7 +406,7 @@ implements org.apache.hadoop.util.Tool</pre>
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/util/RowColBloomHashKey.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/util/RowPrefixFixedLengthBloomContext.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../org/apache/hadoop/hbase/util/ServerRegionReplicaUtil.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/devapidocs/org/apache/hadoop/hbase/util/class-use/BloomContext.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/util/class-use/BloomContext.html b/devapidocs/org/apache/hadoop/hbase/util/class-use/BloomContext.html
index eb6ecc2..749c6de 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/class-use/BloomContext.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/class-use/BloomContext.html
@@ -140,6 +140,18 @@
 <div class="block">Handles ROWCOL bloom related context.</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/util/RowPrefixDelimiterBloomContext.html" title="class in org.apache.hadoop.hbase.util">RowPrefixDelimiterBloomContext</a></span></code>
+<div class="block">Handles ROWPREFIX_DELIMITED bloom related context.</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/util/RowPrefixFixedLengthBloomContext.html" title="class in org.apache.hadoop.hbase.util">RowPrefixFixedLengthBloomContext</a></span></code>
+<div class="block">Handles ROWPREFIX bloom related context.</div>
+</td>
+</tr>
 </tbody>
 </table>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/devapidocs/org/apache/hadoop/hbase/util/class-use/BloomFilterWriter.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/util/class-use/BloomFilterWriter.html b/devapidocs/org/apache/hadoop/hbase/util/class-use/BloomFilterWriter.html
index 1e987ee..04395cb 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/class-use/BloomFilterWriter.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/class-use/BloomFilterWriter.html
@@ -274,6 +274,16 @@
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/util/RowColBloomContext.html#RowColBloomContext-org.apache.hadoop.hbase.util.BloomFilterWriter-org.apache.hadoop.hbase.CellComparator-">RowColBloomContext</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/util/BloomFilterWriter.html" title="interface in org.apache.hadoop.hbase.util">BloomFilterWriter</a>&nbsp;generalBloomFilterWriter,
                   <a href="../../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator)</code>&nbsp;</td>
 </tr>
+<tr class="rowColor">
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/util/RowPrefixDelimiterBloomContext.html#RowPrefixDelimiterBloomContext-org.apache.hadoop.hbase.util.BloomFilterWriter-org.apache.hadoop.hbase.CellComparator-byte:A-">RowPrefixDelimiterBloomContext</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/util/BloomFilterWriter.html" title="interface in org.apache.hadoop.hbase.util">BloomFilterWriter</a>&nbsp;bloomFilterWriter,
+                              <a href="../../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator,
+                              byte[]&nbsp;delimiter)</code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/util/RowPrefixFixedLengthBloomContext.html#RowPrefixFixedLengthBloomContext-org.apache.hadoop.hbase.util.BloomFilterWriter-org.apache.hadoop.hbase.CellComparator-int-">RowPrefixFixedLengthBloomContext</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/util/BloomFilterWriter.html" title="interface in org.apache.hadoop.hbase.util">BloomFilterWriter</a>&nbsp;bloomFilterWriter,
+                                <a href="../../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator,
+                                int&nbsp;prefixLength)</code>&nbsp;</td>
+</tr>
 </tbody>
 </table>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/devapidocs/org/apache/hadoop/hbase/util/class-use/RowBloomContext.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/util/class-use/RowBloomContext.html b/devapidocs/org/apache/hadoop/hbase/util/class-use/RowBloomContext.html
index 4cf7166..6090c42 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/class-use/RowBloomContext.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/class-use/RowBloomContext.html
@@ -72,7 +72,55 @@
 <div class="header">
 <h2 title="Uses of Class org.apache.hadoop.hbase.util.RowBloomContext" class="title">Uses of Class<br>org.apache.hadoop.hbase.util.RowBloomContext</h2>
 </div>
-<div class="classUseContainer">No usage of org.apache.hadoop.hbase.util.RowBloomContext</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/util/RowBloomContext.html" title="class in org.apache.hadoop.hbase.util">RowBloomContext</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.util">org.apache.hadoop.hbase.util</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.util">
+<!--   -->
+</a>
+<h3>Uses of <a href="../../../../../../org/apache/hadoop/hbase/util/RowBloomContext.html" title="class in org.apache.hadoop.hbase.util">RowBloomContext</a> in <a href="../../../../../../org/apache/hadoop/hbase/util/package-summary.html">org.apache.hadoop.hbase.util</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/util/RowBloomContext.html" title="class in org.apache.hadoop.hbase.util">RowBloomContext</a> in <a href="../../../../../../org/apache/hadoop/hbase/util/package-summary.html">org.apache.hadoop.hbase.util</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/util/RowPrefixDelimiterBloomContext.html" title="class in org.apache.hadoop.hbase.util">RowPrefixDelimiterBloomContext</a></span></code>
+<div class="block">Handles ROWPREFIX_DELIMITED bloom related context.</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/util/RowPrefixFixedLengthBloomContext.html" title="class in org.apache.hadoop.hbase.util">RowPrefixFixedLengthBloomContext</a></span></code>
+<div class="block">Handles ROWPREFIX bloom related context.</div>
+</td>
+</tr>
+</tbody>
+</table>
+</li>
+</ul>
+</li>
+</ul>
+</div>
 <!-- ======= START OF BOTTOM NAVBAR ====== -->
 <div class="bottomNav"><a name="navbar.bottom">
 <!--   -->

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/devapidocs/org/apache/hadoop/hbase/util/class-use/RowPrefixDelimiterBloomContext.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/util/class-use/RowPrefixDelimiterBloomContext.html b/devapidocs/org/apache/hadoop/hbase/util/class-use/RowPrefixDelimiterBloomContext.html
new file mode 100644
index 0000000..fb48466
--- /dev/null
+++ b/devapidocs/org/apache/hadoop/hbase/util/class-use/RowPrefixDelimiterBloomContext.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.util.RowPrefixDelimiterBloomContext (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.util.RowPrefixDelimiterBloomContext (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/util/RowPrefixDelimiterBloomContext.html" title="class in org.apache.hadoop.hbase.util">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/util/class-use/RowPrefixDelimiterBloomContext.html" target="_top">Frames</a></li>
+<li><a href="RowPrefixDelimiterBloomContext.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.util.RowPrefixDelimiterBloomContext" class="title">Uses of Class<br>org.apache.hadoop.hbase.util.RowPrefixDelimiterBloomContext</h2>
+</div>
+<div class="classUseContainer">No usage of org.apache.hadoop.hbase.util.RowPrefixDelimiterBloomContext</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/util/RowPrefixDelimiterBloomContext.html" title="class in org.apache.hadoop.hbase.util">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/util/class-use/RowPrefixDelimiterBloomContext.html" target="_top">Frames</a></li>
+<li><a href="RowPrefixDelimiterBloomContext.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;2018 <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/bbe517ae/devapidocs/org/apache/hadoop/hbase/util/class-use/RowPrefixFixedLengthBloomContext.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/util/class-use/RowPrefixFixedLengthBloomContext.html b/devapidocs/org/apache/hadoop/hbase/util/class-use/RowPrefixFixedLengthBloomContext.html
new file mode 100644
index 0000000..cf015c9
--- /dev/null
+++ b/devapidocs/org/apache/hadoop/hbase/util/class-use/RowPrefixFixedLengthBloomContext.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.util.RowPrefixFixedLengthBloomContext (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.util.RowPrefixFixedLengthBloomContext (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/util/RowPrefixFixedLengthBloomContext.html" title="class in org.apache.hadoop.hbase.util">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/util/class-use/RowPrefixFixedLengthBloomContext.html" target="_top">Frames</a></li>
+<li><a href="RowPrefixFixedLengthBloomContext.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.util.RowPrefixFixedLengthBloomContext" class="title">Uses of Class<br>org.apache.hadoop.hbase.util.RowPrefixFixedLengthBloomContext</h2>
+</div>
+<div class="classUseContainer">No usage of org.apache.hadoop.hbase.util.RowPrefixFixedLengthBloomContext</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/util/RowPrefixFixedLengthBloomContext.html" title="class in org.apache.hadoop.hbase.util">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/util/class-use/RowPrefixFixedLengthBloomContext.html" target="_top">Frames</a></li>
+<li><a href="RowPrefixFixedLengthBloomContext.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;2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>


[06/43] hbase-site git commit: Published site at 7ab77518a2569e2416a50020393aa386e7734501.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.html
index 50f9a16..1f24659 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.html
@@ -42,278 +42,301 @@
 <span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.io.hfile.HFileContext;<a name="line.34"></a>
 <span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.io.hfile.HFileContextBuilder;<a name="line.35"></a>
 <span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.util.BloomFilterFactory;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.io.BytesWritable;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.slf4j.Logger;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.slf4j.LoggerFactory;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLineParser;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.HelpFormatter;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.Options;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.ParseException;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.PosixParser;<a name="line.45"></a>
-<span class="sourceLineNo">046</span><a name="line.46"></a>
-<span class="sourceLineNo">047</span>/**<a name="line.47"></a>
-<span class="sourceLineNo">048</span> * Creates an HFile with random key/value pairs.<a name="line.48"></a>
-<span class="sourceLineNo">049</span> */<a name="line.49"></a>
-<span class="sourceLineNo">050</span>public class CreateRandomStoreFile {<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>   * As much as this number of bytes can be added or subtracted from key/value<a name="line.53"></a>
-<span class="sourceLineNo">054</span>   * lengths.<a name="line.54"></a>
-<span class="sourceLineNo">055</span>   */<a name="line.55"></a>
-<span class="sourceLineNo">056</span>  private static final int LEN_VARIATION = 5;<a name="line.56"></a>
-<span class="sourceLineNo">057</span><a name="line.57"></a>
-<span class="sourceLineNo">058</span>  private static final Logger LOG =<a name="line.58"></a>
-<span class="sourceLineNo">059</span>      LoggerFactory.getLogger(CreateRandomStoreFile.class);<a name="line.59"></a>
-<span class="sourceLineNo">060</span>  private static final String OUTPUT_DIR_OPTION = "o";<a name="line.60"></a>
-<span class="sourceLineNo">061</span>  private static final String NUM_KV_OPTION = "n";<a name="line.61"></a>
-<span class="sourceLineNo">062</span>  private static final String HFILE_VERSION_OPTION = "h";<a name="line.62"></a>
-<span class="sourceLineNo">063</span>  private static final String KEY_SIZE_OPTION = "k";<a name="line.63"></a>
-<span class="sourceLineNo">064</span>  private static final String VALUE_SIZE_OPTION = "v";<a name="line.64"></a>
-<span class="sourceLineNo">065</span>  private static final String COMPRESSION_OPTION = "c";<a name="line.65"></a>
-<span class="sourceLineNo">066</span>  private static final String BLOOM_FILTER_OPTION = "bf";<a name="line.66"></a>
-<span class="sourceLineNo">067</span>  private static final String BLOCK_SIZE_OPTION = "bs";<a name="line.67"></a>
-<span class="sourceLineNo">068</span>  private static final String BLOOM_BLOCK_SIZE_OPTION = "bfbs";<a name="line.68"></a>
-<span class="sourceLineNo">069</span>  private static final String INDEX_BLOCK_SIZE_OPTION = "ibs";<a name="line.69"></a>
-<span class="sourceLineNo">070</span><a name="line.70"></a>
-<span class="sourceLineNo">071</span>  /** The exit code this command-line tool returns on failure */<a name="line.71"></a>
-<span class="sourceLineNo">072</span>  private static final int EXIT_FAILURE = 1;<a name="line.72"></a>
-<span class="sourceLineNo">073</span><a name="line.73"></a>
-<span class="sourceLineNo">074</span>  /** The number of valid key types in a store file */<a name="line.74"></a>
-<span class="sourceLineNo">075</span>  private static final int NUM_VALID_KEY_TYPES =<a name="line.75"></a>
-<span class="sourceLineNo">076</span>      KeyValue.Type.values().length - 2;<a name="line.76"></a>
-<span class="sourceLineNo">077</span><a name="line.77"></a>
-<span class="sourceLineNo">078</span>  private Options options = new Options();<a name="line.78"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.util.BloomFilterUtil;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.io.BytesWritable;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.slf4j.Logger;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.slf4j.LoggerFactory;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLineParser;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.HelpFormatter;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.Options;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.ParseException;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.PosixParser;<a name="line.46"></a>
+<span class="sourceLineNo">047</span><a name="line.47"></a>
+<span class="sourceLineNo">048</span>/**<a name="line.48"></a>
+<span class="sourceLineNo">049</span> * Creates an HFile with random key/value pairs.<a name="line.49"></a>
+<span class="sourceLineNo">050</span> */<a name="line.50"></a>
+<span class="sourceLineNo">051</span>public class CreateRandomStoreFile {<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>   * As much as this number of bytes can be added or subtracted from key/value<a name="line.54"></a>
+<span class="sourceLineNo">055</span>   * lengths.<a name="line.55"></a>
+<span class="sourceLineNo">056</span>   */<a name="line.56"></a>
+<span class="sourceLineNo">057</span>  private static final int LEN_VARIATION = 5;<a name="line.57"></a>
+<span class="sourceLineNo">058</span><a name="line.58"></a>
+<span class="sourceLineNo">059</span>  private static final Logger LOG =<a name="line.59"></a>
+<span class="sourceLineNo">060</span>      LoggerFactory.getLogger(CreateRandomStoreFile.class);<a name="line.60"></a>
+<span class="sourceLineNo">061</span>  private static final String OUTPUT_DIR_OPTION = "o";<a name="line.61"></a>
+<span class="sourceLineNo">062</span>  private static final String NUM_KV_OPTION = "n";<a name="line.62"></a>
+<span class="sourceLineNo">063</span>  private static final String HFILE_VERSION_OPTION = "h";<a name="line.63"></a>
+<span class="sourceLineNo">064</span>  private static final String KEY_SIZE_OPTION = "k";<a name="line.64"></a>
+<span class="sourceLineNo">065</span>  private static final String VALUE_SIZE_OPTION = "v";<a name="line.65"></a>
+<span class="sourceLineNo">066</span>  private static final String COMPRESSION_OPTION = "c";<a name="line.66"></a>
+<span class="sourceLineNo">067</span>  private static final String BLOOM_FILTER_OPTION = "bf";<a name="line.67"></a>
+<span class="sourceLineNo">068</span>  private static final String BLOOM_FILTER_PARAM_OPTION = "bfp";<a name="line.68"></a>
+<span class="sourceLineNo">069</span>  private static final String BLOCK_SIZE_OPTION = "bs";<a name="line.69"></a>
+<span class="sourceLineNo">070</span>  private static final String BLOOM_BLOCK_SIZE_OPTION = "bfbs";<a name="line.70"></a>
+<span class="sourceLineNo">071</span>  private static final String INDEX_BLOCK_SIZE_OPTION = "ibs";<a name="line.71"></a>
+<span class="sourceLineNo">072</span><a name="line.72"></a>
+<span class="sourceLineNo">073</span>  /** The exit code this command-line tool returns on failure */<a name="line.73"></a>
+<span class="sourceLineNo">074</span>  private static final int EXIT_FAILURE = 1;<a name="line.74"></a>
+<span class="sourceLineNo">075</span><a name="line.75"></a>
+<span class="sourceLineNo">076</span>  /** The number of valid key types in a store file */<a name="line.76"></a>
+<span class="sourceLineNo">077</span>  private static final int NUM_VALID_KEY_TYPES =<a name="line.77"></a>
+<span class="sourceLineNo">078</span>      KeyValue.Type.values().length - 2;<a name="line.78"></a>
 <span class="sourceLineNo">079</span><a name="line.79"></a>
-<span class="sourceLineNo">080</span>  private int keyPrefixLen, keyLen, rowLen, cfLen, valueLen;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>  private Random rand;<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>   * Runs the tools.<a name="line.84"></a>
-<span class="sourceLineNo">085</span>   *<a name="line.85"></a>
-<span class="sourceLineNo">086</span>   * @param args command-line arguments<a name="line.86"></a>
-<span class="sourceLineNo">087</span>   * @return true in case of success<a name="line.87"></a>
-<span class="sourceLineNo">088</span>   * @throws IOException<a name="line.88"></a>
-<span class="sourceLineNo">089</span>   */<a name="line.89"></a>
-<span class="sourceLineNo">090</span>  public boolean run(String[] args) throws IOException {<a name="line.90"></a>
-<span class="sourceLineNo">091</span>    options.addOption(OUTPUT_DIR_OPTION, "output_dir", true,<a name="line.91"></a>
-<span class="sourceLineNo">092</span>        "Output directory");<a name="line.92"></a>
-<span class="sourceLineNo">093</span>    options.addOption(NUM_KV_OPTION, "num_kv", true,<a name="line.93"></a>
-<span class="sourceLineNo">094</span>        "Number of key/value pairs");<a name="line.94"></a>
-<span class="sourceLineNo">095</span>    options.addOption(KEY_SIZE_OPTION, "key_size", true, "Average key size");<a name="line.95"></a>
-<span class="sourceLineNo">096</span>    options.addOption(VALUE_SIZE_OPTION, "value_size", true,<a name="line.96"></a>
-<span class="sourceLineNo">097</span>        "Average value size");<a name="line.97"></a>
-<span class="sourceLineNo">098</span>    options.addOption(HFILE_VERSION_OPTION, "hfile_version", true,<a name="line.98"></a>
-<span class="sourceLineNo">099</span>        "HFile version to create");<a name="line.99"></a>
-<span class="sourceLineNo">100</span>    options.addOption(COMPRESSION_OPTION, "compression", true,<a name="line.100"></a>
-<span class="sourceLineNo">101</span>        " Compression type, one of "<a name="line.101"></a>
-<span class="sourceLineNo">102</span>            + Arrays.toString(Compression.Algorithm.values()));<a name="line.102"></a>
-<span class="sourceLineNo">103</span>    options.addOption(BLOOM_FILTER_OPTION, "bloom_filter", true,<a name="line.103"></a>
-<span class="sourceLineNo">104</span>        "Bloom filter type, one of "<a name="line.104"></a>
-<span class="sourceLineNo">105</span>            + Arrays.toString(BloomType.values()));<a name="line.105"></a>
-<span class="sourceLineNo">106</span>    options.addOption(BLOCK_SIZE_OPTION, "block_size", true,<a name="line.106"></a>
-<span class="sourceLineNo">107</span>        "HFile block size");<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    options.addOption(BLOOM_BLOCK_SIZE_OPTION, "bloom_block_size", true,<a name="line.108"></a>
-<span class="sourceLineNo">109</span>        "Compound Bloom filters block size");<a name="line.109"></a>
-<span class="sourceLineNo">110</span>    options.addOption(INDEX_BLOCK_SIZE_OPTION, "index_block_size", true,<a name="line.110"></a>
-<span class="sourceLineNo">111</span>        "Index block size");<a name="line.111"></a>
-<span class="sourceLineNo">112</span><a name="line.112"></a>
-<span class="sourceLineNo">113</span>    if (args.length == 0) {<a name="line.113"></a>
-<span class="sourceLineNo">114</span>      HelpFormatter formatter = new HelpFormatter();<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      formatter.printHelp(CreateRandomStoreFile.class.getSimpleName(), options,<a name="line.115"></a>
-<span class="sourceLineNo">116</span>          true);<a name="line.116"></a>
-<span class="sourceLineNo">117</span>      return false;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    }<a name="line.118"></a>
-<span class="sourceLineNo">119</span><a name="line.119"></a>
-<span class="sourceLineNo">120</span>    CommandLineParser parser = new PosixParser();<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    CommandLine cmdLine;<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    try {<a name="line.122"></a>
-<span class="sourceLineNo">123</span>      cmdLine = parser.parse(options, args);<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    } catch (ParseException ex) {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>      LOG.error(ex.toString(), ex);<a name="line.125"></a>
-<span class="sourceLineNo">126</span>      return false;<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    }<a name="line.127"></a>
-<span class="sourceLineNo">128</span><a name="line.128"></a>
-<span class="sourceLineNo">129</span>    if (!cmdLine.hasOption(OUTPUT_DIR_OPTION)) {<a name="line.129"></a>
-<span class="sourceLineNo">130</span>      LOG.error("Output directory is not specified");<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      return false;<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    }<a name="line.132"></a>
-<span class="sourceLineNo">133</span><a name="line.133"></a>
-<span class="sourceLineNo">134</span>    if (!cmdLine.hasOption(NUM_KV_OPTION)) {<a name="line.134"></a>
-<span class="sourceLineNo">135</span>      LOG.error("The number of keys/values not specified");<a name="line.135"></a>
-<span class="sourceLineNo">136</span>      return false;<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>    if (!cmdLine.hasOption(KEY_SIZE_OPTION)) {<a name="line.139"></a>
-<span class="sourceLineNo">140</span>      LOG.error("Key size is not specified");<a name="line.140"></a>
-<span class="sourceLineNo">141</span>      return false;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    }<a name="line.142"></a>
-<span class="sourceLineNo">143</span><a name="line.143"></a>
-<span class="sourceLineNo">144</span>    if (!cmdLine.hasOption(VALUE_SIZE_OPTION)) {<a name="line.144"></a>
-<span class="sourceLineNo">145</span>      LOG.error("Value size not specified");<a name="line.145"></a>
-<span class="sourceLineNo">146</span>      return false;<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    }<a name="line.147"></a>
-<span class="sourceLineNo">148</span><a name="line.148"></a>
-<span class="sourceLineNo">149</span>    Configuration conf = HBaseConfiguration.create();<a name="line.149"></a>
-<span class="sourceLineNo">150</span><a name="line.150"></a>
-<span class="sourceLineNo">151</span>    Path outputDir = new Path(cmdLine.getOptionValue(OUTPUT_DIR_OPTION));<a name="line.151"></a>
+<span class="sourceLineNo">080</span>  private Options options = new Options();<a name="line.80"></a>
+<span class="sourceLineNo">081</span><a name="line.81"></a>
+<span class="sourceLineNo">082</span>  private int keyPrefixLen, keyLen, rowLen, cfLen, valueLen;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>  private Random rand;<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>   * Runs the tools.<a name="line.86"></a>
+<span class="sourceLineNo">087</span>   *<a name="line.87"></a>
+<span class="sourceLineNo">088</span>   * @param args command-line arguments<a name="line.88"></a>
+<span class="sourceLineNo">089</span>   * @return true in case of success<a name="line.89"></a>
+<span class="sourceLineNo">090</span>   * @throws IOException<a name="line.90"></a>
+<span class="sourceLineNo">091</span>   */<a name="line.91"></a>
+<span class="sourceLineNo">092</span>  public boolean run(String[] args) throws IOException {<a name="line.92"></a>
+<span class="sourceLineNo">093</span>    options.addOption(OUTPUT_DIR_OPTION, "output_dir", true,<a name="line.93"></a>
+<span class="sourceLineNo">094</span>        "Output directory");<a name="line.94"></a>
+<span class="sourceLineNo">095</span>    options.addOption(NUM_KV_OPTION, "num_kv", true,<a name="line.95"></a>
+<span class="sourceLineNo">096</span>        "Number of key/value pairs");<a name="line.96"></a>
+<span class="sourceLineNo">097</span>    options.addOption(KEY_SIZE_OPTION, "key_size", true, "Average key size");<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    options.addOption(VALUE_SIZE_OPTION, "value_size", true,<a name="line.98"></a>
+<span class="sourceLineNo">099</span>        "Average value size");<a name="line.99"></a>
+<span class="sourceLineNo">100</span>    options.addOption(HFILE_VERSION_OPTION, "hfile_version", true,<a name="line.100"></a>
+<span class="sourceLineNo">101</span>        "HFile version to create");<a name="line.101"></a>
+<span class="sourceLineNo">102</span>    options.addOption(COMPRESSION_OPTION, "compression", true,<a name="line.102"></a>
+<span class="sourceLineNo">103</span>        " Compression type, one of "<a name="line.103"></a>
+<span class="sourceLineNo">104</span>            + Arrays.toString(Compression.Algorithm.values()));<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    options.addOption(BLOOM_FILTER_OPTION, "bloom_filter", true,<a name="line.105"></a>
+<span class="sourceLineNo">106</span>        "Bloom filter type, one of "<a name="line.106"></a>
+<span class="sourceLineNo">107</span>            + Arrays.toString(BloomType.values()));<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    options.addOption(BLOOM_FILTER_PARAM_OPTION, "bloom_param", true,<a name="line.108"></a>
+<span class="sourceLineNo">109</span>        "the parameter of the bloom filter");<a name="line.109"></a>
+<span class="sourceLineNo">110</span>    options.addOption(BLOCK_SIZE_OPTION, "block_size", true,<a name="line.110"></a>
+<span class="sourceLineNo">111</span>        "HFile block size");<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    options.addOption(BLOOM_BLOCK_SIZE_OPTION, "bloom_block_size", true,<a name="line.112"></a>
+<span class="sourceLineNo">113</span>        "Compound Bloom filters block size");<a name="line.113"></a>
+<span class="sourceLineNo">114</span>    options.addOption(INDEX_BLOCK_SIZE_OPTION, "index_block_size", true,<a name="line.114"></a>
+<span class="sourceLineNo">115</span>        "Index block size");<a name="line.115"></a>
+<span class="sourceLineNo">116</span><a name="line.116"></a>
+<span class="sourceLineNo">117</span>    if (args.length == 0) {<a name="line.117"></a>
+<span class="sourceLineNo">118</span>      HelpFormatter formatter = new HelpFormatter();<a name="line.118"></a>
+<span class="sourceLineNo">119</span>      formatter.printHelp(CreateRandomStoreFile.class.getSimpleName(), options,<a name="line.119"></a>
+<span class="sourceLineNo">120</span>          true);<a name="line.120"></a>
+<span class="sourceLineNo">121</span>      return false;<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    }<a name="line.122"></a>
+<span class="sourceLineNo">123</span><a name="line.123"></a>
+<span class="sourceLineNo">124</span>    CommandLineParser parser = new PosixParser();<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    CommandLine cmdLine;<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    try {<a name="line.126"></a>
+<span class="sourceLineNo">127</span>      cmdLine = parser.parse(options, args);<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    } catch (ParseException ex) {<a name="line.128"></a>
+<span class="sourceLineNo">129</span>      LOG.error(ex.toString(), ex);<a name="line.129"></a>
+<span class="sourceLineNo">130</span>      return false;<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    }<a name="line.131"></a>
+<span class="sourceLineNo">132</span><a name="line.132"></a>
+<span class="sourceLineNo">133</span>    if (!cmdLine.hasOption(OUTPUT_DIR_OPTION)) {<a name="line.133"></a>
+<span class="sourceLineNo">134</span>      LOG.error("Output directory is not specified");<a name="line.134"></a>
+<span class="sourceLineNo">135</span>      return false;<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>    if (!cmdLine.hasOption(NUM_KV_OPTION)) {<a name="line.138"></a>
+<span class="sourceLineNo">139</span>      LOG.error("The number of keys/values not specified");<a name="line.139"></a>
+<span class="sourceLineNo">140</span>      return false;<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>    if (!cmdLine.hasOption(KEY_SIZE_OPTION)) {<a name="line.143"></a>
+<span class="sourceLineNo">144</span>      LOG.error("Key size is not specified");<a name="line.144"></a>
+<span class="sourceLineNo">145</span>      return false;<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>    if (!cmdLine.hasOption(VALUE_SIZE_OPTION)) {<a name="line.148"></a>
+<span class="sourceLineNo">149</span>      LOG.error("Value size not specified");<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      return false;<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    }<a name="line.151"></a>
 <span class="sourceLineNo">152</span><a name="line.152"></a>
-<span class="sourceLineNo">153</span>    long numKV = Long.parseLong(cmdLine.getOptionValue(NUM_KV_OPTION));<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    configureKeyValue(numKV,<a name="line.154"></a>
-<span class="sourceLineNo">155</span>        Integer.parseInt(cmdLine.getOptionValue(KEY_SIZE_OPTION)),<a name="line.155"></a>
-<span class="sourceLineNo">156</span>        Integer.parseInt(cmdLine.getOptionValue(VALUE_SIZE_OPTION)));<a name="line.156"></a>
-<span class="sourceLineNo">157</span><a name="line.157"></a>
-<span class="sourceLineNo">158</span>    FileSystem fs = FileSystem.get(conf);<a name="line.158"></a>
-<span class="sourceLineNo">159</span><a name="line.159"></a>
-<span class="sourceLineNo">160</span>    Compression.Algorithm compr = Compression.Algorithm.NONE;<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    if (cmdLine.hasOption(COMPRESSION_OPTION)) {<a name="line.161"></a>
-<span class="sourceLineNo">162</span>      compr = Compression.Algorithm.valueOf(<a name="line.162"></a>
-<span class="sourceLineNo">163</span>          cmdLine.getOptionValue(COMPRESSION_OPTION));<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>    BloomType bloomType = BloomType.NONE;<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    if (cmdLine.hasOption(BLOOM_FILTER_OPTION)) {<a name="line.167"></a>
-<span class="sourceLineNo">168</span>      bloomType = BloomType.valueOf(cmdLine.getOptionValue(<a name="line.168"></a>
-<span class="sourceLineNo">169</span>          BLOOM_FILTER_OPTION));<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    }<a name="line.170"></a>
-<span class="sourceLineNo">171</span><a name="line.171"></a>
-<span class="sourceLineNo">172</span>    int blockSize = HConstants.DEFAULT_BLOCKSIZE;<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    if (cmdLine.hasOption(BLOCK_SIZE_OPTION))<a name="line.173"></a>
-<span class="sourceLineNo">174</span>      blockSize = Integer.valueOf(cmdLine.getOptionValue(BLOCK_SIZE_OPTION));<a name="line.174"></a>
+<span class="sourceLineNo">153</span>    Configuration conf = HBaseConfiguration.create();<a name="line.153"></a>
+<span class="sourceLineNo">154</span><a name="line.154"></a>
+<span class="sourceLineNo">155</span>    Path outputDir = new Path(cmdLine.getOptionValue(OUTPUT_DIR_OPTION));<a name="line.155"></a>
+<span class="sourceLineNo">156</span><a name="line.156"></a>
+<span class="sourceLineNo">157</span>    long numKV = Long.parseLong(cmdLine.getOptionValue(NUM_KV_OPTION));<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    configureKeyValue(numKV,<a name="line.158"></a>
+<span class="sourceLineNo">159</span>        Integer.parseInt(cmdLine.getOptionValue(KEY_SIZE_OPTION)),<a name="line.159"></a>
+<span class="sourceLineNo">160</span>        Integer.parseInt(cmdLine.getOptionValue(VALUE_SIZE_OPTION)));<a name="line.160"></a>
+<span class="sourceLineNo">161</span><a name="line.161"></a>
+<span class="sourceLineNo">162</span>    FileSystem fs = FileSystem.get(conf);<a name="line.162"></a>
+<span class="sourceLineNo">163</span><a name="line.163"></a>
+<span class="sourceLineNo">164</span>    Compression.Algorithm compr = Compression.Algorithm.NONE;<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    if (cmdLine.hasOption(COMPRESSION_OPTION)) {<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      compr = Compression.Algorithm.valueOf(<a name="line.166"></a>
+<span class="sourceLineNo">167</span>          cmdLine.getOptionValue(COMPRESSION_OPTION));<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    }<a name="line.168"></a>
+<span class="sourceLineNo">169</span><a name="line.169"></a>
+<span class="sourceLineNo">170</span>    BloomType bloomType = BloomType.NONE;<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    if (cmdLine.hasOption(BLOOM_FILTER_OPTION)) {<a name="line.171"></a>
+<span class="sourceLineNo">172</span>      bloomType = BloomType.valueOf(cmdLine.getOptionValue(<a name="line.172"></a>
+<span class="sourceLineNo">173</span>          BLOOM_FILTER_OPTION));<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    }<a name="line.174"></a>
 <span class="sourceLineNo">175</span><a name="line.175"></a>
-<span class="sourceLineNo">176</span>    if (cmdLine.hasOption(BLOOM_BLOCK_SIZE_OPTION)) {<a name="line.176"></a>
-<span class="sourceLineNo">177</span>      conf.setInt(BloomFilterFactory.IO_STOREFILE_BLOOM_BLOCK_SIZE,<a name="line.177"></a>
-<span class="sourceLineNo">178</span>          Integer.valueOf(cmdLine.getOptionValue(BLOOM_BLOCK_SIZE_OPTION)));<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    }<a name="line.179"></a>
-<span class="sourceLineNo">180</span><a name="line.180"></a>
-<span class="sourceLineNo">181</span>    if (cmdLine.hasOption(INDEX_BLOCK_SIZE_OPTION)) {<a name="line.181"></a>
-<span class="sourceLineNo">182</span>      conf.setInt(HFileBlockIndex.MAX_CHUNK_SIZE_KEY,<a name="line.182"></a>
-<span class="sourceLineNo">183</span>          Integer.valueOf(cmdLine.getOptionValue(INDEX_BLOCK_SIZE_OPTION)));<a name="line.183"></a>
+<span class="sourceLineNo">176</span>    if (bloomType == BloomType.ROWPREFIX_FIXED_LENGTH) {<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      if (!cmdLine.hasOption(BLOOM_FILTER_PARAM_OPTION)) {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>        LOG.error("the parameter of bloom filter is not specified");<a name="line.178"></a>
+<span class="sourceLineNo">179</span>        return false;<a name="line.179"></a>
+<span class="sourceLineNo">180</span>      } else {<a name="line.180"></a>
+<span class="sourceLineNo">181</span>        conf.set(BloomFilterUtil.PREFIX_LENGTH_KEY,<a name="line.181"></a>
+<span class="sourceLineNo">182</span>            cmdLine.getOptionValue(BLOOM_FILTER_PARAM_OPTION));<a name="line.182"></a>
+<span class="sourceLineNo">183</span>      }<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>    HFileContext meta = new HFileContextBuilder().withCompression(compr)<a name="line.186"></a>
-<span class="sourceLineNo">187</span>                        .withBlockSize(blockSize).build();<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    StoreFileWriter sfw = new StoreFileWriter.Builder(conf,<a name="line.188"></a>
-<span class="sourceLineNo">189</span>        new CacheConfig(conf), fs)<a name="line.189"></a>
-<span class="sourceLineNo">190</span>            .withOutputDir(outputDir)<a name="line.190"></a>
-<span class="sourceLineNo">191</span>            .withBloomType(bloomType)<a name="line.191"></a>
-<span class="sourceLineNo">192</span>            .withMaxKeyCount(numKV)<a name="line.192"></a>
-<span class="sourceLineNo">193</span>            .withFileContext(meta)<a name="line.193"></a>
-<span class="sourceLineNo">194</span>            .build();<a name="line.194"></a>
-<span class="sourceLineNo">195</span><a name="line.195"></a>
-<span class="sourceLineNo">196</span>    rand = new Random();<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    LOG.info("Writing " + numKV + " key/value pairs");<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    for (long i = 0; i &lt; numKV; ++i) {<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      sfw.append(generateKeyValue(i));<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>    int numMetaBlocks = rand.nextInt(10) + 1;<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    LOG.info("Writing " + numMetaBlocks + " meta blocks");<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    for (int metaI = 0; metaI &lt; numMetaBlocks; ++metaI) {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      sfw.getHFileWriter().appendMetaBlock(generateString(),<a name="line.205"></a>
-<span class="sourceLineNo">206</span>          new BytesWritable(generateValue()));<a name="line.206"></a>
+<span class="sourceLineNo">186</span>    if (bloomType == BloomType.ROWPREFIX_DELIMITED) {<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      if (!cmdLine.hasOption(BLOOM_FILTER_PARAM_OPTION)) {<a name="line.187"></a>
+<span class="sourceLineNo">188</span>        LOG.error("the parameter of bloom filter is not specified");<a name="line.188"></a>
+<span class="sourceLineNo">189</span>        return false;<a name="line.189"></a>
+<span class="sourceLineNo">190</span>      } else {<a name="line.190"></a>
+<span class="sourceLineNo">191</span>        conf.set(BloomFilterUtil.DELIMITER_KEY, cmdLine.getOptionValue(BLOOM_FILTER_PARAM_OPTION));<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>    int blockSize = HConstants.DEFAULT_BLOCKSIZE;<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    if (cmdLine.hasOption(BLOCK_SIZE_OPTION))<a name="line.196"></a>
+<span class="sourceLineNo">197</span>      blockSize = Integer.valueOf(cmdLine.getOptionValue(BLOCK_SIZE_OPTION));<a name="line.197"></a>
+<span class="sourceLineNo">198</span><a name="line.198"></a>
+<span class="sourceLineNo">199</span>    if (cmdLine.hasOption(BLOOM_BLOCK_SIZE_OPTION)) {<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      conf.setInt(BloomFilterFactory.IO_STOREFILE_BLOOM_BLOCK_SIZE,<a name="line.200"></a>
+<span class="sourceLineNo">201</span>          Integer.valueOf(cmdLine.getOptionValue(BLOOM_BLOCK_SIZE_OPTION)));<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>    if (cmdLine.hasOption(INDEX_BLOCK_SIZE_OPTION)) {<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      conf.setInt(HFileBlockIndex.MAX_CHUNK_SIZE_KEY,<a name="line.205"></a>
+<span class="sourceLineNo">206</span>          Integer.valueOf(cmdLine.getOptionValue(INDEX_BLOCK_SIZE_OPTION)));<a name="line.206"></a>
 <span class="sourceLineNo">207</span>    }<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    sfw.close();<a name="line.208"></a>
-<span class="sourceLineNo">209</span><a name="line.209"></a>
-<span class="sourceLineNo">210</span>    Path storeFilePath = sfw.getPath();<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    long fileSize = fs.getFileStatus(storeFilePath).getLen();<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    LOG.info("Created " + storeFilePath + ", " + fileSize + " bytes");<a name="line.212"></a>
-<span class="sourceLineNo">213</span><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>  private void configureKeyValue(long numKV, int keyLen, int valueLen) {<a name="line.217"></a>
-<span class="sourceLineNo">218</span>    numKV = Math.abs(numKV);<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    keyLen = Math.abs(keyLen);<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    keyPrefixLen = 0;<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    while (numKV != 0) {<a name="line.221"></a>
-<span class="sourceLineNo">222</span>      numKV &gt;&gt;&gt;= 8;<a name="line.222"></a>
-<span class="sourceLineNo">223</span>      ++keyPrefixLen;<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>    this.keyLen = Math.max(keyPrefixLen, keyLen);<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    this.valueLen = valueLen;<a name="line.227"></a>
-<span class="sourceLineNo">228</span><a name="line.228"></a>
-<span class="sourceLineNo">229</span>    // Arbitrarily split the key into row, column family, and qualifier.<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    rowLen = keyPrefixLen / 3;<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    cfLen = keyPrefixLen / 4;<a name="line.231"></a>
-<span class="sourceLineNo">232</span>  }<a name="line.232"></a>
-<span class="sourceLineNo">233</span><a name="line.233"></a>
-<span class="sourceLineNo">234</span>  private int nextInRange(int range) {<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    return rand.nextInt(2 * range + 1) - range;<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>  public KeyValue generateKeyValue(long i) {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    byte[] k = generateKey(i);<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    byte[] v = generateValue();<a name="line.240"></a>
-<span class="sourceLineNo">241</span><a name="line.241"></a>
-<span class="sourceLineNo">242</span>    return new KeyValue(<a name="line.242"></a>
-<span class="sourceLineNo">243</span>        k, 0, rowLen,<a name="line.243"></a>
-<span class="sourceLineNo">244</span>        k, rowLen, cfLen,<a name="line.244"></a>
-<span class="sourceLineNo">245</span>        k, rowLen + cfLen, k.length - rowLen - cfLen,<a name="line.245"></a>
-<span class="sourceLineNo">246</span>        rand.nextLong(),<a name="line.246"></a>
-<span class="sourceLineNo">247</span>        generateKeyType(rand),<a name="line.247"></a>
-<span class="sourceLineNo">248</span>        v, 0, v.length);<a name="line.248"></a>
-<span class="sourceLineNo">249</span>  }<a name="line.249"></a>
-<span class="sourceLineNo">250</span><a name="line.250"></a>
-<span class="sourceLineNo">251</span>  public static KeyValue.Type generateKeyType(Random rand) {<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    if (rand.nextBoolean()) {<a name="line.252"></a>
-<span class="sourceLineNo">253</span>      // Let's make half of KVs puts.<a name="line.253"></a>
-<span class="sourceLineNo">254</span>      return KeyValue.Type.Put;<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    } else {<a name="line.255"></a>
-<span class="sourceLineNo">256</span>      KeyValue.Type keyType =<a name="line.256"></a>
-<span class="sourceLineNo">257</span>          KeyValue.Type.values()[1 + rand.nextInt(NUM_VALID_KEY_TYPES)];<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      if (keyType == KeyValue.Type.Minimum || keyType == KeyValue.Type.Maximum)<a name="line.258"></a>
-<span class="sourceLineNo">259</span>      {<a name="line.259"></a>
-<span class="sourceLineNo">260</span>        throw new RuntimeException("Generated an invalid key type: " + keyType<a name="line.260"></a>
-<span class="sourceLineNo">261</span>            + ". " + "Probably the layout of KeyValue.Type has changed.");<a name="line.261"></a>
-<span class="sourceLineNo">262</span>      }<a name="line.262"></a>
-<span class="sourceLineNo">263</span>      return keyType;<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">266</span><a name="line.266"></a>
-<span class="sourceLineNo">267</span>  private String generateString() {<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    StringBuilder sb = new StringBuilder();<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    for (int i = 0; i &lt; rand.nextInt(10); ++i) {<a name="line.269"></a>
-<span class="sourceLineNo">270</span>      sb.append((char) ('A' + rand.nextInt(26)));<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    }<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    return sb.toString();<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 byte[] generateKey(long i) {<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    byte[] k = new byte[Math.max(keyPrefixLen, keyLen<a name="line.276"></a>
-<span class="sourceLineNo">277</span>        + nextInRange(LEN_VARIATION))];<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    for (int pos = keyPrefixLen - 1; pos &gt;= 0; --pos) {<a name="line.278"></a>
-<span class="sourceLineNo">279</span>      k[pos] = (byte) (i &amp; 0xFF);<a name="line.279"></a>
-<span class="sourceLineNo">280</span>      i &gt;&gt;&gt;= 8;<a name="line.280"></a>
-<span class="sourceLineNo">281</span>    }<a name="line.281"></a>
-<span class="sourceLineNo">282</span>    for (int pos = keyPrefixLen; pos &lt; k.length; ++pos) {<a name="line.282"></a>
-<span class="sourceLineNo">283</span>      k[pos] = (byte) rand.nextInt(256);<a name="line.283"></a>
-<span class="sourceLineNo">284</span>    }<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    return k;<a name="line.285"></a>
-<span class="sourceLineNo">286</span>  }<a name="line.286"></a>
-<span class="sourceLineNo">287</span><a name="line.287"></a>
-<span class="sourceLineNo">288</span>  private byte[] generateValue() {<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    byte[] v = new byte[Math.max(1, valueLen + nextInRange(LEN_VARIATION))];<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    for (int i = 0; i &lt; v.length; ++i) {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>      v[i] = (byte) rand.nextInt(256);<a name="line.291"></a>
-<span class="sourceLineNo">292</span>    }<a name="line.292"></a>
-<span class="sourceLineNo">293</span>    return v;<a name="line.293"></a>
-<span class="sourceLineNo">294</span>  }<a name="line.294"></a>
-<span class="sourceLineNo">295</span><a name="line.295"></a>
-<span class="sourceLineNo">296</span>  public static void main(String[] args) {<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    CreateRandomStoreFile app = new CreateRandomStoreFile();<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    try {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>      if (!app.run(args))<a name="line.299"></a>
-<span class="sourceLineNo">300</span>        System.exit(EXIT_FAILURE);<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    } catch (IOException ex) {<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      LOG.error(ex.toString(), ex);<a name="line.302"></a>
-<span class="sourceLineNo">303</span>      System.exit(EXIT_FAILURE);<a name="line.303"></a>
+<span class="sourceLineNo">208</span><a name="line.208"></a>
+<span class="sourceLineNo">209</span>    HFileContext meta = new HFileContextBuilder().withCompression(compr)<a name="line.209"></a>
+<span class="sourceLineNo">210</span>                        .withBlockSize(blockSize).build();<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    StoreFileWriter sfw = new StoreFileWriter.Builder(conf,<a name="line.211"></a>
+<span class="sourceLineNo">212</span>        new CacheConfig(conf), fs)<a name="line.212"></a>
+<span class="sourceLineNo">213</span>            .withOutputDir(outputDir)<a name="line.213"></a>
+<span class="sourceLineNo">214</span>            .withBloomType(bloomType)<a name="line.214"></a>
+<span class="sourceLineNo">215</span>            .withMaxKeyCount(numKV)<a name="line.215"></a>
+<span class="sourceLineNo">216</span>            .withFileContext(meta)<a name="line.216"></a>
+<span class="sourceLineNo">217</span>            .build();<a name="line.217"></a>
+<span class="sourceLineNo">218</span><a name="line.218"></a>
+<span class="sourceLineNo">219</span>    rand = new Random();<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    LOG.info("Writing " + numKV + " key/value pairs");<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    for (long i = 0; i &lt; numKV; ++i) {<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      sfw.append(generateKeyValue(i));<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    }<a name="line.223"></a>
+<span class="sourceLineNo">224</span><a name="line.224"></a>
+<span class="sourceLineNo">225</span>    int numMetaBlocks = rand.nextInt(10) + 1;<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    LOG.info("Writing " + numMetaBlocks + " meta blocks");<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    for (int metaI = 0; metaI &lt; numMetaBlocks; ++metaI) {<a name="line.227"></a>
+<span class="sourceLineNo">228</span>      sfw.getHFileWriter().appendMetaBlock(generateString(),<a name="line.228"></a>
+<span class="sourceLineNo">229</span>          new BytesWritable(generateValue()));<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    }<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    sfw.close();<a name="line.231"></a>
+<span class="sourceLineNo">232</span><a name="line.232"></a>
+<span class="sourceLineNo">233</span>    Path storeFilePath = sfw.getPath();<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    long fileSize = fs.getFileStatus(storeFilePath).getLen();<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    LOG.info("Created " + storeFilePath + ", " + fileSize + " bytes");<a name="line.235"></a>
+<span class="sourceLineNo">236</span><a name="line.236"></a>
+<span class="sourceLineNo">237</span>    return true;<a name="line.237"></a>
+<span class="sourceLineNo">238</span>  }<a name="line.238"></a>
+<span class="sourceLineNo">239</span><a name="line.239"></a>
+<span class="sourceLineNo">240</span>  private void configureKeyValue(long numKV, int keyLen, int valueLen) {<a name="line.240"></a>
+<span class="sourceLineNo">241</span>    numKV = Math.abs(numKV);<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    keyLen = Math.abs(keyLen);<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    keyPrefixLen = 0;<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    while (numKV != 0) {<a name="line.244"></a>
+<span class="sourceLineNo">245</span>      numKV &gt;&gt;&gt;= 8;<a name="line.245"></a>
+<span class="sourceLineNo">246</span>      ++keyPrefixLen;<a name="line.246"></a>
+<span class="sourceLineNo">247</span>    }<a name="line.247"></a>
+<span class="sourceLineNo">248</span><a name="line.248"></a>
+<span class="sourceLineNo">249</span>    this.keyLen = Math.max(keyPrefixLen, keyLen);<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    this.valueLen = valueLen;<a name="line.250"></a>
+<span class="sourceLineNo">251</span><a name="line.251"></a>
+<span class="sourceLineNo">252</span>    // Arbitrarily split the key into row, column family, and qualifier.<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    rowLen = keyPrefixLen / 3;<a name="line.253"></a>
+<span class="sourceLineNo">254</span>    cfLen = keyPrefixLen / 4;<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>  private int nextInRange(int range) {<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    return rand.nextInt(2 * range + 1) - range;<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>  public KeyValue generateKeyValue(long i) {<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    byte[] k = generateKey(i);<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    byte[] v = generateValue();<a name="line.263"></a>
+<span class="sourceLineNo">264</span><a name="line.264"></a>
+<span class="sourceLineNo">265</span>    return new KeyValue(<a name="line.265"></a>
+<span class="sourceLineNo">266</span>        k, 0, rowLen,<a name="line.266"></a>
+<span class="sourceLineNo">267</span>        k, rowLen, cfLen,<a name="line.267"></a>
+<span class="sourceLineNo">268</span>        k, rowLen + cfLen, k.length - rowLen - cfLen,<a name="line.268"></a>
+<span class="sourceLineNo">269</span>        rand.nextLong(),<a name="line.269"></a>
+<span class="sourceLineNo">270</span>        generateKeyType(rand),<a name="line.270"></a>
+<span class="sourceLineNo">271</span>        v, 0, v.length);<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>  public static KeyValue.Type generateKeyType(Random rand) {<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    if (rand.nextBoolean()) {<a name="line.275"></a>
+<span class="sourceLineNo">276</span>      // Let's make half of KVs puts.<a name="line.276"></a>
+<span class="sourceLineNo">277</span>      return KeyValue.Type.Put;<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    } else {<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      KeyValue.Type keyType =<a name="line.279"></a>
+<span class="sourceLineNo">280</span>          KeyValue.Type.values()[1 + rand.nextInt(NUM_VALID_KEY_TYPES)];<a name="line.280"></a>
+<span class="sourceLineNo">281</span>      if (keyType == KeyValue.Type.Minimum || keyType == KeyValue.Type.Maximum)<a name="line.281"></a>
+<span class="sourceLineNo">282</span>      {<a name="line.282"></a>
+<span class="sourceLineNo">283</span>        throw new RuntimeException("Generated an invalid key type: " + keyType<a name="line.283"></a>
+<span class="sourceLineNo">284</span>            + ". " + "Probably the layout of KeyValue.Type has changed.");<a name="line.284"></a>
+<span class="sourceLineNo">285</span>      }<a name="line.285"></a>
+<span class="sourceLineNo">286</span>      return keyType;<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    }<a name="line.287"></a>
+<span class="sourceLineNo">288</span>  }<a name="line.288"></a>
+<span class="sourceLineNo">289</span><a name="line.289"></a>
+<span class="sourceLineNo">290</span>  private String generateString() {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    StringBuilder sb = new StringBuilder();<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    for (int i = 0; i &lt; rand.nextInt(10); ++i) {<a name="line.292"></a>
+<span class="sourceLineNo">293</span>      sb.append((char) ('A' + rand.nextInt(26)));<a name="line.293"></a>
+<span class="sourceLineNo">294</span>    }<a name="line.294"></a>
+<span class="sourceLineNo">295</span>    return sb.toString();<a name="line.295"></a>
+<span class="sourceLineNo">296</span>  }<a name="line.296"></a>
+<span class="sourceLineNo">297</span><a name="line.297"></a>
+<span class="sourceLineNo">298</span>  private byte[] generateKey(long i) {<a name="line.298"></a>
+<span class="sourceLineNo">299</span>    byte[] k = new byte[Math.max(keyPrefixLen, keyLen<a name="line.299"></a>
+<span class="sourceLineNo">300</span>        + nextInRange(LEN_VARIATION))];<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    for (int pos = keyPrefixLen - 1; pos &gt;= 0; --pos) {<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      k[pos] = (byte) (i &amp; 0xFF);<a name="line.302"></a>
+<span class="sourceLineNo">303</span>      i &gt;&gt;&gt;= 8;<a name="line.303"></a>
 <span class="sourceLineNo">304</span>    }<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><a name="line.307"></a>
-<span class="sourceLineNo">308</span>}<a name="line.308"></a>
+<span class="sourceLineNo">305</span>    for (int pos = keyPrefixLen; pos &lt; k.length; ++pos) {<a name="line.305"></a>
+<span class="sourceLineNo">306</span>      k[pos] = (byte) rand.nextInt(256);<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    }<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    return k;<a name="line.308"></a>
+<span class="sourceLineNo">309</span>  }<a name="line.309"></a>
+<span class="sourceLineNo">310</span><a name="line.310"></a>
+<span class="sourceLineNo">311</span>  private byte[] generateValue() {<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    byte[] v = new byte[Math.max(1, valueLen + nextInRange(LEN_VARIATION))];<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    for (int i = 0; i &lt; v.length; ++i) {<a name="line.313"></a>
+<span class="sourceLineNo">314</span>      v[i] = (byte) rand.nextInt(256);<a name="line.314"></a>
+<span class="sourceLineNo">315</span>    }<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    return v;<a name="line.316"></a>
+<span class="sourceLineNo">317</span>  }<a name="line.317"></a>
+<span class="sourceLineNo">318</span><a name="line.318"></a>
+<span class="sourceLineNo">319</span>  public static void main(String[] args) {<a name="line.319"></a>
+<span class="sourceLineNo">320</span>    CreateRandomStoreFile app = new CreateRandomStoreFile();<a name="line.320"></a>
+<span class="sourceLineNo">321</span>    try {<a name="line.321"></a>
+<span class="sourceLineNo">322</span>      if (!app.run(args))<a name="line.322"></a>
+<span class="sourceLineNo">323</span>        System.exit(EXIT_FAILURE);<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    } catch (IOException ex) {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      LOG.error(ex.toString(), ex);<a name="line.325"></a>
+<span class="sourceLineNo">326</span>      System.exit(EXIT_FAILURE);<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>}<a name="line.331"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHStoreFile.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHStoreFile.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHStoreFile.html
index 8f7596e..a0a5cea7 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHStoreFile.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHStoreFile.html
@@ -756,7 +756,7 @@
 <span class="sourceLineNo">748</span>      reader.loadFileInfo();<a name="line.748"></a>
 <span class="sourceLineNo">749</span>      reader.loadBloomfilter();<a name="line.749"></a>
 <span class="sourceLineNo">750</span>      StoreFileScanner scanner = getStoreFileScanner(reader, false, false);<a name="line.750"></a>
-<span class="sourceLineNo">751</span>      assertEquals(expKeys[x], reader.generalBloomFilter.getKeyCount());<a name="line.751"></a>
+<span class="sourceLineNo">751</span>      assertEquals(expKeys[x], reader.getGeneralBloomFilter().getKeyCount());<a name="line.751"></a>
 <span class="sourceLineNo">752</span><a name="line.752"></a>
 <span class="sourceLineNo">753</span>      HStore store = mock(HStore.class);<a name="line.753"></a>
 <span class="sourceLineNo">754</span>      when(store.getColumnFamilyDescriptor())<a name="line.754"></a>


[42/43] hbase-site git commit: Published site at 7ab77518a2569e2416a50020393aa386e7734501.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/apidocs/src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html
----------------------------------------------------------------------
diff --git a/apidocs/src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html b/apidocs/src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html
index ab76d10..5ee521a 100644
--- a/apidocs/src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html
+++ b/apidocs/src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html
@@ -81,862 +81,913 @@
 <span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.regionserver.BloomType;<a name="line.73"></a>
 <span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.regionserver.HStore;<a name="line.74"></a>
 <span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.regionserver.StoreFileWriter;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.util.MapReduceExtendedCell;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.io.NullWritable;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.io.SequenceFile;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.io.Text;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.mapreduce.Job;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.mapreduce.OutputCommitter;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.mapreduce.OutputFormat;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.mapreduce.RecordWriter;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.hadoop.mapreduce.TaskAttemptContext;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.apache.hadoop.mapreduce.lib.output.FileOutputCommitter;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.mapreduce.lib.partition.TotalOrderPartitioner;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.slf4j.Logger;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.slf4j.LoggerFactory;<a name="line.93"></a>
-<span class="sourceLineNo">094</span><a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<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> * Writes HFiles. Passed Cells must arrive in order.<a name="line.98"></a>
-<span class="sourceLineNo">099</span> * Writes current time as the sequence id for the file. Sets the major compacted<a name="line.99"></a>
-<span class="sourceLineNo">100</span> * attribute on created @{link {@link HFile}s. Calling write(null,null) will forcibly roll<a name="line.100"></a>
-<span class="sourceLineNo">101</span> * all HFiles being written.<a name="line.101"></a>
-<span class="sourceLineNo">102</span> * &lt;p&gt;<a name="line.102"></a>
-<span class="sourceLineNo">103</span> * Using this class as part of a MapReduce job is best done<a name="line.103"></a>
-<span class="sourceLineNo">104</span> * using {@link #configureIncrementalLoad(Job, TableDescriptor, RegionLocator)}.<a name="line.104"></a>
-<span class="sourceLineNo">105</span> */<a name="line.105"></a>
-<span class="sourceLineNo">106</span>@InterfaceAudience.Public<a name="line.106"></a>
-<span class="sourceLineNo">107</span>public class HFileOutputFormat2<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    extends FileOutputFormat&lt;ImmutableBytesWritable, Cell&gt; {<a name="line.108"></a>
-<span class="sourceLineNo">109</span>  private static final Logger LOG = LoggerFactory.getLogger(HFileOutputFormat2.class);<a name="line.109"></a>
-<span class="sourceLineNo">110</span>  static class TableInfo {<a name="line.110"></a>
-<span class="sourceLineNo">111</span>    private TableDescriptor tableDesctiptor;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>    private RegionLocator regionLocator;<a name="line.112"></a>
-<span class="sourceLineNo">113</span><a name="line.113"></a>
-<span class="sourceLineNo">114</span>    public TableInfo(TableDescriptor tableDesctiptor, RegionLocator regionLocator) {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      this.tableDesctiptor = tableDesctiptor;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>      this.regionLocator = regionLocator;<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    }<a name="line.117"></a>
-<span class="sourceLineNo">118</span><a name="line.118"></a>
-<span class="sourceLineNo">119</span>    /**<a name="line.119"></a>
-<span class="sourceLineNo">120</span>     * The modification for the returned HTD doesn't affect the inner TD.<a name="line.120"></a>
-<span class="sourceLineNo">121</span>     * @return A clone of inner table descriptor<a name="line.121"></a>
-<span class="sourceLineNo">122</span>     * @deprecated use {@link #getTableDescriptor}<a name="line.122"></a>
-<span class="sourceLineNo">123</span>     */<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    @Deprecated<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    public HTableDescriptor getHTableDescriptor() {<a name="line.125"></a>
-<span class="sourceLineNo">126</span>      return new HTableDescriptor(tableDesctiptor);<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    }<a name="line.127"></a>
-<span class="sourceLineNo">128</span><a name="line.128"></a>
-<span class="sourceLineNo">129</span>    public TableDescriptor getTableDescriptor() {<a name="line.129"></a>
-<span class="sourceLineNo">130</span>      return tableDesctiptor;<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    }<a name="line.131"></a>
-<span class="sourceLineNo">132</span><a name="line.132"></a>
-<span class="sourceLineNo">133</span>    public RegionLocator getRegionLocator() {<a name="line.133"></a>
-<span class="sourceLineNo">134</span>      return regionLocator;<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>  protected static final byte[] tableSeparator = Bytes.toBytes(";");<a name="line.138"></a>
-<span class="sourceLineNo">139</span><a name="line.139"></a>
-<span class="sourceLineNo">140</span>  protected static byte[] combineTableNameSuffix(byte[] tableName, byte[] suffix) {<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    return Bytes.add(tableName, tableSeparator, suffix);<a name="line.141"></a>
-<span class="sourceLineNo">142</span>  }<a name="line.142"></a>
-<span class="sourceLineNo">143</span><a name="line.143"></a>
-<span class="sourceLineNo">144</span>  // The following constants are private since these are used by<a name="line.144"></a>
-<span class="sourceLineNo">145</span>  // HFileOutputFormat2 to internally transfer data between job setup and<a name="line.145"></a>
-<span class="sourceLineNo">146</span>  // reducer run using conf.<a name="line.146"></a>
-<span class="sourceLineNo">147</span>  // These should not be changed by the client.<a name="line.147"></a>
-<span class="sourceLineNo">148</span>  static final String COMPRESSION_FAMILIES_CONF_KEY =<a name="line.148"></a>
-<span class="sourceLineNo">149</span>      "hbase.hfileoutputformat.families.compression";<a name="line.149"></a>
-<span class="sourceLineNo">150</span>  static final String BLOOM_TYPE_FAMILIES_CONF_KEY =<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      "hbase.hfileoutputformat.families.bloomtype";<a name="line.151"></a>
-<span class="sourceLineNo">152</span>  static final String BLOCK_SIZE_FAMILIES_CONF_KEY =<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      "hbase.mapreduce.hfileoutputformat.blocksize";<a name="line.153"></a>
-<span class="sourceLineNo">154</span>  static final String DATABLOCK_ENCODING_FAMILIES_CONF_KEY =<a name="line.154"></a>
-<span class="sourceLineNo">155</span>      "hbase.mapreduce.hfileoutputformat.families.datablock.encoding";<a name="line.155"></a>
-<span class="sourceLineNo">156</span><a name="line.156"></a>
-<span class="sourceLineNo">157</span>  // This constant is public since the client can modify this when setting<a name="line.157"></a>
-<span class="sourceLineNo">158</span>  // up their conf object and thus refer to this symbol.<a name="line.158"></a>
-<span class="sourceLineNo">159</span>  // It is present for backwards compatibility reasons. Use it only to<a name="line.159"></a>
-<span class="sourceLineNo">160</span>  // override the auto-detection of datablock encoding.<a name="line.160"></a>
-<span class="sourceLineNo">161</span>  public static final String DATABLOCK_ENCODING_OVERRIDE_CONF_KEY =<a name="line.161"></a>
-<span class="sourceLineNo">162</span>      "hbase.mapreduce.hfileoutputformat.datablock.encoding";<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>   * Keep locality while generating HFiles for bulkload. See HBASE-12596<a name="line.165"></a>
-<span class="sourceLineNo">166</span>   */<a name="line.166"></a>
-<span class="sourceLineNo">167</span>  public static final String LOCALITY_SENSITIVE_CONF_KEY =<a name="line.167"></a>
-<span class="sourceLineNo">168</span>      "hbase.bulkload.locality.sensitive.enabled";<a name="line.168"></a>
-<span class="sourceLineNo">169</span>  private static final boolean DEFAULT_LOCALITY_SENSITIVE = true;<a name="line.169"></a>
-<span class="sourceLineNo">170</span>  static final String OUTPUT_TABLE_NAME_CONF_KEY =<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      "hbase.mapreduce.hfileoutputformat.table.name";<a name="line.171"></a>
-<span class="sourceLineNo">172</span>  static final String MULTI_TABLE_HFILEOUTPUTFORMAT_CONF_KEY =<a name="line.172"></a>
-<span class="sourceLineNo">173</span>          "hbase.mapreduce.use.multi.table.hfileoutputformat";<a name="line.173"></a>
-<span class="sourceLineNo">174</span><a name="line.174"></a>
-<span class="sourceLineNo">175</span>  public static final String STORAGE_POLICY_PROPERTY = HStore.BLOCK_STORAGE_POLICY_KEY;<a name="line.175"></a>
-<span class="sourceLineNo">176</span>  public static final String STORAGE_POLICY_PROPERTY_CF_PREFIX = STORAGE_POLICY_PROPERTY + ".";<a name="line.176"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.util.BloomFilterUtil;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.util.MapReduceExtendedCell;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hadoop.io.NullWritable;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hadoop.io.SequenceFile;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hadoop.io.Text;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hadoop.mapreduce.Job;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hadoop.mapreduce.OutputCommitter;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hadoop.mapreduce.OutputFormat;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.hadoop.mapreduce.RecordWriter;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.hadoop.mapreduce.TaskAttemptContext;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.hadoop.mapreduce.lib.output.FileOutputCommitter;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import org.apache.hadoop.mapreduce.lib.partition.TotalOrderPartitioner;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import org.slf4j.Logger;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import org.slf4j.LoggerFactory;<a name="line.94"></a>
+<span class="sourceLineNo">095</span><a name="line.95"></a>
+<span class="sourceLineNo">096</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<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> * Writes HFiles. Passed Cells must arrive in order.<a name="line.99"></a>
+<span class="sourceLineNo">100</span> * Writes current time as the sequence id for the file. Sets the major compacted<a name="line.100"></a>
+<span class="sourceLineNo">101</span> * attribute on created @{link {@link HFile}s. Calling write(null,null) will forcibly roll<a name="line.101"></a>
+<span class="sourceLineNo">102</span> * all HFiles being written.<a name="line.102"></a>
+<span class="sourceLineNo">103</span> * &lt;p&gt;<a name="line.103"></a>
+<span class="sourceLineNo">104</span> * Using this class as part of a MapReduce job is best done<a name="line.104"></a>
+<span class="sourceLineNo">105</span> * using {@link #configureIncrementalLoad(Job, TableDescriptor, RegionLocator)}.<a name="line.105"></a>
+<span class="sourceLineNo">106</span> */<a name="line.106"></a>
+<span class="sourceLineNo">107</span>@InterfaceAudience.Public<a name="line.107"></a>
+<span class="sourceLineNo">108</span>public class HFileOutputFormat2<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    extends FileOutputFormat&lt;ImmutableBytesWritable, Cell&gt; {<a name="line.109"></a>
+<span class="sourceLineNo">110</span>  private static final Logger LOG = LoggerFactory.getLogger(HFileOutputFormat2.class);<a name="line.110"></a>
+<span class="sourceLineNo">111</span>  static class TableInfo {<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    private TableDescriptor tableDesctiptor;<a name="line.112"></a>
+<span class="sourceLineNo">113</span>    private RegionLocator regionLocator;<a name="line.113"></a>
+<span class="sourceLineNo">114</span><a name="line.114"></a>
+<span class="sourceLineNo">115</span>    public TableInfo(TableDescriptor tableDesctiptor, RegionLocator regionLocator) {<a name="line.115"></a>
+<span class="sourceLineNo">116</span>      this.tableDesctiptor = tableDesctiptor;<a name="line.116"></a>
+<span class="sourceLineNo">117</span>      this.regionLocator = regionLocator;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    }<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>     * The modification for the returned HTD doesn't affect the inner TD.<a name="line.121"></a>
+<span class="sourceLineNo">122</span>     * @return A clone of inner table descriptor<a name="line.122"></a>
+<span class="sourceLineNo">123</span>     * @deprecated use {@link #getTableDescriptor}<a name="line.123"></a>
+<span class="sourceLineNo">124</span>     */<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    @Deprecated<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    public HTableDescriptor getHTableDescriptor() {<a name="line.126"></a>
+<span class="sourceLineNo">127</span>      return new HTableDescriptor(tableDesctiptor);<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    }<a name="line.128"></a>
+<span class="sourceLineNo">129</span><a name="line.129"></a>
+<span class="sourceLineNo">130</span>    public TableDescriptor getTableDescriptor() {<a name="line.130"></a>
+<span class="sourceLineNo">131</span>      return tableDesctiptor;<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    }<a name="line.132"></a>
+<span class="sourceLineNo">133</span><a name="line.133"></a>
+<span class="sourceLineNo">134</span>    public RegionLocator getRegionLocator() {<a name="line.134"></a>
+<span class="sourceLineNo">135</span>      return regionLocator;<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>  protected static final byte[] tableSeparator = Bytes.toBytes(";");<a name="line.139"></a>
+<span class="sourceLineNo">140</span><a name="line.140"></a>
+<span class="sourceLineNo">141</span>  protected static byte[] combineTableNameSuffix(byte[] tableName, byte[] suffix) {<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    return Bytes.add(tableName, tableSeparator, suffix);<a name="line.142"></a>
+<span class="sourceLineNo">143</span>  }<a name="line.143"></a>
+<span class="sourceLineNo">144</span><a name="line.144"></a>
+<span class="sourceLineNo">145</span>  // The following constants are private since these are used by<a name="line.145"></a>
+<span class="sourceLineNo">146</span>  // HFileOutputFormat2 to internally transfer data between job setup and<a name="line.146"></a>
+<span class="sourceLineNo">147</span>  // reducer run using conf.<a name="line.147"></a>
+<span class="sourceLineNo">148</span>  // These should not be changed by the client.<a name="line.148"></a>
+<span class="sourceLineNo">149</span>  static final String COMPRESSION_FAMILIES_CONF_KEY =<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      "hbase.hfileoutputformat.families.compression";<a name="line.150"></a>
+<span class="sourceLineNo">151</span>  static final String BLOOM_TYPE_FAMILIES_CONF_KEY =<a name="line.151"></a>
+<span class="sourceLineNo">152</span>      "hbase.hfileoutputformat.families.bloomtype";<a name="line.152"></a>
+<span class="sourceLineNo">153</span>  static final String BLOOM_PARAM_FAMILIES_CONF_KEY =<a name="line.153"></a>
+<span class="sourceLineNo">154</span>      "hbase.hfileoutputformat.families.bloomparam";<a name="line.154"></a>
+<span class="sourceLineNo">155</span>  static final String BLOCK_SIZE_FAMILIES_CONF_KEY =<a name="line.155"></a>
+<span class="sourceLineNo">156</span>      "hbase.mapreduce.hfileoutputformat.blocksize";<a name="line.156"></a>
+<span class="sourceLineNo">157</span>  static final String DATABLOCK_ENCODING_FAMILIES_CONF_KEY =<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      "hbase.mapreduce.hfileoutputformat.families.datablock.encoding";<a name="line.158"></a>
+<span class="sourceLineNo">159</span><a name="line.159"></a>
+<span class="sourceLineNo">160</span>  // This constant is public since the client can modify this when setting<a name="line.160"></a>
+<span class="sourceLineNo">161</span>  // up their conf object and thus refer to this symbol.<a name="line.161"></a>
+<span class="sourceLineNo">162</span>  // It is present for backwards compatibility reasons. Use it only to<a name="line.162"></a>
+<span class="sourceLineNo">163</span>  // override the auto-detection of datablock encoding.<a name="line.163"></a>
+<span class="sourceLineNo">164</span>  public static final String DATABLOCK_ENCODING_OVERRIDE_CONF_KEY =<a name="line.164"></a>
+<span class="sourceLineNo">165</span>      "hbase.mapreduce.hfileoutputformat.datablock.encoding";<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>   * Keep locality while generating HFiles for bulkload. See HBASE-12596<a name="line.168"></a>
+<span class="sourceLineNo">169</span>   */<a name="line.169"></a>
+<span class="sourceLineNo">170</span>  public static final String LOCALITY_SENSITIVE_CONF_KEY =<a name="line.170"></a>
+<span class="sourceLineNo">171</span>      "hbase.bulkload.locality.sensitive.enabled";<a name="line.171"></a>
+<span class="sourceLineNo">172</span>  private static final boolean DEFAULT_LOCALITY_SENSITIVE = true;<a name="line.172"></a>
+<span class="sourceLineNo">173</span>  static final String OUTPUT_TABLE_NAME_CONF_KEY =<a name="line.173"></a>
+<span class="sourceLineNo">174</span>      "hbase.mapreduce.hfileoutputformat.table.name";<a name="line.174"></a>
+<span class="sourceLineNo">175</span>  static final String MULTI_TABLE_HFILEOUTPUTFORMAT_CONF_KEY =<a name="line.175"></a>
+<span class="sourceLineNo">176</span>          "hbase.mapreduce.use.multi.table.hfileoutputformat";<a name="line.176"></a>
 <span class="sourceLineNo">177</span><a name="line.177"></a>
-<span class="sourceLineNo">178</span>  @Override<a name="line.178"></a>
-<span class="sourceLineNo">179</span>  public RecordWriter&lt;ImmutableBytesWritable, Cell&gt; getRecordWriter(<a name="line.179"></a>
-<span class="sourceLineNo">180</span>      final TaskAttemptContext context) throws IOException, InterruptedException {<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    return createRecordWriter(context, this.getOutputCommitter(context));<a name="line.181"></a>
-<span class="sourceLineNo">182</span>  }<a name="line.182"></a>
-<span class="sourceLineNo">183</span><a name="line.183"></a>
-<span class="sourceLineNo">184</span>  protected static byte[] getTableNameSuffixedWithFamily(byte[] tableName, byte[] family) {<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    return combineTableNameSuffix(tableName, family);<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>  static &lt;V extends Cell&gt; RecordWriter&lt;ImmutableBytesWritable, V&gt;<a name="line.188"></a>
-<span class="sourceLineNo">189</span>      createRecordWriter(final TaskAttemptContext context, final OutputCommitter committer)<a name="line.189"></a>
-<span class="sourceLineNo">190</span>          throws IOException {<a name="line.190"></a>
-<span class="sourceLineNo">191</span><a name="line.191"></a>
-<span class="sourceLineNo">192</span>    // Get the path of the temporary output file<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    final Path outputDir = ((FileOutputCommitter)committer).getWorkPath();<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    final Configuration conf = context.getConfiguration();<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    final boolean writeMultipleTables = conf.getBoolean(MULTI_TABLE_HFILEOUTPUTFORMAT_CONF_KEY, false) ;<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    final String writeTableNames = conf.get(OUTPUT_TABLE_NAME_CONF_KEY);<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    if (writeTableNames==null || writeTableNames.isEmpty()) {<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      throw new IllegalArgumentException("Configuration parameter " + OUTPUT_TABLE_NAME_CONF_KEY<a name="line.198"></a>
-<span class="sourceLineNo">199</span>              + " cannot be empty");<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    }<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    final FileSystem fs = outputDir.getFileSystem(conf);<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    // These configs. are from hbase-*.xml<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    final long maxsize = conf.getLong(HConstants.HREGION_MAX_FILESIZE,<a name="line.203"></a>
-<span class="sourceLineNo">204</span>        HConstants.DEFAULT_MAX_FILE_SIZE);<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    // Invented config.  Add to hbase-*.xml if other than default compression.<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    final String defaultCompressionStr = conf.get("hfile.compression",<a name="line.206"></a>
-<span class="sourceLineNo">207</span>        Compression.Algorithm.NONE.getName());<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    final Algorithm defaultCompression = HFileWriterImpl<a name="line.208"></a>
-<span class="sourceLineNo">209</span>        .compressionByName(defaultCompressionStr);<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    final boolean compactionExclude = conf.getBoolean(<a name="line.210"></a>
-<span class="sourceLineNo">211</span>        "hbase.mapreduce.hfileoutputformat.compaction.exclude", false);<a name="line.211"></a>
-<span class="sourceLineNo">212</span><a name="line.212"></a>
-<span class="sourceLineNo">213</span>    final Set&lt;String&gt; allTableNames = Arrays.stream(writeTableNames.split(<a name="line.213"></a>
-<span class="sourceLineNo">214</span>            Bytes.toString(tableSeparator))).collect(Collectors.toSet());<a name="line.214"></a>
+<span class="sourceLineNo">178</span>  public static final String STORAGE_POLICY_PROPERTY = HStore.BLOCK_STORAGE_POLICY_KEY;<a name="line.178"></a>
+<span class="sourceLineNo">179</span>  public static final String STORAGE_POLICY_PROPERTY_CF_PREFIX = STORAGE_POLICY_PROPERTY + ".";<a name="line.179"></a>
+<span class="sourceLineNo">180</span><a name="line.180"></a>
+<span class="sourceLineNo">181</span>  @Override<a name="line.181"></a>
+<span class="sourceLineNo">182</span>  public RecordWriter&lt;ImmutableBytesWritable, Cell&gt; getRecordWriter(<a name="line.182"></a>
+<span class="sourceLineNo">183</span>      final TaskAttemptContext context) throws IOException, InterruptedException {<a name="line.183"></a>
+<span class="sourceLineNo">184</span>    return createRecordWriter(context, this.getOutputCommitter(context));<a name="line.184"></a>
+<span class="sourceLineNo">185</span>  }<a name="line.185"></a>
+<span class="sourceLineNo">186</span><a name="line.186"></a>
+<span class="sourceLineNo">187</span>  protected static byte[] getTableNameSuffixedWithFamily(byte[] tableName, byte[] family) {<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    return combineTableNameSuffix(tableName, family);<a name="line.188"></a>
+<span class="sourceLineNo">189</span>  }<a name="line.189"></a>
+<span class="sourceLineNo">190</span><a name="line.190"></a>
+<span class="sourceLineNo">191</span>  static &lt;V extends Cell&gt; RecordWriter&lt;ImmutableBytesWritable, V&gt;<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      createRecordWriter(final TaskAttemptContext context, final OutputCommitter committer)<a name="line.192"></a>
+<span class="sourceLineNo">193</span>          throws IOException {<a name="line.193"></a>
+<span class="sourceLineNo">194</span><a name="line.194"></a>
+<span class="sourceLineNo">195</span>    // Get the path of the temporary output file<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    final Path outputDir = ((FileOutputCommitter)committer).getWorkPath();<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    final Configuration conf = context.getConfiguration();<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    final boolean writeMultipleTables = conf.getBoolean(MULTI_TABLE_HFILEOUTPUTFORMAT_CONF_KEY, false) ;<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    final String writeTableNames = conf.get(OUTPUT_TABLE_NAME_CONF_KEY);<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    if (writeTableNames==null || writeTableNames.isEmpty()) {<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      throw new IllegalArgumentException("Configuration parameter " + OUTPUT_TABLE_NAME_CONF_KEY<a name="line.201"></a>
+<span class="sourceLineNo">202</span>              + " cannot be empty");<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    }<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    final FileSystem fs = outputDir.getFileSystem(conf);<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    // These configs. are from hbase-*.xml<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    final long maxsize = conf.getLong(HConstants.HREGION_MAX_FILESIZE,<a name="line.206"></a>
+<span class="sourceLineNo">207</span>        HConstants.DEFAULT_MAX_FILE_SIZE);<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    // Invented config.  Add to hbase-*.xml if other than default compression.<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    final String defaultCompressionStr = conf.get("hfile.compression",<a name="line.209"></a>
+<span class="sourceLineNo">210</span>        Compression.Algorithm.NONE.getName());<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    final Algorithm defaultCompression = HFileWriterImpl<a name="line.211"></a>
+<span class="sourceLineNo">212</span>        .compressionByName(defaultCompressionStr);<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    final boolean compactionExclude = conf.getBoolean(<a name="line.213"></a>
+<span class="sourceLineNo">214</span>        "hbase.mapreduce.hfileoutputformat.compaction.exclude", false);<a name="line.214"></a>
 <span class="sourceLineNo">215</span><a name="line.215"></a>
-<span class="sourceLineNo">216</span>    // create a map from column family to the compression algorithm<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    final Map&lt;byte[], Algorithm&gt; compressionMap = createFamilyCompressionMap(conf);<a name="line.217"></a>
-<span class="sourceLineNo">218</span>    final Map&lt;byte[], BloomType&gt; bloomTypeMap = createFamilyBloomTypeMap(conf);<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    final Map&lt;byte[], Integer&gt; blockSizeMap = createFamilyBlockSizeMap(conf);<a name="line.219"></a>
-<span class="sourceLineNo">220</span><a name="line.220"></a>
-<span class="sourceLineNo">221</span>    String dataBlockEncodingStr = conf.get(DATABLOCK_ENCODING_OVERRIDE_CONF_KEY);<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    final Map&lt;byte[], DataBlockEncoding&gt; datablockEncodingMap<a name="line.222"></a>
-<span class="sourceLineNo">223</span>        = createFamilyDataBlockEncodingMap(conf);<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    final DataBlockEncoding overriddenEncoding;<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    if (dataBlockEncodingStr != null) {<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      overriddenEncoding = DataBlockEncoding.valueOf(dataBlockEncodingStr);<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    } else {<a name="line.227"></a>
-<span class="sourceLineNo">228</span>      overriddenEncoding = null;<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>    return new RecordWriter&lt;ImmutableBytesWritable, V&gt;() {<a name="line.231"></a>
-<span class="sourceLineNo">232</span>      // Map of families to writers and how much has been output on the writer.<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      private final Map&lt;byte[], WriterLength&gt; writers =<a name="line.233"></a>
-<span class="sourceLineNo">234</span>              new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      private byte[] previousRow = HConstants.EMPTY_BYTE_ARRAY;<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      private final long now = EnvironmentEdgeManager.currentTime();<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      private boolean rollRequested = false;<a name="line.237"></a>
-<span class="sourceLineNo">238</span><a name="line.238"></a>
-<span class="sourceLineNo">239</span>      @Override<a name="line.239"></a>
-<span class="sourceLineNo">240</span>      public void write(ImmutableBytesWritable row, V cell)<a name="line.240"></a>
-<span class="sourceLineNo">241</span>          throws IOException {<a name="line.241"></a>
-<span class="sourceLineNo">242</span>        Cell kv = cell;<a name="line.242"></a>
-<span class="sourceLineNo">243</span>        // null input == user explicitly wants to flush<a name="line.243"></a>
-<span class="sourceLineNo">244</span>        if (row == null &amp;&amp; kv == null) {<a name="line.244"></a>
-<span class="sourceLineNo">245</span>          rollWriters(null);<a name="line.245"></a>
-<span class="sourceLineNo">246</span>          return;<a name="line.246"></a>
-<span class="sourceLineNo">247</span>        }<a name="line.247"></a>
-<span class="sourceLineNo">248</span><a name="line.248"></a>
-<span class="sourceLineNo">249</span>        byte[] rowKey = CellUtil.cloneRow(kv);<a name="line.249"></a>
-<span class="sourceLineNo">250</span>        int length = (PrivateCellUtil.estimatedSerializedSizeOf(kv)) - Bytes.SIZEOF_INT;<a name="line.250"></a>
-<span class="sourceLineNo">251</span>        byte[] family = CellUtil.cloneFamily(kv);<a name="line.251"></a>
-<span class="sourceLineNo">252</span>        byte[] tableNameBytes = null;<a name="line.252"></a>
-<span class="sourceLineNo">253</span>        if (writeMultipleTables) {<a name="line.253"></a>
-<span class="sourceLineNo">254</span>          tableNameBytes = MultiTableHFileOutputFormat.getTableName(row.get());<a name="line.254"></a>
-<span class="sourceLineNo">255</span>          tableNameBytes =<a name="line.255"></a>
-<span class="sourceLineNo">256</span>              TableName.valueOf(tableNameBytes).getNameWithNamespaceInclAsString()<a name="line.256"></a>
-<span class="sourceLineNo">257</span>              .getBytes(Charset.defaultCharset());<a name="line.257"></a>
-<span class="sourceLineNo">258</span>          if (!allTableNames.contains(Bytes.toString(tableNameBytes))) {<a name="line.258"></a>
-<span class="sourceLineNo">259</span>            throw new IllegalArgumentException("TableName '" + Bytes.toString(tableNameBytes) +<a name="line.259"></a>
-<span class="sourceLineNo">260</span>                    "' not" + " expected");<a name="line.260"></a>
-<span class="sourceLineNo">261</span>          }<a name="line.261"></a>
-<span class="sourceLineNo">262</span>        } else {<a name="line.262"></a>
-<span class="sourceLineNo">263</span>          tableNameBytes = Bytes.toBytes(writeTableNames);<a name="line.263"></a>
-<span class="sourceLineNo">264</span>        }<a name="line.264"></a>
-<span class="sourceLineNo">265</span>        String tableName = Bytes.toString(tableNameBytes);<a name="line.265"></a>
-<span class="sourceLineNo">266</span>        Path tableRelPath = getTableRelativePath(tableNameBytes);<a name="line.266"></a>
-<span class="sourceLineNo">267</span>        byte[] tableAndFamily = getTableNameSuffixedWithFamily(tableNameBytes, family);<a name="line.267"></a>
-<span class="sourceLineNo">268</span><a name="line.268"></a>
-<span class="sourceLineNo">269</span>        WriterLength wl = this.writers.get(tableAndFamily);<a name="line.269"></a>
-<span class="sourceLineNo">270</span><a name="line.270"></a>
-<span class="sourceLineNo">271</span>        // If this is a new column family, verify that the directory exists<a name="line.271"></a>
-<span class="sourceLineNo">272</span>        if (wl == null) {<a name="line.272"></a>
-<span class="sourceLineNo">273</span>          Path writerPath = null;<a name="line.273"></a>
-<span class="sourceLineNo">274</span>          if (writeMultipleTables) {<a name="line.274"></a>
-<span class="sourceLineNo">275</span>            writerPath = new Path(outputDir,new Path(tableRelPath, Bytes<a name="line.275"></a>
-<span class="sourceLineNo">276</span>                    .toString(family)));<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>          else {<a name="line.279"></a>
-<span class="sourceLineNo">280</span>            writerPath = new Path(outputDir, Bytes.toString(family));<a name="line.280"></a>
-<span class="sourceLineNo">281</span>          }<a name="line.281"></a>
-<span class="sourceLineNo">282</span>          fs.mkdirs(writerPath);<a name="line.282"></a>
-<span class="sourceLineNo">283</span>          configureStoragePolicy(conf, fs, tableAndFamily, writerPath);<a name="line.283"></a>
-<span class="sourceLineNo">284</span>        }<a name="line.284"></a>
-<span class="sourceLineNo">285</span><a name="line.285"></a>
-<span class="sourceLineNo">286</span>        if (wl != null &amp;&amp; wl.written + length &gt;= maxsize) {<a name="line.286"></a>
-<span class="sourceLineNo">287</span>          this.rollRequested = true;<a name="line.287"></a>
+<span class="sourceLineNo">216</span>    final Set&lt;String&gt; allTableNames = Arrays.stream(writeTableNames.split(<a name="line.216"></a>
+<span class="sourceLineNo">217</span>            Bytes.toString(tableSeparator))).collect(Collectors.toSet());<a name="line.217"></a>
+<span class="sourceLineNo">218</span><a name="line.218"></a>
+<span class="sourceLineNo">219</span>    // create a map from column family to the compression algorithm<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    final Map&lt;byte[], Algorithm&gt; compressionMap = createFamilyCompressionMap(conf);<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    final Map&lt;byte[], BloomType&gt; bloomTypeMap = createFamilyBloomTypeMap(conf);<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    final Map&lt;byte[], String&gt; bloomParamMap = createFamilyBloomParamMap(conf);<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    final Map&lt;byte[], Integer&gt; blockSizeMap = createFamilyBlockSizeMap(conf);<a name="line.223"></a>
+<span class="sourceLineNo">224</span><a name="line.224"></a>
+<span class="sourceLineNo">225</span>    String dataBlockEncodingStr = conf.get(DATABLOCK_ENCODING_OVERRIDE_CONF_KEY);<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    final Map&lt;byte[], DataBlockEncoding&gt; datablockEncodingMap<a name="line.226"></a>
+<span class="sourceLineNo">227</span>        = createFamilyDataBlockEncodingMap(conf);<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    final DataBlockEncoding overriddenEncoding;<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    if (dataBlockEncodingStr != null) {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>      overriddenEncoding = DataBlockEncoding.valueOf(dataBlockEncodingStr);<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    } else {<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      overriddenEncoding = null;<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    }<a name="line.233"></a>
+<span class="sourceLineNo">234</span><a name="line.234"></a>
+<span class="sourceLineNo">235</span>    return new RecordWriter&lt;ImmutableBytesWritable, V&gt;() {<a name="line.235"></a>
+<span class="sourceLineNo">236</span>      // Map of families to writers and how much has been output on the writer.<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      private final Map&lt;byte[], WriterLength&gt; writers =<a name="line.237"></a>
+<span class="sourceLineNo">238</span>              new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.238"></a>
+<span class="sourceLineNo">239</span>      private byte[] previousRow = HConstants.EMPTY_BYTE_ARRAY;<a name="line.239"></a>
+<span class="sourceLineNo">240</span>      private final long now = EnvironmentEdgeManager.currentTime();<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      private boolean rollRequested = false;<a name="line.241"></a>
+<span class="sourceLineNo">242</span><a name="line.242"></a>
+<span class="sourceLineNo">243</span>      @Override<a name="line.243"></a>
+<span class="sourceLineNo">244</span>      public void write(ImmutableBytesWritable row, V cell)<a name="line.244"></a>
+<span class="sourceLineNo">245</span>          throws IOException {<a name="line.245"></a>
+<span class="sourceLineNo">246</span>        Cell kv = cell;<a name="line.246"></a>
+<span class="sourceLineNo">247</span>        // null input == user explicitly wants to flush<a name="line.247"></a>
+<span class="sourceLineNo">248</span>        if (row == null &amp;&amp; kv == null) {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>          rollWriters(null);<a name="line.249"></a>
+<span class="sourceLineNo">250</span>          return;<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>
+<span class="sourceLineNo">253</span>        byte[] rowKey = CellUtil.cloneRow(kv);<a name="line.253"></a>
+<span class="sourceLineNo">254</span>        int length = (PrivateCellUtil.estimatedSerializedSizeOf(kv)) - Bytes.SIZEOF_INT;<a name="line.254"></a>
+<span class="sourceLineNo">255</span>        byte[] family = CellUtil.cloneFamily(kv);<a name="line.255"></a>
+<span class="sourceLineNo">256</span>        byte[] tableNameBytes = null;<a name="line.256"></a>
+<span class="sourceLineNo">257</span>        if (writeMultipleTables) {<a name="line.257"></a>
+<span class="sourceLineNo">258</span>          tableNameBytes = MultiTableHFileOutputFormat.getTableName(row.get());<a name="line.258"></a>
+<span class="sourceLineNo">259</span>          tableNameBytes =<a name="line.259"></a>
+<span class="sourceLineNo">260</span>              TableName.valueOf(tableNameBytes).getNameWithNamespaceInclAsString()<a name="line.260"></a>
+<span class="sourceLineNo">261</span>              .getBytes(Charset.defaultCharset());<a name="line.261"></a>
+<span class="sourceLineNo">262</span>          if (!allTableNames.contains(Bytes.toString(tableNameBytes))) {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>            throw new IllegalArgumentException("TableName '" + Bytes.toString(tableNameBytes) +<a name="line.263"></a>
+<span class="sourceLineNo">264</span>                    "' not" + " expected");<a name="line.264"></a>
+<span class="sourceLineNo">265</span>          }<a name="line.265"></a>
+<span class="sourceLineNo">266</span>        } else {<a name="line.266"></a>
+<span class="sourceLineNo">267</span>          tableNameBytes = Bytes.toBytes(writeTableNames);<a name="line.267"></a>
+<span class="sourceLineNo">268</span>        }<a name="line.268"></a>
+<span class="sourceLineNo">269</span>        String tableName = Bytes.toString(tableNameBytes);<a name="line.269"></a>
+<span class="sourceLineNo">270</span>        Path tableRelPath = getTableRelativePath(tableNameBytes);<a name="line.270"></a>
+<span class="sourceLineNo">271</span>        byte[] tableAndFamily = getTableNameSuffixedWithFamily(tableNameBytes, family);<a name="line.271"></a>
+<span class="sourceLineNo">272</span><a name="line.272"></a>
+<span class="sourceLineNo">273</span>        WriterLength wl = this.writers.get(tableAndFamily);<a name="line.273"></a>
+<span class="sourceLineNo">274</span><a name="line.274"></a>
+<span class="sourceLineNo">275</span>        // If this is a new column family, verify that the directory exists<a name="line.275"></a>
+<span class="sourceLineNo">276</span>        if (wl == null) {<a name="line.276"></a>
+<span class="sourceLineNo">277</span>          Path writerPath = null;<a name="line.277"></a>
+<span class="sourceLineNo">278</span>          if (writeMultipleTables) {<a name="line.278"></a>
+<span class="sourceLineNo">279</span>            writerPath = new Path(outputDir,new Path(tableRelPath, Bytes<a name="line.279"></a>
+<span class="sourceLineNo">280</span>                    .toString(family)));<a name="line.280"></a>
+<span class="sourceLineNo">281</span><a name="line.281"></a>
+<span class="sourceLineNo">282</span>          }<a name="line.282"></a>
+<span class="sourceLineNo">283</span>          else {<a name="line.283"></a>
+<span class="sourceLineNo">284</span>            writerPath = new Path(outputDir, Bytes.toString(family));<a name="line.284"></a>
+<span class="sourceLineNo">285</span>          }<a name="line.285"></a>
+<span class="sourceLineNo">286</span>          fs.mkdirs(writerPath);<a name="line.286"></a>
+<span class="sourceLineNo">287</span>          configureStoragePolicy(conf, fs, tableAndFamily, writerPath);<a name="line.287"></a>
 <span class="sourceLineNo">288</span>        }<a name="line.288"></a>
 <span class="sourceLineNo">289</span><a name="line.289"></a>
-<span class="sourceLineNo">290</span>        // This can only happen once a row is finished though<a name="line.290"></a>
-<span class="sourceLineNo">291</span>        if (rollRequested &amp;&amp; Bytes.compareTo(this.previousRow, rowKey) != 0) {<a name="line.291"></a>
-<span class="sourceLineNo">292</span>          rollWriters(wl);<a name="line.292"></a>
-<span class="sourceLineNo">293</span>        }<a name="line.293"></a>
-<span class="sourceLineNo">294</span><a name="line.294"></a>
-<span class="sourceLineNo">295</span>        // create a new WAL writer, if necessary<a name="line.295"></a>
-<span class="sourceLineNo">296</span>        if (wl == null || wl.writer == null) {<a name="line.296"></a>
-<span class="sourceLineNo">297</span>          if (conf.getBoolean(LOCALITY_SENSITIVE_CONF_KEY, DEFAULT_LOCALITY_SENSITIVE)) {<a name="line.297"></a>
-<span class="sourceLineNo">298</span>            HRegionLocation loc = null;<a name="line.298"></a>
-<span class="sourceLineNo">299</span><a name="line.299"></a>
-<span class="sourceLineNo">300</span>            if (tableName != null) {<a name="line.300"></a>
-<span class="sourceLineNo">301</span>              try (Connection connection = ConnectionFactory.createConnection(conf);<a name="line.301"></a>
-<span class="sourceLineNo">302</span>                     RegionLocator locator =<a name="line.302"></a>
-<span class="sourceLineNo">303</span>                       connection.getRegionLocator(TableName.valueOf(tableName))) {<a name="line.303"></a>
-<span class="sourceLineNo">304</span>                loc = locator.getRegionLocation(rowKey);<a name="line.304"></a>
-<span class="sourceLineNo">305</span>              } catch (Throwable e) {<a name="line.305"></a>
-<span class="sourceLineNo">306</span>                LOG.warn("There's something wrong when locating rowkey: " +<a name="line.306"></a>
-<span class="sourceLineNo">307</span>                  Bytes.toString(rowKey) + " for tablename: " + tableName, e);<a name="line.307"></a>
-<span class="sourceLineNo">308</span>                loc = null;<a name="line.308"></a>
-<span class="sourceLineNo">309</span>              } }<a name="line.309"></a>
-<span class="sourceLineNo">310</span><a name="line.310"></a>
-<span class="sourceLineNo">311</span>            if (null == loc) {<a name="line.311"></a>
-<span class="sourceLineNo">312</span>              if (LOG.isTraceEnabled()) {<a name="line.312"></a>
-<span class="sourceLineNo">313</span>                LOG.trace("failed to get region location, so use default writer for rowkey: " +<a name="line.313"></a>
-<span class="sourceLineNo">314</span>                  Bytes.toString(rowKey));<a name="line.314"></a>
-<span class="sourceLineNo">315</span>              }<a name="line.315"></a>
-<span class="sourceLineNo">316</span>              wl = getNewWriter(tableNameBytes, family, conf, null);<a name="line.316"></a>
-<span class="sourceLineNo">317</span>            } else {<a name="line.317"></a>
-<span class="sourceLineNo">318</span>              if (LOG.isDebugEnabled()) {<a name="line.318"></a>
-<span class="sourceLineNo">319</span>                LOG.debug("first rowkey: [" + Bytes.toString(rowKey) + "]");<a name="line.319"></a>
-<span class="sourceLineNo">320</span>              }<a name="line.320"></a>
-<span class="sourceLineNo">321</span>              InetSocketAddress initialIsa =<a name="line.321"></a>
-<span class="sourceLineNo">322</span>                  new InetSocketAddress(loc.getHostname(), loc.getPort());<a name="line.322"></a>
-<span class="sourceLineNo">323</span>              if (initialIsa.isUnresolved()) {<a name="line.323"></a>
-<span class="sourceLineNo">324</span>                if (LOG.isTraceEnabled()) {<a name="line.324"></a>
-<span class="sourceLineNo">325</span>                  LOG.trace("failed to resolve bind address: " + loc.getHostname() + ":"<a name="line.325"></a>
-<span class="sourceLineNo">326</span>                      + loc.getPort() + ", so use default writer");<a name="line.326"></a>
-<span class="sourceLineNo">327</span>                }<a name="line.327"></a>
-<span class="sourceLineNo">328</span>                wl = getNewWriter(tableNameBytes, family, conf, null);<a name="line.328"></a>
-<span class="sourceLineNo">329</span>              } else {<a name="line.329"></a>
-<span class="sourceLineNo">330</span>                if (LOG.isDebugEnabled()) {<a name="line.330"></a>
-<span class="sourceLineNo">331</span>                  LOG.debug("use favored nodes writer: " + initialIsa.getHostString());<a name="line.331"></a>
-<span class="sourceLineNo">332</span>                }<a name="line.332"></a>
-<span class="sourceLineNo">333</span>                wl = getNewWriter(tableNameBytes, family, conf, new InetSocketAddress[] { initialIsa<a name="line.333"></a>
-<span class="sourceLineNo">334</span>                });<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>          } else {<a name="line.337"></a>
-<span class="sourceLineNo">338</span>            wl = getNewWriter(tableNameBytes, family, conf, null);<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>        // we now have the proper WAL writer. full steam ahead<a name="line.342"></a>
-<span class="sourceLineNo">343</span>        PrivateCellUtil.updateLatestStamp(cell, this.now);<a name="line.343"></a>
-<span class="sourceLineNo">344</span>        wl.writer.append(kv);<a name="line.344"></a>
-<span class="sourceLineNo">345</span>        wl.written += length;<a name="line.345"></a>
-<span class="sourceLineNo">346</span><a name="line.346"></a>
-<span class="sourceLineNo">347</span>        // Copy the row so we know when a row transition.<a name="line.347"></a>
-<span class="sourceLineNo">348</span>        this.previousRow = rowKey;<a name="line.348"></a>
-<span class="sourceLineNo">349</span>      }<a name="line.349"></a>
+<span class="sourceLineNo">290</span>        if (wl != null &amp;&amp; wl.written + length &gt;= maxsize) {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>          this.rollRequested = true;<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>        // This can only happen once a row is finished though<a name="line.294"></a>
+<span class="sourceLineNo">295</span>        if (rollRequested &amp;&amp; Bytes.compareTo(this.previousRow, rowKey) != 0) {<a name="line.295"></a>
+<span class="sourceLineNo">296</span>          rollWriters(wl);<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>        // create a new WAL writer, if necessary<a name="line.299"></a>
+<span class="sourceLineNo">300</span>        if (wl == null || wl.writer == null) {<a name="line.300"></a>
+<span class="sourceLineNo">301</span>          if (conf.getBoolean(LOCALITY_SENSITIVE_CONF_KEY, DEFAULT_LOCALITY_SENSITIVE)) {<a name="line.301"></a>
+<span class="sourceLineNo">302</span>            HRegionLocation loc = null;<a name="line.302"></a>
+<span class="sourceLineNo">303</span><a name="line.303"></a>
+<span class="sourceLineNo">304</span>            if (tableName != null) {<a name="line.304"></a>
+<span class="sourceLineNo">305</span>              try (Connection connection = ConnectionFactory.createConnection(conf);<a name="line.305"></a>
+<span class="sourceLineNo">306</span>                     RegionLocator locator =<a name="line.306"></a>
+<span class="sourceLineNo">307</span>                       connection.getRegionLocator(TableName.valueOf(tableName))) {<a name="line.307"></a>
+<span class="sourceLineNo">308</span>                loc = locator.getRegionLocation(rowKey);<a name="line.308"></a>
+<span class="sourceLineNo">309</span>              } catch (Throwable e) {<a name="line.309"></a>
+<span class="sourceLineNo">310</span>                LOG.warn("There's something wrong when locating rowkey: " +<a name="line.310"></a>
+<span class="sourceLineNo">311</span>                  Bytes.toString(rowKey) + " for tablename: " + tableName, e);<a name="line.311"></a>
+<span class="sourceLineNo">312</span>                loc = null;<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>            if (null == loc) {<a name="line.315"></a>
+<span class="sourceLineNo">316</span>              if (LOG.isTraceEnabled()) {<a name="line.316"></a>
+<span class="sourceLineNo">317</span>                LOG.trace("failed to get region location, so use default writer for rowkey: " +<a name="line.317"></a>
+<span class="sourceLineNo">318</span>                  Bytes.toString(rowKey));<a name="line.318"></a>
+<span class="sourceLineNo">319</span>              }<a name="line.319"></a>
+<span class="sourceLineNo">320</span>              wl = getNewWriter(tableNameBytes, family, conf, null);<a name="line.320"></a>
+<span class="sourceLineNo">321</span>            } else {<a name="line.321"></a>
+<span class="sourceLineNo">322</span>              if (LOG.isDebugEnabled()) {<a name="line.322"></a>
+<span class="sourceLineNo">323</span>                LOG.debug("first rowkey: [" + Bytes.toString(rowKey) + "]");<a name="line.323"></a>
+<span class="sourceLineNo">324</span>              }<a name="line.324"></a>
+<span class="sourceLineNo">325</span>              InetSocketAddress initialIsa =<a name="line.325"></a>
+<span class="sourceLineNo">326</span>                  new InetSocketAddress(loc.getHostname(), loc.getPort());<a name="line.326"></a>
+<span class="sourceLineNo">327</span>              if (initialIsa.isUnresolved()) {<a name="line.327"></a>
+<span class="sourceLineNo">328</span>                if (LOG.isTraceEnabled()) {<a name="line.328"></a>
+<span class="sourceLineNo">329</span>                  LOG.trace("failed to resolve bind address: " + loc.getHostname() + ":"<a name="line.329"></a>
+<span class="sourceLineNo">330</span>                      + loc.getPort() + ", so use default writer");<a name="line.330"></a>
+<span class="sourceLineNo">331</span>                }<a name="line.331"></a>
+<span class="sourceLineNo">332</span>                wl = getNewWriter(tableNameBytes, family, conf, null);<a name="line.332"></a>
+<span class="sourceLineNo">333</span>              } else {<a name="line.333"></a>
+<span class="sourceLineNo">334</span>                if (LOG.isDebugEnabled()) {<a name="line.334"></a>
+<span class="sourceLineNo">335</span>                  LOG.debug("use favored nodes writer: " + initialIsa.getHostString());<a name="line.335"></a>
+<span class="sourceLineNo">336</span>                }<a name="line.336"></a>
+<span class="sourceLineNo">337</span>                wl = getNewWriter(tableNameBytes, family, conf, new InetSocketAddress[] { initialIsa<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>          } else {<a name="line.341"></a>
+<span class="sourceLineNo">342</span>            wl = getNewWriter(tableNameBytes, family, conf, null);<a name="line.342"></a>
+<span class="sourceLineNo">343</span>          }<a name="line.343"></a>
+<span class="sourceLineNo">344</span>        }<a name="line.344"></a>
+<span class="sourceLineNo">345</span><a name="line.345"></a>
+<span class="sourceLineNo">346</span>        // we now have the proper WAL writer. full steam ahead<a name="line.346"></a>
+<span class="sourceLineNo">347</span>        PrivateCellUtil.updateLatestStamp(cell, this.now);<a name="line.347"></a>
+<span class="sourceLineNo">348</span>        wl.writer.append(kv);<a name="line.348"></a>
+<span class="sourceLineNo">349</span>        wl.written += length;<a name="line.349"></a>
 <span class="sourceLineNo">350</span><a name="line.350"></a>
-<span class="sourceLineNo">351</span>      private Path getTableRelativePath(byte[] tableNameBytes) {<a name="line.351"></a>
-<span class="sourceLineNo">352</span>        String tableName = Bytes.toString(tableNameBytes);<a name="line.352"></a>
-<span class="sourceLineNo">353</span>        String[] tableNameParts = tableName.split(":");<a name="line.353"></a>
-<span class="sourceLineNo">354</span>        Path tableRelPath = new Path(tableName.split(":")[0]);<a name="line.354"></a>
-<span class="sourceLineNo">355</span>        if (tableNameParts.length &gt; 1) {<a name="line.355"></a>
-<span class="sourceLineNo">356</span>          tableRelPath = new Path(tableRelPath, tableName.split(":")[1]);<a name="line.356"></a>
-<span class="sourceLineNo">357</span>        }<a name="line.357"></a>
-<span class="sourceLineNo">358</span>        return tableRelPath;<a name="line.358"></a>
-<span class="sourceLineNo">359</span>      }<a name="line.359"></a>
-<span class="sourceLineNo">360</span>      private void rollWriters(WriterLength writerLength) throws IOException {<a name="line.360"></a>
-<span class="sourceLineNo">361</span>        if (writerLength != null) {<a name="line.361"></a>
-<span class="sourceLineNo">362</span>          closeWriter(writerLength);<a name="line.362"></a>
-<span class="sourceLineNo">363</span>        } else {<a name="line.363"></a>
-<span class="sourceLineNo">364</span>          for (WriterLength wl : this.writers.values()) {<a name="line.364"></a>
-<span class="sourceLineNo">365</span>            closeWriter(wl);<a name="line.365"></a>
-<span class="sourceLineNo">366</span>          }<a name="line.366"></a>
-<span class="sourceLineNo">367</span>        }<a name="line.367"></a>
-<span class="sourceLineNo">368</span>        this.rollRequested = false;<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>      private void closeWriter(WriterLength wl) throws IOException {<a name="line.371"></a>
-<span class="sourceLineNo">372</span>        if (wl.writer != null) {<a name="line.372"></a>
-<span class="sourceLineNo">373</span>          LOG.info(<a name="line.373"></a>
-<span class="sourceLineNo">374</span>              "Writer=" + wl.writer.getPath() + ((wl.written == 0)? "": ", wrote=" + wl.written));<a name="line.374"></a>
-<span class="sourceLineNo">375</span>          close(wl.writer);<a name="line.375"></a>
-<span class="sourceLineNo">376</span>        }<a name="line.376"></a>
-<span class="sourceLineNo">377</span>        wl.writer = null;<a name="line.377"></a>
-<span class="sourceLineNo">378</span>        wl.written = 0;<a name="line.378"></a>
-<span class="sourceLineNo">379</span>      }<a name="line.379"></a>
-<span class="sourceLineNo">380</span><a name="line.380"></a>
-<span class="sourceLineNo">381</span>      /*<a name="line.381"></a>
-<span class="sourceLineNo">382</span>       * Create a new StoreFile.Writer.<a name="line.382"></a>
-<span class="sourceLineNo">383</span>       * @param family<a name="line.383"></a>
-<span class="sourceLineNo">384</span>       * @return A WriterLength, containing a new StoreFile.Writer.<a name="line.384"></a>
-<span class="sourceLineNo">385</span>       * @throws IOException<a name="line.385"></a>
-<span class="sourceLineNo">386</span>       */<a name="line.386"></a>
-<span class="sourceLineNo">387</span>      @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="BX_UNBOXING_IMMEDIATELY_REBOXED",<a name="line.387"></a>
-<span class="sourceLineNo">388</span>          justification="Not important")<a name="line.388"></a>
-<span class="sourceLineNo">389</span>      private WriterLength getNewWriter(byte[] tableName, byte[] family, Configuration<a name="line.389"></a>
-<span class="sourceLineNo">390</span>              conf, InetSocketAddress[] favoredNodes) throws IOException {<a name="line.390"></a>
-<span class="sourceLineNo">391</span>        byte[] tableAndFamily = getTableNameSuffixedWithFamily(tableName, family);<a name="line.391"></a>
-<span class="sourceLineNo">392</span>        Path familydir = new Path(outputDir, Bytes.toString(family));<a name="line.392"></a>
-<span class="sourceLineNo">393</span>        if (writeMultipleTables) {<a name="line.393"></a>
-<span class="sourceLineNo">394</span>          familydir = new Path(outputDir,<a name="line.394"></a>
-<span class="sourceLineNo">395</span>                  new Path(getTableRelativePath(tableName), Bytes.toString(family)));<a name="line.395"></a>
-<span class="sourceLineNo">396</span>        }<a name="line.396"></a>
-<span class="sourceLineNo">397</span>        WriterLength wl = new WriterLength();<a name="line.397"></a>
-<span class="sourceLineNo">398</span>        Algorithm compression = compressionMap.get(tableAndFamily);<a name="line.398"></a>
-<span class="sourceLineNo">399</span>        compression = compression == null ? defaultCompression : compression;<a name="line.399"></a>
-<span class="sourceLineNo">400</span>        BloomType bloomType = bloomTypeMap.get(tableAndFamily);<a name="line.400"></a>
-<span class="sourceLineNo">401</span>        bloomType = bloomType == null ? BloomType.NONE : bloomType;<a name="line.401"></a>
-<span class="sourceLineNo">402</span>        Integer blockSize = blockSizeMap.get(tableAndFamily);<a name="line.402"></a>
-<span class="sourceLineNo">403</span>        blockSize = blockSize == null ? HConstants.DEFAULT_BLOCKSIZE : blockSize;<a name="line.403"></a>
-<span class="sourceLineNo">404</span>        DataBlockEncoding encoding = overriddenEncoding;<a name="line.404"></a>
-<span class="sourceLineNo">405</span>        encoding = encoding == null ? datablockEncodingMap.get(tableAndFamily) : encoding;<a name="line.405"></a>
-<span class="sourceLineNo">406</span>        encoding = encoding == null ? DataBlockEncoding.NONE : encoding;<a name="line.406"></a>
-<span class="sourceLineNo">407</span>        Configuration tempConf = new Configuration(conf);<a name="line.407"></a>
-<span class="sourceLineNo">408</span>        tempConf.setFloat(HConstants.HFILE_BLOCK_CACHE_SIZE_KEY, 0.0f);<a name="line.408"></a>
-<span class="sourceLineNo">409</span>        HFileContextBuilder contextBuilder = new HFileContextBuilder()<a name="line.409"></a>
-<span class="sourceLineNo">410</span>                                    .withCompression(compression)<a name="line.410"></a>
-<span class="sourceLineNo">411</span>                                    .withChecksumType(HStore.getChecksumType(conf))<a name="line.411"></a>
-<span class="sourceLineNo">412</span>                                    .withBytesPerCheckSum(HStore.getBytesPerChecksum(conf))<a name="line.412"></a>
-<span class="sourceLineNo">413</span>                                    .withBlockSize(blockSize);<a name="line.413"></a>
-<span class="sourceLineNo">414</span><a name="line.414"></a>
-<span class="sourceLineNo">415</span>        if (HFile.getFormatVersion(conf) &gt;= HFile.MIN_FORMAT_VERSION_WITH_TAGS) {<a name="line.415"></a>
-<span class="sourceLineNo">416</span>          contextBuilder.withIncludesTags(true);<a name="line.416"></a>
-<span class="sourceLineNo">417</span>        }<a name="line.417"></a>
-<span class="sourceLineNo">418</span><a name="line.418"></a>
-<span class="sourceLineNo">419</span>        contextBuilder.withDataBlockEncoding(encoding);<a name="line.419"></a>
-<span class="sourceLineNo">420</span>        HFileContext hFileContext = contextBuilder.build();<a name="line.420"></a>
-<span class="sourceLineNo">421</span>        if (null == favoredNodes) {<a name="line.421"></a>
-<span class="sourceLineNo">422</span>          wl.writer =<a name="line.422"></a>
-<span class="sourceLineNo">423</span>              new StoreFileWriter.Builder(conf, new CacheConfig(tempConf), fs)<a name="line.423"></a>
-<span class="sourceLineNo">424</span>                  .withOutputDir(familydir).withBloomType(bloomType)<a name="line.424"></a>
-<span class="sourceLineNo">425</span>                  .withComparator(CellComparator.getInstance()).withFileContext(hFileContext).build();<a name="line.425"></a>
-<span class="sourceLineNo">426</span>        } else {<a name="line.426"></a>
-<span class="sourceLineNo">427</span>          wl.writer =<a name="line.427"></a>
-<span class="sourceLineNo">428</span>              new StoreFileWriter.Builder(conf, new CacheConfig(tempConf), new HFileSystem(fs))<a name="line.428"></a>
-<span class="sourceLineNo">429</span>                  .withOutputDir(familydir).withBloomType(bloomType)<a name="line.429"></a>
-<span class="sourceLineNo">430</span>                  .withComparator(CellComparator.getInstance()).withFileContext(hFileContext)<a name="line.430"></a>
-<span class="sourceLineNo">431</span>                  .withFavoredNodes(favoredNodes).build();<a name="line.431"></a>
-<span class="sourceLineNo">432</span>        }<a name="line.432"></a>
-<span class="sourceLineNo">433</span><a name="line.433"></a>
-<span class="sourceLineNo">434</span>        this.writers.put(tableAndFamily, wl);<a name="line.434"></a>
-<span class="sourceLineNo">435</span>        return wl;<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>      private void close(final StoreFileWriter w) throws IOException {<a name="line.438"></a>
-<span class="sourceLineNo">439</span>        if (w != null) {<a name="line.439"></a>
-<span class="sourceLineNo">440</span>          w.appendFileInfo(BULKLOAD_TIME_KEY,<a name="line.440"></a>
-<span class="sourceLineNo">441</span>              Bytes.toBytes(System.currentTimeMillis()));<a name="line.441"></a>
-<span class="sourceLineNo">442</span>          w.appendFileInfo(BULKLOAD_TASK_KEY,<a name="line.442"></a>
-<span class="sourceLineNo">443</span>              Bytes.toBytes(context.getTaskAttemptID().toString()));<a name="line.443"></a>
-<span class="sourceLineNo">444</span>          w.appendFileInfo(MAJOR_COMPACTION_KEY,<a name="line.444"></a>
-<span class="sourceLineNo">445</span>              Bytes.toBytes(true));<a name="line.445"></a>
-<span class="sourceLineNo">446</span>          w.appendFileInfo(EXCLUDE_FROM_MINOR_COMPACTION_KEY,<a name="line.446"></a>
-<span class="sourceLineNo">447</span>              Bytes.toBytes(compactionExclude));<a name="line.447"></a>
-<span class="sourceLineNo">448</span>          w.appendTrackedTimestampsToMetadata();<a name="line.448"></a>
-<span class="sourceLineNo">449</span>          w.close();<a name="line.449"></a>
-<span class="sourceLineNo">450</span>        }<a name="line.450"></a>
-<span class="sourceLineNo">451</span>      }<a name="line.451"></a>
-<span class="sourceLineNo">452</span><a name="line.452"></a>
-<span class="sourceLineNo">453</span>      @Override<a name="line.453"></a>
-<span class="sourceLineNo">454</span>      public void close(TaskAttemptContext c)<a name="line.454"></a>
-<span class="sourceLineNo">455</span>      throws IOException, InterruptedException {<a name="line.455"></a>
-<span class="sourceLineNo">456</span>        for (WriterLength wl: this.writers.values()) {<a name="line.456"></a>
-<span class="sourceLineNo">457</span>          close(wl.writer);<a name="line.457"></a>
-<span class="sourceLineNo">458</span>        }<a name="line.458"></a>
-<span class="sourceLineNo">459</span>      }<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">351</span>        // Copy the row so we know when a row transition.<a name="line.351"></a>
+<span class="sourceLineNo">352</span>        this.previousRow = rowKey;<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 Path getTableRelativePath(byte[] tableNameBytes) {<a name="line.355"></a>
+<span class="sourceLineNo">356</span>        String tableName = Bytes.toString(tableNameBytes);<a name="line.356"></a>
+<span class="sourceLineNo">357</span>        String[] tableNameParts = tableName.split(":");<a name="line.357"></a>
+<span class="sourceLineNo">358</span>        Path tableRelPath = new Path(tableName.split(":")[0]);<a name="line.358"></a>
+<span class="sourceLineNo">359</span>        if (tableNameParts.length &gt; 1) {<a name="line.359"></a>
+<span class="sourceLineNo">360</span>          tableRelPath = new Path(tableRelPath, tableName.split(":")[1]);<a name="line.360"></a>
+<span class="sourceLineNo">361</span>        }<a name="line.361"></a>
+<span class="sourceLineNo">362</span>        return tableRelPath;<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      }<a name="line.363"></a>
+<span class="sourceLineNo">364</span>      private void rollWriters(WriterLength writerLength) throws IOException {<a name="line.364"></a>
+<span class="sourceLineNo">365</span>        if (writerLength != null) {<a name="line.365"></a>
+<span class="sourceLineNo">366</span>          closeWriter(writerLength);<a name="line.366"></a>
+<span class="sourceLineNo">367</span>        } else {<a name="line.367"></a>
+<span class="sourceLineNo">368</span>          for (WriterLength wl : this.writers.values()) {<a name="line.368"></a>
+<span class="sourceLineNo">369</span>            closeWriter(wl);<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>        this.rollRequested = false;<a name="line.372"></a>
+<span class="sourceLineNo">373</span>      }<a name="line.373"></a>
+<span class="sourceLineNo">374</span><a name="line.374"></a>
+<span class="sourceLineNo">375</span>      private void closeWriter(WriterLength wl) throws IOException {<a name="line.375"></a>
+<span class="sourceLineNo">376</span>        if (wl.writer != null) {<a name="line.376"></a>
+<span class="sourceLineNo">377</span>          LOG.info(<a name="line.377"></a>
+<span class="sourceLineNo">378</span>              "Writer=" + wl.writer.getPath() + ((wl.written == 0)? "": ", wrote=" + wl.written));<a name="line.378"></a>
+<span class="sourceLineNo">379</span>          close(wl.writer);<a name="line.379"></a>
+<span class="sourceLineNo">380</span>        }<a name="line.380"></a>
+<span class="sourceLineNo">381</span>        wl.writer = null;<a name="line.381"></a>
+<span class="sourceLineNo">382</span>        wl.written = 0;<a name="line.382"></a>
+<span class="sourceLineNo">383</span>      }<a name="line.383"></a>
+<span class="sourceLineNo">384</span><a name="line.384"></a>
+<span class="sourceLineNo">385</span>      /*<a name="line.385"></a>
+<span class="sourceLineNo">386</span>       * Create a new StoreFile.Writer.<a name="line.386"></a>
+<span class="sourceLineNo">387</span>       * @param family<a name="line.387"></a>
+<span class="sourceLineNo">388</span>       * @return A WriterLength, containing a new StoreFile.Writer.<a name="line.388"></a>
+<span class="sourceLineNo">389</span>       * @throws IOException<a name="line.389"></a>
+<span class="sourceLineNo">390</span>       */<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="BX_UNBOXING_IMMEDIATELY_REBOXED",<a name="line.391"></a>
+<span class="sourceLineNo">392</span>          justification="Not important")<a name="line.392"></a>
+<span class="sourceLineNo">393</span>      private WriterLength getNewWriter(byte[] tableName, byte[] family, Configuration<a name="line.393"></a>
+<span class="sourceLineNo">394</span>              conf, InetSocketAddress[] favoredNodes) throws IOException {<a name="line.394"></a>
+<span class="sourceLineNo">395</span>        byte[] tableAndFamily = getTableNameSuffixedWithFamily(tableName, family);<a name="line.395"></a>
+<span class="sourceLineNo">396</span>        Path familydir = new Path(outputDir, Bytes.toString(family));<a name="line.396"></a>
+<span class="sourceLineNo">397</span>        if (writeMultipleTables) {<a name="line.397"></a>
+<span class="sourceLineNo">398</span>          familydir = new Path(outputDir,<a name="line.398"></a>
+<span class="sourceLineNo">399</span>                  new Path(getTableRelativePath(tableName), Bytes.toString(family)));<a name="line.399"></a>
+<span class="sourceLineNo">400</span>        }<a name="line.400"></a>
+<span class="sourceLineNo">401</span>        WriterLength wl = new WriterLength();<a name="line.401"></a>
+<span class="sourceLineNo">402</span>        Algorithm compression = compressionMap.get(tableAndFamily);<a name="line.402"></a>
+<span class="sourceLineNo">403</span>        compression = compression == null ? defaultCompression : compression;<a name="line.403"></a>
+<span class="sourceLineNo">404</span>        BloomType bloomType = bloomTypeMap.get(tableAndFamily);<a name="line.404"></a>
+<span class="sourceLineNo">405</span>        bloomType = bloomType == null ? BloomType.NONE : bloomType;<a name="line.405"></a>
+<span class="sourceLineNo">406</span>        String bloomParam = bloomParamMap.get(tableAndFamily);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>        if (bloomType == BloomType.ROWPREFIX_FIXED_LENGTH) {<a name="line.407"></a>
+<span class="sourceLineNo">408</span>          conf.set(BloomFilterUtil.PREFIX_LENGTH_KEY, bloomParam);<a name="line.408"></a>
+<span class="sourceLineNo">409</span>        } else if (bloomType == BloomType.ROWPREFIX_DELIMITED) {<a name="line.409"></a>
+<span class="sourceLineNo">410</span>          conf.set(BloomFilterUtil.DELIMITER_KEY, bloomParam);<a name="line.410"></a>
+<span class="sourceLineNo">411</span>        }<a name="line.411"></a>
+<span class="sourceLineNo">412</span>        Integer blockSize = blockSizeMap.get(tableAndFamily);<a name="line.412"></a>
+<span class="sourceLineNo">413</span>        blockSize = blockSize == null ? HConstants.DEFAULT_BLOCKSIZE : blockSize;<a name="line.413"></a>
+<span class="sourceLineNo">414</span>        DataBlockEncoding encoding = overriddenEncoding;<a name="line.414"></a>
+<span class="sourceLineNo">415</span>        encoding = encoding == null ? datablockEncodingMap.get(tableAndFamily) : encoding;<a name="line.415"></a>
+<span class="sourceLineNo">416</span>        encoding = encoding == null ? DataBlockEncoding.NONE : encoding;<a name="line.416"></a>
+<span class="sourceLineNo">417</span>        Configuration tempConf = new Configuration(conf);<a name="line.417"></a>
+<span class="sourceLineNo">418</span>        tempConf.setFloat(HConstants.HFILE_BLOCK_CACHE_SIZE_KEY, 0.0f);<a name="line.418"></a>
+<span class="sourceLineNo">419</span>        HFileContextBuilder contextBuilder = new HFileContextBuilder()<a name="line.419"></a>
+<span class="sourceLineNo">420</span>                                    .withCompression(compression)<a name="line.420"></a>
+<span class="sourceLineNo">421</span>                                    .withChecksumType(HStore.getChecksumType(conf))<a name="line.421"></a>
+<span class="sourceLineNo">422</span>                                    .withBytesPerCheckSum(HStore.getBytesPerChecksum(conf))<a name="line.422"></a>
+<span class="sourceLineNo">423</span>                                    .withBlockSize(blockSize);<a name="line.423"></a>
+<span class="sourceLineNo">424</span><a name="line.424"></a>
+<span class="sourceLineNo">425</span>        if (HFile.getFormatVersion(conf) &gt;= HFile.MIN_FORMAT_VERSION_WITH_TAGS) {<a name="line.425"></a>
+<span class="sourceLineNo">426</span>          contextBuilder.withIncludesTags(true);<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>        contextBuilder.withDataBlockEncoding(encoding);<a name="line.429"></a>
+<span class="sourceLineNo">430</span>        HFileContext hFileContext = contextBuilder.build();<a name="line.430"></a>
+<span class="sourceLineNo">431</span>        if (null == favoredNodes) {<a name="line.431"></a>
+<span class="sourceLineNo">432</span>          wl.writer =<a name="line.432"></a>
+<span class="sourceLineNo">433</span>              new StoreFileWriter.Builder(conf, new CacheConfig(tempConf), fs)<a name="line.433"></a>
+<span class="sourceLineNo">434</span>                  .withOutputDir(familydir).withBloomType(bloomType)<a name="line.434"></a>
+<span class="sourceLineNo">435</span>                  .withComparator(CellComparator.getInstance()).withFileContext(hFileContext).build();<a name="line.435"></a>
+<span class="sourceLineNo">436</span>        } else {<a name="line.436"></a>
+<span class="sourceLineNo">437</span>          wl.writer =<a name="line.437"></a>
+<span class="sourceLineNo">438</span>              new StoreFileWriter.Builder(conf, new CacheConfig(tempConf), new HFileSystem(fs))<a name="line.438"></a>
+<span class="sourceLineNo">439</span>                  .withOutputDir(familydir).withBloomType(bloomType)<a name="line.439"></a>
+<span class="sourceLineNo">440</span>                  .withComparator(CellComparator.getInstance()).withFileContext(hFileContext)<a name="line.440"></a>
+<span class="sourceLineNo">441</span>                  .withFavoredNodes(favoredNodes).build();<a name="line.441"></a>
+<span class="sourceLineNo">442</span>        }<a name="line.442"></a>
+<span class="sourceLineNo">443</span><a name="line.443"></a>
+<span class="sourceLineNo">444</span>        this.writers.put(tableAndFamily, wl);<a name="line.444"></a>
+<span class="sourceLineNo">445</span>        return wl;<a name="line.445"></a>
+<span class="sourceLineNo">446</span>      }<a name="line.446"></a>
+<span class="sourceLineNo">447</span><a name="line.447"></a>
+<span class="sourceLineNo">448</span>      private void close(final StoreFileWriter w) throws IOException {<a name="line.448"></a>
+<span class="sourceLineNo">449</span>        if (w != null) {<a name="line.449"></a>
+<span class="sourceLineNo">450</span>          w.appendFileInfo(BULKLOAD_TIME_KEY,<a name="line.450"></a>
+<span class="sourceLineNo">451</span>              Bytes.toBytes(System.currentTimeMillis()));<a name="line.451"></a>
+<span class="sourceLineNo">452</span>          w.appendFileInfo(BULKLOAD_TASK_KEY,<a name="line.452"></a>
+<span class="sourceLineNo">453</span>              Bytes.toBytes(context.getTaskAttemptID().toString()));<a name="line.453"></a>
+<span class="sourceLineNo">454</span>          w.appendFileInfo(MAJOR_COMPACTION_KEY,<a name="line.454"></a>
+<span class="sourceLineNo">455</span>              Bytes.toBytes(true));<a name="line.455"></a>
+<span class="sourceLineNo">456</span>          w.appendFileInfo(EXCLUDE_FROM_MINOR_COMPACTION_KEY,<a name="line.456"></a>
+<span class="sourceLineNo">457</span>              Bytes.toBytes(compactionExclude));<a name="line.457"></a>
+<span class="sourceLineNo">458</span>          w.appendTrackedTimestampsToMetadata();<a name="line.458"></a>
+<span class="sourceLineNo">459</span>          w.close();<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><a name="line.462"></a>
-<span class="sourceLineNo">463</span>  /**<a name="line.463"></a>
-<span class="sourceLineNo">464</span>   * Configure block storage policy for CF after the directory is created.<a name="line.464"></a>
-<span class="sourceLineNo">465</span>   */<a name="line.465"></a>
-<span class="sourceLineNo">466</span>  static void configureStoragePolicy(final Configuration conf, final FileSystem fs,<a name="line.466"></a>
-<span class="sourceLineNo">467</span>      byte[] tableAndFamily, Path cfPath) {<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    if (null == conf || null == fs || null == tableAndFamily || null == cfPath) {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>      return;<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>    String policy =<a name="line.472"></a>
-<span class="sourceLineNo">473</span>        conf.get(STORAGE_POLICY_PROPERTY_CF_PREFIX + Bytes.toString(tableAndFamily),<a name="line.473"></a>
-<span class="sourceLineNo">474</span>          conf.get(STORAGE_POLICY_PROPERTY));<a name="line.474"></a>
-<span class="sourceLineNo">475</span>    FSUtils.setStoragePolicy(fs, cfPath, policy);<a name="line.475"></a>
-<span class="sourceLineNo">476</span>  }<a name="line.476"></a>
-<span class="sourceLineNo">477</span><a name="line.477"></a>
-<span class="sourceLineNo">478</span>  /*<a name="line.478"></a>
-<span class="sourceLineNo">479</span>   * Data structure to hold a Writer and amount of data written on it.<a name="line.479"></a>
-<span class="sourceLineNo">480</span>   */<a name="line.480"></a>
-<span class="sourceLineNo">481</span>  static class WriterLength {<a name="line.481"></a>
-<span class="sourceLineNo">482</span>    long written = 0;<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    StoreFileWriter writer = null;<a name="line.483"></a>
-<span class="sourceLineNo">484</span>  }<a name="line.484"></a>
-<span class="sourceLineNo">485</span><a name="line.485"></a>
-<span class="sourceLineNo">486</span>  /**<a name="line.486"></a>
-<span class="sourceLineNo">487</span>   * Return the start keys of all of the regions in this table,<a name="line.487"></a>
-<span class="sourceLineNo">488</span>   * as a list of ImmutableBytesWritable.<a name="line.488"></a>
-<span class="sourceLineNo">489</span>   */<a name="line.489"></a>
-<span class="sourceLineNo">490</span>  private static List&lt;ImmutableBytesWritable&gt; getRegionStartKeys(List&lt;RegionLocator&gt; regionLocators,<a name="line.490"></a>
-<span class="sourceLineNo">491</span>                                                                 boolean writeMultipleTables)<a name="line.491"></a>
-<span class="sourceLineNo">492</span>          throws IOException {<a name="line.492"></a>
-<span class="sourceLineNo">493</span><a name="line.493"></a>
-<span class="sourceLineNo">494</span>    ArrayList&lt;ImmutableBytesWritable&gt; ret = new ArrayList&lt;&gt;();<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    for(RegionLocator regionLocator : regionLocators)<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    {<a name="line.496"></a>
-<span class="sourceLineNo">497</span>      TableName tableName = regionLocator.getName();<a name="line.497"></a>
-<span class="sourceLineNo">498</span>      LOG.info("Looking up current regions for table " + tableName);<a name="line.498"></a>
-<span class="sourceLineNo">499</span>      byte[][] byteKeys = regionLocator.getStartKeys();<a name="line.499"></a>
-<span class="sourceLineNo">500</span>      for (byte[] byteKey : byteKeys) {<a name="line.500"></a>
-<span class="sourceLineNo">501</span>        byte[] fullKey = byteKey; //HFileOutputFormat2 use case<a name="line.501"></a>
-<span class="sourceLineNo">502</span>        if (writeMultipleTables)<a name="line.502"></a>
-<span class="sourceLineNo">503</span>        {<a name="line.503"></a>
-<span class="sourceLineNo">504</span>          //MultiTableHFileOutputFormat use case<a name="line.504"></a>
-<span class="sourceLineNo">505</span>          fullKey = combineTableNameSuffix(tableName.getName(), byteKey);<a name="line.505"></a>
-<span class="sourceLineNo">506</span>        }<a name="line.506"></a>
-<span class="sourceLineNo">507</span>        if (LOG.isDebugEnabled()) {<a name="line.507"></a>
-<span class="sourceLineNo">508</span>          LOG.debug("SplitPoint startkey for table [" + tableName + "]: [" + Bytes.toStringBinary<a name="line.508"></a>
-<span class="sourceLineNo">509</span>                  (fullKey) + "]");<a name="line.509"></a>
-<span class="sourceLineNo">510</span>        }<a name="line.510"></a>
-<span class="sourceLineNo">511</span>        ret.add(new ImmutableBytesWritable(fullKey));<a name="line.511"></a>
-<span class="sourceLineNo">512</span>      }<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    }<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    return ret;<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 out a {@link SequenceFile} that can be read by<a name="line.518"></a>
-<span class="sourceLineNo">519</span>   * {@link TotalOrderPartitioner} that contains the split points in startKeys.<a name="line.519"></a>
-<span class="sourceLineNo">520</span>   */<a name="line.520"></a>
-<span class="sourceLineNo">521</span>  @SuppressWarnings("deprecation")<a name="line.521"></a>
-<span class="sourceLineNo">522</span>  private static void writePartitions(Configuration conf, Path partitionsPath,<a name="line.522"></a>
-<span class="sourceLineNo">523</span>      List&lt;ImmutableBytesWritable&gt; startKeys, boolean writeMultipleTables) throws IOException {<a name="line.523"></a>
-<span class="sourceLineNo">524</span>    LOG.info("Writing partition information to " + partitionsPath);<a name="line.524"></a>
-<span class="sourceLineNo">525</span>    if (startKeys.isEmpty()) {<a name="line.525"></a>
-<span class="sourceLineNo">526</span>      throw new IllegalArgumentException("No regions passed");<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>    // We're generating a list of split points, and we don't ever<a name="line.529"></a>
-<span class="sourceLineNo">530</span>    // have keys &lt; the first region (which has an empty start key)<a name="line.530"></a>
-<span class="sourceLineNo">531</span>    // so we need to remove it. Otherwise we would end up with an<a name="line.531"></a>
-<span class="sourceLineNo">532</span>    // empty reducer with index 0<a name="line.532"></a>
-<span class="sourceLineNo">533</span>    TreeSet&lt;ImmutableBytesWritable&gt; sorted = new TreeSet&lt;&gt;(startKeys);<a name="line.533"></a>
-<span class="sourceLineNo">534</span>    ImmutableBytesWritable first = sorted.first();<a name="line.534"></a>
-<span class="sourceLineNo">535</span>    if (writeMultipleTables) {<a name="line.535"></a>
-<span class="sourceLineNo">536</span>      first = new ImmutableBytesWritable(MultiTableHFileOutputFormat.getSuffix(sorted.first<a name="line.536"></

<TRUNCATED>

[21/43] hbase-site git commit: Published site at 7ab77518a2569e2416a50020393aa386e7734501.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/devapidocs/src-html/org/apache/hadoop/hbase/master/MasterRpcServices.BalanceSwitchMode.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/MasterRpcServices.BalanceSwitchMode.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/MasterRpcServices.BalanceSwitchMode.html
index bba0c5e..145330c 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/MasterRpcServices.BalanceSwitchMode.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/MasterRpcServices.BalanceSwitchMode.html
@@ -2337,128 +2337,127 @@
 <span class="sourceLineNo">2329</span>  @Override<a name="line.2329"></a>
 <span class="sourceLineNo">2330</span>  public GetTableStateResponse setTableStateInMeta(RpcController controller,<a name="line.2330"></a>
 <span class="sourceLineNo">2331</span>      SetTableStateInMetaRequest request) throws ServiceException {<a name="line.2331"></a>
-<span class="sourceLineNo">2332</span>    Connection conn = master.getConnection();<a name="line.2332"></a>
-<span class="sourceLineNo">2333</span>    TableName tn = ProtobufUtil.toTableName(request.getTableName());<a name="line.2333"></a>
-<span class="sourceLineNo">2334</span><a name="line.2334"></a>
-<span class="sourceLineNo">2335</span>    try {<a name="line.2335"></a>
-<span class="sourceLineNo">2336</span>      HBaseProtos.TableState prevState = MetaTableAccessor.getTableState(conn, tn).convert();<a name="line.2336"></a>
-<span class="sourceLineNo">2337</span>      MetaTableAccessor.updateTableState(conn, tn,<a name="line.2337"></a>
-<span class="sourceLineNo">2338</span>          TableState.convert(tn, request.getTableState()).getState());<a name="line.2338"></a>
-<span class="sourceLineNo">2339</span>      return GetTableStateResponse.newBuilder().setTableState(prevState).build();<a name="line.2339"></a>
-<span class="sourceLineNo">2340</span>    } catch (Exception e) {<a name="line.2340"></a>
-<span class="sourceLineNo">2341</span>      throw new ServiceException(e);<a name="line.2341"></a>
-<span class="sourceLineNo">2342</span>    }<a name="line.2342"></a>
-<span class="sourceLineNo">2343</span>  }<a name="line.2343"></a>
-<span class="sourceLineNo">2344</span><a name="line.2344"></a>
-<span class="sourceLineNo">2345</span>  /**<a name="line.2345"></a>
-<span class="sourceLineNo">2346</span>   * Get RegionInfo from Master using content of RegionSpecifier as key.<a name="line.2346"></a>
-<span class="sourceLineNo">2347</span>   * @return RegionInfo found by decoding &lt;code&gt;rs&lt;/code&gt; or null if none found<a name="line.2347"></a>
-<span class="sourceLineNo">2348</span>   */<a name="line.2348"></a>
-<span class="sourceLineNo">2349</span>  private RegionInfo getRegionInfo(HBaseProtos.RegionSpecifier rs) throws UnknownRegionException {<a name="line.2349"></a>
-<span class="sourceLineNo">2350</span>    RegionInfo ri = null;<a name="line.2350"></a>
-<span class="sourceLineNo">2351</span>    switch(rs.getType()) {<a name="line.2351"></a>
-<span class="sourceLineNo">2352</span>      case REGION_NAME:<a name="line.2352"></a>
-<span class="sourceLineNo">2353</span>        final byte[] regionName = rs.getValue().toByteArray();<a name="line.2353"></a>
-<span class="sourceLineNo">2354</span>        ri = this.master.getAssignmentManager().getRegionInfo(regionName);<a name="line.2354"></a>
-<span class="sourceLineNo">2355</span>        break;<a name="line.2355"></a>
-<span class="sourceLineNo">2356</span>      case ENCODED_REGION_NAME:<a name="line.2356"></a>
-<span class="sourceLineNo">2357</span>        String encodedRegionName = Bytes.toString(rs.getValue().toByteArray());<a name="line.2357"></a>
-<span class="sourceLineNo">2358</span>        RegionState regionState = this.master.getAssignmentManager().getRegionStates().<a name="line.2358"></a>
-<span class="sourceLineNo">2359</span>            getRegionState(encodedRegionName);<a name="line.2359"></a>
-<span class="sourceLineNo">2360</span>        ri = regionState == null? null: regionState.getRegion();<a name="line.2360"></a>
-<span class="sourceLineNo">2361</span>        break;<a name="line.2361"></a>
-<span class="sourceLineNo">2362</span>      default:<a name="line.2362"></a>
-<span class="sourceLineNo">2363</span>        break;<a name="line.2363"></a>
-<span class="sourceLineNo">2364</span>    }<a name="line.2364"></a>
-<span class="sourceLineNo">2365</span>    return ri;<a name="line.2365"></a>
-<span class="sourceLineNo">2366</span>  }<a name="line.2366"></a>
-<span class="sourceLineNo">2367</span><a name="line.2367"></a>
-<span class="sourceLineNo">2368</span>  /**<a name="line.2368"></a>
-<span class="sourceLineNo">2369</span>   * A 'raw' version of assign that does bulk and skirts Master state checks (assigns can be made<a name="line.2369"></a>
-<span class="sourceLineNo">2370</span>   * during Master startup). For use by Hbck2.<a name="line.2370"></a>
-<span class="sourceLineNo">2371</span>   */<a name="line.2371"></a>
-<span class="sourceLineNo">2372</span>  @Override<a name="line.2372"></a>
-<span class="sourceLineNo">2373</span>  public MasterProtos.AssignsResponse assigns(RpcController controller,<a name="line.2373"></a>
-<span class="sourceLineNo">2374</span>      MasterProtos.AssignsRequest request)<a name="line.2374"></a>
-<span class="sourceLineNo">2375</span>    throws ServiceException {<a name="line.2375"></a>
-<span class="sourceLineNo">2376</span>    LOG.info(master.getClientIdAuditPrefix() + " assigns");<a name="line.2376"></a>
-<span class="sourceLineNo">2377</span>    if (this.master.getMasterProcedureExecutor() == null) {<a name="line.2377"></a>
-<span class="sourceLineNo">2378</span>      throw new ServiceException("Master's ProcedureExecutor not initialized; retry later");<a name="line.2378"></a>
-<span class="sourceLineNo">2379</span>    }<a name="line.2379"></a>
-<span class="sourceLineNo">2380</span>    MasterProtos.AssignsResponse.Builder responseBuilder =<a name="line.2380"></a>
-<span class="sourceLineNo">2381</span>        MasterProtos.AssignsResponse.newBuilder();<a name="line.2381"></a>
-<span class="sourceLineNo">2382</span>    try {<a name="line.2382"></a>
-<span class="sourceLineNo">2383</span>      for (HBaseProtos.RegionSpecifier rs: request.getRegionList()) {<a name="line.2383"></a>
-<span class="sourceLineNo">2384</span>        // Assign is synchronous as of hbase-2.2. Need an asynchronous one.<a name="line.2384"></a>
-<span class="sourceLineNo">2385</span>        RegionInfo ri = getRegionInfo(rs);<a name="line.2385"></a>
-<span class="sourceLineNo">2386</span>        if (ri == null) {<a name="line.2386"></a>
-<span class="sourceLineNo">2387</span>          LOG.info("Unknown={}", rs);<a name="line.2387"></a>
-<span class="sourceLineNo">2388</span>          responseBuilder.addPid(Procedure.NO_PROC_ID);<a name="line.2388"></a>
-<span class="sourceLineNo">2389</span>          continue;<a name="line.2389"></a>
-<span class="sourceLineNo">2390</span>        }<a name="line.2390"></a>
-<span class="sourceLineNo">2391</span>        responseBuilder.addPid(this.master.getAssignmentManager().assign(ri));<a name="line.2391"></a>
-<span class="sourceLineNo">2392</span>      }<a name="line.2392"></a>
-<span class="sourceLineNo">2393</span>      return responseBuilder.build();<a name="line.2393"></a>
-<span class="sourceLineNo">2394</span>    } catch (IOException ioe) {<a name="line.2394"></a>
-<span class="sourceLineNo">2395</span>      throw new ServiceException(ioe);<a name="line.2395"></a>
-<span class="sourceLineNo">2396</span>    }<a name="line.2396"></a>
-<span class="sourceLineNo">2397</span>  }<a name="line.2397"></a>
-<span class="sourceLineNo">2398</span><a name="line.2398"></a>
-<span class="sourceLineNo">2399</span>  /**<a name="line.2399"></a>
-<span class="sourceLineNo">2400</span>   * A 'raw' version of unassign that does bulk and skirts Master state checks (unassigns can be<a name="line.2400"></a>
-<span class="sourceLineNo">2401</span>   * made during Master startup). For use by Hbck2.<a name="line.2401"></a>
-<span class="sourceLineNo">2402</span>   */<a name="line.2402"></a>
-<span class="sourceLineNo">2403</span>  @Override<a name="line.2403"></a>
-<span class="sourceLineNo">2404</span>  public MasterProtos.UnassignsResponse unassigns(RpcController controller,<a name="line.2404"></a>
-<span class="sourceLineNo">2405</span>      MasterProtos.UnassignsRequest request)<a name="line.2405"></a>
-<span class="sourceLineNo">2406</span>      throws ServiceException {<a name="line.2406"></a>
-<span class="sourceLineNo">2407</span>    LOG.info(master.getClientIdAuditPrefix() + " unassigns");<a name="line.2407"></a>
-<span class="sourceLineNo">2408</span>    if (this.master.getMasterProcedureExecutor() == null) {<a name="line.2408"></a>
-<span class="sourceLineNo">2409</span>      throw new ServiceException("Master's ProcedureExecutor not initialized; retry later");<a name="line.2409"></a>
-<span class="sourceLineNo">2410</span>    }<a name="line.2410"></a>
-<span class="sourceLineNo">2411</span>    MasterProtos.UnassignsResponse.Builder responseBuilder =<a name="line.2411"></a>
-<span class="sourceLineNo">2412</span>        MasterProtos.UnassignsResponse.newBuilder();<a name="line.2412"></a>
-<span class="sourceLineNo">2413</span>    try {<a name="line.2413"></a>
-<span class="sourceLineNo">2414</span>      for (HBaseProtos.RegionSpecifier rs: request.getRegionList()) {<a name="line.2414"></a>
-<span class="sourceLineNo">2415</span>        // Unassign is synchronous as of hbase-2.2. Need an asynchronous one.<a name="line.2415"></a>
-<span class="sourceLineNo">2416</span>        RegionInfo ri = getRegionInfo(rs);<a name="line.2416"></a>
-<span class="sourceLineNo">2417</span>        if (ri == null) {<a name="line.2417"></a>
-<span class="sourceLineNo">2418</span>          LOG.info("Unknown={}", rs);<a name="line.2418"></a>
-<span class="sourceLineNo">2419</span>          responseBuilder.addPid(Procedure.NO_PROC_ID);<a name="line.2419"></a>
-<span class="sourceLineNo">2420</span>          continue;<a name="line.2420"></a>
-<span class="sourceLineNo">2421</span>        }<a name="line.2421"></a>
-<span class="sourceLineNo">2422</span>        responseBuilder.addPid(this.master.getAssignmentManager().unassign(ri));<a name="line.2422"></a>
-<span class="sourceLineNo">2423</span>      }<a name="line.2423"></a>
-<span class="sourceLineNo">2424</span>      return responseBuilder.build();<a name="line.2424"></a>
-<span class="sourceLineNo">2425</span>    } catch (IOException ioe) {<a name="line.2425"></a>
-<span class="sourceLineNo">2426</span>      throw new ServiceException(ioe);<a name="line.2426"></a>
-<span class="sourceLineNo">2427</span>    }<a name="line.2427"></a>
-<span class="sourceLineNo">2428</span>  }<a name="line.2428"></a>
-<span class="sourceLineNo">2429</span><a name="line.2429"></a>
-<span class="sourceLineNo">2430</span>  /**<a name="line.2430"></a>
-<span class="sourceLineNo">2431</span>   * Bypass specified procedure to completion. Procedure is marked completed but no actual work<a name="line.2431"></a>
-<span class="sourceLineNo">2432</span>   * is done from the current state/ step onwards. Parents of the procedure are also marked for<a name="line.2432"></a>
-<span class="sourceLineNo">2433</span>   * bypass.<a name="line.2433"></a>
-<span class="sourceLineNo">2434</span>   *<a name="line.2434"></a>
-<span class="sourceLineNo">2435</span>   * NOTE: this is a dangerous operation and may be used to unstuck buggy procedures. This may<a name="line.2435"></a>
-<span class="sourceLineNo">2436</span>   * leave system in inconherent state. This may need to be followed by some cleanup steps/<a name="line.2436"></a>
-<span class="sourceLineNo">2437</span>   * actions by operator.<a name="line.2437"></a>
-<span class="sourceLineNo">2438</span>   *<a name="line.2438"></a>
-<span class="sourceLineNo">2439</span>   * @return BypassProcedureToCompletionResponse indicating success or failure<a name="line.2439"></a>
-<span class="sourceLineNo">2440</span>   */<a name="line.2440"></a>
-<span class="sourceLineNo">2441</span>  @Override<a name="line.2441"></a>
-<span class="sourceLineNo">2442</span>  public MasterProtos.BypassProcedureResponse bypassProcedure(RpcController controller,<a name="line.2442"></a>
-<span class="sourceLineNo">2443</span>      MasterProtos.BypassProcedureRequest request) throws ServiceException {<a name="line.2443"></a>
-<span class="sourceLineNo">2444</span>    try {<a name="line.2444"></a>
-<span class="sourceLineNo">2445</span>      List&lt;Boolean&gt; ret =<a name="line.2445"></a>
-<span class="sourceLineNo">2446</span>          master.getMasterProcedureExecutor().bypassProcedure(request.getProcIdList(),<a name="line.2446"></a>
-<span class="sourceLineNo">2447</span>          request.getWaitTime(), request.getForce());<a name="line.2447"></a>
-<span class="sourceLineNo">2448</span>      return MasterProtos.BypassProcedureResponse.newBuilder().addAllBypassed(ret).build();<a name="line.2448"></a>
-<span class="sourceLineNo">2449</span>    } catch (IOException e) {<a name="line.2449"></a>
-<span class="sourceLineNo">2450</span>      throw new ServiceException(e);<a name="line.2450"></a>
-<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>}<a name="line.2453"></a>
+<span class="sourceLineNo">2332</span>    TableName tn = ProtobufUtil.toTableName(request.getTableName());<a name="line.2332"></a>
+<span class="sourceLineNo">2333</span>    try {<a name="line.2333"></a>
+<span class="sourceLineNo">2334</span>      HBaseProtos.TableState prevState =<a name="line.2334"></a>
+<span class="sourceLineNo">2335</span>          this.master.getTableStateManager().getTableState(tn).convert();<a name="line.2335"></a>
+<span class="sourceLineNo">2336</span>      this.master.getTableStateManager().setTableState(tn,<a name="line.2336"></a>
+<span class="sourceLineNo">2337</span>          TableState.convert(tn, request.getTableState()).getState());<a name="line.2337"></a>
+<span class="sourceLineNo">2338</span>      return GetTableStateResponse.newBuilder().setTableState(prevState).build();<a name="line.2338"></a>
+<span class="sourceLineNo">2339</span>    } catch (Exception e) {<a name="line.2339"></a>
+<span class="sourceLineNo">2340</span>      throw new ServiceException(e);<a name="line.2340"></a>
+<span class="sourceLineNo">2341</span>    }<a name="line.2341"></a>
+<span class="sourceLineNo">2342</span>  }<a name="line.2342"></a>
+<span class="sourceLineNo">2343</span><a name="line.2343"></a>
+<span class="sourceLineNo">2344</span>  /**<a name="line.2344"></a>
+<span class="sourceLineNo">2345</span>   * Get RegionInfo from Master using content of RegionSpecifier as key.<a name="line.2345"></a>
+<span class="sourceLineNo">2346</span>   * @return RegionInfo found by decoding &lt;code&gt;rs&lt;/code&gt; or null if none found<a name="line.2346"></a>
+<span class="sourceLineNo">2347</span>   */<a name="line.2347"></a>
+<span class="sourceLineNo">2348</span>  private RegionInfo getRegionInfo(HBaseProtos.RegionSpecifier rs) throws UnknownRegionException {<a name="line.2348"></a>
+<span class="sourceLineNo">2349</span>    RegionInfo ri = null;<a name="line.2349"></a>
+<span class="sourceLineNo">2350</span>    switch(rs.getType()) {<a name="line.2350"></a>
+<span class="sourceLineNo">2351</span>      case REGION_NAME:<a name="line.2351"></a>
+<span class="sourceLineNo">2352</span>        final byte[] regionName = rs.getValue().toByteArray();<a name="line.2352"></a>
+<span class="sourceLineNo">2353</span>        ri = this.master.getAssignmentManager().getRegionInfo(regionName);<a name="line.2353"></a>
+<span class="sourceLineNo">2354</span>        break;<a name="line.2354"></a>
+<span class="sourceLineNo">2355</span>      case ENCODED_REGION_NAME:<a name="line.2355"></a>
+<span class="sourceLineNo">2356</span>        String encodedRegionName = Bytes.toString(rs.getValue().toByteArray());<a name="line.2356"></a>
+<span class="sourceLineNo">2357</span>        RegionState regionState = this.master.getAssignmentManager().getRegionStates().<a name="line.2357"></a>
+<span class="sourceLineNo">2358</span>            getRegionState(encodedRegionName);<a name="line.2358"></a>
+<span class="sourceLineNo">2359</span>        ri = regionState == null? null: regionState.getRegion();<a name="line.2359"></a>
+<span class="sourceLineNo">2360</span>        break;<a name="line.2360"></a>
+<span class="sourceLineNo">2361</span>      default:<a name="line.2361"></a>
+<span class="sourceLineNo">2362</span>        break;<a name="line.2362"></a>
+<span class="sourceLineNo">2363</span>    }<a name="line.2363"></a>
+<span class="sourceLineNo">2364</span>    return ri;<a name="line.2364"></a>
+<span class="sourceLineNo">2365</span>  }<a name="line.2365"></a>
+<span class="sourceLineNo">2366</span><a name="line.2366"></a>
+<span class="sourceLineNo">2367</span>  /**<a name="line.2367"></a>
+<span class="sourceLineNo">2368</span>   * A 'raw' version of assign that does bulk and skirts Master state checks (assigns can be made<a name="line.2368"></a>
+<span class="sourceLineNo">2369</span>   * during Master startup). For use by Hbck2.<a name="line.2369"></a>
+<span class="sourceLineNo">2370</span>   */<a name="line.2370"></a>
+<span class="sourceLineNo">2371</span>  @Override<a name="line.2371"></a>
+<span class="sourceLineNo">2372</span>  public MasterProtos.AssignsResponse assigns(RpcController controller,<a name="line.2372"></a>
+<span class="sourceLineNo">2373</span>      MasterProtos.AssignsRequest request)<a name="line.2373"></a>
+<span class="sourceLineNo">2374</span>    throws ServiceException {<a name="line.2374"></a>
+<span class="sourceLineNo">2375</span>    LOG.info(master.getClientIdAuditPrefix() + " assigns");<a name="line.2375"></a>
+<span class="sourceLineNo">2376</span>    if (this.master.getMasterProcedureExecutor() == null) {<a name="line.2376"></a>
+<span class="sourceLineNo">2377</span>      throw new ServiceException("Master's ProcedureExecutor not initialized; retry later");<a name="line.2377"></a>
+<span class="sourceLineNo">2378</span>    }<a name="line.2378"></a>
+<span class="sourceLineNo">2379</span>    MasterProtos.AssignsResponse.Builder responseBuilder =<a name="line.2379"></a>
+<span class="sourceLineNo">2380</span>        MasterProtos.AssignsResponse.newBuilder();<a name="line.2380"></a>
+<span class="sourceLineNo">2381</span>    try {<a name="line.2381"></a>
+<span class="sourceLineNo">2382</span>      for (HBaseProtos.RegionSpecifier rs: request.getRegionList()) {<a name="line.2382"></a>
+<span class="sourceLineNo">2383</span>        // Assign is synchronous as of hbase-2.2. Need an asynchronous one.<a name="line.2383"></a>
+<span class="sourceLineNo">2384</span>        RegionInfo ri = getRegionInfo(rs);<a name="line.2384"></a>
+<span class="sourceLineNo">2385</span>        if (ri == null) {<a name="line.2385"></a>
+<span class="sourceLineNo">2386</span>          LOG.info("Unknown={}", rs);<a name="line.2386"></a>
+<span class="sourceLineNo">2387</span>          responseBuilder.addPid(Procedure.NO_PROC_ID);<a name="line.2387"></a>
+<span class="sourceLineNo">2388</span>          continue;<a name="line.2388"></a>
+<span class="sourceLineNo">2389</span>        }<a name="line.2389"></a>
+<span class="sourceLineNo">2390</span>        responseBuilder.addPid(this.master.getAssignmentManager().assign(ri));<a name="line.2390"></a>
+<span class="sourceLineNo">2391</span>      }<a name="line.2391"></a>
+<span class="sourceLineNo">2392</span>      return responseBuilder.build();<a name="line.2392"></a>
+<span class="sourceLineNo">2393</span>    } catch (IOException ioe) {<a name="line.2393"></a>
+<span class="sourceLineNo">2394</span>      throw new ServiceException(ioe);<a name="line.2394"></a>
+<span class="sourceLineNo">2395</span>    }<a name="line.2395"></a>
+<span class="sourceLineNo">2396</span>  }<a name="line.2396"></a>
+<span class="sourceLineNo">2397</span><a name="line.2397"></a>
+<span class="sourceLineNo">2398</span>  /**<a name="line.2398"></a>
+<span class="sourceLineNo">2399</span>   * A 'raw' version of unassign that does bulk and skirts Master state checks (unassigns can be<a name="line.2399"></a>
+<span class="sourceLineNo">2400</span>   * made during Master startup). For use by Hbck2.<a name="line.2400"></a>
+<span class="sourceLineNo">2401</span>   */<a name="line.2401"></a>
+<span class="sourceLineNo">2402</span>  @Override<a name="line.2402"></a>
+<span class="sourceLineNo">2403</span>  public MasterProtos.UnassignsResponse unassigns(RpcController controller,<a name="line.2403"></a>
+<span class="sourceLineNo">2404</span>      MasterProtos.UnassignsRequest request)<a name="line.2404"></a>
+<span class="sourceLineNo">2405</span>      throws ServiceException {<a name="line.2405"></a>
+<span class="sourceLineNo">2406</span>    LOG.info(master.getClientIdAuditPrefix() + " unassigns");<a name="line.2406"></a>
+<span class="sourceLineNo">2407</span>    if (this.master.getMasterProcedureExecutor() == null) {<a name="line.2407"></a>
+<span class="sourceLineNo">2408</span>      throw new ServiceException("Master's ProcedureExecutor not initialized; retry later");<a name="line.2408"></a>
+<span class="sourceLineNo">2409</span>    }<a name="line.2409"></a>
+<span class="sourceLineNo">2410</span>    MasterProtos.UnassignsResponse.Builder responseBuilder =<a name="line.2410"></a>
+<span class="sourceLineNo">2411</span>        MasterProtos.UnassignsResponse.newBuilder();<a name="line.2411"></a>
+<span class="sourceLineNo">2412</span>    try {<a name="line.2412"></a>
+<span class="sourceLineNo">2413</span>      for (HBaseProtos.RegionSpecifier rs: request.getRegionList()) {<a name="line.2413"></a>
+<span class="sourceLineNo">2414</span>        // Unassign is synchronous as of hbase-2.2. Need an asynchronous one.<a name="line.2414"></a>
+<span class="sourceLineNo">2415</span>        RegionInfo ri = getRegionInfo(rs);<a name="line.2415"></a>
+<span class="sourceLineNo">2416</span>        if (ri == null) {<a name="line.2416"></a>
+<span class="sourceLineNo">2417</span>          LOG.info("Unknown={}", rs);<a name="line.2417"></a>
+<span class="sourceLineNo">2418</span>          responseBuilder.addPid(Procedure.NO_PROC_ID);<a name="line.2418"></a>
+<span class="sourceLineNo">2419</span>          continue;<a name="line.2419"></a>
+<span class="sourceLineNo">2420</span>        }<a name="line.2420"></a>
+<span class="sourceLineNo">2421</span>        responseBuilder.addPid(this.master.getAssignmentManager().unassign(ri));<a name="line.2421"></a>
+<span class="sourceLineNo">2422</span>      }<a name="line.2422"></a>
+<span class="sourceLineNo">2423</span>      return responseBuilder.build();<a name="line.2423"></a>
+<span class="sourceLineNo">2424</span>    } catch (IOException ioe) {<a name="line.2424"></a>
+<span class="sourceLineNo">2425</span>      throw new ServiceException(ioe);<a name="line.2425"></a>
+<span class="sourceLineNo">2426</span>    }<a name="line.2426"></a>
+<span class="sourceLineNo">2427</span>  }<a name="line.2427"></a>
+<span class="sourceLineNo">2428</span><a name="line.2428"></a>
+<span class="sourceLineNo">2429</span>  /**<a name="line.2429"></a>
+<span class="sourceLineNo">2430</span>   * Bypass specified procedure to completion. Procedure is marked completed but no actual work<a name="line.2430"></a>
+<span class="sourceLineNo">2431</span>   * is done from the current state/ step onwards. Parents of the procedure are also marked for<a name="line.2431"></a>
+<span class="sourceLineNo">2432</span>   * bypass.<a name="line.2432"></a>
+<span class="sourceLineNo">2433</span>   *<a name="line.2433"></a>
+<span class="sourceLineNo">2434</span>   * NOTE: this is a dangerous operation and may be used to unstuck buggy procedures. This may<a name="line.2434"></a>
+<span class="sourceLineNo">2435</span>   * leave system in inconherent state. This may need to be followed by some cleanup steps/<a name="line.2435"></a>
+<span class="sourceLineNo">2436</span>   * actions by operator.<a name="line.2436"></a>
+<span class="sourceLineNo">2437</span>   *<a name="line.2437"></a>
+<span class="sourceLineNo">2438</span>   * @return BypassProcedureToCompletionResponse indicating success or failure<a name="line.2438"></a>
+<span class="sourceLineNo">2439</span>   */<a name="line.2439"></a>
+<span class="sourceLineNo">2440</span>  @Override<a name="line.2440"></a>
+<span class="sourceLineNo">2441</span>  public MasterProtos.BypassProcedureResponse bypassProcedure(RpcController controller,<a name="line.2441"></a>
+<span class="sourceLineNo">2442</span>      MasterProtos.BypassProcedureRequest request) throws ServiceException {<a name="line.2442"></a>
+<span class="sourceLineNo">2443</span>    try {<a name="line.2443"></a>
+<span class="sourceLineNo">2444</span>      List&lt;Boolean&gt; ret =<a name="line.2444"></a>
+<span class="sourceLineNo">2445</span>          master.getMasterProcedureExecutor().bypassProcedure(request.getProcIdList(),<a name="line.2445"></a>
+<span class="sourceLineNo">2446</span>          request.getWaitTime(), request.getForce());<a name="line.2446"></a>
+<span class="sourceLineNo">2447</span>      return MasterProtos.BypassProcedureResponse.newBuilder().addAllBypassed(ret).build();<a name="line.2447"></a>
+<span class="sourceLineNo">2448</span>    } catch (IOException e) {<a name="line.2448"></a>
+<span class="sourceLineNo">2449</span>      throw new ServiceException(e);<a name="line.2449"></a>
+<span class="sourceLineNo">2450</span>    }<a name="line.2450"></a>
+<span class="sourceLineNo">2451</span>  }<a name="line.2451"></a>
+<span class="sourceLineNo">2452</span>}<a name="line.2452"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/devapidocs/src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html
index bba0c5e..145330c 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html
@@ -2337,128 +2337,127 @@
 <span class="sourceLineNo">2329</span>  @Override<a name="line.2329"></a>
 <span class="sourceLineNo">2330</span>  public GetTableStateResponse setTableStateInMeta(RpcController controller,<a name="line.2330"></a>
 <span class="sourceLineNo">2331</span>      SetTableStateInMetaRequest request) throws ServiceException {<a name="line.2331"></a>
-<span class="sourceLineNo">2332</span>    Connection conn = master.getConnection();<a name="line.2332"></a>
-<span class="sourceLineNo">2333</span>    TableName tn = ProtobufUtil.toTableName(request.getTableName());<a name="line.2333"></a>
-<span class="sourceLineNo">2334</span><a name="line.2334"></a>
-<span class="sourceLineNo">2335</span>    try {<a name="line.2335"></a>
-<span class="sourceLineNo">2336</span>      HBaseProtos.TableState prevState = MetaTableAccessor.getTableState(conn, tn).convert();<a name="line.2336"></a>
-<span class="sourceLineNo">2337</span>      MetaTableAccessor.updateTableState(conn, tn,<a name="line.2337"></a>
-<span class="sourceLineNo">2338</span>          TableState.convert(tn, request.getTableState()).getState());<a name="line.2338"></a>
-<span class="sourceLineNo">2339</span>      return GetTableStateResponse.newBuilder().setTableState(prevState).build();<a name="line.2339"></a>
-<span class="sourceLineNo">2340</span>    } catch (Exception e) {<a name="line.2340"></a>
-<span class="sourceLineNo">2341</span>      throw new ServiceException(e);<a name="line.2341"></a>
-<span class="sourceLineNo">2342</span>    }<a name="line.2342"></a>
-<span class="sourceLineNo">2343</span>  }<a name="line.2343"></a>
-<span class="sourceLineNo">2344</span><a name="line.2344"></a>
-<span class="sourceLineNo">2345</span>  /**<a name="line.2345"></a>
-<span class="sourceLineNo">2346</span>   * Get RegionInfo from Master using content of RegionSpecifier as key.<a name="line.2346"></a>
-<span class="sourceLineNo">2347</span>   * @return RegionInfo found by decoding &lt;code&gt;rs&lt;/code&gt; or null if none found<a name="line.2347"></a>
-<span class="sourceLineNo">2348</span>   */<a name="line.2348"></a>
-<span class="sourceLineNo">2349</span>  private RegionInfo getRegionInfo(HBaseProtos.RegionSpecifier rs) throws UnknownRegionException {<a name="line.2349"></a>
-<span class="sourceLineNo">2350</span>    RegionInfo ri = null;<a name="line.2350"></a>
-<span class="sourceLineNo">2351</span>    switch(rs.getType()) {<a name="line.2351"></a>
-<span class="sourceLineNo">2352</span>      case REGION_NAME:<a name="line.2352"></a>
-<span class="sourceLineNo">2353</span>        final byte[] regionName = rs.getValue().toByteArray();<a name="line.2353"></a>
-<span class="sourceLineNo">2354</span>        ri = this.master.getAssignmentManager().getRegionInfo(regionName);<a name="line.2354"></a>
-<span class="sourceLineNo">2355</span>        break;<a name="line.2355"></a>
-<span class="sourceLineNo">2356</span>      case ENCODED_REGION_NAME:<a name="line.2356"></a>
-<span class="sourceLineNo">2357</span>        String encodedRegionName = Bytes.toString(rs.getValue().toByteArray());<a name="line.2357"></a>
-<span class="sourceLineNo">2358</span>        RegionState regionState = this.master.getAssignmentManager().getRegionStates().<a name="line.2358"></a>
-<span class="sourceLineNo">2359</span>            getRegionState(encodedRegionName);<a name="line.2359"></a>
-<span class="sourceLineNo">2360</span>        ri = regionState == null? null: regionState.getRegion();<a name="line.2360"></a>
-<span class="sourceLineNo">2361</span>        break;<a name="line.2361"></a>
-<span class="sourceLineNo">2362</span>      default:<a name="line.2362"></a>
-<span class="sourceLineNo">2363</span>        break;<a name="line.2363"></a>
-<span class="sourceLineNo">2364</span>    }<a name="line.2364"></a>
-<span class="sourceLineNo">2365</span>    return ri;<a name="line.2365"></a>
-<span class="sourceLineNo">2366</span>  }<a name="line.2366"></a>
-<span class="sourceLineNo">2367</span><a name="line.2367"></a>
-<span class="sourceLineNo">2368</span>  /**<a name="line.2368"></a>
-<span class="sourceLineNo">2369</span>   * A 'raw' version of assign that does bulk and skirts Master state checks (assigns can be made<a name="line.2369"></a>
-<span class="sourceLineNo">2370</span>   * during Master startup). For use by Hbck2.<a name="line.2370"></a>
-<span class="sourceLineNo">2371</span>   */<a name="line.2371"></a>
-<span class="sourceLineNo">2372</span>  @Override<a name="line.2372"></a>
-<span class="sourceLineNo">2373</span>  public MasterProtos.AssignsResponse assigns(RpcController controller,<a name="line.2373"></a>
-<span class="sourceLineNo">2374</span>      MasterProtos.AssignsRequest request)<a name="line.2374"></a>
-<span class="sourceLineNo">2375</span>    throws ServiceException {<a name="line.2375"></a>
-<span class="sourceLineNo">2376</span>    LOG.info(master.getClientIdAuditPrefix() + " assigns");<a name="line.2376"></a>
-<span class="sourceLineNo">2377</span>    if (this.master.getMasterProcedureExecutor() == null) {<a name="line.2377"></a>
-<span class="sourceLineNo">2378</span>      throw new ServiceException("Master's ProcedureExecutor not initialized; retry later");<a name="line.2378"></a>
-<span class="sourceLineNo">2379</span>    }<a name="line.2379"></a>
-<span class="sourceLineNo">2380</span>    MasterProtos.AssignsResponse.Builder responseBuilder =<a name="line.2380"></a>
-<span class="sourceLineNo">2381</span>        MasterProtos.AssignsResponse.newBuilder();<a name="line.2381"></a>
-<span class="sourceLineNo">2382</span>    try {<a name="line.2382"></a>
-<span class="sourceLineNo">2383</span>      for (HBaseProtos.RegionSpecifier rs: request.getRegionList()) {<a name="line.2383"></a>
-<span class="sourceLineNo">2384</span>        // Assign is synchronous as of hbase-2.2. Need an asynchronous one.<a name="line.2384"></a>
-<span class="sourceLineNo">2385</span>        RegionInfo ri = getRegionInfo(rs);<a name="line.2385"></a>
-<span class="sourceLineNo">2386</span>        if (ri == null) {<a name="line.2386"></a>
-<span class="sourceLineNo">2387</span>          LOG.info("Unknown={}", rs);<a name="line.2387"></a>
-<span class="sourceLineNo">2388</span>          responseBuilder.addPid(Procedure.NO_PROC_ID);<a name="line.2388"></a>
-<span class="sourceLineNo">2389</span>          continue;<a name="line.2389"></a>
-<span class="sourceLineNo">2390</span>        }<a name="line.2390"></a>
-<span class="sourceLineNo">2391</span>        responseBuilder.addPid(this.master.getAssignmentManager().assign(ri));<a name="line.2391"></a>
-<span class="sourceLineNo">2392</span>      }<a name="line.2392"></a>
-<span class="sourceLineNo">2393</span>      return responseBuilder.build();<a name="line.2393"></a>
-<span class="sourceLineNo">2394</span>    } catch (IOException ioe) {<a name="line.2394"></a>
-<span class="sourceLineNo">2395</span>      throw new ServiceException(ioe);<a name="line.2395"></a>
-<span class="sourceLineNo">2396</span>    }<a name="line.2396"></a>
-<span class="sourceLineNo">2397</span>  }<a name="line.2397"></a>
-<span class="sourceLineNo">2398</span><a name="line.2398"></a>
-<span class="sourceLineNo">2399</span>  /**<a name="line.2399"></a>
-<span class="sourceLineNo">2400</span>   * A 'raw' version of unassign that does bulk and skirts Master state checks (unassigns can be<a name="line.2400"></a>
-<span class="sourceLineNo">2401</span>   * made during Master startup). For use by Hbck2.<a name="line.2401"></a>
-<span class="sourceLineNo">2402</span>   */<a name="line.2402"></a>
-<span class="sourceLineNo">2403</span>  @Override<a name="line.2403"></a>
-<span class="sourceLineNo">2404</span>  public MasterProtos.UnassignsResponse unassigns(RpcController controller,<a name="line.2404"></a>
-<span class="sourceLineNo">2405</span>      MasterProtos.UnassignsRequest request)<a name="line.2405"></a>
-<span class="sourceLineNo">2406</span>      throws ServiceException {<a name="line.2406"></a>
-<span class="sourceLineNo">2407</span>    LOG.info(master.getClientIdAuditPrefix() + " unassigns");<a name="line.2407"></a>
-<span class="sourceLineNo">2408</span>    if (this.master.getMasterProcedureExecutor() == null) {<a name="line.2408"></a>
-<span class="sourceLineNo">2409</span>      throw new ServiceException("Master's ProcedureExecutor not initialized; retry later");<a name="line.2409"></a>
-<span class="sourceLineNo">2410</span>    }<a name="line.2410"></a>
-<span class="sourceLineNo">2411</span>    MasterProtos.UnassignsResponse.Builder responseBuilder =<a name="line.2411"></a>
-<span class="sourceLineNo">2412</span>        MasterProtos.UnassignsResponse.newBuilder();<a name="line.2412"></a>
-<span class="sourceLineNo">2413</span>    try {<a name="line.2413"></a>
-<span class="sourceLineNo">2414</span>      for (HBaseProtos.RegionSpecifier rs: request.getRegionList()) {<a name="line.2414"></a>
-<span class="sourceLineNo">2415</span>        // Unassign is synchronous as of hbase-2.2. Need an asynchronous one.<a name="line.2415"></a>
-<span class="sourceLineNo">2416</span>        RegionInfo ri = getRegionInfo(rs);<a name="line.2416"></a>
-<span class="sourceLineNo">2417</span>        if (ri == null) {<a name="line.2417"></a>
-<span class="sourceLineNo">2418</span>          LOG.info("Unknown={}", rs);<a name="line.2418"></a>
-<span class="sourceLineNo">2419</span>          responseBuilder.addPid(Procedure.NO_PROC_ID);<a name="line.2419"></a>
-<span class="sourceLineNo">2420</span>          continue;<a name="line.2420"></a>
-<span class="sourceLineNo">2421</span>        }<a name="line.2421"></a>
-<span class="sourceLineNo">2422</span>        responseBuilder.addPid(this.master.getAssignmentManager().unassign(ri));<a name="line.2422"></a>
-<span class="sourceLineNo">2423</span>      }<a name="line.2423"></a>
-<span class="sourceLineNo">2424</span>      return responseBuilder.build();<a name="line.2424"></a>
-<span class="sourceLineNo">2425</span>    } catch (IOException ioe) {<a name="line.2425"></a>
-<span class="sourceLineNo">2426</span>      throw new ServiceException(ioe);<a name="line.2426"></a>
-<span class="sourceLineNo">2427</span>    }<a name="line.2427"></a>
-<span class="sourceLineNo">2428</span>  }<a name="line.2428"></a>
-<span class="sourceLineNo">2429</span><a name="line.2429"></a>
-<span class="sourceLineNo">2430</span>  /**<a name="line.2430"></a>
-<span class="sourceLineNo">2431</span>   * Bypass specified procedure to completion. Procedure is marked completed but no actual work<a name="line.2431"></a>
-<span class="sourceLineNo">2432</span>   * is done from the current state/ step onwards. Parents of the procedure are also marked for<a name="line.2432"></a>
-<span class="sourceLineNo">2433</span>   * bypass.<a name="line.2433"></a>
-<span class="sourceLineNo">2434</span>   *<a name="line.2434"></a>
-<span class="sourceLineNo">2435</span>   * NOTE: this is a dangerous operation and may be used to unstuck buggy procedures. This may<a name="line.2435"></a>
-<span class="sourceLineNo">2436</span>   * leave system in inconherent state. This may need to be followed by some cleanup steps/<a name="line.2436"></a>
-<span class="sourceLineNo">2437</span>   * actions by operator.<a name="line.2437"></a>
-<span class="sourceLineNo">2438</span>   *<a name="line.2438"></a>
-<span class="sourceLineNo">2439</span>   * @return BypassProcedureToCompletionResponse indicating success or failure<a name="line.2439"></a>
-<span class="sourceLineNo">2440</span>   */<a name="line.2440"></a>
-<span class="sourceLineNo">2441</span>  @Override<a name="line.2441"></a>
-<span class="sourceLineNo">2442</span>  public MasterProtos.BypassProcedureResponse bypassProcedure(RpcController controller,<a name="line.2442"></a>
-<span class="sourceLineNo">2443</span>      MasterProtos.BypassProcedureRequest request) throws ServiceException {<a name="line.2443"></a>
-<span class="sourceLineNo">2444</span>    try {<a name="line.2444"></a>
-<span class="sourceLineNo">2445</span>      List&lt;Boolean&gt; ret =<a name="line.2445"></a>
-<span class="sourceLineNo">2446</span>          master.getMasterProcedureExecutor().bypassProcedure(request.getProcIdList(),<a name="line.2446"></a>
-<span class="sourceLineNo">2447</span>          request.getWaitTime(), request.getForce());<a name="line.2447"></a>
-<span class="sourceLineNo">2448</span>      return MasterProtos.BypassProcedureResponse.newBuilder().addAllBypassed(ret).build();<a name="line.2448"></a>
-<span class="sourceLineNo">2449</span>    } catch (IOException e) {<a name="line.2449"></a>
-<span class="sourceLineNo">2450</span>      throw new ServiceException(e);<a name="line.2450"></a>
-<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>}<a name="line.2453"></a>
+<span class="sourceLineNo">2332</span>    TableName tn = ProtobufUtil.toTableName(request.getTableName());<a name="line.2332"></a>
+<span class="sourceLineNo">2333</span>    try {<a name="line.2333"></a>
+<span class="sourceLineNo">2334</span>      HBaseProtos.TableState prevState =<a name="line.2334"></a>
+<span class="sourceLineNo">2335</span>          this.master.getTableStateManager().getTableState(tn).convert();<a name="line.2335"></a>
+<span class="sourceLineNo">2336</span>      this.master.getTableStateManager().setTableState(tn,<a name="line.2336"></a>
+<span class="sourceLineNo">2337</span>          TableState.convert(tn, request.getTableState()).getState());<a name="line.2337"></a>
+<span class="sourceLineNo">2338</span>      return GetTableStateResponse.newBuilder().setTableState(prevState).build();<a name="line.2338"></a>
+<span class="sourceLineNo">2339</span>    } catch (Exception e) {<a name="line.2339"></a>
+<span class="sourceLineNo">2340</span>      throw new ServiceException(e);<a name="line.2340"></a>
+<span class="sourceLineNo">2341</span>    }<a name="line.2341"></a>
+<span class="sourceLineNo">2342</span>  }<a name="line.2342"></a>
+<span class="sourceLineNo">2343</span><a name="line.2343"></a>
+<span class="sourceLineNo">2344</span>  /**<a name="line.2344"></a>
+<span class="sourceLineNo">2345</span>   * Get RegionInfo from Master using content of RegionSpecifier as key.<a name="line.2345"></a>
+<span class="sourceLineNo">2346</span>   * @return RegionInfo found by decoding &lt;code&gt;rs&lt;/code&gt; or null if none found<a name="line.2346"></a>
+<span class="sourceLineNo">2347</span>   */<a name="line.2347"></a>
+<span class="sourceLineNo">2348</span>  private RegionInfo getRegionInfo(HBaseProtos.RegionSpecifier rs) throws UnknownRegionException {<a name="line.2348"></a>
+<span class="sourceLineNo">2349</span>    RegionInfo ri = null;<a name="line.2349"></a>
+<span class="sourceLineNo">2350</span>    switch(rs.getType()) {<a name="line.2350"></a>
+<span class="sourceLineNo">2351</span>      case REGION_NAME:<a name="line.2351"></a>
+<span class="sourceLineNo">2352</span>        final byte[] regionName = rs.getValue().toByteArray();<a name="line.2352"></a>
+<span class="sourceLineNo">2353</span>        ri = this.master.getAssignmentManager().getRegionInfo(regionName);<a name="line.2353"></a>
+<span class="sourceLineNo">2354</span>        break;<a name="line.2354"></a>
+<span class="sourceLineNo">2355</span>      case ENCODED_REGION_NAME:<a name="line.2355"></a>
+<span class="sourceLineNo">2356</span>        String encodedRegionName = Bytes.toString(rs.getValue().toByteArray());<a name="line.2356"></a>
+<span class="sourceLineNo">2357</span>        RegionState regionState = this.master.getAssignmentManager().getRegionStates().<a name="line.2357"></a>
+<span class="sourceLineNo">2358</span>            getRegionState(encodedRegionName);<a name="line.2358"></a>
+<span class="sourceLineNo">2359</span>        ri = regionState == null? null: regionState.getRegion();<a name="line.2359"></a>
+<span class="sourceLineNo">2360</span>        break;<a name="line.2360"></a>
+<span class="sourceLineNo">2361</span>      default:<a name="line.2361"></a>
+<span class="sourceLineNo">2362</span>        break;<a name="line.2362"></a>
+<span class="sourceLineNo">2363</span>    }<a name="line.2363"></a>
+<span class="sourceLineNo">2364</span>    return ri;<a name="line.2364"></a>
+<span class="sourceLineNo">2365</span>  }<a name="line.2365"></a>
+<span class="sourceLineNo">2366</span><a name="line.2366"></a>
+<span class="sourceLineNo">2367</span>  /**<a name="line.2367"></a>
+<span class="sourceLineNo">2368</span>   * A 'raw' version of assign that does bulk and skirts Master state checks (assigns can be made<a name="line.2368"></a>
+<span class="sourceLineNo">2369</span>   * during Master startup). For use by Hbck2.<a name="line.2369"></a>
+<span class="sourceLineNo">2370</span>   */<a name="line.2370"></a>
+<span class="sourceLineNo">2371</span>  @Override<a name="line.2371"></a>
+<span class="sourceLineNo">2372</span>  public MasterProtos.AssignsResponse assigns(RpcController controller,<a name="line.2372"></a>
+<span class="sourceLineNo">2373</span>      MasterProtos.AssignsRequest request)<a name="line.2373"></a>
+<span class="sourceLineNo">2374</span>    throws ServiceException {<a name="line.2374"></a>
+<span class="sourceLineNo">2375</span>    LOG.info(master.getClientIdAuditPrefix() + " assigns");<a name="line.2375"></a>
+<span class="sourceLineNo">2376</span>    if (this.master.getMasterProcedureExecutor() == null) {<a name="line.2376"></a>
+<span class="sourceLineNo">2377</span>      throw new ServiceException("Master's ProcedureExecutor not initialized; retry later");<a name="line.2377"></a>
+<span class="sourceLineNo">2378</span>    }<a name="line.2378"></a>
+<span class="sourceLineNo">2379</span>    MasterProtos.AssignsResponse.Builder responseBuilder =<a name="line.2379"></a>
+<span class="sourceLineNo">2380</span>        MasterProtos.AssignsResponse.newBuilder();<a name="line.2380"></a>
+<span class="sourceLineNo">2381</span>    try {<a name="line.2381"></a>
+<span class="sourceLineNo">2382</span>      for (HBaseProtos.RegionSpecifier rs: request.getRegionList()) {<a name="line.2382"></a>
+<span class="sourceLineNo">2383</span>        // Assign is synchronous as of hbase-2.2. Need an asynchronous one.<a name="line.2383"></a>
+<span class="sourceLineNo">2384</span>        RegionInfo ri = getRegionInfo(rs);<a name="line.2384"></a>
+<span class="sourceLineNo">2385</span>        if (ri == null) {<a name="line.2385"></a>
+<span class="sourceLineNo">2386</span>          LOG.info("Unknown={}", rs);<a name="line.2386"></a>
+<span class="sourceLineNo">2387</span>          responseBuilder.addPid(Procedure.NO_PROC_ID);<a name="line.2387"></a>
+<span class="sourceLineNo">2388</span>          continue;<a name="line.2388"></a>
+<span class="sourceLineNo">2389</span>        }<a name="line.2389"></a>
+<span class="sourceLineNo">2390</span>        responseBuilder.addPid(this.master.getAssignmentManager().assign(ri));<a name="line.2390"></a>
+<span class="sourceLineNo">2391</span>      }<a name="line.2391"></a>
+<span class="sourceLineNo">2392</span>      return responseBuilder.build();<a name="line.2392"></a>
+<span class="sourceLineNo">2393</span>    } catch (IOException ioe) {<a name="line.2393"></a>
+<span class="sourceLineNo">2394</span>      throw new ServiceException(ioe);<a name="line.2394"></a>
+<span class="sourceLineNo">2395</span>    }<a name="line.2395"></a>
+<span class="sourceLineNo">2396</span>  }<a name="line.2396"></a>
+<span class="sourceLineNo">2397</span><a name="line.2397"></a>
+<span class="sourceLineNo">2398</span>  /**<a name="line.2398"></a>
+<span class="sourceLineNo">2399</span>   * A 'raw' version of unassign that does bulk and skirts Master state checks (unassigns can be<a name="line.2399"></a>
+<span class="sourceLineNo">2400</span>   * made during Master startup). For use by Hbck2.<a name="line.2400"></a>
+<span class="sourceLineNo">2401</span>   */<a name="line.2401"></a>
+<span class="sourceLineNo">2402</span>  @Override<a name="line.2402"></a>
+<span class="sourceLineNo">2403</span>  public MasterProtos.UnassignsResponse unassigns(RpcController controller,<a name="line.2403"></a>
+<span class="sourceLineNo">2404</span>      MasterProtos.UnassignsRequest request)<a name="line.2404"></a>
+<span class="sourceLineNo">2405</span>      throws ServiceException {<a name="line.2405"></a>
+<span class="sourceLineNo">2406</span>    LOG.info(master.getClientIdAuditPrefix() + " unassigns");<a name="line.2406"></a>
+<span class="sourceLineNo">2407</span>    if (this.master.getMasterProcedureExecutor() == null) {<a name="line.2407"></a>
+<span class="sourceLineNo">2408</span>      throw new ServiceException("Master's ProcedureExecutor not initialized; retry later");<a name="line.2408"></a>
+<span class="sourceLineNo">2409</span>    }<a name="line.2409"></a>
+<span class="sourceLineNo">2410</span>    MasterProtos.UnassignsResponse.Builder responseBuilder =<a name="line.2410"></a>
+<span class="sourceLineNo">2411</span>        MasterProtos.UnassignsResponse.newBuilder();<a name="line.2411"></a>
+<span class="sourceLineNo">2412</span>    try {<a name="line.2412"></a>
+<span class="sourceLineNo">2413</span>      for (HBaseProtos.RegionSpecifier rs: request.getRegionList()) {<a name="line.2413"></a>
+<span class="sourceLineNo">2414</span>        // Unassign is synchronous as of hbase-2.2. Need an asynchronous one.<a name="line.2414"></a>
+<span class="sourceLineNo">2415</span>        RegionInfo ri = getRegionInfo(rs);<a name="line.2415"></a>
+<span class="sourceLineNo">2416</span>        if (ri == null) {<a name="line.2416"></a>
+<span class="sourceLineNo">2417</span>          LOG.info("Unknown={}", rs);<a name="line.2417"></a>
+<span class="sourceLineNo">2418</span>          responseBuilder.addPid(Procedure.NO_PROC_ID);<a name="line.2418"></a>
+<span class="sourceLineNo">2419</span>          continue;<a name="line.2419"></a>
+<span class="sourceLineNo">2420</span>        }<a name="line.2420"></a>
+<span class="sourceLineNo">2421</span>        responseBuilder.addPid(this.master.getAssignmentManager().unassign(ri));<a name="line.2421"></a>
+<span class="sourceLineNo">2422</span>      }<a name="line.2422"></a>
+<span class="sourceLineNo">2423</span>      return responseBuilder.build();<a name="line.2423"></a>
+<span class="sourceLineNo">2424</span>    } catch (IOException ioe) {<a name="line.2424"></a>
+<span class="sourceLineNo">2425</span>      throw new ServiceException(ioe);<a name="line.2425"></a>
+<span class="sourceLineNo">2426</span>    }<a name="line.2426"></a>
+<span class="sourceLineNo">2427</span>  }<a name="line.2427"></a>
+<span class="sourceLineNo">2428</span><a name="line.2428"></a>
+<span class="sourceLineNo">2429</span>  /**<a name="line.2429"></a>
+<span class="sourceLineNo">2430</span>   * Bypass specified procedure to completion. Procedure is marked completed but no actual work<a name="line.2430"></a>
+<span class="sourceLineNo">2431</span>   * is done from the current state/ step onwards. Parents of the procedure are also marked for<a name="line.2431"></a>
+<span class="sourceLineNo">2432</span>   * bypass.<a name="line.2432"></a>
+<span class="sourceLineNo">2433</span>   *<a name="line.2433"></a>
+<span class="sourceLineNo">2434</span>   * NOTE: this is a dangerous operation and may be used to unstuck buggy procedures. This may<a name="line.2434"></a>
+<span class="sourceLineNo">2435</span>   * leave system in inconherent state. This may need to be followed by some cleanup steps/<a name="line.2435"></a>
+<span class="sourceLineNo">2436</span>   * actions by operator.<a name="line.2436"></a>
+<span class="sourceLineNo">2437</span>   *<a name="line.2437"></a>
+<span class="sourceLineNo">2438</span>   * @return BypassProcedureToCompletionResponse indicating success or failure<a name="line.2438"></a>
+<span class="sourceLineNo">2439</span>   */<a name="line.2439"></a>
+<span class="sourceLineNo">2440</span>  @Override<a name="line.2440"></a>
+<span class="sourceLineNo">2441</span>  public MasterProtos.BypassProcedureResponse bypassProcedure(RpcController controller,<a name="line.2441"></a>
+<span class="sourceLineNo">2442</span>      MasterProtos.BypassProcedureRequest request) throws ServiceException {<a name="line.2442"></a>
+<span class="sourceLineNo">2443</span>    try {<a name="line.2443"></a>
+<span class="sourceLineNo">2444</span>      List&lt;Boolean&gt; ret =<a name="line.2444"></a>
+<span class="sourceLineNo">2445</span>          master.getMasterProcedureExecutor().bypassProcedure(request.getProcIdList(),<a name="line.2445"></a>
+<span class="sourceLineNo">2446</span>          request.getWaitTime(), request.getForce());<a name="line.2446"></a>
+<span class="sourceLineNo">2447</span>      return MasterProtos.BypassProcedureResponse.newBuilder().addAllBypassed(ret).build();<a name="line.2447"></a>
+<span class="sourceLineNo">2448</span>    } catch (IOException e) {<a name="line.2448"></a>
+<span class="sourceLineNo">2449</span>      throw new ServiceException(e);<a name="line.2449"></a>
+<span class="sourceLineNo">2450</span>    }<a name="line.2450"></a>
+<span class="sourceLineNo">2451</span>  }<a name="line.2451"></a>
+<span class="sourceLineNo">2452</span>}<a name="line.2452"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/BloomType.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/BloomType.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/BloomType.html
index 2218d26..27fd9a2 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/BloomType.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/BloomType.html
@@ -42,8 +42,16 @@
 <span class="sourceLineNo">034</span>  /**<a name="line.34"></a>
 <span class="sourceLineNo">035</span>   * Bloom enabled with Table row &amp;amp; column (family+qualifier) as Key<a name="line.35"></a>
 <span class="sourceLineNo">036</span>   */<a name="line.36"></a>
-<span class="sourceLineNo">037</span>  ROWCOL<a name="line.37"></a>
-<span class="sourceLineNo">038</span>}<a name="line.38"></a>
+<span class="sourceLineNo">037</span>  ROWCOL,<a name="line.37"></a>
+<span class="sourceLineNo">038</span>  /**<a name="line.38"></a>
+<span class="sourceLineNo">039</span>   * Bloom enabled with Table row prefix as Key, specify the length of the prefix<a name="line.39"></a>
+<span class="sourceLineNo">040</span>   */<a name="line.40"></a>
+<span class="sourceLineNo">041</span>  ROWPREFIX_FIXED_LENGTH,<a name="line.41"></a>
+<span class="sourceLineNo">042</span>  /**<a name="line.42"></a>
+<span class="sourceLineNo">043</span>   * Bloom enabled with Table row prefix as Key, specify the delimiter of the prefix<a name="line.43"></a>
+<span class="sourceLineNo">044</span>   */<a name="line.44"></a>
+<span class="sourceLineNo">045</span>  ROWPREFIX_DELIMITED<a name="line.45"></a>
+<span class="sourceLineNo">046</span>}<a name="line.46"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/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 3f9d8d2..7becf50 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
@@ -2642,7 +2642,7 @@
 <span class="sourceLineNo">2634</span>          if (storeClosing &amp;&amp; !file.isCompactedAway()) {<a name="line.2634"></a>
 <span class="sourceLineNo">2635</span>            String msg =<a name="line.2635"></a>
 <span class="sourceLineNo">2636</span>                "Region closing but StoreFile is in compacted list but not compacted away: " +<a name="line.2636"></a>
-<span class="sourceLineNo">2637</span>                file.getPath().getName();<a name="line.2637"></a>
+<span class="sourceLineNo">2637</span>                file.getPath();<a name="line.2637"></a>
 <span class="sourceLineNo">2638</span>            throw new IllegalStateException(msg);<a name="line.2638"></a>
 <span class="sourceLineNo">2639</span>          }<a name="line.2639"></a>
 <span class="sourceLineNo">2640</span><a name="line.2640"></a>
@@ -2650,8 +2650,8 @@
 <span class="sourceLineNo">2642</span>          //and remove compacted storefiles from the region directory<a name="line.2642"></a>
 <span class="sourceLineNo">2643</span>          if (file.isCompactedAway() &amp;&amp; (!file.isReferencedInReads() || storeClosing)) {<a name="line.2643"></a>
 <span class="sourceLineNo">2644</span>            if (storeClosing &amp;&amp; file.isReferencedInReads()) {<a name="line.2644"></a>
-<span class="sourceLineNo">2645</span>              LOG.debug("Region closing but StoreFile still has references: {}",<a name="line.2645"></a>
-<span class="sourceLineNo">2646</span>                  file.getPath().getName());<a name="line.2646"></a>
+<span class="sourceLineNo">2645</span>              LOG.warn("Region closing but StoreFile still has references: file={}, refCount={}",<a name="line.2645"></a>
+<span class="sourceLineNo">2646</span>                  file.getPath(), r.getRefCount());<a name="line.2646"></a>
 <span class="sourceLineNo">2647</span>            }<a name="line.2647"></a>
 <span class="sourceLineNo">2648</span>            // Even if deleting fails we need not bother as any new scanners won't be<a name="line.2648"></a>
 <span class="sourceLineNo">2649</span>            // able to use the compacted file as the status is already compactedAway<a name="line.2649"></a>
@@ -2666,13 +2666,13 @@
 <span class="sourceLineNo">2658</span>            storeFileSizes.add(length);<a name="line.2658"></a>
 <span class="sourceLineNo">2659</span>          } else {<a name="line.2659"></a>
 <span class="sourceLineNo">2660</span>            LOG.info("Can't archive compacted file " + file.getPath()<a name="line.2660"></a>
-<span class="sourceLineNo">2661</span>                + " because of either isCompactedAway = " + file.isCompactedAway()<a name="line.2661"></a>
-<span class="sourceLineNo">2662</span>                + " or file has reference, isReferencedInReads = " + file.isReferencedInReads()<a name="line.2662"></a>
-<span class="sourceLineNo">2663</span>                + ", skipping for now.");<a name="line.2663"></a>
+<span class="sourceLineNo">2661</span>                + " because of either isCompactedAway=" + file.isCompactedAway()<a name="line.2661"></a>
+<span class="sourceLineNo">2662</span>                + " or file has reference, isReferencedInReads=" + file.isReferencedInReads()<a name="line.2662"></a>
+<span class="sourceLineNo">2663</span>                + ", refCount=" + r.getRefCount() + ", skipping for now.");<a name="line.2663"></a>
 <span class="sourceLineNo">2664</span>          }<a name="line.2664"></a>
 <span class="sourceLineNo">2665</span>        } catch (Exception e) {<a name="line.2665"></a>
 <span class="sourceLineNo">2666</span>          String msg = "Exception while trying to close the compacted store file " +<a name="line.2666"></a>
-<span class="sourceLineNo">2667</span>              file.getPath().getName();<a name="line.2667"></a>
+<span class="sourceLineNo">2667</span>              file.getPath();<a name="line.2667"></a>
 <span class="sourceLineNo">2668</span>          if (storeClosing) {<a name="line.2668"></a>
 <span class="sourceLineNo">2669</span>            msg = "Store is closing. " + msg;<a name="line.2669"></a>
 <span class="sourceLineNo">2670</span>          }<a name="line.2670"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/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 3f9d8d2..7becf50 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.html
@@ -2642,7 +2642,7 @@
 <span class="sourceLineNo">2634</span>          if (storeClosing &amp;&amp; !file.isCompactedAway()) {<a name="line.2634"></a>
 <span class="sourceLineNo">2635</span>            String msg =<a name="line.2635"></a>
 <span class="sourceLineNo">2636</span>                "Region closing but StoreFile is in compacted list but not compacted away: " +<a name="line.2636"></a>
-<span class="sourceLineNo">2637</span>                file.getPath().getName();<a name="line.2637"></a>
+<span class="sourceLineNo">2637</span>                file.getPath();<a name="line.2637"></a>
 <span class="sourceLineNo">2638</span>            throw new IllegalStateException(msg);<a name="line.2638"></a>
 <span class="sourceLineNo">2639</span>          }<a name="line.2639"></a>
 <span class="sourceLineNo">2640</span><a name="line.2640"></a>
@@ -2650,8 +2650,8 @@
 <span class="sourceLineNo">2642</span>          //and remove compacted storefiles from the region directory<a name="line.2642"></a>
 <span class="sourceLineNo">2643</span>          if (file.isCompactedAway() &amp;&amp; (!file.isReferencedInReads() || storeClosing)) {<a name="line.2643"></a>
 <span class="sourceLineNo">2644</span>            if (storeClosing &amp;&amp; file.isReferencedInReads()) {<a name="line.2644"></a>
-<span class="sourceLineNo">2645</span>              LOG.debug("Region closing but StoreFile still has references: {}",<a name="line.2645"></a>
-<span class="sourceLineNo">2646</span>                  file.getPath().getName());<a name="line.2646"></a>
+<span class="sourceLineNo">2645</span>              LOG.warn("Region closing but StoreFile still has references: file={}, refCount={}",<a name="line.2645"></a>
+<span class="sourceLineNo">2646</span>                  file.getPath(), r.getRefCount());<a name="line.2646"></a>
 <span class="sourceLineNo">2647</span>            }<a name="line.2647"></a>
 <span class="sourceLineNo">2648</span>            // Even if deleting fails we need not bother as any new scanners won't be<a name="line.2648"></a>
 <span class="sourceLineNo">2649</span>            // able to use the compacted file as the status is already compactedAway<a name="line.2649"></a>
@@ -2666,13 +2666,13 @@
 <span class="sourceLineNo">2658</span>            storeFileSizes.add(length);<a name="line.2658"></a>
 <span class="sourceLineNo">2659</span>          } else {<a name="line.2659"></a>
 <span class="sourceLineNo">2660</span>            LOG.info("Can't archive compacted file " + file.getPath()<a name="line.2660"></a>
-<span class="sourceLineNo">2661</span>                + " because of either isCompactedAway = " + file.isCompactedAway()<a name="line.2661"></a>
-<span class="sourceLineNo">2662</span>                + " or file has reference, isReferencedInReads = " + file.isReferencedInReads()<a name="line.2662"></a>
-<span class="sourceLineNo">2663</span>                + ", skipping for now.");<a name="line.2663"></a>
+<span class="sourceLineNo">2661</span>                + " because of either isCompactedAway=" + file.isCompactedAway()<a name="line.2661"></a>
+<span class="sourceLineNo">2662</span>                + " or file has reference, isReferencedInReads=" + file.isReferencedInReads()<a name="line.2662"></a>
+<span class="sourceLineNo">2663</span>                + ", refCount=" + r.getRefCount() + ", skipping for now.");<a name="line.2663"></a>
 <span class="sourceLineNo">2664</span>          }<a name="line.2664"></a>
 <span class="sourceLineNo">2665</span>        } catch (Exception e) {<a name="line.2665"></a>
 <span class="sourceLineNo">2666</span>          String msg = "Exception while trying to close the compacted store file " +<a name="line.2666"></a>
-<span class="sourceLineNo">2667</span>              file.getPath().getName();<a name="line.2667"></a>
+<span class="sourceLineNo">2667</span>              file.getPath();<a name="line.2667"></a>
 <span class="sourceLineNo">2668</span>          if (storeClosing) {<a name="line.2668"></a>
 <span class="sourceLineNo">2669</span>            msg = "Store is closing. " + msg;<a name="line.2669"></a>
 <span class="sourceLineNo">2670</span>          }<a name="line.2670"></a>


[07/43] hbase-site git commit: Published site at 7ab77518a2569e2416a50020393aa386e7734501.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/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 68397c8..5282059 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/wal/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/wal/package-tree.html
@@ -141,8 +141,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.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/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/TestWALSplit.Corruptions.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">TestWALSplit.Corruptions</span></a></li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/testdevapidocs/overview-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/overview-tree.html b/testdevapidocs/overview-tree.html
index cc67041..a990b7a 100644
--- a/testdevapidocs/overview-tree.html
+++ b/testdevapidocs/overview-tree.html
@@ -3451,6 +3451,7 @@
 <li type="circle">org.apache.hadoop.hbase.mapred.<a href="org/apache/hadoop/hbase/mapred/TestRowCounter.html" title="class in org.apache.hadoop.hbase.mapred"><span class="typeNameLink">TestRowCounter</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestRowCounter.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestRowCounter</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.mapred.<a href="org/apache/hadoop/hbase/mapred/TestRowCounter.OutputReader.html" title="class in org.apache.hadoop.hbase.mapred"><span class="typeNameLink">TestRowCounter.OutputReader</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestRowPrefixBloomFilter</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/TestRowProcessorEndpoint.html" title="class in org.apache.hadoop.hbase.coprocessor"><span class="typeNameLink">TestRowProcessorEndpoint</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/TestRowProcessorEndpoint.IncrementRunner.html" title="class in org.apache.hadoop.hbase.coprocessor"><span class="typeNameLink">TestRowProcessorEndpoint.IncrementRunner</span></a> (implements java.lang.<a href="https://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.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/TestRowProcessorEndpoint.SwapRowsRunner.html" title="class in org.apache.hadoop.hbase.coprocessor"><span class="typeNameLink">TestRowProcessorEndpoint.SwapRowsRunner</span></a> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a>)</li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/testdevapidocs/src-html/org/apache/hadoop/hbase/chaos/actions/ChangeBloomFilterAction.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/chaos/actions/ChangeBloomFilterAction.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/chaos/actions/ChangeBloomFilterAction.html
index 85e4d6a..0b8afc8 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/chaos/actions/ChangeBloomFilterAction.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/chaos/actions/ChangeBloomFilterAction.html
@@ -30,42 +30,48 @@
 <span class="sourceLineNo">022</span><a name="line.22"></a>
 <span class="sourceLineNo">023</span>import org.apache.hadoop.hbase.TableName;<a name="line.23"></a>
 <span class="sourceLineNo">024</span>import org.apache.hadoop.hbase.regionserver.BloomType;<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> * Action that tries to adjust the bloom filter setting on all the columns of a<a name="line.27"></a>
-<span class="sourceLineNo">028</span> * table<a name="line.28"></a>
-<span class="sourceLineNo">029</span> */<a name="line.29"></a>
-<span class="sourceLineNo">030</span>public class ChangeBloomFilterAction extends Action {<a name="line.30"></a>
-<span class="sourceLineNo">031</span>  private final long sleepTime;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>  private final TableName tableName;<a name="line.32"></a>
-<span class="sourceLineNo">033</span><a name="line.33"></a>
-<span class="sourceLineNo">034</span>  public ChangeBloomFilterAction(TableName tableName) {<a name="line.34"></a>
-<span class="sourceLineNo">035</span>    this(-1, tableName);<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>  public ChangeBloomFilterAction(int sleepTime, TableName tableName) {<a name="line.38"></a>
-<span class="sourceLineNo">039</span>    this.sleepTime = sleepTime;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>    this.tableName = tableName;<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>  @Override<a name="line.43"></a>
-<span class="sourceLineNo">044</span>  public void perform() throws Exception {<a name="line.44"></a>
-<span class="sourceLineNo">045</span>    final Random random = new Random();<a name="line.45"></a>
-<span class="sourceLineNo">046</span>    final BloomType[] bloomArray = BloomType.values();<a name="line.46"></a>
-<span class="sourceLineNo">047</span>    final int bloomArraySize = bloomArray.length;<a name="line.47"></a>
-<span class="sourceLineNo">048</span><a name="line.48"></a>
-<span class="sourceLineNo">049</span>    LOG.info("Performing action: Change bloom filter on all columns of table " + tableName);<a name="line.49"></a>
-<span class="sourceLineNo">050</span><a name="line.50"></a>
-<span class="sourceLineNo">051</span>    modifyAllTableColumns(tableName, (columnName, columnBuilder) -&gt; {<a name="line.51"></a>
-<span class="sourceLineNo">052</span>      BloomType bloomType = bloomArray[random.nextInt(bloomArraySize)];<a name="line.52"></a>
-<span class="sourceLineNo">053</span>      LOG.debug("Performing action: About to set bloom filter type to "<a name="line.53"></a>
-<span class="sourceLineNo">054</span>          + bloomType + " on column " + columnName + " of table " + tableName);<a name="line.54"></a>
-<span class="sourceLineNo">055</span>      columnBuilder.setBloomFilterType(bloomType);<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>    LOG.debug("Performing action: Just set bloom filter types on table " + tableName);<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">025</span>import org.apache.hadoop.hbase.util.BloomFilterUtil;<a name="line.25"></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> * Action that tries to adjust the bloom filter setting on all the columns of a<a name="line.28"></a>
+<span class="sourceLineNo">029</span> * table<a name="line.29"></a>
+<span class="sourceLineNo">030</span> */<a name="line.30"></a>
+<span class="sourceLineNo">031</span>public class ChangeBloomFilterAction extends Action {<a name="line.31"></a>
+<span class="sourceLineNo">032</span>  private final long sleepTime;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>  private final TableName tableName;<a name="line.33"></a>
+<span class="sourceLineNo">034</span><a name="line.34"></a>
+<span class="sourceLineNo">035</span>  public ChangeBloomFilterAction(TableName tableName) {<a name="line.35"></a>
+<span class="sourceLineNo">036</span>    this(-1, tableName);<a name="line.36"></a>
+<span class="sourceLineNo">037</span>  }<a name="line.37"></a>
+<span class="sourceLineNo">038</span><a name="line.38"></a>
+<span class="sourceLineNo">039</span>  public ChangeBloomFilterAction(int sleepTime, TableName tableName) {<a name="line.39"></a>
+<span class="sourceLineNo">040</span>    this.sleepTime = sleepTime;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>    this.tableName = tableName;<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>  @Override<a name="line.44"></a>
+<span class="sourceLineNo">045</span>  public void perform() throws Exception {<a name="line.45"></a>
+<span class="sourceLineNo">046</span>    final Random random = new Random();<a name="line.46"></a>
+<span class="sourceLineNo">047</span>    final BloomType[] bloomArray = BloomType.values();<a name="line.47"></a>
+<span class="sourceLineNo">048</span>    final int bloomArraySize = bloomArray.length;<a name="line.48"></a>
+<span class="sourceLineNo">049</span><a name="line.49"></a>
+<span class="sourceLineNo">050</span>    LOG.info("Performing action: Change bloom filter on all columns of table " + tableName);<a name="line.50"></a>
+<span class="sourceLineNo">051</span><a name="line.51"></a>
+<span class="sourceLineNo">052</span>    modifyAllTableColumns(tableName, (columnName, columnBuilder) -&gt; {<a name="line.52"></a>
+<span class="sourceLineNo">053</span>      BloomType bloomType = bloomArray[random.nextInt(bloomArraySize)];<a name="line.53"></a>
+<span class="sourceLineNo">054</span>      LOG.debug("Performing action: About to set bloom filter type to "<a name="line.54"></a>
+<span class="sourceLineNo">055</span>          + bloomType + " on column " + columnName + " of table " + tableName);<a name="line.55"></a>
+<span class="sourceLineNo">056</span>      columnBuilder.setBloomFilterType(bloomType);<a name="line.56"></a>
+<span class="sourceLineNo">057</span>      if (bloomType == BloomType.ROWPREFIX_FIXED_LENGTH) {<a name="line.57"></a>
+<span class="sourceLineNo">058</span>        columnBuilder.setConfiguration(BloomFilterUtil.PREFIX_LENGTH_KEY, "10");<a name="line.58"></a>
+<span class="sourceLineNo">059</span>      } else if (bloomType == BloomType.ROWPREFIX_DELIMITED) {<a name="line.59"></a>
+<span class="sourceLineNo">060</span>        columnBuilder.setConfiguration(BloomFilterUtil.DELIMITER_KEY, "#");<a name="line.60"></a>
+<span class="sourceLineNo">061</span>      }<a name="line.61"></a>
+<span class="sourceLineNo">062</span>    });<a name="line.62"></a>
+<span class="sourceLineNo">063</span><a name="line.63"></a>
+<span class="sourceLineNo">064</span>    LOG.debug("Performing action: Just set bloom filter types on table " + tableName);<a name="line.64"></a>
+<span class="sourceLineNo">065</span>  }<a name="line.65"></a>
+<span class="sourceLineNo">066</span>}<a name="line.66"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/testdevapidocs/src-html/org/apache/hadoop/hbase/io/hfile/TestSeekBeforeWithInlineBlocks.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/io/hfile/TestSeekBeforeWithInlineBlocks.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/io/hfile/TestSeekBeforeWithInlineBlocks.html
index a221583..1a12cc9 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/io/hfile/TestSeekBeforeWithInlineBlocks.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/io/hfile/TestSeekBeforeWithInlineBlocks.html
@@ -45,159 +45,164 @@
 <span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.testclassification.IOTests;<a name="line.37"></a>
 <span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.38"></a>
 <span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.util.BloomFilterFactory;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.junit.ClassRule;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.junit.Test;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.junit.experimental.categories.Category;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.slf4j.Logger;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.slf4j.LoggerFactory;<a name="line.45"></a>
-<span class="sourceLineNo">046</span><a name="line.46"></a>
-<span class="sourceLineNo">047</span>@Category({IOTests.class, MediumTests.class})<a name="line.47"></a>
-<span class="sourceLineNo">048</span>public class TestSeekBeforeWithInlineBlocks {<a name="line.48"></a>
-<span class="sourceLineNo">049</span><a name="line.49"></a>
-<span class="sourceLineNo">050</span>  @ClassRule<a name="line.50"></a>
-<span class="sourceLineNo">051</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.51"></a>
-<span class="sourceLineNo">052</span>      HBaseClassTestRule.forClass(TestSeekBeforeWithInlineBlocks.class);<a name="line.52"></a>
-<span class="sourceLineNo">053</span><a name="line.53"></a>
-<span class="sourceLineNo">054</span>  private static final Logger LOG = LoggerFactory.getLogger(TestSeekBeforeWithInlineBlocks.class);<a name="line.54"></a>
-<span class="sourceLineNo">055</span><a name="line.55"></a>
-<span class="sourceLineNo">056</span>  private static final HBaseTestingUtility TEST_UTIL =<a name="line.56"></a>
-<span class="sourceLineNo">057</span>      new HBaseTestingUtility();<a name="line.57"></a>
-<span class="sourceLineNo">058</span><a name="line.58"></a>
-<span class="sourceLineNo">059</span>  private static final int NUM_KV = 10000;<a name="line.59"></a>
-<span class="sourceLineNo">060</span><a name="line.60"></a>
-<span class="sourceLineNo">061</span>  private static final int DATA_BLOCK_SIZE = 4096;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>  private static final int BLOOM_BLOCK_SIZE = 1024;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>  private static final int[] INDEX_CHUNK_SIZES = { 65536, 4096, 1024 };<a name="line.63"></a>
-<span class="sourceLineNo">064</span>  private static final int[] EXPECTED_NUM_LEVELS = { 1, 2, 3 };<a name="line.64"></a>
-<span class="sourceLineNo">065</span><a name="line.65"></a>
-<span class="sourceLineNo">066</span>  private static final Random RAND = new Random(192537);<a name="line.66"></a>
-<span class="sourceLineNo">067</span>  private static final byte[] FAM = Bytes.toBytes("family");<a name="line.67"></a>
-<span class="sourceLineNo">068</span><a name="line.68"></a>
-<span class="sourceLineNo">069</span>  private FileSystem fs;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>  private Configuration conf;<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>   * Scanner.seekBefore() could fail because when seeking to a previous HFile data block, it needs<a name="line.73"></a>
-<span class="sourceLineNo">074</span>   * to know the size of that data block, which it calculates using current data block offset and<a name="line.74"></a>
-<span class="sourceLineNo">075</span>   * the previous data block offset.  This fails to work when there are leaf-level index blocks in<a name="line.75"></a>
-<span class="sourceLineNo">076</span>   * the scannable section of the HFile, i.e. starting in HFileV2.  This test will try seekBefore()<a name="line.76"></a>
-<span class="sourceLineNo">077</span>   * on a flat (single-level) and multi-level (2,3) HFile and confirm this bug is now fixed.  This<a name="line.77"></a>
-<span class="sourceLineNo">078</span>   * bug also happens for inline Bloom blocks for the same reasons.<a name="line.78"></a>
-<span class="sourceLineNo">079</span>   */<a name="line.79"></a>
-<span class="sourceLineNo">080</span>  @Test<a name="line.80"></a>
-<span class="sourceLineNo">081</span>  public void testMultiIndexLevelRandomHFileWithBlooms() throws IOException {<a name="line.81"></a>
-<span class="sourceLineNo">082</span>    conf = TEST_UTIL.getConfiguration();<a name="line.82"></a>
-<span class="sourceLineNo">083</span><a name="line.83"></a>
-<span class="sourceLineNo">084</span>    // Try out different HFile versions to ensure reverse scan works on each version<a name="line.84"></a>
-<span class="sourceLineNo">085</span>    for (int hfileVersion = HFile.MIN_FORMAT_VERSION_WITH_TAGS;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>            hfileVersion &lt;= HFile.MAX_FORMAT_VERSION; hfileVersion++) {<a name="line.86"></a>
-<span class="sourceLineNo">087</span><a name="line.87"></a>
-<span class="sourceLineNo">088</span>      conf.setInt(HFile.FORMAT_VERSION_KEY, hfileVersion);<a name="line.88"></a>
-<span class="sourceLineNo">089</span>      fs = HFileSystem.get(conf);<a name="line.89"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.util.BloomFilterUtil;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.junit.ClassRule;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.junit.Test;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.junit.experimental.categories.Category;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.slf4j.Logger;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.slf4j.LoggerFactory;<a name="line.46"></a>
+<span class="sourceLineNo">047</span><a name="line.47"></a>
+<span class="sourceLineNo">048</span>@Category({IOTests.class, MediumTests.class})<a name="line.48"></a>
+<span class="sourceLineNo">049</span>public class TestSeekBeforeWithInlineBlocks {<a name="line.49"></a>
+<span class="sourceLineNo">050</span><a name="line.50"></a>
+<span class="sourceLineNo">051</span>  @ClassRule<a name="line.51"></a>
+<span class="sourceLineNo">052</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.52"></a>
+<span class="sourceLineNo">053</span>      HBaseClassTestRule.forClass(TestSeekBeforeWithInlineBlocks.class);<a name="line.53"></a>
+<span class="sourceLineNo">054</span><a name="line.54"></a>
+<span class="sourceLineNo">055</span>  private static final Logger LOG = LoggerFactory.getLogger(TestSeekBeforeWithInlineBlocks.class);<a name="line.55"></a>
+<span class="sourceLineNo">056</span><a name="line.56"></a>
+<span class="sourceLineNo">057</span>  private static final HBaseTestingUtility TEST_UTIL =<a name="line.57"></a>
+<span class="sourceLineNo">058</span>      new HBaseTestingUtility();<a name="line.58"></a>
+<span class="sourceLineNo">059</span><a name="line.59"></a>
+<span class="sourceLineNo">060</span>  private static final int NUM_KV = 10000;<a name="line.60"></a>
+<span class="sourceLineNo">061</span><a name="line.61"></a>
+<span class="sourceLineNo">062</span>  private static final int DATA_BLOCK_SIZE = 4096;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>  private static final int BLOOM_BLOCK_SIZE = 1024;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>  private static final int[] INDEX_CHUNK_SIZES = { 65536, 4096, 1024 };<a name="line.64"></a>
+<span class="sourceLineNo">065</span>  private static final int[] EXPECTED_NUM_LEVELS = { 1, 2, 3 };<a name="line.65"></a>
+<span class="sourceLineNo">066</span><a name="line.66"></a>
+<span class="sourceLineNo">067</span>  private static final Random RAND = new Random(192537);<a name="line.67"></a>
+<span class="sourceLineNo">068</span>  private static final byte[] FAM = Bytes.toBytes("family");<a name="line.68"></a>
+<span class="sourceLineNo">069</span><a name="line.69"></a>
+<span class="sourceLineNo">070</span>  private FileSystem fs;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>  private Configuration conf;<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>   * Scanner.seekBefore() could fail because when seeking to a previous HFile data block, it needs<a name="line.74"></a>
+<span class="sourceLineNo">075</span>   * to know the size of that data block, which it calculates using current data block offset and<a name="line.75"></a>
+<span class="sourceLineNo">076</span>   * the previous data block offset.  This fails to work when there are leaf-level index blocks in<a name="line.76"></a>
+<span class="sourceLineNo">077</span>   * the scannable section of the HFile, i.e. starting in HFileV2.  This test will try seekBefore()<a name="line.77"></a>
+<span class="sourceLineNo">078</span>   * on a flat (single-level) and multi-level (2,3) HFile and confirm this bug is now fixed.  This<a name="line.78"></a>
+<span class="sourceLineNo">079</span>   * bug also happens for inline Bloom blocks for the same reasons.<a name="line.79"></a>
+<span class="sourceLineNo">080</span>   */<a name="line.80"></a>
+<span class="sourceLineNo">081</span>  @Test<a name="line.81"></a>
+<span class="sourceLineNo">082</span>  public void testMultiIndexLevelRandomHFileWithBlooms() throws IOException {<a name="line.82"></a>
+<span class="sourceLineNo">083</span>    conf = TEST_UTIL.getConfiguration();<a name="line.83"></a>
+<span class="sourceLineNo">084</span>    TEST_UTIL.getConfiguration().setInt(BloomFilterUtil.PREFIX_LENGTH_KEY, 10);<a name="line.84"></a>
+<span class="sourceLineNo">085</span>    TEST_UTIL.getConfiguration().set(BloomFilterUtil.DELIMITER_KEY, "#");<a name="line.85"></a>
+<span class="sourceLineNo">086</span><a name="line.86"></a>
+<span class="sourceLineNo">087</span>    // Try out different HFile versions to ensure reverse scan works on each version<a name="line.87"></a>
+<span class="sourceLineNo">088</span>    for (int hfileVersion = HFile.MIN_FORMAT_VERSION_WITH_TAGS;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>            hfileVersion &lt;= HFile.MAX_FORMAT_VERSION; hfileVersion++) {<a name="line.89"></a>
 <span class="sourceLineNo">090</span><a name="line.90"></a>
-<span class="sourceLineNo">091</span>      // Try out different bloom types because inline Bloom blocks break seekBefore()<a name="line.91"></a>
-<span class="sourceLineNo">092</span>      for (BloomType bloomType : BloomType.values()) {<a name="line.92"></a>
+<span class="sourceLineNo">091</span>      conf.setInt(HFile.FORMAT_VERSION_KEY, hfileVersion);<a name="line.91"></a>
+<span class="sourceLineNo">092</span>      fs = HFileSystem.get(conf);<a name="line.92"></a>
 <span class="sourceLineNo">093</span><a name="line.93"></a>
-<span class="sourceLineNo">094</span>        // Test out HFile block indices of various sizes/levels<a name="line.94"></a>
-<span class="sourceLineNo">095</span>        for (int testI = 0; testI &lt; INDEX_CHUNK_SIZES.length; testI++) {<a name="line.95"></a>
-<span class="sourceLineNo">096</span>          int indexBlockSize = INDEX_CHUNK_SIZES[testI];<a name="line.96"></a>
-<span class="sourceLineNo">097</span>          int expectedNumLevels = EXPECTED_NUM_LEVELS[testI];<a name="line.97"></a>
-<span class="sourceLineNo">098</span><a name="line.98"></a>
-<span class="sourceLineNo">099</span>          LOG.info(String.format("Testing HFileVersion: %s, BloomType: %s, Index Levels: %s",<a name="line.99"></a>
-<span class="sourceLineNo">100</span>            hfileVersion, bloomType, expectedNumLevels));<a name="line.100"></a>
+<span class="sourceLineNo">094</span>      // Try out different bloom types because inline Bloom blocks break seekBefore()<a name="line.94"></a>
+<span class="sourceLineNo">095</span>      for (BloomType bloomType : BloomType.values()) {<a name="line.95"></a>
+<span class="sourceLineNo">096</span><a name="line.96"></a>
+<span class="sourceLineNo">097</span>        // Test out HFile block indices of various sizes/levels<a name="line.97"></a>
+<span class="sourceLineNo">098</span>        for (int testI = 0; testI &lt; INDEX_CHUNK_SIZES.length; testI++) {<a name="line.98"></a>
+<span class="sourceLineNo">099</span>          int indexBlockSize = INDEX_CHUNK_SIZES[testI];<a name="line.99"></a>
+<span class="sourceLineNo">100</span>          int expectedNumLevels = EXPECTED_NUM_LEVELS[testI];<a name="line.100"></a>
 <span class="sourceLineNo">101</span><a name="line.101"></a>
-<span class="sourceLineNo">102</span>          conf.setInt(HFileBlockIndex.MAX_CHUNK_SIZE_KEY, indexBlockSize);<a name="line.102"></a>
-<span class="sourceLineNo">103</span>          conf.setInt(BloomFilterFactory.IO_STOREFILE_BLOOM_BLOCK_SIZE, BLOOM_BLOCK_SIZE);<a name="line.103"></a>
+<span class="sourceLineNo">102</span>          LOG.info(String.format("Testing HFileVersion: %s, BloomType: %s, Index Levels: %s",<a name="line.102"></a>
+<span class="sourceLineNo">103</span>            hfileVersion, bloomType, expectedNumLevels));<a name="line.103"></a>
 <span class="sourceLineNo">104</span><a name="line.104"></a>
-<span class="sourceLineNo">105</span>          Cell[] cells = new Cell[NUM_KV];<a name="line.105"></a>
-<span class="sourceLineNo">106</span><a name="line.106"></a>
-<span class="sourceLineNo">107</span>          Path hfilePath = new Path(TEST_UTIL.getDataTestDir(),<a name="line.107"></a>
-<span class="sourceLineNo">108</span>            String.format("testMultiIndexLevelRandomHFileWithBlooms-%s-%s-%s",<a name="line.108"></a>
-<span class="sourceLineNo">109</span>              hfileVersion, bloomType, testI));<a name="line.109"></a>
-<span class="sourceLineNo">110</span><a name="line.110"></a>
-<span class="sourceLineNo">111</span>          // Disable caching to prevent it from hiding any bugs in block seeks/reads<a name="line.111"></a>
-<span class="sourceLineNo">112</span>          conf.setFloat(HConstants.HFILE_BLOCK_CACHE_SIZE_KEY, 0.0f);<a name="line.112"></a>
-<span class="sourceLineNo">113</span>          CacheConfig cacheConf = new CacheConfig(conf);<a name="line.113"></a>
-<span class="sourceLineNo">114</span><a name="line.114"></a>
-<span class="sourceLineNo">115</span>          // Write the HFile<a name="line.115"></a>
-<span class="sourceLineNo">116</span>          {<a name="line.116"></a>
-<span class="sourceLineNo">117</span>            HFileContext meta = new HFileContextBuilder()<a name="line.117"></a>
-<span class="sourceLineNo">118</span>                                .withBlockSize(DATA_BLOCK_SIZE)<a name="line.118"></a>
-<span class="sourceLineNo">119</span>                                .build();<a name="line.119"></a>
-<span class="sourceLineNo">120</span><a name="line.120"></a>
-<span class="sourceLineNo">121</span>            StoreFileWriter storeFileWriter =<a name="line.121"></a>
-<span class="sourceLineNo">122</span>                new StoreFileWriter.Builder(conf, cacheConf, fs)<a name="line.122"></a>
-<span class="sourceLineNo">123</span>              .withFilePath(hfilePath)<a name="line.123"></a>
-<span class="sourceLineNo">124</span>              .withFileContext(meta)<a name="line.124"></a>
-<span class="sourceLineNo">125</span>              .withBloomType(bloomType)<a name="line.125"></a>
-<span class="sourceLineNo">126</span>              .build();<a name="line.126"></a>
-<span class="sourceLineNo">127</span><a name="line.127"></a>
-<span class="sourceLineNo">128</span>            for (int i = 0; i &lt; NUM_KV; i++) {<a name="line.128"></a>
-<span class="sourceLineNo">129</span>              byte[] row = RandomKeyValueUtil.randomOrderedKey(RAND, i);<a name="line.129"></a>
-<span class="sourceLineNo">130</span>              byte[] qual = RandomKeyValueUtil.randomRowOrQualifier(RAND);<a name="line.130"></a>
-<span class="sourceLineNo">131</span>              byte[] value = RandomKeyValueUtil.randomValue(RAND);<a name="line.131"></a>
-<span class="sourceLineNo">132</span>              KeyValue kv = new KeyValue(row, FAM, qual, value);<a name="line.132"></a>
-<span class="sourceLineNo">133</span><a name="line.133"></a>
-<span class="sourceLineNo">134</span>              storeFileWriter.append(kv);<a name="line.134"></a>
-<span class="sourceLineNo">135</span>              cells[i] = kv;<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>            storeFileWriter.close();<a name="line.138"></a>
-<span class="sourceLineNo">139</span>          }<a name="line.139"></a>
-<span class="sourceLineNo">140</span><a name="line.140"></a>
-<span class="sourceLineNo">141</span>          // Read the HFile<a name="line.141"></a>
-<span class="sourceLineNo">142</span>          HFile.Reader reader = HFile.createReader(fs, hfilePath, cacheConf, true, conf);<a name="line.142"></a>
-<span class="sourceLineNo">143</span><a name="line.143"></a>
-<span class="sourceLineNo">144</span>          // Sanity check the HFile index level<a name="line.144"></a>
-<span class="sourceLineNo">145</span>          assertEquals(expectedNumLevels, reader.getTrailer().getNumDataIndexLevels());<a name="line.145"></a>
-<span class="sourceLineNo">146</span><a name="line.146"></a>
-<span class="sourceLineNo">147</span>          // Check that we can seekBefore in either direction and with both pread<a name="line.147"></a>
-<span class="sourceLineNo">148</span>          // enabled and disabled<a name="line.148"></a>
-<span class="sourceLineNo">149</span>          for (boolean pread : new boolean[] { false, true }) {<a name="line.149"></a>
-<span class="sourceLineNo">150</span>            HFileScanner scanner = reader.getScanner(true, pread);<a name="line.150"></a>
-<span class="sourceLineNo">151</span>            checkNoSeekBefore(cells, scanner, 0);<a name="line.151"></a>
-<span class="sourceLineNo">152</span>            for (int i = 1; i &lt; NUM_KV; i++) {<a name="line.152"></a>
-<span class="sourceLineNo">153</span>              checkSeekBefore(cells, scanner, i);<a name="line.153"></a>
-<span class="sourceLineNo">154</span>              checkCell(cells[i-1], scanner.getCell());<a name="line.154"></a>
-<span class="sourceLineNo">155</span>            }<a name="line.155"></a>
-<span class="sourceLineNo">156</span>            assertTrue(scanner.seekTo());<a name="line.156"></a>
-<span class="sourceLineNo">157</span>            for (int i = NUM_KV - 1; i &gt;= 1; i--) {<a name="line.157"></a>
+<span class="sourceLineNo">105</span>          conf.setInt(HFileBlockIndex.MAX_CHUNK_SIZE_KEY, indexBlockSize);<a name="line.105"></a>
+<span class="sourceLineNo">106</span>          conf.setInt(BloomFilterFactory.IO_STOREFILE_BLOOM_BLOCK_SIZE, BLOOM_BLOCK_SIZE);<a name="line.106"></a>
+<span class="sourceLineNo">107</span>          conf.setInt(BloomFilterUtil.PREFIX_LENGTH_KEY, 10);<a name="line.107"></a>
+<span class="sourceLineNo">108</span>          conf.set(BloomFilterUtil.DELIMITER_KEY, "#");<a name="line.108"></a>
+<span class="sourceLineNo">109</span><a name="line.109"></a>
+<span class="sourceLineNo">110</span>          Cell[] cells = new Cell[NUM_KV];<a name="line.110"></a>
+<span class="sourceLineNo">111</span><a name="line.111"></a>
+<span class="sourceLineNo">112</span>          Path hfilePath = new Path(TEST_UTIL.getDataTestDir(),<a name="line.112"></a>
+<span class="sourceLineNo">113</span>            String.format("testMultiIndexLevelRandomHFileWithBlooms-%s-%s-%s",<a name="line.113"></a>
+<span class="sourceLineNo">114</span>              hfileVersion, bloomType, testI));<a name="line.114"></a>
+<span class="sourceLineNo">115</span><a name="line.115"></a>
+<span class="sourceLineNo">116</span>          // Disable caching to prevent it from hiding any bugs in block seeks/reads<a name="line.116"></a>
+<span class="sourceLineNo">117</span>          conf.setFloat(HConstants.HFILE_BLOCK_CACHE_SIZE_KEY, 0.0f);<a name="line.117"></a>
+<span class="sourceLineNo">118</span>          CacheConfig cacheConf = new CacheConfig(conf);<a name="line.118"></a>
+<span class="sourceLineNo">119</span><a name="line.119"></a>
+<span class="sourceLineNo">120</span>          // Write the HFile<a name="line.120"></a>
+<span class="sourceLineNo">121</span>          {<a name="line.121"></a>
+<span class="sourceLineNo">122</span>            HFileContext meta = new HFileContextBuilder()<a name="line.122"></a>
+<span class="sourceLineNo">123</span>                                .withBlockSize(DATA_BLOCK_SIZE)<a name="line.123"></a>
+<span class="sourceLineNo">124</span>                                .build();<a name="line.124"></a>
+<span class="sourceLineNo">125</span><a name="line.125"></a>
+<span class="sourceLineNo">126</span>            StoreFileWriter storeFileWriter =<a name="line.126"></a>
+<span class="sourceLineNo">127</span>                new StoreFileWriter.Builder(conf, cacheConf, fs)<a name="line.127"></a>
+<span class="sourceLineNo">128</span>              .withFilePath(hfilePath)<a name="line.128"></a>
+<span class="sourceLineNo">129</span>              .withFileContext(meta)<a name="line.129"></a>
+<span class="sourceLineNo">130</span>              .withBloomType(bloomType)<a name="line.130"></a>
+<span class="sourceLineNo">131</span>              .build();<a name="line.131"></a>
+<span class="sourceLineNo">132</span><a name="line.132"></a>
+<span class="sourceLineNo">133</span>            for (int i = 0; i &lt; NUM_KV; i++) {<a name="line.133"></a>
+<span class="sourceLineNo">134</span>              byte[] row = RandomKeyValueUtil.randomOrderedKey(RAND, i);<a name="line.134"></a>
+<span class="sourceLineNo">135</span>              byte[] qual = RandomKeyValueUtil.randomRowOrQualifier(RAND);<a name="line.135"></a>
+<span class="sourceLineNo">136</span>              byte[] value = RandomKeyValueUtil.randomValue(RAND);<a name="line.136"></a>
+<span class="sourceLineNo">137</span>              KeyValue kv = new KeyValue(row, FAM, qual, value);<a name="line.137"></a>
+<span class="sourceLineNo">138</span><a name="line.138"></a>
+<span class="sourceLineNo">139</span>              storeFileWriter.append(kv);<a name="line.139"></a>
+<span class="sourceLineNo">140</span>              cells[i] = kv;<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>            storeFileWriter.close();<a name="line.143"></a>
+<span class="sourceLineNo">144</span>          }<a name="line.144"></a>
+<span class="sourceLineNo">145</span><a name="line.145"></a>
+<span class="sourceLineNo">146</span>          // Read the HFile<a name="line.146"></a>
+<span class="sourceLineNo">147</span>          HFile.Reader reader = HFile.createReader(fs, hfilePath, cacheConf, true, conf);<a name="line.147"></a>
+<span class="sourceLineNo">148</span><a name="line.148"></a>
+<span class="sourceLineNo">149</span>          // Sanity check the HFile index level<a name="line.149"></a>
+<span class="sourceLineNo">150</span>          assertEquals(expectedNumLevels, reader.getTrailer().getNumDataIndexLevels());<a name="line.150"></a>
+<span class="sourceLineNo">151</span><a name="line.151"></a>
+<span class="sourceLineNo">152</span>          // Check that we can seekBefore in either direction and with both pread<a name="line.152"></a>
+<span class="sourceLineNo">153</span>          // enabled and disabled<a name="line.153"></a>
+<span class="sourceLineNo">154</span>          for (boolean pread : new boolean[] { false, true }) {<a name="line.154"></a>
+<span class="sourceLineNo">155</span>            HFileScanner scanner = reader.getScanner(true, pread);<a name="line.155"></a>
+<span class="sourceLineNo">156</span>            checkNoSeekBefore(cells, scanner, 0);<a name="line.156"></a>
+<span class="sourceLineNo">157</span>            for (int i = 1; i &lt; NUM_KV; i++) {<a name="line.157"></a>
 <span class="sourceLineNo">158</span>              checkSeekBefore(cells, scanner, i);<a name="line.158"></a>
 <span class="sourceLineNo">159</span>              checkCell(cells[i-1], scanner.getCell());<a name="line.159"></a>
 <span class="sourceLineNo">160</span>            }<a name="line.160"></a>
-<span class="sourceLineNo">161</span>            checkNoSeekBefore(cells, scanner, 0);<a name="line.161"></a>
-<span class="sourceLineNo">162</span>            scanner.close();<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>          reader.close();<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>  }<a name="line.169"></a>
-<span class="sourceLineNo">170</span><a name="line.170"></a>
-<span class="sourceLineNo">171</span>  private void checkSeekBefore(Cell[] cells, HFileScanner scanner, int i)<a name="line.171"></a>
-<span class="sourceLineNo">172</span>      throws IOException {<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    assertEquals("Failed to seek to the key before #" + i + " ("<a name="line.173"></a>
-<span class="sourceLineNo">174</span>        + CellUtil.getCellKeyAsString(cells[i]) + ")", true,<a name="line.174"></a>
-<span class="sourceLineNo">175</span>        scanner.seekBefore(cells[i]));<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>  private void checkNoSeekBefore(Cell[] cells, HFileScanner scanner, int i)<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      throws IOException {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    assertEquals("Incorrectly succeeded in seeking to before first key ("<a name="line.180"></a>
-<span class="sourceLineNo">181</span>        + CellUtil.getCellKeyAsString(cells[i]) + ")", false,<a name="line.181"></a>
-<span class="sourceLineNo">182</span>        scanner.seekBefore(cells[i]));<a name="line.182"></a>
-<span class="sourceLineNo">183</span>  }<a name="line.183"></a>
-<span class="sourceLineNo">184</span><a name="line.184"></a>
-<span class="sourceLineNo">185</span>  /** Check a key/value pair after it was read by the reader */<a name="line.185"></a>
-<span class="sourceLineNo">186</span>  private void checkCell(Cell expected, Cell actual) {<a name="line.186"></a>
-<span class="sourceLineNo">187</span>    assertTrue(String.format("Expected key %s, but was %s",<a name="line.187"></a>
-<span class="sourceLineNo">188</span>      CellUtil.getCellKeyAsString(expected), CellUtil.getCellKeyAsString(actual)),<a name="line.188"></a>
-<span class="sourceLineNo">189</span>      CellUtil.equals(expected, actual));<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">161</span>            assertTrue(scanner.seekTo());<a name="line.161"></a>
+<span class="sourceLineNo">162</span>            for (int i = NUM_KV - 1; i &gt;= 1; i--) {<a name="line.162"></a>
+<span class="sourceLineNo">163</span>              checkSeekBefore(cells, scanner, i);<a name="line.163"></a>
+<span class="sourceLineNo">164</span>              checkCell(cells[i-1], scanner.getCell());<a name="line.164"></a>
+<span class="sourceLineNo">165</span>            }<a name="line.165"></a>
+<span class="sourceLineNo">166</span>            checkNoSeekBefore(cells, scanner, 0);<a name="line.166"></a>
+<span class="sourceLineNo">167</span>            scanner.close();<a name="line.167"></a>
+<span class="sourceLineNo">168</span>          }<a name="line.168"></a>
+<span class="sourceLineNo">169</span><a name="line.169"></a>
+<span class="sourceLineNo">170</span>          reader.close();<a name="line.170"></a>
+<span class="sourceLineNo">171</span>        }<a name="line.171"></a>
+<span class="sourceLineNo">172</span>      }<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><a name="line.175"></a>
+<span class="sourceLineNo">176</span>  private void checkSeekBefore(Cell[] cells, HFileScanner scanner, int i)<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      throws IOException {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    assertEquals("Failed to seek to the key before #" + i + " ("<a name="line.178"></a>
+<span class="sourceLineNo">179</span>        + CellUtil.getCellKeyAsString(cells[i]) + ")", true,<a name="line.179"></a>
+<span class="sourceLineNo">180</span>        scanner.seekBefore(cells[i]));<a name="line.180"></a>
+<span class="sourceLineNo">181</span>  }<a name="line.181"></a>
+<span class="sourceLineNo">182</span><a name="line.182"></a>
+<span class="sourceLineNo">183</span>  private void checkNoSeekBefore(Cell[] cells, HFileScanner scanner, int i)<a name="line.183"></a>
+<span class="sourceLineNo">184</span>      throws IOException {<a name="line.184"></a>
+<span class="sourceLineNo">185</span>    assertEquals("Incorrectly succeeded in seeking to before first key ("<a name="line.185"></a>
+<span class="sourceLineNo">186</span>        + CellUtil.getCellKeyAsString(cells[i]) + ")", false,<a name="line.186"></a>
+<span class="sourceLineNo">187</span>        scanner.seekBefore(cells[i]));<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>  /** Check a key/value pair after it was read by the reader */<a name="line.190"></a>
+<span class="sourceLineNo">191</span>  private void checkCell(Cell expected, Cell actual) {<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    assertTrue(String.format("Expected key %s, but was %s",<a name="line.192"></a>
+<span class="sourceLineNo">193</span>      CellUtil.getCellKeyAsString(expected), CellUtil.getCellKeyAsString(actual)),<a name="line.193"></a>
+<span class="sourceLineNo">194</span>      CellUtil.equals(expected, actual));<a name="line.194"></a>
+<span class="sourceLineNo">195</span>  }<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>
 
 
 


[04/43] hbase-site git commit: Published site at 7ab77518a2569e2416a50020393aa386e7734501.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html
new file mode 100644
index 0000000..1888d75
--- /dev/null
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html
@@ -0,0 +1,471 @@
+<!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.regionserver;<a name="line.18"></a>
+<span class="sourceLineNo">019</span><a name="line.19"></a>
+<span class="sourceLineNo">020</span>import static org.junit.Assert.assertEquals;<a name="line.20"></a>
+<span class="sourceLineNo">021</span>import static org.junit.Assert.assertFalse;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import static org.junit.Assert.assertTrue;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import static org.mockito.Mockito.mock;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import static org.mockito.Mockito.when;<a name="line.24"></a>
+<span class="sourceLineNo">025</span><a name="line.25"></a>
+<span class="sourceLineNo">026</span>import java.io.IOException;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import java.util.concurrent.atomic.AtomicInteger;<a name="line.27"></a>
+<span class="sourceLineNo">028</span><a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.hadoop.conf.Configuration;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.hadoop.fs.FileSystem;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.fs.Path;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.HBaseClassTestRule;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.client.Get;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.io.hfile.CacheConfig;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.io.hfile.HFileContext;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.io.hfile.HFileContextBuilder;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.log.HBaseMarkers;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.testclassification.RegionServerTests;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.testclassification.SmallTests;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.util.BloomFilterFactory;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.util.BloomFilterUtil;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.util.ChecksumType;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.junit.After;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.junit.Before;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.junit.ClassRule;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.junit.Rule;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.junit.Test;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.junit.experimental.categories.Category;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.junit.rules.TestName;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.slf4j.Logger;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.slf4j.LoggerFactory;<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> * Test TestRowPrefixBloomFilter<a name="line.60"></a>
+<span class="sourceLineNo">061</span> */<a name="line.61"></a>
+<span class="sourceLineNo">062</span>@Category({RegionServerTests.class, SmallTests.class})<a name="line.62"></a>
+<span class="sourceLineNo">063</span>public class TestRowPrefixBloomFilter {<a name="line.63"></a>
+<span class="sourceLineNo">064</span><a name="line.64"></a>
+<span class="sourceLineNo">065</span>  @ClassRule<a name="line.65"></a>
+<span class="sourceLineNo">066</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.66"></a>
+<span class="sourceLineNo">067</span>      HBaseClassTestRule.forClass(TestRowPrefixBloomFilter.class);<a name="line.67"></a>
+<span class="sourceLineNo">068</span><a name="line.68"></a>
+<span class="sourceLineNo">069</span>  private static final Logger LOG = LoggerFactory.getLogger(TestRowPrefixBloomFilter.class);<a name="line.69"></a>
+<span class="sourceLineNo">070</span>  private static final HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();<a name="line.70"></a>
+<span class="sourceLineNo">071</span>  private CacheConfig cacheConf =  new CacheConfig(TEST_UTIL.getConfiguration());<a name="line.71"></a>
+<span class="sourceLineNo">072</span>  private static final ChecksumType CKTYPE = ChecksumType.CRC32C;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>  private static final int CKBYTES = 512;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>  private boolean localfs = false;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>  private static Configuration conf;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>  private static FileSystem fs;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>  private static Path testDir;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>  private static final int BLOCKSIZE_SMALL = 8192;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>  private static final float err = (float) 0.01;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>  private static final int prefixLength = 10;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>  private static final String delimiter = "#";<a name="line.81"></a>
+<span class="sourceLineNo">082</span>  private static final String invalidFormatter = "%08d";<a name="line.82"></a>
+<span class="sourceLineNo">083</span>  private static final String prefixFormatter = "%010d";<a name="line.83"></a>
+<span class="sourceLineNo">084</span>  private static final String suffixFormatter = "%010d";<a name="line.84"></a>
+<span class="sourceLineNo">085</span><a name="line.85"></a>
+<span class="sourceLineNo">086</span>  @Rule<a name="line.86"></a>
+<span class="sourceLineNo">087</span>  public TestName name = new TestName();<a name="line.87"></a>
+<span class="sourceLineNo">088</span><a name="line.88"></a>
+<span class="sourceLineNo">089</span>  @Before<a name="line.89"></a>
+<span class="sourceLineNo">090</span>  public void setUp() throws Exception {<a name="line.90"></a>
+<span class="sourceLineNo">091</span>    conf = TEST_UTIL.getConfiguration();<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    conf.setFloat(BloomFilterFactory.IO_STOREFILE_BLOOM_ERROR_RATE, err);<a name="line.92"></a>
+<span class="sourceLineNo">093</span>    conf.setBoolean(BloomFilterFactory.IO_STOREFILE_BLOOM_ENABLED, true);<a name="line.93"></a>
+<span class="sourceLineNo">094</span>    conf.setInt(BloomFilterUtil.PREFIX_LENGTH_KEY, prefixLength);<a name="line.94"></a>
+<span class="sourceLineNo">095</span>    conf.set(BloomFilterUtil.DELIMITER_KEY, delimiter);<a name="line.95"></a>
+<span class="sourceLineNo">096</span><a name="line.96"></a>
+<span class="sourceLineNo">097</span>    localfs =<a name="line.97"></a>
+<span class="sourceLineNo">098</span>        (conf.get("fs.defaultFS", "file:///").compareTo("file:///") == 0);<a name="line.98"></a>
+<span class="sourceLineNo">099</span><a name="line.99"></a>
+<span class="sourceLineNo">100</span>    if (fs == null) {<a name="line.100"></a>
+<span class="sourceLineNo">101</span>      fs = FileSystem.get(conf);<a name="line.101"></a>
+<span class="sourceLineNo">102</span>    }<a name="line.102"></a>
+<span class="sourceLineNo">103</span>    try {<a name="line.103"></a>
+<span class="sourceLineNo">104</span>      if (localfs) {<a name="line.104"></a>
+<span class="sourceLineNo">105</span>        testDir = TEST_UTIL.getDataTestDir("TestRowPrefixBloomFilter");<a name="line.105"></a>
+<span class="sourceLineNo">106</span>        if (fs.exists(testDir)) {<a name="line.106"></a>
+<span class="sourceLineNo">107</span>          fs.delete(testDir, true);<a name="line.107"></a>
+<span class="sourceLineNo">108</span>        }<a name="line.108"></a>
+<span class="sourceLineNo">109</span>      } else {<a name="line.109"></a>
+<span class="sourceLineNo">110</span>        testDir = FSUtils.getRootDir(conf);<a name="line.110"></a>
+<span class="sourceLineNo">111</span>      }<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    } catch (Exception e) {<a name="line.112"></a>
+<span class="sourceLineNo">113</span>      LOG.error(HBaseMarkers.FATAL, "error during setup", e);<a name="line.113"></a>
+<span class="sourceLineNo">114</span>      throw e;<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    }<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  }<a name="line.116"></a>
+<span class="sourceLineNo">117</span><a name="line.117"></a>
+<span class="sourceLineNo">118</span>  @After<a name="line.118"></a>
+<span class="sourceLineNo">119</span>  public void tearDown() throws Exception {<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    try {<a name="line.120"></a>
+<span class="sourceLineNo">121</span>      if (localfs) {<a name="line.121"></a>
+<span class="sourceLineNo">122</span>        if (fs.exists(testDir)) {<a name="line.122"></a>
+<span class="sourceLineNo">123</span>          fs.delete(testDir, true);<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>    } catch (Exception e) {<a name="line.126"></a>
+<span class="sourceLineNo">127</span>      LOG.error(HBaseMarkers.FATAL, "error during tear down", e);<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    }<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 StoreFileScanner getStoreFileScanner(StoreFileReader reader) {<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    return reader.getStoreFileScanner(false, false, false, 0, 0, false);<a name="line.132"></a>
+<span class="sourceLineNo">133</span>  }<a name="line.133"></a>
+<span class="sourceLineNo">134</span><a name="line.134"></a>
+<span class="sourceLineNo">135</span>  private void writeStoreFile(final Path f, BloomType bt, int expKeys, int prefixRowCount,<a name="line.135"></a>
+<span class="sourceLineNo">136</span>      int suffixRowCount) throws IOException {<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    HFileContext meta = new HFileContextBuilder()<a name="line.137"></a>
+<span class="sourceLineNo">138</span>        .withBlockSize(BLOCKSIZE_SMALL)<a name="line.138"></a>
+<span class="sourceLineNo">139</span>        .withChecksumType(CKTYPE)<a name="line.139"></a>
+<span class="sourceLineNo">140</span>        .withBytesPerCheckSum(CKBYTES)<a name="line.140"></a>
+<span class="sourceLineNo">141</span>        .build();<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    // Make a store file and write data to it.<a name="line.142"></a>
+<span class="sourceLineNo">143</span>    StoreFileWriter writer = new StoreFileWriter.Builder(conf, cacheConf, fs)<a name="line.143"></a>
+<span class="sourceLineNo">144</span>        .withFilePath(f)<a name="line.144"></a>
+<span class="sourceLineNo">145</span>        .withBloomType(bt)<a name="line.145"></a>
+<span class="sourceLineNo">146</span>        .withMaxKeyCount(expKeys)<a name="line.146"></a>
+<span class="sourceLineNo">147</span>        .withFileContext(meta)<a name="line.147"></a>
+<span class="sourceLineNo">148</span>        .build();<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    long now = System.currentTimeMillis();<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    try {<a name="line.150"></a>
+<span class="sourceLineNo">151</span>      //Put with valid row style<a name="line.151"></a>
+<span class="sourceLineNo">152</span>      for (int i = 0; i &lt; prefixRowCount; i += 2) { // prefix rows<a name="line.152"></a>
+<span class="sourceLineNo">153</span>        String prefixRow = String.format(prefixFormatter, i);<a name="line.153"></a>
+<span class="sourceLineNo">154</span>        for (int j = 0; j &lt; suffixRowCount; j++) {   // suffix rows<a name="line.154"></a>
+<span class="sourceLineNo">155</span>          String row = prefixRow + "#" + String.format(suffixFormatter, j);<a name="line.155"></a>
+<span class="sourceLineNo">156</span>          KeyValue kv = new KeyValue(Bytes.toBytes(row), Bytes.toBytes("family"),<a name="line.156"></a>
+<span class="sourceLineNo">157</span>              Bytes.toBytes("col"), now, Bytes.toBytes("value"));<a name="line.157"></a>
+<span class="sourceLineNo">158</span>          writer.append(kv);<a name="line.158"></a>
+<span class="sourceLineNo">159</span>        }<a name="line.159"></a>
+<span class="sourceLineNo">160</span>      }<a name="line.160"></a>
+<span class="sourceLineNo">161</span><a name="line.161"></a>
+<span class="sourceLineNo">162</span>      //Put with invalid row style<a name="line.162"></a>
+<span class="sourceLineNo">163</span>      for (int i = prefixRowCount; i &lt; prefixRowCount*2; i += 2) { // prefix rows<a name="line.163"></a>
+<span class="sourceLineNo">164</span>        String row = String.format(invalidFormatter, i);<a name="line.164"></a>
+<span class="sourceLineNo">165</span>        KeyValue kv = new KeyValue(Bytes.toBytes(row), Bytes.toBytes("family"),<a name="line.165"></a>
+<span class="sourceLineNo">166</span>            Bytes.toBytes("col"), now, Bytes.toBytes("value"));<a name="line.166"></a>
+<span class="sourceLineNo">167</span>        writer.append(kv);<a name="line.167"></a>
+<span class="sourceLineNo">168</span>      }<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    } finally {<a name="line.169"></a>
+<span class="sourceLineNo">170</span>      writer.close();<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    }<a name="line.171"></a>
+<span class="sourceLineNo">172</span>  }<a name="line.172"></a>
+<span class="sourceLineNo">173</span><a name="line.173"></a>
+<span class="sourceLineNo">174</span>  @Test<a name="line.174"></a>
+<span class="sourceLineNo">175</span>  public void testRowPrefixBloomFilter() throws Exception {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    FileSystem fs = FileSystem.getLocal(conf);<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    BloomType[] bt = {BloomType.ROWPREFIX_FIXED_LENGTH, BloomType.ROWPREFIX_DELIMITED};<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    int prefixRowCount = 50;<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    int suffixRowCount = 10;<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    int expKeys = 50;<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    float expErr = 2*prefixRowCount*suffixRowCount*err;<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    for (int x : new int[]{0,1}) {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>      // write the file<a name="line.183"></a>
+<span class="sourceLineNo">184</span>      Path f = new Path(testDir, name.getMethodName());<a name="line.184"></a>
+<span class="sourceLineNo">185</span>      writeStoreFile(f, bt[x], expKeys, prefixRowCount, suffixRowCount);<a name="line.185"></a>
+<span class="sourceLineNo">186</span><a name="line.186"></a>
+<span class="sourceLineNo">187</span>      // read the file<a name="line.187"></a>
+<span class="sourceLineNo">188</span>      StoreFileReader reader = new StoreFileReader(fs, f, cacheConf, true,<a name="line.188"></a>
+<span class="sourceLineNo">189</span>          new AtomicInteger(0), true, conf);<a name="line.189"></a>
+<span class="sourceLineNo">190</span>      reader.loadFileInfo();<a name="line.190"></a>
+<span class="sourceLineNo">191</span>      reader.loadBloomfilter();<a name="line.191"></a>
+<span class="sourceLineNo">192</span><a name="line.192"></a>
+<span class="sourceLineNo">193</span>      //check basic param<a name="line.193"></a>
+<span class="sourceLineNo">194</span>      assertEquals(bt[x], reader.getBloomFilterType());<a name="line.194"></a>
+<span class="sourceLineNo">195</span>      if (bt[x] == BloomType.ROWPREFIX_FIXED_LENGTH) {<a name="line.195"></a>
+<span class="sourceLineNo">196</span>        assertEquals(prefixLength, reader.getPrefixLength());<a name="line.196"></a>
+<span class="sourceLineNo">197</span>        assertEquals("null", Bytes.toStringBinary(reader.getDelimiter()));<a name="line.197"></a>
+<span class="sourceLineNo">198</span>      } else if (bt[x] == BloomType.ROWPREFIX_DELIMITED){<a name="line.198"></a>
+<span class="sourceLineNo">199</span>        assertEquals(-1, reader.getPrefixLength());<a name="line.199"></a>
+<span class="sourceLineNo">200</span>        assertEquals(delimiter, Bytes.toStringBinary(reader.getDelimiter()));<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      }<a name="line.201"></a>
+<span class="sourceLineNo">202</span>      assertEquals(expKeys, reader.getGeneralBloomFilter().getKeyCount());<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      StoreFileScanner scanner = getStoreFileScanner(reader);<a name="line.203"></a>
+<span class="sourceLineNo">204</span>      HStore store = mock(HStore.class);<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      when(store.getColumnFamilyDescriptor())<a name="line.205"></a>
+<span class="sourceLineNo">206</span>          .thenReturn(ColumnFamilyDescriptorBuilder.of("family"));<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      // check false positives rate<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      int falsePos = 0;<a name="line.208"></a>
+<span class="sourceLineNo">209</span>      int falseNeg = 0;<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      for (int i = 0; i &lt; prefixRowCount; i++) { // prefix rows<a name="line.210"></a>
+<span class="sourceLineNo">211</span>        String prefixRow = String.format(prefixFormatter, i);<a name="line.211"></a>
+<span class="sourceLineNo">212</span>        for (int j = 0; j &lt; suffixRowCount; j++) {   // suffix rows<a name="line.212"></a>
+<span class="sourceLineNo">213</span>          String startRow = prefixRow + "#" + String.format(suffixFormatter, j);<a name="line.213"></a>
+<span class="sourceLineNo">214</span>          String stopRow = prefixRow + "#" + String.format(suffixFormatter, j+1);<a name="line.214"></a>
+<span class="sourceLineNo">215</span>          Scan scan = new Scan().withStartRow(Bytes.toBytes(startRow))<a name="line.215"></a>
+<span class="sourceLineNo">216</span>              .withStopRow(Bytes.toBytes(stopRow));<a name="line.216"></a>
+<span class="sourceLineNo">217</span>          boolean exists = scanner.shouldUseScanner(scan, store, Long.MIN_VALUE);<a name="line.217"></a>
+<span class="sourceLineNo">218</span>          boolean shouldPrefixRowExist = i % 2 == 0;<a name="line.218"></a>
+<span class="sourceLineNo">219</span>          if (shouldPrefixRowExist) {<a name="line.219"></a>
+<span class="sourceLineNo">220</span>            if (!exists) {<a name="line.220"></a>
+<span class="sourceLineNo">221</span>              falseNeg++;<a name="line.221"></a>
+<span class="sourceLineNo">222</span>            }<a name="line.222"></a>
+<span class="sourceLineNo">223</span>          } else {<a name="line.223"></a>
+<span class="sourceLineNo">224</span>            if (exists) {<a name="line.224"></a>
+<span class="sourceLineNo">225</span>              falsePos++;<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>        }<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>      for (int i = prefixRowCount; i &lt; prefixRowCount * 2; i++) { // prefix rows<a name="line.231"></a>
+<span class="sourceLineNo">232</span>        String row = String.format(invalidFormatter, i);<a name="line.232"></a>
+<span class="sourceLineNo">233</span>        Scan scan = new Scan(new Get(Bytes.toBytes(row)));<a name="line.233"></a>
+<span class="sourceLineNo">234</span>        boolean exists = scanner.shouldUseScanner(scan, store, Long.MIN_VALUE);<a name="line.234"></a>
+<span class="sourceLineNo">235</span>        boolean shouldPrefixRowExist = i % 2 == 0;<a name="line.235"></a>
+<span class="sourceLineNo">236</span>        if (shouldPrefixRowExist) {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>          if (!exists) {<a name="line.237"></a>
+<span class="sourceLineNo">238</span>            falseNeg++;<a name="line.238"></a>
+<span class="sourceLineNo">239</span>          }<a name="line.239"></a>
+<span class="sourceLineNo">240</span>        } else {<a name="line.240"></a>
+<span class="sourceLineNo">241</span>          if (exists) {<a name="line.241"></a>
+<span class="sourceLineNo">242</span>            falsePos++;<a name="line.242"></a>
+<span class="sourceLineNo">243</span>          }<a name="line.243"></a>
+<span class="sourceLineNo">244</span>        }<a name="line.244"></a>
+<span class="sourceLineNo">245</span>      }<a name="line.245"></a>
+<span class="sourceLineNo">246</span>      reader.close(true); // evict because we are about to delete the file<a name="line.246"></a>
+<span class="sourceLineNo">247</span>      fs.delete(f, true);<a name="line.247"></a>
+<span class="sourceLineNo">248</span>      assertEquals("False negatives: " + falseNeg, 0, falseNeg);<a name="line.248"></a>
+<span class="sourceLineNo">249</span>      int maxFalsePos = (int) (2 * expErr);<a name="line.249"></a>
+<span class="sourceLineNo">250</span>      assertTrue("Too many false positives: " + falsePos<a name="line.250"></a>
+<span class="sourceLineNo">251</span>              + " (err=" + err + ", expected no more than " + maxFalsePos + ")",<a name="line.251"></a>
+<span class="sourceLineNo">252</span>          falsePos &lt;= maxFalsePos);<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><a name="line.255"></a>
+<span class="sourceLineNo">256</span>  @Test<a name="line.256"></a>
+<span class="sourceLineNo">257</span>  public void testRowPrefixBloomFilterWithGet() throws Exception {<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    FileSystem fs = FileSystem.getLocal(conf);<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    BloomType[] bt = {BloomType.ROWPREFIX_FIXED_LENGTH, BloomType.ROWPREFIX_DELIMITED};<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    int prefixRowCount = 50;<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    int suffixRowCount = 10;<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    int expKeys = 50;<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    for (int x : new int[]{0,1}) {<a name="line.263"></a>
+<span class="sourceLineNo">264</span>      // write the file<a name="line.264"></a>
+<span class="sourceLineNo">265</span>      Path f = new Path(testDir, name.getMethodName());<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      writeStoreFile(f, bt[x], expKeys, prefixRowCount, suffixRowCount);<a name="line.266"></a>
+<span class="sourceLineNo">267</span><a name="line.267"></a>
+<span class="sourceLineNo">268</span>      StoreFileReader reader = new StoreFileReader(fs, f, cacheConf, true,<a name="line.268"></a>
+<span class="sourceLineNo">269</span>          new AtomicInteger(0), true, conf);<a name="line.269"></a>
+<span class="sourceLineNo">270</span>      reader.loadFileInfo();<a name="line.270"></a>
+<span class="sourceLineNo">271</span>      reader.loadBloomfilter();<a name="line.271"></a>
+<span class="sourceLineNo">272</span><a name="line.272"></a>
+<span class="sourceLineNo">273</span>      StoreFileScanner scanner = getStoreFileScanner(reader);<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      HStore store = mock(HStore.class);<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      when(store.getColumnFamilyDescriptor())<a name="line.275"></a>
+<span class="sourceLineNo">276</span>          .thenReturn(ColumnFamilyDescriptorBuilder.of("family"));<a name="line.276"></a>
+<span class="sourceLineNo">277</span><a name="line.277"></a>
+<span class="sourceLineNo">278</span>      //Get with valid row style<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      //prefix row in bloom<a name="line.279"></a>
+<span class="sourceLineNo">280</span>      String prefixRow = String.format(prefixFormatter, prefixRowCount-2);<a name="line.280"></a>
+<span class="sourceLineNo">281</span>      String row = prefixRow + "#" + String.format(suffixFormatter, 0);<a name="line.281"></a>
+<span class="sourceLineNo">282</span>      Scan scan = new Scan(new Get(Bytes.toBytes(row)));<a name="line.282"></a>
+<span class="sourceLineNo">283</span>      boolean exists = scanner.shouldUseScanner(scan, store, Long.MIN_VALUE);<a name="line.283"></a>
+<span class="sourceLineNo">284</span>      assertTrue(exists);<a name="line.284"></a>
+<span class="sourceLineNo">285</span><a name="line.285"></a>
+<span class="sourceLineNo">286</span>      // prefix row not in bloom<a name="line.286"></a>
+<span class="sourceLineNo">287</span>      prefixRow = String.format(prefixFormatter, prefixRowCount-1);<a name="line.287"></a>
+<span class="sourceLineNo">288</span>      row = prefixRow + "#" + String.format(suffixFormatter, 0);<a name="line.288"></a>
+<span class="sourceLineNo">289</span>      scan = new Scan(new Get(Bytes.toBytes(row)));<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      exists = scanner.shouldUseScanner(scan, store, Long.MIN_VALUE);<a name="line.290"></a>
+<span class="sourceLineNo">291</span>      assertFalse(exists);<a name="line.291"></a>
+<span class="sourceLineNo">292</span><a name="line.292"></a>
+<span class="sourceLineNo">293</span>      // Get with invalid row style<a name="line.293"></a>
+<span class="sourceLineNo">294</span>      // ROWPREFIX: the length of row is less than prefixLength<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      // ROWPREFIX_DELIMITED: Row does not contain delimiter<a name="line.295"></a>
+<span class="sourceLineNo">296</span>      // row in bloom<a name="line.296"></a>
+<span class="sourceLineNo">297</span>      row = String.format(invalidFormatter, prefixRowCount+2);<a name="line.297"></a>
+<span class="sourceLineNo">298</span>      scan = new Scan(new Get(Bytes.toBytes(row)));<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      exists = scanner.shouldUseScanner(scan, store, Long.MIN_VALUE);<a name="line.299"></a>
+<span class="sourceLineNo">300</span>      assertTrue(exists);<a name="line.300"></a>
+<span class="sourceLineNo">301</span><a name="line.301"></a>
+<span class="sourceLineNo">302</span>      // row not in bloom<a name="line.302"></a>
+<span class="sourceLineNo">303</span>      row = String.format(invalidFormatter, prefixRowCount+1);<a name="line.303"></a>
+<span class="sourceLineNo">304</span>      scan = new Scan(new Get(Bytes.toBytes(row)));<a name="line.304"></a>
+<span class="sourceLineNo">305</span>      exists = scanner.shouldUseScanner(scan, store, Long.MIN_VALUE);<a name="line.305"></a>
+<span class="sourceLineNo">306</span>      assertFalse(exists);<a name="line.306"></a>
+<span class="sourceLineNo">307</span><a name="line.307"></a>
+<span class="sourceLineNo">308</span>      reader.close(true); // evict because we are about to delete the file<a name="line.308"></a>
+<span class="sourceLineNo">309</span>      fs.delete(f, true);<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    }<a name="line.310"></a>
+<span class="sourceLineNo">311</span>  }<a name="line.311"></a>
+<span class="sourceLineNo">312</span><a name="line.312"></a>
+<span class="sourceLineNo">313</span>  @Test<a name="line.313"></a>
+<span class="sourceLineNo">314</span>  public void testRowPrefixBloomFilterWithScan() throws Exception {<a name="line.314"></a>
+<span class="sourceLineNo">315</span>    FileSystem fs = FileSystem.getLocal(conf);<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    BloomType[] bt = {BloomType.ROWPREFIX_FIXED_LENGTH, BloomType.ROWPREFIX_DELIMITED};<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    int prefixRowCount = 50;<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    int suffixRowCount = 10;<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    int expKeys = 50;<a name="line.319"></a>
+<span class="sourceLineNo">320</span>    for (int x : new int[]{0,1}) {<a name="line.320"></a>
+<span class="sourceLineNo">321</span>      // write the file<a name="line.321"></a>
+<span class="sourceLineNo">322</span>      Path f = new Path(testDir, name.getMethodName());<a name="line.322"></a>
+<span class="sourceLineNo">323</span>      writeStoreFile(f, bt[x], expKeys, prefixRowCount, suffixRowCount);<a name="line.323"></a>
+<span class="sourceLineNo">324</span><a name="line.324"></a>
+<span class="sourceLineNo">325</span>      StoreFileReader reader = new StoreFileReader(fs, f, cacheConf, true,<a name="line.325"></a>
+<span class="sourceLineNo">326</span>          new AtomicInteger(0), true, conf);<a name="line.326"></a>
+<span class="sourceLineNo">327</span>      reader.loadFileInfo();<a name="line.327"></a>
+<span class="sourceLineNo">328</span>      reader.loadBloomfilter();<a name="line.328"></a>
+<span class="sourceLineNo">329</span><a name="line.329"></a>
+<span class="sourceLineNo">330</span>      StoreFileScanner scanner = getStoreFileScanner(reader);<a name="line.330"></a>
+<span class="sourceLineNo">331</span>      HStore store = mock(HStore.class);<a name="line.331"></a>
+<span class="sourceLineNo">332</span>      when(store.getColumnFamilyDescriptor())<a name="line.332"></a>
+<span class="sourceLineNo">333</span>          .thenReturn(ColumnFamilyDescriptorBuilder.of("family"));<a name="line.333"></a>
+<span class="sourceLineNo">334</span><a name="line.334"></a>
+<span class="sourceLineNo">335</span>      //Scan with valid row style. startRow and stopRow have a common prefix.<a name="line.335"></a>
+<span class="sourceLineNo">336</span>      //And the length of the common prefix is no less than prefixLength.<a name="line.336"></a>
+<span class="sourceLineNo">337</span>      //prefix row in bloom<a name="line.337"></a>
+<span class="sourceLineNo">338</span>      String prefixRow = String.format(prefixFormatter, prefixRowCount-2);<a name="line.338"></a>
+<span class="sourceLineNo">339</span>      String startRow = prefixRow + "#" + String.format(suffixFormatter, 0);<a name="line.339"></a>
+<span class="sourceLineNo">340</span>      String stopRow = prefixRow + "#" + String.format(suffixFormatter, 1);<a name="line.340"></a>
+<span class="sourceLineNo">341</span>      Scan scan = new Scan().withStartRow(Bytes.toBytes(startRow))<a name="line.341"></a>
+<span class="sourceLineNo">342</span>          .withStopRow(Bytes.toBytes(stopRow));<a name="line.342"></a>
+<span class="sourceLineNo">343</span>      boolean exists = scanner.shouldUseScanner(scan, store, Long.MIN_VALUE);<a name="line.343"></a>
+<span class="sourceLineNo">344</span>      assertTrue(exists);<a name="line.344"></a>
+<span class="sourceLineNo">345</span><a name="line.345"></a>
+<span class="sourceLineNo">346</span>      // prefix row not in bloom<a name="line.346"></a>
+<span class="sourceLineNo">347</span>      prefixRow = String.format(prefixFormatter, prefixRowCount-1);<a name="line.347"></a>
+<span class="sourceLineNo">348</span>      startRow = prefixRow + "#" + String.format(suffixFormatter, 0);<a name="line.348"></a>
+<span class="sourceLineNo">349</span>      stopRow = prefixRow + "#" + String.format(suffixFormatter, 1);<a name="line.349"></a>
+<span class="sourceLineNo">350</span>      scan = new Scan().withStartRow(Bytes.toBytes(startRow))<a name="line.350"></a>
+<span class="sourceLineNo">351</span>          .withStopRow(Bytes.toBytes(stopRow));<a name="line.351"></a>
+<span class="sourceLineNo">352</span>      exists = scanner.shouldUseScanner(scan, store, Long.MIN_VALUE);<a name="line.352"></a>
+<span class="sourceLineNo">353</span>      assertFalse(exists);<a name="line.353"></a>
+<span class="sourceLineNo">354</span><a name="line.354"></a>
+<span class="sourceLineNo">355</span>      // There is no common prefix between startRow and stopRow.<a name="line.355"></a>
+<span class="sourceLineNo">356</span>      prefixRow = String.format(prefixFormatter, prefixRowCount-2);<a name="line.356"></a>
+<span class="sourceLineNo">357</span>      startRow = prefixRow + "#" + String.format(suffixFormatter, 0);<a name="line.357"></a>
+<span class="sourceLineNo">358</span>      scan = new Scan().withStartRow(Bytes.toBytes(startRow));<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      exists = scanner.shouldUseScanner(scan, store, Long.MIN_VALUE);<a name="line.359"></a>
+<span class="sourceLineNo">360</span>      assertTrue(exists);<a name="line.360"></a>
+<span class="sourceLineNo">361</span><a name="line.361"></a>
+<span class="sourceLineNo">362</span>      if (bt[x] == BloomType.ROWPREFIX_FIXED_LENGTH) {<a name="line.362"></a>
+<span class="sourceLineNo">363</span>        // startRow and stopRow have a common prefix.<a name="line.363"></a>
+<span class="sourceLineNo">364</span>        // But the length of the common prefix is less than prefixLength.<a name="line.364"></a>
+<span class="sourceLineNo">365</span>        String prefixStartRow = String.format(prefixFormatter, prefixRowCount-2);<a name="line.365"></a>
+<span class="sourceLineNo">366</span>        String prefixStopRow = String.format(prefixFormatter, prefixRowCount-1);<a name="line.366"></a>
+<span class="sourceLineNo">367</span>        startRow = prefixStartRow + "#" + String.format(suffixFormatter, 0);<a name="line.367"></a>
+<span class="sourceLineNo">368</span>        stopRow = prefixStopRow + "#" + String.format(suffixFormatter, 0);<a name="line.368"></a>
+<span class="sourceLineNo">369</span>        scan = new Scan().withStartRow(Bytes.toBytes(startRow))<a name="line.369"></a>
+<span class="sourceLineNo">370</span>            .withStopRow(Bytes.toBytes(stopRow));<a name="line.370"></a>
+<span class="sourceLineNo">371</span>        exists = scanner.shouldUseScanner(scan, store, Long.MIN_VALUE);<a name="line.371"></a>
+<span class="sourceLineNo">372</span>        assertTrue(exists);<a name="line.372"></a>
+<span class="sourceLineNo">373</span>      }else if (bt[x] == BloomType.ROWPREFIX_DELIMITED) {<a name="line.373"></a>
+<span class="sourceLineNo">374</span>        // startRow does not contain delimiter<a name="line.374"></a>
+<span class="sourceLineNo">375</span>        String prefixStartRow = String.format(prefixFormatter, prefixRowCount-2);<a name="line.375"></a>
+<span class="sourceLineNo">376</span>        String prefixStopRow = String.format(prefixFormatter, prefixRowCount-2);<a name="line.376"></a>
+<span class="sourceLineNo">377</span>        startRow = prefixStartRow + String.format(suffixFormatter, 0);<a name="line.377"></a>
+<span class="sourceLineNo">378</span>        stopRow = prefixStopRow + "#" + String.format(suffixFormatter, 0);<a name="line.378"></a>
+<span class="sourceLineNo">379</span>        scan = new Scan().withStartRow(Bytes.toBytes(startRow))<a name="line.379"></a>
+<span class="sourceLineNo">380</span>            .withStopRow(Bytes.toBytes(stopRow));<a name="line.380"></a>
+<span class="sourceLineNo">381</span>        exists = scanner.shouldUseScanner(scan, store, Long.MIN_VALUE);<a name="line.381"></a>
+<span class="sourceLineNo">382</span>        assertTrue(exists);<a name="line.382"></a>
+<span class="sourceLineNo">383</span><a name="line.383"></a>
+<span class="sourceLineNo">384</span>        // startRow contains delimiter, but stopRow does not have the same prefix as startRow.<a name="line.384"></a>
+<span class="sourceLineNo">385</span>        prefixStartRow = String.format(prefixFormatter, prefixRowCount-2);<a name="line.385"></a>
+<span class="sourceLineNo">386</span>        prefixStopRow = String.format(prefixFormatter, prefixRowCount-1);<a name="line.386"></a>
+<span class="sourceLineNo">387</span>        startRow = prefixStartRow + "#" + String.format(suffixFormatter, 0);<a name="line.387"></a>
+<span class="sourceLineNo">388</span>        stopRow = prefixStopRow + "#" + String.format(suffixFormatter, 0);<a name="line.388"></a>
+<span class="sourceLineNo">389</span>        scan = new Scan().withStartRow(Bytes.toBytes(startRow))<a name="line.389"></a>
+<span class="sourceLineNo">390</span>            .withStopRow(Bytes.toBytes(stopRow));<a name="line.390"></a>
+<span class="sourceLineNo">391</span>        exists = scanner.shouldUseScanner(scan, store, Long.MIN_VALUE);<a name="line.391"></a>
+<span class="sourceLineNo">392</span>        assertTrue(exists);<a name="line.392"></a>
+<span class="sourceLineNo">393</span>      }<a name="line.393"></a>
+<span class="sourceLineNo">394</span><a name="line.394"></a>
+<span class="sourceLineNo">395</span>      reader.close(true); // evict because we are about to delete the file<a name="line.395"></a>
+<span class="sourceLineNo">396</span>      fs.delete(f, true);<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>}<a name="line.399"></a>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestScanWithBloomError.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestScanWithBloomError.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestScanWithBloomError.html
index b14243a..ec8272d 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestScanWithBloomError.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestScanWithBloomError.html
@@ -54,179 +54,182 @@
 <span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.regionserver.HRegion.RegionScannerImpl;<a name="line.46"></a>
 <span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.testclassification.RegionServerTests;<a name="line.47"></a>
 <span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.testclassification.SmallTests;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.junit.Before;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.junit.ClassRule;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.junit.Test;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.junit.experimental.categories.Category;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.junit.runner.RunWith;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.junit.runners.Parameterized;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.junit.runners.Parameterized.Parameters;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.slf4j.Logger;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.slf4j.LoggerFactory;<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> * Test a multi-column scanner when there is a Bloom filter false-positive.<a name="line.61"></a>
-<span class="sourceLineNo">062</span> * This is needed for the multi-column Bloom filter optimization.<a name="line.62"></a>
-<span class="sourceLineNo">063</span> */<a name="line.63"></a>
-<span class="sourceLineNo">064</span>@RunWith(Parameterized.class)<a name="line.64"></a>
-<span class="sourceLineNo">065</span>@Category({RegionServerTests.class, SmallTests.class})<a name="line.65"></a>
-<span class="sourceLineNo">066</span>public class TestScanWithBloomError {<a name="line.66"></a>
-<span class="sourceLineNo">067</span><a name="line.67"></a>
-<span class="sourceLineNo">068</span>  @ClassRule<a name="line.68"></a>
-<span class="sourceLineNo">069</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.69"></a>
-<span class="sourceLineNo">070</span>      HBaseClassTestRule.forClass(TestScanWithBloomError.class);<a name="line.70"></a>
-<span class="sourceLineNo">071</span><a name="line.71"></a>
-<span class="sourceLineNo">072</span>  private static final Logger LOG =<a name="line.72"></a>
-<span class="sourceLineNo">073</span>    LoggerFactory.getLogger(TestScanWithBloomError.class);<a name="line.73"></a>
-<span class="sourceLineNo">074</span><a name="line.74"></a>
-<span class="sourceLineNo">075</span>  private static final String TABLE_NAME = "ScanWithBloomError";<a name="line.75"></a>
-<span class="sourceLineNo">076</span>  private static final String FAMILY = "myCF";<a name="line.76"></a>
-<span class="sourceLineNo">077</span>  private static final byte[] FAMILY_BYTES = Bytes.toBytes(FAMILY);<a name="line.77"></a>
-<span class="sourceLineNo">078</span>  private static final String ROW = "theRow";<a name="line.78"></a>
-<span class="sourceLineNo">079</span>  private static final String QUALIFIER_PREFIX = "qual";<a name="line.79"></a>
-<span class="sourceLineNo">080</span>  private static final byte[] ROW_BYTES = Bytes.toBytes(ROW);<a name="line.80"></a>
-<span class="sourceLineNo">081</span>  private static NavigableSet&lt;Integer&gt; allColIds = new TreeSet&lt;&gt;();<a name="line.81"></a>
-<span class="sourceLineNo">082</span>  private HRegion region;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>  private BloomType bloomType;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>  private FileSystem fs;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>  private Configuration conf;<a name="line.85"></a>
-<span class="sourceLineNo">086</span><a name="line.86"></a>
-<span class="sourceLineNo">087</span>  private final static HBaseTestingUtility TEST_UTIL = HBaseTestingUtility.createLocalHTU();<a name="line.87"></a>
-<span class="sourceLineNo">088</span><a name="line.88"></a>
-<span class="sourceLineNo">089</span>  @Parameters<a name="line.89"></a>
-<span class="sourceLineNo">090</span>  public static final Collection&lt;Object[]&gt; parameters() {<a name="line.90"></a>
-<span class="sourceLineNo">091</span>    List&lt;Object[]&gt; configurations = new ArrayList&lt;&gt;();<a name="line.91"></a>
-<span class="sourceLineNo">092</span>    for (BloomType bloomType : BloomType.values()) {<a name="line.92"></a>
-<span class="sourceLineNo">093</span>      configurations.add(new Object[] { bloomType });<a name="line.93"></a>
-<span class="sourceLineNo">094</span>    }<a name="line.94"></a>
-<span class="sourceLineNo">095</span>    return configurations;<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>  public TestScanWithBloomError(BloomType bloomType) {<a name="line.98"></a>
-<span class="sourceLineNo">099</span>    this.bloomType = bloomType;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>  }<a name="line.100"></a>
-<span class="sourceLineNo">101</span><a name="line.101"></a>
-<span class="sourceLineNo">102</span>  @Before<a name="line.102"></a>
-<span class="sourceLineNo">103</span>  public void setUp() throws IOException{<a name="line.103"></a>
-<span class="sourceLineNo">104</span>    conf = TEST_UTIL.getConfiguration();<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    fs = FileSystem.get(conf);<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>  @Test<a name="line.108"></a>
-<span class="sourceLineNo">109</span>  public void testThreeStoreFiles() throws IOException {<a name="line.109"></a>
-<span class="sourceLineNo">110</span>    region = TEST_UTIL.createTestRegion(TABLE_NAME,<a name="line.110"></a>
-<span class="sourceLineNo">111</span>        new HColumnDescriptor(FAMILY)<a name="line.111"></a>
-<span class="sourceLineNo">112</span>            .setCompressionType(Compression.Algorithm.GZ)<a name="line.112"></a>
-<span class="sourceLineNo">113</span>            .setBloomFilterType(bloomType)<a name="line.113"></a>
-<span class="sourceLineNo">114</span>            .setMaxVersions(TestMultiColumnScanner.MAX_VERSIONS));<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    createStoreFile(new int[] {1, 2, 6});<a name="line.115"></a>
-<span class="sourceLineNo">116</span>    createStoreFile(new int[] {1, 2, 3, 7});<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    createStoreFile(new int[] {1, 9});<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    scanColSet(new int[]{1, 4, 6, 7}, new int[]{1, 6, 7});<a name="line.118"></a>
-<span class="sourceLineNo">119</span><a name="line.119"></a>
-<span class="sourceLineNo">120</span>    HBaseTestingUtility.closeRegionAndWAL(region);<a name="line.120"></a>
-<span class="sourceLineNo">121</span>  }<a name="line.121"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.util.BloomFilterUtil;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.junit.Before;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.junit.ClassRule;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.junit.Test;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.junit.experimental.categories.Category;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.junit.runner.RunWith;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.junit.runners.Parameterized;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.junit.runners.Parameterized.Parameters;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.slf4j.Logger;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.slf4j.LoggerFactory;<a name="line.59"></a>
+<span class="sourceLineNo">060</span><a name="line.60"></a>
+<span class="sourceLineNo">061</span>/**<a name="line.61"></a>
+<span class="sourceLineNo">062</span> * Test a multi-column scanner when there is a Bloom filter false-positive.<a name="line.62"></a>
+<span class="sourceLineNo">063</span> * This is needed for the multi-column Bloom filter optimization.<a name="line.63"></a>
+<span class="sourceLineNo">064</span> */<a name="line.64"></a>
+<span class="sourceLineNo">065</span>@RunWith(Parameterized.class)<a name="line.65"></a>
+<span class="sourceLineNo">066</span>@Category({RegionServerTests.class, SmallTests.class})<a name="line.66"></a>
+<span class="sourceLineNo">067</span>public class TestScanWithBloomError {<a name="line.67"></a>
+<span class="sourceLineNo">068</span><a name="line.68"></a>
+<span class="sourceLineNo">069</span>  @ClassRule<a name="line.69"></a>
+<span class="sourceLineNo">070</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.70"></a>
+<span class="sourceLineNo">071</span>      HBaseClassTestRule.forClass(TestScanWithBloomError.class);<a name="line.71"></a>
+<span class="sourceLineNo">072</span><a name="line.72"></a>
+<span class="sourceLineNo">073</span>  private static final Logger LOG =<a name="line.73"></a>
+<span class="sourceLineNo">074</span>    LoggerFactory.getLogger(TestScanWithBloomError.class);<a name="line.74"></a>
+<span class="sourceLineNo">075</span><a name="line.75"></a>
+<span class="sourceLineNo">076</span>  private static final String TABLE_NAME = "ScanWithBloomError";<a name="line.76"></a>
+<span class="sourceLineNo">077</span>  private static final String FAMILY = "myCF";<a name="line.77"></a>
+<span class="sourceLineNo">078</span>  private static final byte[] FAMILY_BYTES = Bytes.toBytes(FAMILY);<a name="line.78"></a>
+<span class="sourceLineNo">079</span>  private static final String ROW = "theRow";<a name="line.79"></a>
+<span class="sourceLineNo">080</span>  private static final String QUALIFIER_PREFIX = "qual";<a name="line.80"></a>
+<span class="sourceLineNo">081</span>  private static final byte[] ROW_BYTES = Bytes.toBytes(ROW);<a name="line.81"></a>
+<span class="sourceLineNo">082</span>  private static NavigableSet&lt;Integer&gt; allColIds = new TreeSet&lt;&gt;();<a name="line.82"></a>
+<span class="sourceLineNo">083</span>  private HRegion region;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>  private BloomType bloomType;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>  private FileSystem fs;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>  private Configuration conf;<a name="line.86"></a>
+<span class="sourceLineNo">087</span><a name="line.87"></a>
+<span class="sourceLineNo">088</span>  private final static HBaseTestingUtility TEST_UTIL = HBaseTestingUtility.createLocalHTU();<a name="line.88"></a>
+<span class="sourceLineNo">089</span><a name="line.89"></a>
+<span class="sourceLineNo">090</span>  @Parameters<a name="line.90"></a>
+<span class="sourceLineNo">091</span>  public static final Collection&lt;Object[]&gt; parameters() {<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    List&lt;Object[]&gt; configurations = new ArrayList&lt;&gt;();<a name="line.92"></a>
+<span class="sourceLineNo">093</span>    for (BloomType bloomType : BloomType.values()) {<a name="line.93"></a>
+<span class="sourceLineNo">094</span>      configurations.add(new Object[] { bloomType });<a name="line.94"></a>
+<span class="sourceLineNo">095</span>    }<a name="line.95"></a>
+<span class="sourceLineNo">096</span>    return configurations;<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>  public TestScanWithBloomError(BloomType bloomType) {<a name="line.99"></a>
+<span class="sourceLineNo">100</span>    this.bloomType = bloomType;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>  }<a name="line.101"></a>
+<span class="sourceLineNo">102</span><a name="line.102"></a>
+<span class="sourceLineNo">103</span>  @Before<a name="line.103"></a>
+<span class="sourceLineNo">104</span>  public void setUp() throws IOException{<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    conf = TEST_UTIL.getConfiguration();<a name="line.105"></a>
+<span class="sourceLineNo">106</span>    fs = FileSystem.get(conf);<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    conf.setInt(BloomFilterUtil.PREFIX_LENGTH_KEY, 10);<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    conf.set(BloomFilterUtil.DELIMITER_KEY, "#");<a name="line.108"></a>
+<span class="sourceLineNo">109</span>  }<a name="line.109"></a>
+<span class="sourceLineNo">110</span><a name="line.110"></a>
+<span class="sourceLineNo">111</span>  @Test<a name="line.111"></a>
+<span class="sourceLineNo">112</span>  public void testThreeStoreFiles() throws IOException {<a name="line.112"></a>
+<span class="sourceLineNo">113</span>    region = TEST_UTIL.createTestRegion(TABLE_NAME,<a name="line.113"></a>
+<span class="sourceLineNo">114</span>        new HColumnDescriptor(FAMILY)<a name="line.114"></a>
+<span class="sourceLineNo">115</span>            .setCompressionType(Compression.Algorithm.GZ)<a name="line.115"></a>
+<span class="sourceLineNo">116</span>            .setBloomFilterType(bloomType)<a name="line.116"></a>
+<span class="sourceLineNo">117</span>            .setMaxVersions(TestMultiColumnScanner.MAX_VERSIONS));<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    createStoreFile(new int[] {1, 2, 6});<a name="line.118"></a>
+<span class="sourceLineNo">119</span>    createStoreFile(new int[] {1, 2, 3, 7});<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    createStoreFile(new int[] {1, 9});<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    scanColSet(new int[]{1, 4, 6, 7}, new int[]{1, 6, 7});<a name="line.121"></a>
 <span class="sourceLineNo">122</span><a name="line.122"></a>
-<span class="sourceLineNo">123</span>  private void scanColSet(int[] colSet, int[] expectedResultCols)<a name="line.123"></a>
-<span class="sourceLineNo">124</span>      throws IOException {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    LOG.info("Scanning column set: " + Arrays.toString(colSet));<a name="line.125"></a>
-<span class="sourceLineNo">126</span>    Scan scan = new Scan(ROW_BYTES, ROW_BYTES);<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    addColumnSetToScan(scan, colSet);<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    RegionScannerImpl scanner = region.getScanner(scan);<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    KeyValueHeap storeHeap = scanner.getStoreHeapForTesting();<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    assertEquals(0, storeHeap.getHeap().size());<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    StoreScanner storeScanner =<a name="line.131"></a>
-<span class="sourceLineNo">132</span>        (StoreScanner) storeHeap.getCurrentForTesting();<a name="line.132"></a>
-<span class="sourceLineNo">133</span>    @SuppressWarnings({ "unchecked", "rawtypes" })<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    List&lt;StoreFileScanner&gt; scanners = (List&lt;StoreFileScanner&gt;)<a name="line.134"></a>
-<span class="sourceLineNo">135</span>        (List) storeScanner.getAllScannersForTesting();<a name="line.135"></a>
-<span class="sourceLineNo">136</span><a name="line.136"></a>
-<span class="sourceLineNo">137</span>    // Sort scanners by their HFile's modification time.<a name="line.137"></a>
-<span class="sourceLineNo">138</span>    Collections.sort(scanners, new Comparator&lt;StoreFileScanner&gt;() {<a name="line.138"></a>
-<span class="sourceLineNo">139</span>      @Override<a name="line.139"></a>
-<span class="sourceLineNo">140</span>      public int compare(StoreFileScanner s1, StoreFileScanner s2) {<a name="line.140"></a>
-<span class="sourceLineNo">141</span>        Path p1 = s1.getReader().getHFileReader().getPath();<a name="line.141"></a>
-<span class="sourceLineNo">142</span>        Path p2 = s2.getReader().getHFileReader().getPath();<a name="line.142"></a>
-<span class="sourceLineNo">143</span>        long t1, t2;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>        try {<a name="line.144"></a>
-<span class="sourceLineNo">145</span>          t1 = fs.getFileStatus(p1).getModificationTime();<a name="line.145"></a>
-<span class="sourceLineNo">146</span>          t2 = fs.getFileStatus(p2).getModificationTime();<a name="line.146"></a>
-<span class="sourceLineNo">147</span>        } catch (IOException ex) {<a name="line.147"></a>
-<span class="sourceLineNo">148</span>          throw new RuntimeException(ex);<a name="line.148"></a>
-<span class="sourceLineNo">149</span>        }<a name="line.149"></a>
-<span class="sourceLineNo">150</span>        return t1 &lt; t2 ? -1 : t1 == t2 ? 1 : 0;<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      }<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>    StoreFileReader lastStoreFileReader = null;<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    for (StoreFileScanner sfScanner : scanners)<a name="line.155"></a>
-<span class="sourceLineNo">156</span>      lastStoreFileReader = sfScanner.getReader();<a name="line.156"></a>
-<span class="sourceLineNo">157</span><a name="line.157"></a>
-<span class="sourceLineNo">158</span>    new HFilePrettyPrinter(conf).run(new String[]{ "-m", "-p", "-f",<a name="line.158"></a>
-<span class="sourceLineNo">159</span>        lastStoreFileReader.getHFileReader().getPath().toString()});<a name="line.159"></a>
+<span class="sourceLineNo">123</span>    HBaseTestingUtility.closeRegionAndWAL(region);<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>  private void scanColSet(int[] colSet, int[] expectedResultCols)<a name="line.126"></a>
+<span class="sourceLineNo">127</span>      throws IOException {<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    LOG.info("Scanning column set: " + Arrays.toString(colSet));<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    Scan scan = new Scan(ROW_BYTES, ROW_BYTES);<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    addColumnSetToScan(scan, colSet);<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    RegionScannerImpl scanner = region.getScanner(scan);<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    KeyValueHeap storeHeap = scanner.getStoreHeapForTesting();<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    assertEquals(0, storeHeap.getHeap().size());<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    StoreScanner storeScanner =<a name="line.134"></a>
+<span class="sourceLineNo">135</span>        (StoreScanner) storeHeap.getCurrentForTesting();<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    @SuppressWarnings({ "unchecked", "rawtypes" })<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    List&lt;StoreFileScanner&gt; scanners = (List&lt;StoreFileScanner&gt;)<a name="line.137"></a>
+<span class="sourceLineNo">138</span>        (List) storeScanner.getAllScannersForTesting();<a name="line.138"></a>
+<span class="sourceLineNo">139</span><a name="line.139"></a>
+<span class="sourceLineNo">140</span>    // Sort scanners by their HFile's modification time.<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    Collections.sort(scanners, new Comparator&lt;StoreFileScanner&gt;() {<a name="line.141"></a>
+<span class="sourceLineNo">142</span>      @Override<a name="line.142"></a>
+<span class="sourceLineNo">143</span>      public int compare(StoreFileScanner s1, StoreFileScanner s2) {<a name="line.143"></a>
+<span class="sourceLineNo">144</span>        Path p1 = s1.getReader().getHFileReader().getPath();<a name="line.144"></a>
+<span class="sourceLineNo">145</span>        Path p2 = s2.getReader().getHFileReader().getPath();<a name="line.145"></a>
+<span class="sourceLineNo">146</span>        long t1, t2;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>        try {<a name="line.147"></a>
+<span class="sourceLineNo">148</span>          t1 = fs.getFileStatus(p1).getModificationTime();<a name="line.148"></a>
+<span class="sourceLineNo">149</span>          t2 = fs.getFileStatus(p2).getModificationTime();<a name="line.149"></a>
+<span class="sourceLineNo">150</span>        } catch (IOException ex) {<a name="line.150"></a>
+<span class="sourceLineNo">151</span>          throw new RuntimeException(ex);<a name="line.151"></a>
+<span class="sourceLineNo">152</span>        }<a name="line.152"></a>
+<span class="sourceLineNo">153</span>        return t1 &lt; t2 ? -1 : t1 == t2 ? 1 : 0;<a name="line.153"></a>
+<span class="sourceLineNo">154</span>      }<a name="line.154"></a>
+<span class="sourceLineNo">155</span>    });<a name="line.155"></a>
+<span class="sourceLineNo">156</span><a name="line.156"></a>
+<span class="sourceLineNo">157</span>    StoreFileReader lastStoreFileReader = null;<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    for (StoreFileScanner sfScanner : scanners)<a name="line.158"></a>
+<span class="sourceLineNo">159</span>      lastStoreFileReader = sfScanner.getReader();<a name="line.159"></a>
 <span class="sourceLineNo">160</span><a name="line.160"></a>
-<span class="sourceLineNo">161</span>    // Disable Bloom filter for the last store file. The disabled Bloom filter<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    // will always return "true".<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    LOG.info("Disabling Bloom filter for: "<a name="line.163"></a>
-<span class="sourceLineNo">164</span>        + lastStoreFileReader.getHFileReader().getName());<a name="line.164"></a>
-<span class="sourceLineNo">165</span>    lastStoreFileReader.disableBloomFilterForTesting();<a name="line.165"></a>
-<span class="sourceLineNo">166</span><a name="line.166"></a>
-<span class="sourceLineNo">167</span>    List&lt;Cell&gt; allResults = new ArrayList&lt;&gt;();<a name="line.167"></a>
-<span class="sourceLineNo">168</span><a name="line.168"></a>
-<span class="sourceLineNo">169</span>    { // Limit the scope of results.<a name="line.169"></a>
-<span class="sourceLineNo">170</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      while (scanner.next(results) || results.size() &gt; 0) {<a name="line.171"></a>
-<span class="sourceLineNo">172</span>        allResults.addAll(results);<a name="line.172"></a>
-<span class="sourceLineNo">173</span>        results.clear();<a name="line.173"></a>
-<span class="sourceLineNo">174</span>      }<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>    List&lt;Integer&gt; actualIds = new ArrayList&lt;&gt;();<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    for (Cell kv : allResults) {<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      String qual = Bytes.toString(CellUtil.cloneQualifier(kv));<a name="line.179"></a>
-<span class="sourceLineNo">180</span>      assertTrue(qual.startsWith(QUALIFIER_PREFIX));<a name="line.180"></a>
-<span class="sourceLineNo">181</span>      actualIds.add(Integer.valueOf(qual.substring(<a name="line.181"></a>
-<span class="sourceLineNo">182</span>          QUALIFIER_PREFIX.length())));<a name="line.182"></a>
-<span class="sourceLineNo">183</span>    }<a name="line.183"></a>
-<span class="sourceLineNo">184</span>    List&lt;Integer&gt; expectedIds = new ArrayList&lt;&gt;();<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    for (int expectedId : expectedResultCols)<a name="line.185"></a>
-<span class="sourceLineNo">186</span>      expectedIds.add(expectedId);<a name="line.186"></a>
-<span class="sourceLineNo">187</span><a name="line.187"></a>
-<span class="sourceLineNo">188</span>    LOG.info("Column ids returned: " + actualIds + ", expected: "<a name="line.188"></a>
-<span class="sourceLineNo">189</span>        + expectedIds);<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    assertEquals(expectedIds.toString(), actualIds.toString());<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>  private void addColumnSetToScan(Scan scan, int[] colIds) {<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    for (int colId : colIds) {<a name="line.194"></a>
-<span class="sourceLineNo">195</span>      scan.addColumn(FAMILY_BYTES,<a name="line.195"></a>
-<span class="sourceLineNo">196</span>          Bytes.toBytes(qualFromId(colId)));<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    }<a name="line.197"></a>
-<span class="sourceLineNo">198</span>  }<a name="line.198"></a>
-<span class="sourceLineNo">199</span><a name="line.199"></a>
-<span class="sourceLineNo">200</span>  private String qualFromId(int colId) {<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    return QUALIFIER_PREFIX + colId;<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>  private void createStoreFile(int[] colIds)<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      throws IOException {<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    Put p = new Put(ROW_BYTES);<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    for (int colId : colIds) {<a name="line.207"></a>
-<span class="sourceLineNo">208</span>      long ts = Long.MAX_VALUE;<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      String qual = qualFromId(colId);<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      allColIds.add(colId);<a name="line.210"></a>
-<span class="sourceLineNo">211</span>      KeyValue kv = KeyValueTestUtil.create(ROW, FAMILY,<a name="line.211"></a>
-<span class="sourceLineNo">212</span>          qual, ts, TestMultiColumnScanner.createValue(ROW, qual, ts));<a name="line.212"></a>
-<span class="sourceLineNo">213</span>      p.add(kv);<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    }<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    region.put(p);<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    region.flush(true);<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>}<a name="line.220"></a>
+<span class="sourceLineNo">161</span>    new HFilePrettyPrinter(conf).run(new String[]{ "-m", "-p", "-f",<a name="line.161"></a>
+<span class="sourceLineNo">162</span>        lastStoreFileReader.getHFileReader().getPath().toString()});<a name="line.162"></a>
+<span class="sourceLineNo">163</span><a name="line.163"></a>
+<span class="sourceLineNo">164</span>    // Disable Bloom filter for the last store file. The disabled Bloom filter<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    // will always return "true".<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    LOG.info("Disabling Bloom filter for: "<a name="line.166"></a>
+<span class="sourceLineNo">167</span>        + lastStoreFileReader.getHFileReader().getName());<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    lastStoreFileReader.disableBloomFilterForTesting();<a name="line.168"></a>
+<span class="sourceLineNo">169</span><a name="line.169"></a>
+<span class="sourceLineNo">170</span>    List&lt;Cell&gt; allResults = new ArrayList&lt;&gt;();<a name="line.170"></a>
+<span class="sourceLineNo">171</span><a name="line.171"></a>
+<span class="sourceLineNo">172</span>    { // Limit the scope of results.<a name="line.172"></a>
+<span class="sourceLineNo">173</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.173"></a>
+<span class="sourceLineNo">174</span>      while (scanner.next(results) || results.size() &gt; 0) {<a name="line.174"></a>
+<span class="sourceLineNo">175</span>        allResults.addAll(results);<a name="line.175"></a>
+<span class="sourceLineNo">176</span>        results.clear();<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>    List&lt;Integer&gt; actualIds = new ArrayList&lt;&gt;();<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    for (Cell kv : allResults) {<a name="line.181"></a>
+<span class="sourceLineNo">182</span>      String qual = Bytes.toString(CellUtil.cloneQualifier(kv));<a name="line.182"></a>
+<span class="sourceLineNo">183</span>      assertTrue(qual.startsWith(QUALIFIER_PREFIX));<a name="line.183"></a>
+<span class="sourceLineNo">184</span>      actualIds.add(Integer.valueOf(qual.substring(<a name="line.184"></a>
+<span class="sourceLineNo">185</span>          QUALIFIER_PREFIX.length())));<a name="line.185"></a>
+<span class="sourceLineNo">186</span>    }<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    List&lt;Integer&gt; expectedIds = new ArrayList&lt;&gt;();<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    for (int expectedId : expectedResultCols)<a name="line.188"></a>
+<span class="sourceLineNo">189</span>      expectedIds.add(expectedId);<a name="line.189"></a>
+<span class="sourceLineNo">190</span><a name="line.190"></a>
+<span class="sourceLineNo">191</span>    LOG.info("Column ids returned: " + actualIds + ", expected: "<a name="line.191"></a>
+<span class="sourceLineNo">192</span>        + expectedIds);<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    assertEquals(expectedIds.toString(), actualIds.toString());<a name="line.193"></a>
+<span class="sourceLineNo">194</span>  }<a name="line.194"></a>
+<span class="sourceLineNo">195</span><a name="line.195"></a>
+<span class="sourceLineNo">196</span>  private void addColumnSetToScan(Scan scan, int[] colIds) {<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    for (int colId : colIds) {<a name="line.197"></a>
+<span class="sourceLineNo">198</span>      scan.addColumn(FAMILY_BYTES,<a name="line.198"></a>
+<span class="sourceLineNo">199</span>          Bytes.toBytes(qualFromId(colId)));<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>  private String qualFromId(int colId) {<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    return QUALIFIER_PREFIX + colId;<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>  private void createStoreFile(int[] colIds)<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      throws IOException {<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    Put p = new Put(ROW_BYTES);<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    for (int colId : colIds) {<a name="line.210"></a>
+<span class="sourceLineNo">211</span>      long ts = Long.MAX_VALUE;<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      String qual = qualFromId(colId);<a name="line.212"></a>
+<span class="sourceLineNo">213</span>      allColIds.add(colId);<a name="line.213"></a>
+<span class="sourceLineNo">214</span>      KeyValue kv = KeyValueTestUtil.create(ROW, FAMILY,<a name="line.214"></a>
+<span class="sourceLineNo">215</span>          qual, ts, TestMultiColumnScanner.createValue(ROW, qual, ts));<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      p.add(kv);<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    }<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    region.put(p);<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    region.flush(true);<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><a name="line.222"></a>
+<span class="sourceLineNo">223</span>}<a name="line.223"></a>
+<span class="sourceLineNo">224</span><a name="line.224"></a>
 
 
 


[02/43] hbase-site git commit: Published site at 7ab77518a2569e2416a50020393aa386e7734501.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/testdevapidocs/src-html/org/apache/hadoop/hbase/util/LoadTestTool.WorkerThread.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/util/LoadTestTool.WorkerThread.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/util/LoadTestTool.WorkerThread.html
index c598165..fe5e7d2 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/util/LoadTestTool.WorkerThread.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/util/LoadTestTool.WorkerThread.html
@@ -127,834 +127,852 @@
 <span class="sourceLineNo">119</span>  protected static final String OPT_VERBOSE = "verbose";<a name="line.119"></a>
 <span class="sourceLineNo">120</span><a name="line.120"></a>
 <span class="sourceLineNo">121</span>  public static final String OPT_BLOOM = "bloom";<a name="line.121"></a>
-<span class="sourceLineNo">122</span>  public static final String OPT_COMPRESSION = "compression";<a name="line.122"></a>
-<span class="sourceLineNo">123</span>  public static final String OPT_DEFERRED_LOG_FLUSH = "deferredlogflush";<a name="line.123"></a>
-<span class="sourceLineNo">124</span>  public static final String OPT_DEFERRED_LOG_FLUSH_USAGE = "Enable deferred log flush.";<a name="line.124"></a>
-<span class="sourceLineNo">125</span><a name="line.125"></a>
-<span class="sourceLineNo">126</span>  public static final String OPT_INMEMORY = "in_memory";<a name="line.126"></a>
-<span class="sourceLineNo">127</span>  public static final String OPT_USAGE_IN_MEMORY = "Tries to keep the HFiles of the CF " +<a name="line.127"></a>
-<span class="sourceLineNo">128</span>      "inmemory as far as possible.  Not guaranteed that reads are always served from inmemory";<a name="line.128"></a>
-<span class="sourceLineNo">129</span><a name="line.129"></a>
-<span class="sourceLineNo">130</span>  public static final String OPT_GENERATOR = "generator";<a name="line.130"></a>
-<span class="sourceLineNo">131</span>  public static final String OPT_GENERATOR_USAGE = "The class which generates load for the tool."<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      + " Any args for this class can be passed as colon separated after class name";<a name="line.132"></a>
-<span class="sourceLineNo">133</span><a name="line.133"></a>
-<span class="sourceLineNo">134</span>  public static final String OPT_WRITER = "writer";<a name="line.134"></a>
-<span class="sourceLineNo">135</span>  public static final String OPT_WRITER_USAGE = "The class for executing the write requests";<a name="line.135"></a>
-<span class="sourceLineNo">136</span><a name="line.136"></a>
-<span class="sourceLineNo">137</span>  public static final String OPT_UPDATER = "updater";<a name="line.137"></a>
-<span class="sourceLineNo">138</span>  public static final String OPT_UPDATER_USAGE = "The class for executing the update requests";<a name="line.138"></a>
-<span class="sourceLineNo">139</span><a name="line.139"></a>
-<span class="sourceLineNo">140</span>  public static final String OPT_READER = "reader";<a name="line.140"></a>
-<span class="sourceLineNo">141</span>  public static final String OPT_READER_USAGE = "The class for executing the read requests";<a name="line.141"></a>
-<span class="sourceLineNo">142</span><a name="line.142"></a>
-<span class="sourceLineNo">143</span>  protected static final String OPT_KEY_WINDOW = "key_window";<a name="line.143"></a>
-<span class="sourceLineNo">144</span>  protected static final String OPT_WRITE = "write";<a name="line.144"></a>
-<span class="sourceLineNo">145</span>  protected static final String OPT_MAX_READ_ERRORS = "max_read_errors";<a name="line.145"></a>
-<span class="sourceLineNo">146</span>  public static final String OPT_MULTIPUT = "multiput";<a name="line.146"></a>
-<span class="sourceLineNo">147</span>  public static final String OPT_MULTIGET = "multiget_batchsize";<a name="line.147"></a>
-<span class="sourceLineNo">148</span>  protected static final String OPT_NUM_KEYS = "num_keys";<a name="line.148"></a>
-<span class="sourceLineNo">149</span>  protected static final String OPT_READ = "read";<a name="line.149"></a>
-<span class="sourceLineNo">150</span>  protected static final String OPT_START_KEY = "start_key";<a name="line.150"></a>
-<span class="sourceLineNo">151</span>  public static final String OPT_TABLE_NAME = "tn";<a name="line.151"></a>
-<span class="sourceLineNo">152</span>  public static final String OPT_COLUMN_FAMILIES = "families";<a name="line.152"></a>
-<span class="sourceLineNo">153</span>  protected static final String OPT_ZK_QUORUM = "zk";<a name="line.153"></a>
-<span class="sourceLineNo">154</span>  protected static final String OPT_ZK_PARENT_NODE = "zk_root";<a name="line.154"></a>
-<span class="sourceLineNo">155</span>  protected static final String OPT_SKIP_INIT = "skip_init";<a name="line.155"></a>
-<span class="sourceLineNo">156</span>  protected static final String OPT_INIT_ONLY = "init_only";<a name="line.156"></a>
-<span class="sourceLineNo">157</span>  protected static final String NUM_TABLES = "num_tables";<a name="line.157"></a>
-<span class="sourceLineNo">158</span>  protected static final String OPT_BATCHUPDATE = "batchupdate";<a name="line.158"></a>
-<span class="sourceLineNo">159</span>  protected static final String OPT_UPDATE = "update";<a name="line.159"></a>
-<span class="sourceLineNo">160</span><a name="line.160"></a>
-<span class="sourceLineNo">161</span>  public static final String OPT_ENCRYPTION = "encryption";<a name="line.161"></a>
-<span class="sourceLineNo">162</span>  protected static final String OPT_ENCRYPTION_USAGE =<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    "Enables transparent encryption on the test table, one of " +<a name="line.163"></a>
-<span class="sourceLineNo">164</span>    Arrays.toString(Encryption.getSupportedCiphers());<a name="line.164"></a>
-<span class="sourceLineNo">165</span><a name="line.165"></a>
-<span class="sourceLineNo">166</span>  public static final String OPT_NUM_REGIONS_PER_SERVER = "num_regions_per_server";<a name="line.166"></a>
-<span class="sourceLineNo">167</span>  protected static final String OPT_NUM_REGIONS_PER_SERVER_USAGE<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    = "Desired number of regions per region server. Defaults to 5.";<a name="line.168"></a>
-<span class="sourceLineNo">169</span>  public static int DEFAULT_NUM_REGIONS_PER_SERVER = 5;<a name="line.169"></a>
-<span class="sourceLineNo">170</span><a name="line.170"></a>
-<span class="sourceLineNo">171</span>  public static final String OPT_REGION_REPLICATION = "region_replication";<a name="line.171"></a>
-<span class="sourceLineNo">172</span>  protected static final String OPT_REGION_REPLICATION_USAGE =<a name="line.172"></a>
-<span class="sourceLineNo">173</span>      "Desired number of replicas per region";<a name="line.173"></a>
-<span class="sourceLineNo">174</span><a name="line.174"></a>
-<span class="sourceLineNo">175</span>  public static final String OPT_REGION_REPLICA_ID = "region_replica_id";<a name="line.175"></a>
-<span class="sourceLineNo">176</span>  protected static final String OPT_REGION_REPLICA_ID_USAGE =<a name="line.176"></a>
-<span class="sourceLineNo">177</span>      "Region replica id to do the reads from";<a name="line.177"></a>
-<span class="sourceLineNo">178</span><a name="line.178"></a>
-<span class="sourceLineNo">179</span>  public static final String OPT_MOB_THRESHOLD = "mob_threshold";<a name="line.179"></a>
-<span class="sourceLineNo">180</span>  protected static final String OPT_MOB_THRESHOLD_USAGE =<a name="line.180"></a>
-<span class="sourceLineNo">181</span>      "Desired cell size to exceed in bytes that will use the MOB write path";<a name="line.181"></a>
-<span class="sourceLineNo">182</span><a name="line.182"></a>
-<span class="sourceLineNo">183</span>  protected static final long DEFAULT_START_KEY = 0;<a name="line.183"></a>
-<span class="sourceLineNo">184</span><a name="line.184"></a>
-<span class="sourceLineNo">185</span>  /** This will be removed as we factor out the dependency on command line */<a name="line.185"></a>
-<span class="sourceLineNo">186</span>  protected CommandLine cmd;<a name="line.186"></a>
-<span class="sourceLineNo">187</span><a name="line.187"></a>
-<span class="sourceLineNo">188</span>  protected MultiThreadedWriter writerThreads = null;<a name="line.188"></a>
-<span class="sourceLineNo">189</span>  protected MultiThreadedReader readerThreads = null;<a name="line.189"></a>
-<span class="sourceLineNo">190</span>  protected MultiThreadedUpdater updaterThreads = null;<a name="line.190"></a>
-<span class="sourceLineNo">191</span><a name="line.191"></a>
-<span class="sourceLineNo">192</span>  protected long startKey, endKey;<a name="line.192"></a>
-<span class="sourceLineNo">193</span><a name="line.193"></a>
-<span class="sourceLineNo">194</span>  protected boolean isVerbose, isWrite, isRead, isUpdate;<a name="line.194"></a>
-<span class="sourceLineNo">195</span>  protected boolean deferredLogFlush;<a name="line.195"></a>
-<span class="sourceLineNo">196</span><a name="line.196"></a>
-<span class="sourceLineNo">197</span>  // Column family options<a name="line.197"></a>
-<span class="sourceLineNo">198</span>  protected DataBlockEncoding dataBlockEncodingAlgo;<a name="line.198"></a>
-<span class="sourceLineNo">199</span>  protected Compression.Algorithm compressAlgo;<a name="line.199"></a>
-<span class="sourceLineNo">200</span>  protected BloomType bloomType;<a name="line.200"></a>
-<span class="sourceLineNo">201</span>  private boolean inMemoryCF;<a name="line.201"></a>
-<span class="sourceLineNo">202</span><a name="line.202"></a>
-<span class="sourceLineNo">203</span>  private User userOwner;<a name="line.203"></a>
-<span class="sourceLineNo">204</span>  // Writer options<a name="line.204"></a>
-<span class="sourceLineNo">205</span>  protected int numWriterThreads = DEFAULT_NUM_THREADS;<a name="line.205"></a>
-<span class="sourceLineNo">206</span>  protected int minColsPerKey, maxColsPerKey;<a name="line.206"></a>
-<span class="sourceLineNo">207</span>  protected int minColDataSize = DEFAULT_DATA_SIZE, maxColDataSize = DEFAULT_DATA_SIZE;<a name="line.207"></a>
-<span class="sourceLineNo">208</span>  protected boolean isMultiPut;<a name="line.208"></a>
-<span class="sourceLineNo">209</span><a name="line.209"></a>
-<span class="sourceLineNo">210</span>  // Updater options<a name="line.210"></a>
-<span class="sourceLineNo">211</span>  protected int numUpdaterThreads = DEFAULT_NUM_THREADS;<a name="line.211"></a>
-<span class="sourceLineNo">212</span>  protected int updatePercent;<a name="line.212"></a>
-<span class="sourceLineNo">213</span>  protected boolean ignoreConflicts = false;<a name="line.213"></a>
-<span class="sourceLineNo">214</span>  protected boolean isBatchUpdate;<a name="line.214"></a>
-<span class="sourceLineNo">215</span><a name="line.215"></a>
-<span class="sourceLineNo">216</span>  // Reader options<a name="line.216"></a>
-<span class="sourceLineNo">217</span>  private int numReaderThreads = DEFAULT_NUM_THREADS;<a name="line.217"></a>
-<span class="sourceLineNo">218</span>  private int keyWindow = MultiThreadedReader.DEFAULT_KEY_WINDOW;<a name="line.218"></a>
-<span class="sourceLineNo">219</span>  private int multiGetBatchSize = MultiThreadedReader.DEFAULT_BATCH_SIZE;<a name="line.219"></a>
-<span class="sourceLineNo">220</span>  private int maxReadErrors = MultiThreadedReader.DEFAULT_MAX_ERRORS;<a name="line.220"></a>
-<span class="sourceLineNo">221</span>  private int verifyPercent;<a name="line.221"></a>
-<span class="sourceLineNo">222</span><a name="line.222"></a>
-<span class="sourceLineNo">223</span>  private int numTables = 1;<a name="line.223"></a>
-<span class="sourceLineNo">224</span><a name="line.224"></a>
-<span class="sourceLineNo">225</span>  private String superUser;<a name="line.225"></a>
-<span class="sourceLineNo">226</span><a name="line.226"></a>
-<span class="sourceLineNo">227</span>  private String userNames;<a name="line.227"></a>
-<span class="sourceLineNo">228</span>  //This file is used to read authentication information in secure clusters.<a name="line.228"></a>
-<span class="sourceLineNo">229</span>  private String authnFileName;<a name="line.229"></a>
-<span class="sourceLineNo">230</span><a name="line.230"></a>
-<span class="sourceLineNo">231</span>  private int numRegionsPerServer = DEFAULT_NUM_REGIONS_PER_SERVER;<a name="line.231"></a>
-<span class="sourceLineNo">232</span>  private int regionReplication = -1; // not set<a name="line.232"></a>
-<span class="sourceLineNo">233</span>  private int regionReplicaId = -1; // not set<a name="line.233"></a>
-<span class="sourceLineNo">234</span><a name="line.234"></a>
-<span class="sourceLineNo">235</span>  private int mobThreshold = -1; // not set<a name="line.235"></a>
-<span class="sourceLineNo">236</span><a name="line.236"></a>
-<span class="sourceLineNo">237</span>  // TODO: refactor LoadTestToolImpl somewhere to make the usage from tests less bad,<a name="line.237"></a>
-<span class="sourceLineNo">238</span>  //       console tool itself should only be used from console.<a name="line.238"></a>
-<span class="sourceLineNo">239</span>  protected boolean isSkipInit = false;<a name="line.239"></a>
-<span class="sourceLineNo">240</span>  protected boolean isInitOnly = false;<a name="line.240"></a>
-<span class="sourceLineNo">241</span><a name="line.241"></a>
-<span class="sourceLineNo">242</span>  protected Cipher cipher = null;<a name="line.242"></a>
-<span class="sourceLineNo">243</span><a name="line.243"></a>
-<span class="sourceLineNo">244</span>  protected String[] splitColonSeparated(String option,<a name="line.244"></a>
-<span class="sourceLineNo">245</span>      int minNumCols, int maxNumCols) {<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    String optVal = cmd.getOptionValue(option);<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    String[] cols = optVal.split(COLON);<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    if (cols.length &lt; minNumCols || cols.length &gt; maxNumCols) {<a name="line.248"></a>
-<span class="sourceLineNo">249</span>      throw new IllegalArgumentException("Expected at least "<a name="line.249"></a>
-<span class="sourceLineNo">250</span>          + minNumCols + " columns but no more than " + maxNumCols +<a name="line.250"></a>
-<span class="sourceLineNo">251</span>          " in the colon-separated value '" + optVal + "' of the " +<a name="line.251"></a>
-<span class="sourceLineNo">252</span>          "-" + option + " option");<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    }<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    return cols;<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>  protected int getNumThreads(String numThreadsStr) {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    return parseInt(numThreadsStr, 1, Short.MAX_VALUE);<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>  public byte[][] getColumnFamilies() {<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    return families;<a name="line.262"></a>
-<span class="sourceLineNo">263</span>  }<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">266</span>   * Apply column family options such as Bloom filters, compression, and data<a name="line.266"></a>
-<span class="sourceLineNo">267</span>   * block encoding.<a name="line.267"></a>
-<span class="sourceLineNo">268</span>   */<a name="line.268"></a>
-<span class="sourceLineNo">269</span>  protected void applyColumnFamilyOptions(TableName tableName,<a name="line.269"></a>
-<span class="sourceLineNo">270</span>      byte[][] columnFamilies) throws IOException {<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.271"></a>
-<span class="sourceLineNo">272</span>        Admin admin = conn.getAdmin()) {<a name="line.272"></a>
-<span class="sourceLineNo">273</span>      TableDescriptor tableDesc = admin.getDescriptor(tableName);<a name="line.273"></a>
-<span class="sourceLineNo">274</span>      LOG.info("Disabling table " + tableName);<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      admin.disableTable(tableName);<a name="line.275"></a>
-<span class="sourceLineNo">276</span>      for (byte[] cf : columnFamilies) {<a name="line.276"></a>
-<span class="sourceLineNo">277</span>        ColumnFamilyDescriptor columnDesc = tableDesc.getColumnFamily(cf);<a name="line.277"></a>
-<span class="sourceLineNo">278</span>        boolean isNewCf = columnDesc == null;<a name="line.278"></a>
-<span class="sourceLineNo">279</span>        ColumnFamilyDescriptorBuilder columnDescBuilder = isNewCf ?<a name="line.279"></a>
-<span class="sourceLineNo">280</span>            ColumnFamilyDescriptorBuilder.newBuilder(cf) :<a name="line.280"></a>
-<span class="sourceLineNo">281</span>            ColumnFamilyDescriptorBuilder.newBuilder(columnDesc);<a name="line.281"></a>
-<span class="sourceLineNo">282</span>        if (bloomType != null) {<a name="line.282"></a>
-<span class="sourceLineNo">283</span>          columnDescBuilder.setBloomFilterType(bloomType);<a name="line.283"></a>
-<span class="sourceLineNo">284</span>        }<a name="line.284"></a>
-<span class="sourceLineNo">285</span>        if (compressAlgo != null) {<a name="line.285"></a>
-<span class="sourceLineNo">286</span>          columnDescBuilder.setCompressionType(compressAlgo);<a name="line.286"></a>
-<span class="sourceLineNo">287</span>        }<a name="line.287"></a>
-<span class="sourceLineNo">288</span>        if (dataBlockEncodingAlgo != null) {<a name="line.288"></a>
-<span class="sourceLineNo">289</span>          columnDescBuilder.setDataBlockEncoding(dataBlockEncodingAlgo);<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        }<a name="line.290"></a>
-<span class="sourceLineNo">291</span>        if (inMemoryCF) {<a name="line.291"></a>
-<span class="sourceLineNo">292</span>          columnDescBuilder.setInMemory(inMemoryCF);<a name="line.292"></a>
-<span class="sourceLineNo">293</span>        }<a name="line.293"></a>
-<span class="sourceLineNo">294</span>        if (cipher != null) {<a name="line.294"></a>
-<span class="sourceLineNo">295</span>          byte[] keyBytes = new byte[cipher.getKeyLength()];<a name="line.295"></a>
-<span class="sourceLineNo">296</span>          new SecureRandom().nextBytes(keyBytes);<a name="line.296"></a>
-<span class="sourceLineNo">297</span>          columnDescBuilder.setEncryptionType(cipher.getName());<a name="line.297"></a>
-<span class="sourceLineNo">298</span>          columnDescBuilder.setEncryptionKey(<a name="line.298"></a>
-<span class="sourceLineNo">299</span>              EncryptionUtil.wrapKey(conf,<a name="line.299"></a>
-<span class="sourceLineNo">300</span>                  User.getCurrent().getShortName(),<a name="line.300"></a>
-<span class="sourceLineNo">301</span>                  new SecretKeySpec(keyBytes,<a name="line.301"></a>
-<span class="sourceLineNo">302</span>                      cipher.getName())));<a name="line.302"></a>
-<span class="sourceLineNo">303</span>        }<a name="line.303"></a>
-<span class="sourceLineNo">304</span>        if (mobThreshold &gt;= 0) {<a name="line.304"></a>
-<span class="sourceLineNo">305</span>          columnDescBuilder.setMobEnabled(true);<a name="line.305"></a>
-<span class="sourceLineNo">306</span>          columnDescBuilder.setMobThreshold(mobThreshold);<a name="line.306"></a>
-<span class="sourceLineNo">307</span>        }<a name="line.307"></a>
-<span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>        if (isNewCf) {<a name="line.309"></a>
-<span class="sourceLineNo">310</span>          admin.addColumnFamily(tableName, columnDescBuilder.build());<a name="line.310"></a>
-<span class="sourceLineNo">311</span>        } else {<a name="line.311"></a>
-<span class="sourceLineNo">312</span>          admin.modifyColumnFamily(tableName, columnDescBuilder.build());<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>      LOG.info("Enabling table " + tableName);<a name="line.315"></a>
-<span class="sourceLineNo">316</span>      admin.enableTable(tableName);<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    }<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  }<a name="line.318"></a>
-<span class="sourceLineNo">319</span><a name="line.319"></a>
-<span class="sourceLineNo">320</span>  @Override<a name="line.320"></a>
-<span class="sourceLineNo">321</span>  protected void addOptions() {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    addOptNoArg("v", OPT_VERBOSE, "Will display a full readout of logs, including ZooKeeper");<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    addOptWithArg(OPT_ZK_QUORUM, "ZK quorum as comma-separated host names " +<a name="line.323"></a>
-<span class="sourceLineNo">324</span>        "without port numbers");<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    addOptWithArg(OPT_ZK_PARENT_NODE, "name of parent znode in zookeeper");<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    addOptWithArg(OPT_TABLE_NAME, "The name of the table to read or write");<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    addOptWithArg(OPT_COLUMN_FAMILIES, "The name of the column families to use separated by comma");<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    addOptWithArg(OPT_WRITE, OPT_USAGE_LOAD);<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    addOptWithArg(OPT_READ, OPT_USAGE_READ);<a name="line.329"></a>
-<span class="sourceLineNo">330</span>    addOptWithArg(OPT_UPDATE, OPT_USAGE_UPDATE);<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    addOptNoArg(OPT_INIT_ONLY, "Initialize the test table only, don't do any loading");<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    addOptWithArg(OPT_BLOOM, OPT_USAGE_BLOOM);<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    addOptWithArg(OPT_COMPRESSION, OPT_USAGE_COMPRESSION);<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    addOptWithArg(HFileTestUtil.OPT_DATA_BLOCK_ENCODING, HFileTestUtil.OPT_DATA_BLOCK_ENCODING_USAGE);<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    addOptWithArg(OPT_MAX_READ_ERRORS, "The maximum number of read errors " +<a name="line.335"></a>
-<span class="sourceLineNo">336</span>        "to tolerate before terminating all reader threads. The default is " +<a name="line.336"></a>
-<span class="sourceLineNo">337</span>        MultiThreadedReader.DEFAULT_MAX_ERRORS + ".");<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    addOptWithArg(OPT_MULTIGET, "Whether to use multi-gets as opposed to " +<a name="line.338"></a>
-<span class="sourceLineNo">339</span>        "separate gets for every column in a row");<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    addOptWithArg(OPT_KEY_WINDOW, "The 'key window' to maintain between " +<a name="line.340"></a>
-<span class="sourceLineNo">341</span>        "reads and writes for concurrent write/read workload. The default " +<a name="line.341"></a>
-<span class="sourceLineNo">342</span>        "is " + MultiThreadedReader.DEFAULT_KEY_WINDOW + ".");<a name="line.342"></a>
-<span class="sourceLineNo">343</span><a name="line.343"></a>
-<span class="sourceLineNo">344</span>    addOptNoArg(OPT_MULTIPUT, "Whether to use multi-puts as opposed to " +<a name="line.344"></a>
-<span class="sourceLineNo">345</span>        "separate puts for every column in a row");<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    addOptNoArg(OPT_BATCHUPDATE, "Whether to use batch as opposed to " +<a name="line.346"></a>
-<span class="sourceLineNo">347</span>        "separate updates for every column in a row");<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    addOptNoArg(OPT_INMEMORY, OPT_USAGE_IN_MEMORY);<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    addOptWithArg(OPT_GENERATOR, OPT_GENERATOR_USAGE);<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    addOptWithArg(OPT_WRITER, OPT_WRITER_USAGE);<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    addOptWithArg(OPT_UPDATER, OPT_UPDATER_USAGE);<a name="line.351"></a>
-<span class="sourceLineNo">352</span>    addOptWithArg(OPT_READER, OPT_READER_USAGE);<a name="line.352"></a>
-<span class="sourceLineNo">353</span><a name="line.353"></a>
-<span class="sourceLineNo">354</span>    addOptWithArg(OPT_NUM_KEYS, "The number of keys to read/write");<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    addOptWithArg(OPT_START_KEY, "The first key to read/write " +<a name="line.355"></a>
-<span class="sourceLineNo">356</span>        "(a 0-based index). The default value is " +<a name="line.356"></a>
-<span class="sourceLineNo">357</span>        DEFAULT_START_KEY + ".");<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    addOptNoArg(OPT_SKIP_INIT, "Skip the initialization; assume test table "<a name="line.358"></a>
-<span class="sourceLineNo">359</span>        + "already exists");<a name="line.359"></a>
-<span class="sourceLineNo">360</span><a name="line.360"></a>
-<span class="sourceLineNo">361</span>    addOptWithArg(NUM_TABLES,<a name="line.361"></a>
-<span class="sourceLineNo">362</span>      "A positive integer number. When a number n is specified, load test "<a name="line.362"></a>
-<span class="sourceLineNo">363</span>          + "tool  will load n table parallely. -tn parameter value becomes "<a name="line.363"></a>
-<span class="sourceLineNo">364</span>          + "table name prefix. Each table name is in format &lt;tn&gt;_1...&lt;tn&gt;_n");<a name="line.364"></a>
-<span class="sourceLineNo">365</span><a name="line.365"></a>
-<span class="sourceLineNo">366</span>    addOptWithArg(OPT_ENCRYPTION, OPT_ENCRYPTION_USAGE);<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    addOptNoArg(OPT_DEFERRED_LOG_FLUSH, OPT_DEFERRED_LOG_FLUSH_USAGE);<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    addOptWithArg(OPT_NUM_REGIONS_PER_SERVER, OPT_NUM_REGIONS_PER_SERVER_USAGE);<a name="line.368"></a>
-<span class="sourceLineNo">369</span>    addOptWithArg(OPT_REGION_REPLICATION, OPT_REGION_REPLICATION_USAGE);<a name="line.369"></a>
-<span class="sourceLineNo">370</span>    addOptWithArg(OPT_REGION_REPLICA_ID, OPT_REGION_REPLICA_ID_USAGE);<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    addOptWithArg(OPT_MOB_THRESHOLD, OPT_MOB_THRESHOLD_USAGE);<a name="line.371"></a>
-<span class="sourceLineNo">372</span>  }<a name="line.372"></a>
-<span class="sourceLineNo">373</span><a name="line.373"></a>
-<span class="sourceLineNo">374</span>  @Override<a name="line.374"></a>
-<span class="sourceLineNo">375</span>  protected CommandLineParser newParser() {<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    // Commons-CLI lacks the capability to handle combinations of options, so we do it ourselves<a name="line.376"></a>
-<span class="sourceLineNo">377</span>    // Validate in parse() to get helpful error messages instead of exploding in processOptions()<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    return new DefaultParser() {<a name="line.378"></a>
-<span class="sourceLineNo">379</span>      @Override<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      public CommandLine parse(Options opts, String[] args, Properties props, boolean stop)<a name="line.380"></a>
-<span class="sourceLineNo">381</span>          throws ParseException {<a name="line.381"></a>
-<span class="sourceLineNo">382</span>        CommandLine cl = super.parse(opts, args, props, stop);<a name="line.382"></a>
-<span class="sourceLineNo">383</span><a name="line.383"></a>
-<span class="sourceLineNo">384</span>        boolean isReadWriteUpdate = cmd.hasOption(OPT_READ)<a name="line.384"></a>
-<span class="sourceLineNo">385</span>            || cmd.hasOption(OPT_WRITE)<a name="line.385"></a>
-<span class="sourceLineNo">386</span>            || cmd.hasOption(OPT_UPDATE);<a name="line.386"></a>
-<span class="sourceLineNo">387</span>        boolean isInitOnly = cmd.hasOption(OPT_INIT_ONLY);<a name="line.387"></a>
-<span class="sourceLineNo">388</span><a name="line.388"></a>
-<span class="sourceLineNo">389</span>        if (!isInitOnly &amp;&amp; !isReadWriteUpdate) {<a name="line.389"></a>
-<span class="sourceLineNo">390</span>          throw new MissingOptionException("Must specify either -" + OPT_INIT_ONLY<a name="line.390"></a>
-<span class="sourceLineNo">391</span>              + " or at least one of -" + OPT_READ + ", -" + OPT_WRITE + ", -" + OPT_UPDATE);<a name="line.391"></a>
-<span class="sourceLineNo">392</span>        }<a name="line.392"></a>
-<span class="sourceLineNo">393</span><a name="line.393"></a>
-<span class="sourceLineNo">394</span>        if (isInitOnly &amp;&amp; isReadWriteUpdate) {<a name="line.394"></a>
-<span class="sourceLineNo">395</span>          throw new AlreadySelectedException(OPT_INIT_ONLY + " cannot be specified with any of -"<a name="line.395"></a>
-<span class="sourceLineNo">396</span>              + OPT_READ + ", -" + OPT_WRITE + ", -" + OPT_UPDATE);<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>        if (isReadWriteUpdate &amp;&amp; !cmd.hasOption(OPT_NUM_KEYS)) {<a name="line.399"></a>
-<span class="sourceLineNo">400</span>          throw new MissingOptionException(OPT_NUM_KEYS + " must be specified in read/write mode.");<a name="line.400"></a>
-<span class="sourceLineNo">401</span>        }<a name="line.401"></a>
-<span class="sourceLineNo">402</span><a name="line.402"></a>
-<span class="sourceLineNo">403</span>        return cl;<a name="line.403"></a>
-<span class="sourceLineNo">404</span>      }<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    };<a name="line.405"></a>
-<span class="sourceLineNo">406</span>  }<a name="line.406"></a>
-<span class="sourceLineNo">407</span><a name="line.407"></a>
-<span class="sourceLineNo">408</span>  @Override<a name="line.408"></a>
-<span class="sourceLineNo">409</span>  protected void processOptions(CommandLine cmd) {<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    this.cmd = cmd;<a name="line.410"></a>
-<span class="sourceLineNo">411</span><a name="line.411"></a>
-<span class="sourceLineNo">412</span>    tableName = TableName.valueOf(cmd.getOptionValue(OPT_TABLE_NAME,<a name="line.412"></a>
-<span class="sourceLineNo">413</span>        DEFAULT_TABLE_NAME));<a name="line.413"></a>
-<span class="sourceLineNo">414</span><a name="line.414"></a>
-<span class="sourceLineNo">415</span>    if (cmd.hasOption(OPT_COLUMN_FAMILIES)) {<a name="line.415"></a>
-<span class="sourceLineNo">416</span>      String[] list = cmd.getOptionValue(OPT_COLUMN_FAMILIES).split(",");<a name="line.416"></a>
-<span class="sourceLineNo">417</span>      families = new byte[list.length][];<a name="line.417"></a>
-<span class="sourceLineNo">418</span>      for (int i = 0; i &lt; list.length; i++) {<a name="line.418"></a>
-<span class="sourceLineNo">419</span>        families[i] = Bytes.toBytes(list[i]);<a name="line.419"></a>
-<span class="sourceLineNo">420</span>      }<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    } else {<a name="line.421"></a>
-<span class="sourceLineNo">422</span>      families = HFileTestUtil.DEFAULT_COLUMN_FAMILIES;<a name="line.422"></a>
-<span class="sourceLineNo">423</span>    }<a name="line.423"></a>
-<span class="sourceLineNo">424</span><a name="line.424"></a>
-<span class="sourceLineNo">425</span>    isVerbose = cmd.hasOption(OPT_VERBOSE);<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    isWrite = cmd.hasOption(OPT_WRITE);<a name="line.426"></a>
-<span class="sourceLineNo">427</span>    isRead = cmd.hasOption(OPT_READ);<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    isUpdate = cmd.hasOption(OPT_UPDATE);<a name="line.428"></a>
-<span class="sourceLineNo">429</span>    isInitOnly = cmd.hasOption(OPT_INIT_ONLY);<a name="line.429"></a>
-<span class="sourceLineNo">430</span>    deferredLogFlush = cmd.hasOption(OPT_DEFERRED_LOG_FLUSH);<a name="line.430"></a>
-<span class="sourceLineNo">431</span><a name="line.431"></a>
-<span class="sourceLineNo">432</span>    if (!isInitOnly) {<a name="line.432"></a>
-<span class="sourceLineNo">433</span>      startKey = parseLong(cmd.getOptionValue(OPT_START_KEY,<a name="line.433"></a>
-<span class="sourceLineNo">434</span>          String.valueOf(DEFAULT_START_KEY)), 0, Long.MAX_VALUE);<a name="line.434"></a>
-<span class="sourceLineNo">435</span>      long numKeys = parseLong(cmd.getOptionValue(OPT_NUM_KEYS), 1,<a name="line.435"></a>
-<span class="sourceLineNo">436</span>          Long.MAX_VALUE - startKey);<a name="line.436"></a>
-<span class="sourceLineNo">437</span>      endKey = startKey + numKeys;<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      isSkipInit = cmd.hasOption(OPT_SKIP_INIT);<a name="line.438"></a>
-<span class="sourceLineNo">439</span>      System.out.println("Key range: [" + startKey + ".." + (endKey - 1) + "]");<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    }<a name="line.440"></a>
-<span class="sourceLineNo">441</span><a name="line.441"></a>
-<span class="sourceLineNo">442</span>    parseColumnFamilyOptions(cmd);<a name="line.442"></a>
+<span class="sourceLineNo">122</span>  public static final String OPT_BLOOM_PARAM = "bloom_param";<a name="line.122"></a>
+<span class="sourceLineNo">123</span>  public static final String OPT_COMPRESSION = "compression";<a name="line.123"></a>
+<span class="sourceLineNo">124</span>  public static final String OPT_DEFERRED_LOG_FLUSH = "deferredlogflush";<a name="line.124"></a>
+<span class="sourceLineNo">125</span>  public static final String OPT_DEFERRED_LOG_FLUSH_USAGE = "Enable deferred log flush.";<a name="line.125"></a>
+<span class="sourceLineNo">126</span><a name="line.126"></a>
+<span class="sourceLineNo">127</span>  public static final String OPT_INMEMORY = "in_memory";<a name="line.127"></a>
+<span class="sourceLineNo">128</span>  public static final String OPT_USAGE_IN_MEMORY = "Tries to keep the HFiles of the CF " +<a name="line.128"></a>
+<span class="sourceLineNo">129</span>      "inmemory as far as possible.  Not guaranteed that reads are always served from inmemory";<a name="line.129"></a>
+<span class="sourceLineNo">130</span><a name="line.130"></a>
+<span class="sourceLineNo">131</span>  public static final String OPT_GENERATOR = "generator";<a name="line.131"></a>
+<span class="sourceLineNo">132</span>  public static final String OPT_GENERATOR_USAGE = "The class which generates load for the tool."<a name="line.132"></a>
+<span class="sourceLineNo">133</span>      + " Any args for this class can be passed as colon separated after class name";<a name="line.133"></a>
+<span class="sourceLineNo">134</span><a name="line.134"></a>
+<span class="sourceLineNo">135</span>  public static final String OPT_WRITER = "writer";<a name="line.135"></a>
+<span class="sourceLineNo">136</span>  public static final String OPT_WRITER_USAGE = "The class for executing the write requests";<a name="line.136"></a>
+<span class="sourceLineNo">137</span><a name="line.137"></a>
+<span class="sourceLineNo">138</span>  public static final String OPT_UPDATER = "updater";<a name="line.138"></a>
+<span class="sourceLineNo">139</span>  public static final String OPT_UPDATER_USAGE = "The class for executing the update requests";<a name="line.139"></a>
+<span class="sourceLineNo">140</span><a name="line.140"></a>
+<span class="sourceLineNo">141</span>  public static final String OPT_READER = "reader";<a name="line.141"></a>
+<span class="sourceLineNo">142</span>  public static final String OPT_READER_USAGE = "The class for executing the read requests";<a name="line.142"></a>
+<span class="sourceLineNo">143</span><a name="line.143"></a>
+<span class="sourceLineNo">144</span>  protected static final String OPT_KEY_WINDOW = "key_window";<a name="line.144"></a>
+<span class="sourceLineNo">145</span>  protected static final String OPT_WRITE = "write";<a name="line.145"></a>
+<span class="sourceLineNo">146</span>  protected static final String OPT_MAX_READ_ERRORS = "max_read_errors";<a name="line.146"></a>
+<span class="sourceLineNo">147</span>  public static final String OPT_MULTIPUT = "multiput";<a name="line.147"></a>
+<span class="sourceLineNo">148</span>  public static final String OPT_MULTIGET = "multiget_batchsize";<a name="line.148"></a>
+<span class="sourceLineNo">149</span>  protected static final String OPT_NUM_KEYS = "num_keys";<a name="line.149"></a>
+<span class="sourceLineNo">150</span>  protected static final String OPT_READ = "read";<a name="line.150"></a>
+<span class="sourceLineNo">151</span>  protected static final String OPT_START_KEY = "start_key";<a name="line.151"></a>
+<span class="sourceLineNo">152</span>  public static final String OPT_TABLE_NAME = "tn";<a name="line.152"></a>
+<span class="sourceLineNo">153</span>  public static final String OPT_COLUMN_FAMILIES = "families";<a name="line.153"></a>
+<span class="sourceLineNo">154</span>  protected static final String OPT_ZK_QUORUM = "zk";<a name="line.154"></a>
+<span class="sourceLineNo">155</span>  protected static final String OPT_ZK_PARENT_NODE = "zk_root";<a name="line.155"></a>
+<span class="sourceLineNo">156</span>  protected static final String OPT_SKIP_INIT = "skip_init";<a name="line.156"></a>
+<span class="sourceLineNo">157</span>  protected static final String OPT_INIT_ONLY = "init_only";<a name="line.157"></a>
+<span class="sourceLineNo">158</span>  protected static final String NUM_TABLES = "num_tables";<a name="line.158"></a>
+<span class="sourceLineNo">159</span>  protected static final String OPT_BATCHUPDATE = "batchupdate";<a name="line.159"></a>
+<span class="sourceLineNo">160</span>  protected static final String OPT_UPDATE = "update";<a name="line.160"></a>
+<span class="sourceLineNo">161</span><a name="line.161"></a>
+<span class="sourceLineNo">162</span>  public static final String OPT_ENCRYPTION = "encryption";<a name="line.162"></a>
+<span class="sourceLineNo">163</span>  protected static final String OPT_ENCRYPTION_USAGE =<a name="line.163"></a>
+<span class="sourceLineNo">164</span>    "Enables transparent encryption on the test table, one of " +<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    Arrays.toString(Encryption.getSupportedCiphers());<a name="line.165"></a>
+<span class="sourceLineNo">166</span><a name="line.166"></a>
+<span class="sourceLineNo">167</span>  public static final String OPT_NUM_REGIONS_PER_SERVER = "num_regions_per_server";<a name="line.167"></a>
+<span class="sourceLineNo">168</span>  protected static final String OPT_NUM_REGIONS_PER_SERVER_USAGE<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    = "Desired number of regions per region server. Defaults to 5.";<a name="line.169"></a>
+<span class="sourceLineNo">170</span>  public static int DEFAULT_NUM_REGIONS_PER_SERVER = 5;<a name="line.170"></a>
+<span class="sourceLineNo">171</span><a name="line.171"></a>
+<span class="sourceLineNo">172</span>  public static final String OPT_REGION_REPLICATION = "region_replication";<a name="line.172"></a>
+<span class="sourceLineNo">173</span>  protected static final String OPT_REGION_REPLICATION_USAGE =<a name="line.173"></a>
+<span class="sourceLineNo">174</span>      "Desired number of replicas per region";<a name="line.174"></a>
+<span class="sourceLineNo">175</span><a name="line.175"></a>
+<span class="sourceLineNo">176</span>  public static final String OPT_REGION_REPLICA_ID = "region_replica_id";<a name="line.176"></a>
+<span class="sourceLineNo">177</span>  protected static final String OPT_REGION_REPLICA_ID_USAGE =<a name="line.177"></a>
+<span class="sourceLineNo">178</span>      "Region replica id to do the reads from";<a name="line.178"></a>
+<span class="sourceLineNo">179</span><a name="line.179"></a>
+<span class="sourceLineNo">180</span>  public static final String OPT_MOB_THRESHOLD = "mob_threshold";<a name="line.180"></a>
+<span class="sourceLineNo">181</span>  protected static final String OPT_MOB_THRESHOLD_USAGE =<a name="line.181"></a>
+<span class="sourceLineNo">182</span>      "Desired cell size to exceed in bytes that will use the MOB write path";<a name="line.182"></a>
+<span class="sourceLineNo">183</span><a name="line.183"></a>
+<span class="sourceLineNo">184</span>  protected static final long DEFAULT_START_KEY = 0;<a name="line.184"></a>
+<span class="sourceLineNo">185</span><a name="line.185"></a>
+<span class="sourceLineNo">186</span>  /** This will be removed as we factor out the dependency on command line */<a name="line.186"></a>
+<span class="sourceLineNo">187</span>  protected CommandLine cmd;<a name="line.187"></a>
+<span class="sourceLineNo">188</span><a name="line.188"></a>
+<span class="sourceLineNo">189</span>  protected MultiThreadedWriter writerThreads = null;<a name="line.189"></a>
+<span class="sourceLineNo">190</span>  protected MultiThreadedReader readerThreads = null;<a name="line.190"></a>
+<span class="sourceLineNo">191</span>  protected MultiThreadedUpdater updaterThreads = null;<a name="line.191"></a>
+<span class="sourceLineNo">192</span><a name="line.192"></a>
+<span class="sourceLineNo">193</span>  protected long startKey, endKey;<a name="line.193"></a>
+<span class="sourceLineNo">194</span><a name="line.194"></a>
+<span class="sourceLineNo">195</span>  protected boolean isVerbose, isWrite, isRead, isUpdate;<a name="line.195"></a>
+<span class="sourceLineNo">196</span>  protected boolean deferredLogFlush;<a name="line.196"></a>
+<span class="sourceLineNo">197</span><a name="line.197"></a>
+<span class="sourceLineNo">198</span>  // Column family options<a name="line.198"></a>
+<span class="sourceLineNo">199</span>  protected DataBlockEncoding dataBlockEncodingAlgo;<a name="line.199"></a>
+<span class="sourceLineNo">200</span>  protected Compression.Algorithm compressAlgo;<a name="line.200"></a>
+<span class="sourceLineNo">201</span>  protected BloomType bloomType;<a name="line.201"></a>
+<span class="sourceLineNo">202</span>  private boolean inMemoryCF;<a name="line.202"></a>
+<span class="sourceLineNo">203</span><a name="line.203"></a>
+<span class="sourceLineNo">204</span>  private User userOwner;<a name="line.204"></a>
+<span class="sourceLineNo">205</span>  // Writer options<a name="line.205"></a>
+<span class="sourceLineNo">206</span>  protected int numWriterThreads = DEFAULT_NUM_THREADS;<a name="line.206"></a>
+<span class="sourceLineNo">207</span>  protected int minColsPerKey, maxColsPerKey;<a name="line.207"></a>
+<span class="sourceLineNo">208</span>  protected int minColDataSize = DEFAULT_DATA_SIZE, maxColDataSize = DEFAULT_DATA_SIZE;<a name="line.208"></a>
+<span class="sourceLineNo">209</span>  protected boolean isMultiPut;<a name="line.209"></a>
+<span class="sourceLineNo">210</span><a name="line.210"></a>
+<span class="sourceLineNo">211</span>  // Updater options<a name="line.211"></a>
+<span class="sourceLineNo">212</span>  protected int numUpdaterThreads = DEFAULT_NUM_THREADS;<a name="line.212"></a>
+<span class="sourceLineNo">213</span>  protected int updatePercent;<a name="line.213"></a>
+<span class="sourceLineNo">214</span>  protected boolean ignoreConflicts = false;<a name="line.214"></a>
+<span class="sourceLineNo">215</span>  protected boolean isBatchUpdate;<a name="line.215"></a>
+<span class="sourceLineNo">216</span><a name="line.216"></a>
+<span class="sourceLineNo">217</span>  // Reader options<a name="line.217"></a>
+<span class="sourceLineNo">218</span>  private int numReaderThreads = DEFAULT_NUM_THREADS;<a name="line.218"></a>
+<span class="sourceLineNo">219</span>  private int keyWindow = MultiThreadedReader.DEFAULT_KEY_WINDOW;<a name="line.219"></a>
+<span class="sourceLineNo">220</span>  private int multiGetBatchSize = MultiThreadedReader.DEFAULT_BATCH_SIZE;<a name="line.220"></a>
+<span class="sourceLineNo">221</span>  private int maxReadErrors = MultiThreadedReader.DEFAULT_MAX_ERRORS;<a name="line.221"></a>
+<span class="sourceLineNo">222</span>  private int verifyPercent;<a name="line.222"></a>
+<span class="sourceLineNo">223</span><a name="line.223"></a>
+<span class="sourceLineNo">224</span>  private int numTables = 1;<a name="line.224"></a>
+<span class="sourceLineNo">225</span><a name="line.225"></a>
+<span class="sourceLineNo">226</span>  private String superUser;<a name="line.226"></a>
+<span class="sourceLineNo">227</span><a name="line.227"></a>
+<span class="sourceLineNo">228</span>  private String userNames;<a name="line.228"></a>
+<span class="sourceLineNo">229</span>  //This file is used to read authentication information in secure clusters.<a name="line.229"></a>
+<span class="sourceLineNo">230</span>  private String authnFileName;<a name="line.230"></a>
+<span class="sourceLineNo">231</span><a name="line.231"></a>
+<span class="sourceLineNo">232</span>  private int numRegionsPerServer = DEFAULT_NUM_REGIONS_PER_SERVER;<a name="line.232"></a>
+<span class="sourceLineNo">233</span>  private int regionReplication = -1; // not set<a name="line.233"></a>
+<span class="sourceLineNo">234</span>  private int regionReplicaId = -1; // not set<a name="line.234"></a>
+<span class="sourceLineNo">235</span><a name="line.235"></a>
+<span class="sourceLineNo">236</span>  private int mobThreshold = -1; // not set<a name="line.236"></a>
+<span class="sourceLineNo">237</span><a name="line.237"></a>
+<span class="sourceLineNo">238</span>  // TODO: refactor LoadTestToolImpl somewhere to make the usage from tests less bad,<a name="line.238"></a>
+<span class="sourceLineNo">239</span>  //       console tool itself should only be used from console.<a name="line.239"></a>
+<span class="sourceLineNo">240</span>  protected boolean isSkipInit = false;<a name="line.240"></a>
+<span class="sourceLineNo">241</span>  protected boolean isInitOnly = false;<a name="line.241"></a>
+<span class="sourceLineNo">242</span><a name="line.242"></a>
+<span class="sourceLineNo">243</span>  protected Cipher cipher = null;<a name="line.243"></a>
+<span class="sourceLineNo">244</span><a name="line.244"></a>
+<span class="sourceLineNo">245</span>  protected String[] splitColonSeparated(String option,<a name="line.245"></a>
+<span class="sourceLineNo">246</span>      int minNumCols, int maxNumCols) {<a name="line.246"></a>
+<span class="sourceLineNo">247</span>    String optVal = cmd.getOptionValue(option);<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    String[] cols = optVal.split(COLON);<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    if (cols.length &lt; minNumCols || cols.length &gt; maxNumCols) {<a name="line.249"></a>
+<span class="sourceLineNo">250</span>      throw new IllegalArgumentException("Expected at least "<a name="line.250"></a>
+<span class="sourceLineNo">251</span>          + minNumCols + " columns but no more than " + maxNumCols +<a name="line.251"></a>
+<span class="sourceLineNo">252</span>          " in the colon-separated value '" + optVal + "' of the " +<a name="line.252"></a>
+<span class="sourceLineNo">253</span>          "-" + option + " option");<a name="line.253"></a>
+<span class="sourceLineNo">254</span>    }<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    return cols;<a name="line.255"></a>
+<span class="sourceLineNo">256</span>  }<a name="line.256"></a>
+<span class="sourceLineNo">257</span><a name="line.257"></a>
+<span class="sourceLineNo">258</span>  protected int getNumThreads(String numThreadsStr) {<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    return parseInt(numThreadsStr, 1, Short.MAX_VALUE);<a name="line.259"></a>
+<span class="sourceLineNo">260</span>  }<a name="line.260"></a>
+<span class="sourceLineNo">261</span><a name="line.261"></a>
+<span class="sourceLineNo">262</span>  public byte[][] getColumnFamilies() {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    return families;<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">266</span>  /**<a name="line.266"></a>
+<span class="sourceLineNo">267</span>   * Apply column family options such as Bloom filters, compression, and data<a name="line.267"></a>
+<span class="sourceLineNo">268</span>   * block encoding.<a name="line.268"></a>
+<span class="sourceLineNo">269</span>   */<a name="line.269"></a>
+<span class="sourceLineNo">270</span>  protected void applyColumnFamilyOptions(TableName tableName,<a name="line.270"></a>
+<span class="sourceLineNo">271</span>      byte[][] columnFamilies) throws IOException {<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.272"></a>
+<span class="sourceLineNo">273</span>        Admin admin = conn.getAdmin()) {<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      TableDescriptor tableDesc = admin.getDescriptor(tableName);<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      LOG.info("Disabling table " + tableName);<a name="line.275"></a>
+<span class="sourceLineNo">276</span>      admin.disableTable(tableName);<a name="line.276"></a>
+<span class="sourceLineNo">277</span>      for (byte[] cf : columnFamilies) {<a name="line.277"></a>
+<span class="sourceLineNo">278</span>        ColumnFamilyDescriptor columnDesc = tableDesc.getColumnFamily(cf);<a name="line.278"></a>
+<span class="sourceLineNo">279</span>        boolean isNewCf = columnDesc == null;<a name="line.279"></a>
+<span class="sourceLineNo">280</span>        ColumnFamilyDescriptorBuilder columnDescBuilder = isNewCf ?<a name="line.280"></a>
+<span class="sourceLineNo">281</span>            ColumnFamilyDescriptorBuilder.newBuilder(cf) :<a name="line.281"></a>
+<span class="sourceLineNo">282</span>            ColumnFamilyDescriptorBuilder.newBuilder(columnDesc);<a name="line.282"></a>
+<span class="sourceLineNo">283</span>        if (bloomType != null) {<a name="line.283"></a>
+<span class="sourceLineNo">284</span>          columnDescBuilder.setBloomFilterType(bloomType);<a name="line.284"></a>
+<span class="sourceLineNo">285</span>        }<a name="line.285"></a>
+<span class="sourceLineNo">286</span>        if (compressAlgo != null) {<a name="line.286"></a>
+<span class="sourceLineNo">287</span>          columnDescBuilder.setCompressionType(compressAlgo);<a name="line.287"></a>
+<span class="sourceLineNo">288</span>        }<a name="line.288"></a>
+<span class="sourceLineNo">289</span>        if (dataBlockEncodingAlgo != null) {<a name="line.289"></a>
+<span class="sourceLineNo">290</span>          columnDescBuilder.setDataBlockEncoding(dataBlockEncodingAlgo);<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        }<a name="line.291"></a>
+<span class="sourceLineNo">292</span>        if (inMemoryCF) {<a name="line.292"></a>
+<span class="sourceLineNo">293</span>          columnDescBuilder.setInMemory(inMemoryCF);<a name="line.293"></a>
+<span class="sourceLineNo">294</span>        }<a name="line.294"></a>
+<span class="sourceLineNo">295</span>        if (cipher != null) {<a name="line.295"></a>
+<span class="sourceLineNo">296</span>          byte[] keyBytes = new byte[cipher.getKeyLength()];<a name="line.296"></a>
+<span class="sourceLineNo">297</span>          new SecureRandom().nextBytes(keyBytes);<a name="line.297"></a>
+<span class="sourceLineNo">298</span>          columnDescBuilder.setEncryptionType(cipher.getName());<a name="line.298"></a>
+<span class="sourceLineNo">299</span>          columnDescBuilder.setEncryptionKey(<a name="line.299"></a>
+<span class="sourceLineNo">300</span>              EncryptionUtil.wrapKey(conf,<a name="line.300"></a>
+<span class="sourceLineNo">301</span>                  User.getCurrent().getShortName(),<a name="line.301"></a>
+<span class="sourceLineNo">302</span>                  new SecretKeySpec(keyBytes,<a name="line.302"></a>
+<span class="sourceLineNo">303</span>                      cipher.getName())));<a name="line.303"></a>
+<span class="sourceLineNo">304</span>        }<a name="line.304"></a>
+<span class="sourceLineNo">305</span>        if (mobThreshold &gt;= 0) {<a name="line.305"></a>
+<span class="sourceLineNo">306</span>          columnDescBuilder.setMobEnabled(true);<a name="line.306"></a>
+<span class="sourceLineNo">307</span>          columnDescBuilder.setMobThreshold(mobThreshold);<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 (isNewCf) {<a name="line.310"></a>
+<span class="sourceLineNo">311</span>          admin.addColumnFamily(tableName, columnDescBuilder.build());<a name="line.311"></a>
+<span class="sourceLineNo">312</span>        } else {<a name="line.312"></a>
+<span class="sourceLineNo">313</span>          admin.modifyColumnFamily(tableName, columnDescBuilder.build());<a name="line.313"></a>
+<span class="sourceLineNo">314</span>        }<a name="line.314"></a>
+<span class="sourceLineNo">315</span>      }<a name="line.315"></a>
+<span class="sourceLineNo">316</span>      LOG.info("Enabling table " + tableName);<a name="line.316"></a>
+<span class="sourceLineNo">317</span>      admin.enableTable(tableName);<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    }<a name="line.318"></a>
+<span class="sourceLineNo">319</span>  }<a name="line.319"></a>
+<span class="sourceLineNo">320</span><a name="line.320"></a>
+<span class="sourceLineNo">321</span>  @Override<a name="line.321"></a>
+<span class="sourceLineNo">322</span>  protected void addOptions() {<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    addOptNoArg("v", OPT_VERBOSE, "Will display a full readout of logs, including ZooKeeper");<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    addOptWithArg(OPT_ZK_QUORUM, "ZK quorum as comma-separated host names " +<a name="line.324"></a>
+<span class="sourceLineNo">325</span>        "without port numbers");<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    addOptWithArg(OPT_ZK_PARENT_NODE, "name of parent znode in zookeeper");<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    addOptWithArg(OPT_TABLE_NAME, "The name of the table to read or write");<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    addOptWithArg(OPT_COLUMN_FAMILIES, "The name of the column families to use separated by comma");<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    addOptWithArg(OPT_WRITE, OPT_USAGE_LOAD);<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    addOptWithArg(OPT_READ, OPT_USAGE_READ);<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    addOptWithArg(OPT_UPDATE, OPT_USAGE_UPDATE);<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    addOptNoArg(OPT_INIT_ONLY, "Initialize the test table only, don't do any loading");<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    addOptWithArg(OPT_BLOOM, OPT_USAGE_BLOOM);<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    addOptWithArg(OPT_BLOOM_PARAM, "the parameter of bloom filter type");<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    addOptWithArg(OPT_COMPRESSION, OPT_USAGE_COMPRESSION);<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    addOptWithArg(HFileTestUtil.OPT_DATA_BLOCK_ENCODING, HFileTestUtil.OPT_DATA_BLOCK_ENCODING_USAGE);<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    addOptWithArg(OPT_MAX_READ_ERRORS, "The maximum number of read errors " +<a name="line.337"></a>
+<span class="sourceLineNo">338</span>        "to tolerate before terminating all reader threads. The default is " +<a name="line.338"></a>
+<span class="sourceLineNo">339</span>        MultiThreadedReader.DEFAULT_MAX_ERRORS + ".");<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    addOptWithArg(OPT_MULTIGET, "Whether to use multi-gets as opposed to " +<a name="line.340"></a>
+<span class="sourceLineNo">341</span>        "separate gets for every column in a row");<a name="line.341"></a>
+<span class="sourceLineNo">342</span>    addOptWithArg(OPT_KEY_WINDOW, "The 'key window' to maintain between " +<a name="line.342"></a>
+<span class="sourceLineNo">343</span>        "reads and writes for concurrent write/read workload. The default " +<a name="line.343"></a>
+<span class="sourceLineNo">344</span>        "is " + MultiThreadedReader.DEFAULT_KEY_WINDOW + ".");<a name="line.344"></a>
+<span class="sourceLineNo">345</span><a name="line.345"></a>
+<span class="sourceLineNo">346</span>    addOptNoArg(OPT_MULTIPUT, "Whether to use multi-puts as opposed to " +<a name="line.346"></a>
+<span class="sourceLineNo">347</span>        "separate puts for every column in a row");<a name="line.347"></a>
+<span class="sourceLineNo">348</span>    addOptNoArg(OPT_BATCHUPDATE, "Whether to use batch as opposed to " +<a name="line.348"></a>
+<span class="sourceLineNo">349</span>        "separate updates for every column in a row");<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    addOptNoArg(OPT_INMEMORY, OPT_USAGE_IN_MEMORY);<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    addOptWithArg(OPT_GENERATOR, OPT_GENERATOR_USAGE);<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    addOptWithArg(OPT_WRITER, OPT_WRITER_USAGE);<a name="line.352"></a>
+<span class="sourceLineNo">353</span>    addOptWithArg(OPT_UPDATER, OPT_UPDATER_USAGE);<a name="line.353"></a>
+<span class="sourceLineNo">354</span>    addOptWithArg(OPT_READER, OPT_READER_USAGE);<a name="line.354"></a>
+<span class="sourceLineNo">355</span><a name="line.355"></a>
+<span class="sourceLineNo">356</span>    addOptWithArg(OPT_NUM_KEYS, "The number of keys to read/write");<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    addOptWithArg(OPT_START_KEY, "The first key to read/write " +<a name="line.357"></a>
+<span class="sourceLineNo">358</span>        "(a 0-based index). The default value is " +<a name="line.358"></a>
+<span class="sourceLineNo">359</span>        DEFAULT_START_KEY + ".");<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    addOptNoArg(OPT_SKIP_INIT, "Skip the initialization; assume test table "<a name="line.360"></a>
+<span class="sourceLineNo">361</span>        + "already exists");<a name="line.361"></a>
+<span class="sourceLineNo">362</span><a name="line.362"></a>
+<span class="sourceLineNo">363</span>    addOptWithArg(NUM_TABLES,<a name="line.363"></a>
+<span class="sourceLineNo">364</span>      "A positive integer number. When a number n is specified, load test "<a name="line.364"></a>
+<span class="sourceLineNo">365</span>          + "tool  will load n table parallely. -tn parameter value becomes "<a name="line.365"></a>
+<span class="sourceLineNo">366</span>          + "table name prefix. Each table name is in format &lt;tn&gt;_1...&lt;tn&gt;_n");<a name="line.366"></a>
+<span class="sourceLineNo">367</span><a name="line.367"></a>
+<span class="sourceLineNo">368</span>    addOptWithArg(OPT_ENCRYPTION, OPT_ENCRYPTION_USAGE);<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    addOptNoArg(OPT_DEFERRED_LOG_FLUSH, OPT_DEFERRED_LOG_FLUSH_USAGE);<a name="line.369"></a>
+<span class="sourceLineNo">370</span>    addOptWithArg(OPT_NUM_REGIONS_PER_SERVER, OPT_NUM_REGIONS_PER_SERVER_USAGE);<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    addOptWithArg(OPT_REGION_REPLICATION, OPT_REGION_REPLICATION_USAGE);<a name="line.371"></a>
+<span class="sourceLineNo">372</span>    addOptWithArg(OPT_REGION_REPLICA_ID, OPT_REGION_REPLICA_ID_USAGE);<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    addOptWithArg(OPT_MOB_THRESHOLD, OPT_MOB_THRESHOLD_USAGE);<a name="line.373"></a>
+<span class="sourceLineNo">374</span>  }<a name="line.374"></a>
+<span class="sourceLineNo">375</span><a name="line.375"></a>
+<span class="sourceLineNo">376</span>  @Override<a name="line.376"></a>
+<span class="sourceLineNo">377</span>  protected CommandLineParser newParser() {<a name="line.377"></a>
+<span class="sourceLineNo">378</span>    // Commons-CLI lacks the capability to handle combinations of options, so we do it ourselves<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    // Validate in parse() to get helpful error messages instead of exploding in processOptions()<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    return new DefaultParser() {<a name="line.380"></a>
+<span class="sourceLineNo">381</span>      @Override<a name="line.381"></a>
+<span class="sourceLineNo">382</span>      public CommandLine parse(Options opts, String[] args, Properties props, boolean stop)<a name="line.382"></a>
+<span class="sourceLineNo">383</span>          throws ParseException {<a name="line.383"></a>
+<span class="sourceLineNo">384</span>        CommandLine cl = super.parse(opts, args, props, stop);<a name="line.384"></a>
+<span class="sourceLineNo">385</span><a name="line.385"></a>
+<span class="sourceLineNo">386</span>        boolean isReadWriteUpdate = cmd.hasOption(OPT_READ)<a name="line.386"></a>
+<span class="sourceLineNo">387</span>            || cmd.hasOption(OPT_WRITE)<a name="line.387"></a>
+<span class="sourceLineNo">388</span>            || cmd.hasOption(OPT_UPDATE);<a name="line.388"></a>
+<span class="sourceLineNo">389</span>        boolean isInitOnly = cmd.hasOption(OPT_INIT_ONLY);<a name="line.389"></a>
+<span class="sourceLineNo">390</span><a name="line.390"></a>
+<span class="sourceLineNo">391</span>        if (!isInitOnly &amp;&amp; !isReadWriteUpdate) {<a name="line.391"></a>
+<span class="sourceLineNo">392</span>          throw new MissingOptionException("Must specify either -" + OPT_INIT_ONLY<a name="line.392"></a>
+<span class="sourceLineNo">393</span>              + " or at least one of -" + OPT_READ + ", -" + OPT_WRITE + ", -" + OPT_UPDATE);<a name="line.393"></a>
+<span class="sourceLineNo">394</span>        }<a name="line.394"></a>
+<span class="sourceLineNo">395</span><a name="line.395"></a>
+<span class="sourceLineNo">396</span>        if (isInitOnly &amp;&amp; isReadWriteUpdate) {<a name="line.396"></a>
+<span class="sourceLineNo">397</span>          throw new AlreadySelectedException(OPT_INIT_ONLY + " cannot be specified with any of -"<a name="line.397"></a>
+<span class="sourceLineNo">398</span>              + OPT_READ + ", -" + OPT_WRITE + ", -" + OPT_UPDATE);<a name="line.398"></a>
+<span class="sourceLineNo">399</span>        }<a name="line.399"></a>
+<span class="sourceLineNo">400</span><a name="line.400"></a>
+<span class="sourceLineNo">401</span>        if (isReadWriteUpdate &amp;&amp; !cmd.hasOption(OPT_NUM_KEYS)) {<a name="line.401"></a>
+<span class="sourceLineNo">402</span>          throw new MissingOptionException(OPT_NUM_KEYS + " must be specified in read/write mode.");<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>        return cl;<a name="line.405"></a>
+<span class="sourceLineNo">406</span>      }<a name="line.406"></a>
+<span class="sourceLineNo">407</span>    };<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>  protected void processOptions(CommandLine cmd) {<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    this.cmd = cmd;<a name="line.412"></a>
+<span class="sourceLineNo">413</span><a name="line.413"></a>
+<span class="sourceLineNo">414</span>    tableName = TableName.valueOf(cmd.getOptionValue(OPT_TABLE_NAME,<a name="line.414"></a>
+<span class="sourceLineNo">415</span>        DEFAULT_TABLE_NAME));<a name="line.415"></a>
+<span class="sourceLineNo">416</span><a name="line.416"></a>
+<span class="sourceLineNo">417</span>    if (cmd.hasOption(OPT_COLUMN_FAMILIES)) {<a name="line.417"></a>
+<span class="sourceLineNo">418</span>      String[] list = cmd.getOptionValue(OPT_COLUMN_FAMILIES).split(",");<a name="line.418"></a>
+<span class="sourceLineNo">419</span>      families = new byte[list.length][];<a name="line.419"></a>
+<span class="sourceLineNo">420</span>      for (int i = 0; i &lt; list.length; i++) {<a name="line.420"></a>
+<span class="sourceLineNo">421</span>        families[i] = Bytes.toBytes(list[i]);<a name="line.421"></a>
+<span class="sourceLineNo">422</span>      }<a name="line.422"></a>
+<span class="sourceLineNo">423</span>    } else {<a name="line.423"></a>
+<span class="sourceLineNo">424</span>      families = HFileTestUtil.DEFAULT_COLUMN_FAMILIES;<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>    isVerbose = cmd.hasOption(OPT_VERBOSE);<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    isWrite = cmd.hasOption(OPT_WRITE);<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    isRead = cmd.hasOption(OPT_READ);<a name="line.429"></a>
+<span class="sourceLineNo">430</span>    isUpdate = cmd.hasOption(OPT_UPDATE);<a name="line.430"></a>
+<span class="sourceLineNo">431</span>    isInitOnly = cmd.hasOption(OPT_INIT_ONLY);<a name="line.431"></a>
+<span class="sourceLineNo">432</span>    deferredLogFlush = cmd.hasOption(OPT_DEFERRED_LOG_FLUSH);<a name="line.432"></a>
+<span class="sourceLineNo">433</span><a name="line.433"></a>
+<span class="sourceLineNo">434</span>    if (!isInitOnly) {<a name="line.434"></a>
+<span class="sourceLineNo">435</span>      startKey = parseLong(cmd.getOptionValue(OPT_START_KEY,<a name="line.435"></a>
+<span class="sourceLineNo">436</span>          String.valueOf(DEFAULT_START_KEY)), 0, Long.MAX_VALUE);<a name="line.436"></a>
+<span class="sourceLineNo">437</span>      long numKeys = parseLong(cmd.getOptionValue(OPT_NUM_KEYS), 1,<a name="line.437"></a>
+<span class="sourceLineNo">438</span>          Long.MAX_VALUE - startKey);<a name="line.438"></a>
+<span class="sourceLineNo">439</span>      endKey = startKey + numKeys;<a name="line.439"></a>
+<span class="sourceLineNo">440</span>      isSkipInit = cmd.hasOption(OPT_SKIP_INIT);<a name="line.440"></a>
+<span class="sourceLineNo">441</span>      System.out.println("Key range: [" + startKey + ".." + (endKey - 1) + "]");<a name="line.441"></a>
+<span class="sourceLineNo">442</span>    }<a name="line.442"></a>
 <span class="sourceLineNo">443</span><a name="line.443"></a>
-<span class="sourceLineNo">444</span>    if (isWrite) {<a name="line.444"></a>
-<span class="sourceLineNo">445</span>      String[] writeOpts = splitColonSeparated(OPT_WRITE, 2, 3);<a name="line.445"></a>
-<span class="sourceLineNo">446</span><a name="line.446"></a>
-<span class="sourceLineNo">447</span>      int colIndex = 0;<a name="line.447"></a>
-<span class="sourceLineNo">448</span>      minColsPerKey = 1;<a name="line.448"></a>
-<span class="sourceLineNo">449</span>      maxColsPerKey = 2 * Integer.parseInt(writeOpts[colIndex++]);<a name="line.449"></a>
-<span class="sourceLineNo">450</span>      int avgColDataSize =<a name="line.450"></a>
-<span class="sourceLineNo">451</span>          parseInt(writeOpts[colIndex++], 1, Integer.MAX_VALUE);<a name="line.451"></a>
-<span class="sourceLineNo">452</span>      minColDataSize = avgColDataSize / 2;<a name="line.452"></a>
-<span class="sourceLineNo">453</span>      maxColDataSize = avgColDataSize * 3 / 2;<a name="line.453"></a>
-<span class="sourceLineNo">454</span><a name="line.454"></a>
-<span class="sourceLineNo">455</span>      if (colIndex &lt; writeOpts.length) {<a name="line.455"></a>
-<span class="sourceLineNo">456</span>        numWriterThreads = getNumThreads(writeOpts[colIndex++]);<a name="line.456"></a>
-<span class="sourceLineNo">457</span>      }<a name="line.457"></a>
-<span class="sourceLineNo">458</span><a name="line.458"></a>
-<span class="sourceLineNo">459</span>      isMultiPut = cmd.hasOption(OPT_MULTIPUT);<a name="line.459"></a>
+<span class="sourceLineNo">444</span>    parseColumnFamilyOptions(cmd);<a name="line.444"></a>
+<span class="sourceLineNo">445</span><a name="line.445"></a>
+<span class="sourceLineNo">446</span>    if (isWrite) {<a name="line.446"></a>
+<span class="sourceLineNo">447</span>      String[] writeOpts = splitColonSeparated(OPT_WRITE, 2, 3);<a name="line.447"></a>
+<span class="sourceLineNo">448</span><a name="line.448"></a>
+<span class="sourceLineNo">449</span>      int colIndex = 0;<a name="line.449"></a>
+<span class="sourceLineNo">450</span>      minColsPerKey = 1;<a name="line.450"></a>
+<span class="sourceLineNo">451</span>      maxColsPerKey = 2 * Integer.parseInt(writeOpts[colIndex++]);<a name="line.451"></a>
+<span class="sourceLineNo">452</span>      int avgColDataSize =<a name="line.452"></a>
+<span class="sourceLineNo">453</span>          parseInt(writeOpts[colIndex++], 1, Integer.MAX_VALUE);<a name="line.453"></a>
+<span class="sourceLineNo">454</span>      minColDataSize = avgColDataSize / 2;<a name="line.454"></a>
+<span class="sourceLineNo">455</span>      maxColDataSize = avgColDataSize * 3 / 2;<a name="line.455"></a>
+<span class="sourceLineNo">456</span><a name="line.456"></a>
+<span class="sourceLineNo">457</span>      if (colIndex &lt; writeOpts.length) {<a name="line.457"></a>
+<span class="sourceLineNo">458</span>        numWriterThreads = getNumThreads(writeOpts[colIndex++]);<a name="line.458"></a>
+<span class="sourceLineNo">459</span>      }<a name="line.459"></a>
 <span class="sourceLineNo">460</span><a name="line.460"></a>
-<span class="sourceLineNo">461</span>      mobThreshold = -1;<a name="line.461"></a>
-<span class="sourceLineNo">462</span>      if (cmd.hasOption(OPT_MOB_THRESHOLD)) {<a name="line.462"></a>
-<span class="sourceLineNo">463</span>        mobThreshold = Integer.parseInt(cmd.getOptionValue(OPT_MOB_THRESHOLD));<a name="line.463"></a>
-<span class="sourceLineNo">464</span>      }<a name="line.464"></a>
-<span class="sourceLineNo">465</span><a name="line.465"></a>
-<span class="sourceLineNo">466</span>      System.out.println("Multi-puts: " + isMultiPut);<a name="line.466"></a>
-<span class="sourceLineNo">467</span>      System.out.println("Columns per key: " + minColsPerKey + ".."<a name="line.467"></a>
-<span class="sourceLineNo">468</span>          + maxColsPerKey);<a name="line.468"></a>
-<span class="sourceLineNo">469</span>      System.out.println("Data size per column: " + minColDataSize + ".."<a name="line.469"></a>
-<span class="sourceLineNo">470</span>          + maxColDataSize);<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>    if (isUpdate) {<a name="line.473"></a>
-<span class="sourceLineNo">474</span>      String[] mutateOpts = splitColonSeparated(OPT_UPDATE, 1, 3);<a name="line.474"></a>
-<span class="sourceLineNo">475</span>      int colIndex = 0;<a name="line.475"></a>
-<span class="sourceLineNo">476</span>      updatePercent = parseInt(mutateOpts[colIndex++], 0, 100);<a name="line.476"></a>
-<span class="sourceLineNo">477</span>      if (colIndex &lt; mutateOpts.length) {<a name="line.477"></a>
-<span class="sourceLineNo">478</span>        numUpdaterThreads = getNumThreads(mutateOpts[colIndex++]);<a name="line.478"></a>
-<span class="sourceLineNo">479</span>      }<a name="line.479"></a>
-<span class="sourceLineNo">480</span>      if (colIndex &lt; mutateOpts.length) {<a name="line.480"></a>
-<span class="sourceLineNo">481</span>        ignoreConflicts = parseInt(mutateOpts[colIndex++], 0, 1) == 1;<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>      isBatchUpdate = cmd.hasOption(OPT_BATCHUPDATE);<a name="line.484"></a>
+<span class="sourceLineNo">461</span>      isMultiPut = cmd.hasOption(OPT_MULTIPUT);<a name="line.461"></a>
+<span class="sourceLineNo">462</span><a name="line.462"></a>
+<span class="sourceLineNo">463</span>      mobThreshold = -1;<a name="line.463"></a>
+<span class="sourceLineNo">464</span>      if (cmd.hasOption(OPT_MOB_THRESHOLD)) {<a name="line.464"></a>
+<span class="sourceLineNo">465</span>        mobThreshold = Integer.parseInt(cmd.getOptionValue(OPT_MOB_THRESHOLD));<a name="line.465"></a>
+<span class="sourceLineNo">466</span>      }<a name="line.466"></a>
+<span class="sourceLineNo">467</span><a name="line.467"></a>
+<span class="sourceLineNo">468</span>      System.out.println("Multi-puts: " + isMultiPut);<a name="line.468"></a>
+<span class="sourceLineNo">469</span>      System.out.println("Columns per key: " + minColsPerKey + ".."<a name="line.469"></a>
+<span class="sourceLineNo">470</span>          + maxColsPerKey);<a name="line.470"></a>
+<span class="sourceLineNo">471</span>      System.out.println("Data size per column: " + minColDataSize + ".."<a name="line.471"></a>
+<span class="sourceLineNo">472</span>          + maxColDataSize);<a name="line.472"></a>
+<span class="sourceLineNo">473</span>    }<a name="line.473"></a>
+<span class="sourceLineNo">474</span><a name="line.474"></a>
+<span class="sourceLineNo">475</span>    if (isUpdate) {<a name="line.475"></a>
+<span class="sourceLineNo">476</span>      String[] mutateOpts = splitColonSeparated(OPT_UPDATE, 1, 3);<a name="line.476"></a>
+<span class="sourceLineNo">477</span>      int colIndex = 0;<a name="line.477"></a>
+<span class="sourceLineNo">478</span>      updatePercent = parseInt(mutateOpts[colIndex++], 0, 100);<a name="line.478"></a>
+<span class="sourceLineNo">479</span>      if (colIndex &lt; mutateOpts.length) {<a name="line.479"></a>
+<span class="sourceLineNo">480</span>        numUpdaterThreads = getNumThreads(mutateOpts[colIndex++]);<a name="line.480"></a>
+<span class="sourceLineNo">481</span>      }<a name="line.481"></a>
+<span class="sourceLineNo">482</span>      if (colIndex &lt; mutateOpts.length) {<a name="line.482"></a>
+<span class="sourceLineNo">483</span>        ignoreConflicts = parseInt(mutateOpts[colIndex++], 0, 1) == 1;<a name="line.483"></a>
+<span class="sourceLineNo">484</span>      }<a name="line.484"></a>
 <span class="sourceLineNo">485</span><a name="line.485"></a>
-<span class="sourceLineNo">486</span>      System.out.println("Batch updates: " + isBatchUpdate);<a name="line.486"></a>
-<span class="sourceLineNo">487</span>      System.out.println("Percent of keys to update: " + updatePercent);<a name="line.487"></a>
-<span class="sourceLineNo">488</span>      System.out.println("Updater threads: " + numUpdaterThreads);<a name="line.488"></a>
-<span class="sourceLineNo">489</span>      System.out.println("Ignore nonce conflicts: " + ignoreConflicts);<a name="line.489"></a>
-<span class="sourceLineNo">490</span>    }<a name="line.490"></a>
-<span class="sourceLineNo">491</span><a name="line.491"></a>
-<span class="sourceLineNo">492</span>    if (isRead) {<a name="line.492"></a>
-<span class="sourceLineNo">493</span>      String[] readOpts = splitColonSeparated(OPT_READ, 1, 2);<a name="line.493"></a>
-<span class="sourceLineNo">494</span>      int colIndex = 0;<a name="line.494"></a>
-<span class="sourceLineNo">495</span>      verifyPercent = parseInt(readOpts[colIndex++], 0, 100);<a name="line.495"></a>
-<span class="sourceLineNo">496</span>      if (colIndex &lt; readOpts.length) {<a name="line.496"></a>
-<span class="sourceLineNo">497</span>        numReaderThreads = getNumThreads(readOpts[colIndex++]);<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>      if (cmd.hasOption(OPT_MAX_READ_ERRORS)) {<a name="line.500"></a>
-<span class="sourceLineNo">501</span>        maxReadErrors = parseInt(cmd.getOptionValue(OPT_MAX_READ_ERRORS),<a name="line.501"></a>
-<span class="sourceLineNo">502</span>            0, Integer.MAX_VALUE);<a name="line.502"></a>
-<span class="sourceLineNo">503</span>      }<a name="line.503"></a>
-<span class="sourceLineNo">504</span><a name="line.504"></a>
-<span class="sourceLineNo">505</span>      if (cmd.hasOption(OPT_KEY_WINDOW)) {<a name="line.505"></a>
-<span class="sourceLineNo">506</span>        keyWindow = parseInt(cmd.getOptionValue(OPT_KEY_WINDOW),<a name="line.506"></a>
-<span class="sourceLineNo">507</span>            0, Integer.MAX_VALUE);<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>      if (cmd.hasOption(OPT_MULTIGET)) {<a name="line.510"></a>
-<span class="sourceLineNo">511</span>        multiGetBatchSize = parseInt(cmd.getOptionValue(OPT_MULTIGET),<a name="line.511"></a>
-<span class="sourceLineNo">512</span>            0, Integer.MAX_VALUE);<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>      System.out.println("Multi-gets (value of 1 means no multigets): " + multiGetBatchSize);<a name="line.515"></a>
-<span class="sourceLineNo">516</span>      System.out.println("Percent of keys to verify: " + verifyPercent);<a name="line.516"></a>
-<span class="sourceLineNo">517</span>      System.out.println("Reader threads: " + numReaderThreads);<a name="line.517"></a>
-<span class="sourceLineNo">518</span>    }<a name="line.518"></a>
-<span class="sourceLineNo">519</span><a name="line.519"></a>
-<span class="sourceLineNo">520</span>    numTables = 1;<a name="line.520"></a>
-<span class="sourceLineNo">521</span>    if (cmd.hasOption(NUM_TABLES)) {<a name="line.521"></a>
-<span class="sourceLineNo">522</span>      numTables = parseInt(cmd.getOptionValue(NUM_TABLES), 1, Short.MAX_VALUE);<a name="line.522"></a>
-<span class="sourceLineNo">523</span>    }<a name="line.523"></a>
-<span class="sourceLineNo">524</span><a name="line.524"></a>
-<span class="sourceLineNo">525</span>    numRegionsPerServer = DEFAULT_NUM_REGIONS_PER_SERVER;<a name="line.525"></a>
-<span class="sourceLineNo">526</span>    if (cmd.hasOption(OPT_NUM_REGIONS_PER_SERVER)) {<a name="line.526"></a>
-<span class="sourceLineNo">527</span>      numRegionsPerServer = Integer.parseInt(cmd.getOptionValue(OPT_NUM_REGIONS_PER_SERVER));<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>    regionReplication = 1;<a name="line.530"></a>
-<span class="sourceLineNo">531</span>    if (cmd.hasOption(OPT_REGION_REPLICATION)) {<a name="line.531"></a>
-<span class="sourceLineNo">532</span>      regionReplication = Integer.parseInt(cmd.getOptionValue(OPT_REGION_REPLICATION));<a name="line.532"></a>
-<span class="sourceLineNo">533</span>    }<a name="line.533"></a>
-<span class="sourceLineNo">534</span><a name="line.534"></a>
-<span class="sourceLineNo">535</span>    regionReplicaId = -1;<a name="line.535"></a>
-<span class="sourceLineNo">536</span>    if (cmd.hasOption(OPT_REGION_REPLICA_ID)) {<a name="line.536"></a>
-<span class="sourceLineNo">537</span>      regionReplicaId = Integer.parseInt(cmd.getOptionValue(OPT_REGION_REPLICA_ID));<a name="line.537"></a>
-<span class="sourceLineNo">538</span>    }<a name="line.538"></a>
-<span class="sourceLineNo">539</span>  }<a name="line.539"></a>
-<span class="sourceLineNo">540</span><a name="line.540"></a>
-<span class="sourceLineNo">541</span>  private void parseColumnFamilyOptions(CommandLine cmd) {<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    String dataBlockEncodingStr = cmd.getOptionValue(HFileTestUtil.OPT_DATA_BLOCK_ENCODING);<a name="line.542"></a>
-<span class="sourceLineNo">543</span>    dataBlockEncodingAlgo = dataBlockEncodingStr == null ? null :<a name="line.543"></a>
-<span class="sourceLineNo">544</span>        DataBlockEncoding.valueOf(dataBlockEncodingStr);<a name="line.544"></a>
-<span class="sourceLineNo">545</span><a name="line.545"></a>
-<span class="sourceLineNo">546</span>    String compressStr = cmd.getOptionValue(OPT_COMPRESSION);<a name="line.546"></a>
-<span class="sourceLineNo">547</span>    compressAlgo = compressStr == null ? Compression.Algorithm.NONE :<a name="line.547"></a>
-<span class="sourceLineNo">548</span>        Compression.Algorithm.valueOf(compressStr);<a name="line.548"></a>
-<span class="sourceLineNo">549</span><a name="line.549"></a>
-<span class="sourceLineNo">550</span>    String bloomStr = cmd.getOptionValue(OPT_BLOOM);<a name="line.550"></a>
-<span class="sourceLineNo">551</span>    bloomType = bloomStr == null ? BloomType.ROW :<a name="line.551"></a>
-<span class="sourceLineNo">552</span>        BloomType.valueOf(bloomStr);<a name="line.552"></a>
-<span class="sourceLineNo">553</span><a name="line.553"></a>
-<span class="sourceLineNo">554</span>    inMemoryCF = cmd.hasOption(OPT_INMEMORY);<a name="line.554"></a>
-<span class="sourceLineNo">555</span>    if (cmd.hasOption(OPT_ENCRYPTION)) {<a name="line.555"></a>
-<span class="sourceLineNo">556</span>      cipher = Encryption.getCipher(conf, cmd.getOptionValue(OPT_ENCRYPTION));<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>  }<a name="line.559"></a>
-<span class="sourceLineNo">560</span><a name="line.560"></a>
-<span class="sourceLineNo">561</span>  public void initTestTable() throws IOException {<a name="line.561"></a>
-<span class="sourceLineNo">562</span>    Durability durability = Durability.USE_DEFAULT;<a name="line.562"></a>
-<span class="sourceLineNo">563</span>    if (deferredLogFlush) {<a name="line.563"></a>
-<span class="sourceLineNo">564</span>      durability = Durability.ASYNC_WAL;<a name="line.564"></a>
-<span class="sourceLineNo">565</span>    }<a name="line.565"></a>
-<span class="sourceLineNo">566</span><a name="line.566"></a>
-<span class="sourceLineNo">567</span>    HBaseTestingUtility.createPreSplitLoadTestTable(conf, tableName,<a name="line.567"></a>
-<span class="sourceLineNo">568</span>      getColumnFamilies(), compressAlgo, dataBlockEncodingAlgo, numRegionsPerServer,<a name="line.568"></a>
-<span class="sourceLineNo">569</span>        regionReplication, durability);<a name="line.569"></a>
-<span class="sourceLineNo">570</span>    applyColumnFamilyOptions(tableName, getColumnFamilies());<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>  @Override<a name="line.573"></a>
-<span class="sourceLineNo">574</span>  protected int doWork() throws IOException {<a name="line.574"></a>
-<span class="sourceLineNo">575</span>    if (!isVerbose) {<a name="line.575"></a>
-<span class="sourceLineNo">576</span>        LogManager.getLogger(ZooKeeper.class.getName()).setLevel(Level.WARN);<a name="line.576"></a>
-<span class="sourceLineNo">577</span>    }<a name="line.577"></a>
-<span class="sourceLineNo">578</span>    if (numTables &gt; 1) {<a name="line.578"></a>
-<span class="sourceLineNo">579</span>      return parallelLoadTables();<a name="line.579"></a>
-<span class="sourceLineNo">580</span>    } else {<a name="line.580"></a>
-<span class="sourceLineNo">581</span>      return loadTable();<a name="line.581"></a>
-<span class="sourceLineNo">582</span>    }<a name="line.582"></a>
-<span class="sourceLineNo">583</span>  }<a name="line.583"></a>
+<span class="sourceLineNo">486</span>      isBatchUpdate = cmd.hasOption(OPT_BATCHUPDATE);<a name="line.486"></a>
+<span class="sourceLineNo">487</span><a name="line.487"></a>
+<span class="sourceLineNo">488</span>      System.out.println("Batch updates: " + isBatchUpdate);<a name="line.488"></a>
+<span class="sourceLineNo">489</span>      System.out.println("Percent of keys to update: " + updatePercent);<a name="line.489"></a>
+<span class="sourceLineNo">490</span>      System.out.println("Updater threads: " + numUpdaterThreads);<a name="line.490"></a>
+<span class="sourceLineNo">491</span>      System.out.println("Ignore nonce conflicts: " + ignoreConflicts);<a name="line.491"></a>
+<span class="sourceLineNo">492</span>    }<a name="line.492"></a>
+<span class="sourceLineNo">493</span><a name="line.493"></a>
+<span class="sourceLineNo">494</span>    if (isRead) {<a name="line.494"></a>
+<span class="sourceLineNo">495</span>      String[] readOpts = splitColonSeparated(OPT_READ, 1, 2);<a name="line.495"></a>
+<span class="sourceLineNo">496</span>      int colIndex = 0;<a name="line.496"></a>
+<span class="sourceLineNo">497</span>      verifyPercent = parseInt(readOpts[colIndex++], 0, 100);<a name="line.497"></a>
+<span class="sourceLineNo">498</span>      if (colIndex &lt; readOpts.length) {<a name="line.498"></a>
+<span class="sourceLineNo">499</span>        numReaderThreads = getNumThreads(readOpts[colIndex++]);<a name="line.499"></a>
+<span class="sourceLineNo">500</span>      }<a name="line.500"></a>
+<span class="sourceLineNo">501</span><a name="line.501"></a>
+<span class="sourceLineNo">502</span>      if (cmd.hasOption(OPT_MAX_READ_ERRORS)) {<a name="line.502"></a>
+<span class="sourceLineNo">503</span>        maxReadErrors = parseInt(cmd.getOptionValue(OPT_MAX_READ_ERRORS),<a name="line.503"></a>
+<span class="sourceLineNo">504</span>            0, Integer.MAX_VALUE);<a name="line.504"></a>
+<span class="sourceLineNo">505</span>      }<a name="line.505"></a>
+<span class="sourceLineNo">506</span><a name="line.506"></a>
+<span class="sourceLineNo">507</span>      if (cmd.hasOption(OPT_KEY_WINDOW)) {<a name="line.507"></a>
+<span class="sourceLineNo">508</span>        keyWindow = parseInt(cmd.getOptionValue(OPT_KEY_WINDOW),<a name="line.508"></a>
+<span class="sourceLineNo">509</span>            0, Integer.MAX_VALUE);<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>      if (cmd.hasOption(OPT_MULTIGET)) {<a name="line.512"></a>
+<span class="sourceLineNo">513</span>        multiGetBatchSize = parseInt(cmd.getOptionValue(OPT_MULTIGET),<a name="line.513"></a>
+<span class="sourceLineNo">514</span>            0, Integer.MAX_VALUE);<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>      System.out.println("Multi-gets (value of 1 means no multigets): " + multiGetBatchSize);<a name="line.517"></a>
+<span class="sourceLineNo">518</span>      System.out.println("Percent of keys to verify: " + verifyPercent);<a name="line.518"></a>
+<span class="sourceLineNo">519</span>      System.out.println("Reader threads: " + numReaderThreads);<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>    numTables = 1;<a name="line.522"></a>
+<span class="sourceLineNo">523</span>    if (cmd.hasOption(NUM_TABLES)) {<a name="line.523"></a>
+<span class="sourceLineNo">524</span>      numTables = parseInt(cmd.getOptionValue(NUM_TABLES), 1, Short.MAX_VALUE);<a name="line.524"></a>
+<span class="sourceLineNo">525</span>    }<a name="line.525"></a>
+<span class="sourceLineNo">526</span><a name="line.526"></a>
+<span class="sourceLineNo">527</span>    numRegionsPerServer = DEFAULT_NUM_REGIONS_PER_

<TRUNCATED>

[22/43] hbase-site git commit: Published site at 7ab77518a2569e2416a50020393aa386e7734501.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.html
index e5feb84..0cf012a 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.html
@@ -72,3861 +72,3875 @@
 <span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.ClusterMetrics;<a name="line.64"></a>
 <span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.ClusterMetrics.Option;<a name="line.65"></a>
 <span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.ClusterMetricsBuilder;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.HBaseIOException;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.HBaseInterfaceAudience;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.HConstants;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.InvalidFamilyOperationException;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.MasterNotRunningException;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.MetaTableAccessor;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.PleaseHoldException;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.ReplicationPeerNotFoundException;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.ServerName;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.TableDescriptors;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.TableName;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.TableNotDisabledException;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.TableNotFoundException;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.UnknownRegionException;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.client.MasterSwitchType;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.client.RegionInfoBuilder;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.client.Result;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.client.TableState;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.coprocessor.CoprocessorHost;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.exceptions.MergeRegionException;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.executor.ExecutorType;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.favored.FavoredNodesManager;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.favored.FavoredNodesPromoter;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.http.InfoServer;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcUtils;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.ipc.ServerNotRunningYetException;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.log.HBaseMarkers;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.master.MasterRpcServices.BalanceSwitchMode;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.master.assignment.AssignProcedure;<a name="line.104"></a>
-<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.master.assignment.AssignmentManager;<a name="line.105"></a>
-<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.master.assignment.MergeTableRegionsProcedure;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.master.assignment.MoveRegionProcedure;<a name="line.107"></a>
-<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.master.assignment.RegionStateNode;<a name="line.108"></a>
-<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.master.assignment.RegionStates;<a name="line.109"></a>
-<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.master.assignment.TransitRegionStateProcedure;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.master.assignment.UnassignProcedure;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.master.balancer.BalancerChore;<a name="line.112"></a>
-<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.master.balancer.BaseLoadBalancer;<a name="line.113"></a>
-<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.master.balancer.ClusterStatusChore;<a name="line.114"></a>
-<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.master.balancer.LoadBalancerFactory;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.master.cleaner.CleanerChore;<a name="line.116"></a>
-<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.master.cleaner.HFileCleaner;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.master.cleaner.LogCleaner;<a name="line.118"></a>
-<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.master.cleaner.ReplicationBarrierCleaner;<a name="line.119"></a>
-<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.master.locking.LockManager;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.master.normalizer.NormalizationPlan;<a name="line.121"></a>
-<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.master.normalizer.NormalizationPlan.PlanType;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizer;<a name="line.123"></a>
-<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizerChore;<a name="line.124"></a>
-<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizerFactory;<a name="line.125"></a>
-<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.master.procedure.CreateTableProcedure;<a name="line.126"></a>
-<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.master.procedure.DeleteNamespaceProcedure;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.master.procedure.DeleteTableProcedure;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.master.procedure.DisableTableProcedure;<a name="line.129"></a>
-<span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.master.procedure.EnableTableProcedure;<a name="line.130"></a>
-<span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.master.procedure.InitMetaProcedure;<a name="line.131"></a>
-<span class="sourceLineNo">132</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureConstants;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv;<a name="line.133"></a>
-<span class="sourceLineNo">134</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureScheduler;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureUtil;<a name="line.135"></a>
-<span class="sourceLineNo">136</span>import org.apache.hadoop.hbase.master.procedure.ModifyTableProcedure;<a name="line.136"></a>
-<span class="sourceLineNo">137</span>import org.apache.hadoop.hbase.master.procedure.ProcedurePrepareLatch;<a name="line.137"></a>
-<span class="sourceLineNo">138</span>import org.apache.hadoop.hbase.master.procedure.RecoverMetaProcedure;<a name="line.138"></a>
-<span class="sourceLineNo">139</span>import org.apache.hadoop.hbase.master.procedure.ServerCrashProcedure;<a name="line.139"></a>
-<span class="sourceLineNo">140</span>import org.apache.hadoop.hbase.master.procedure.TruncateTableProcedure;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.master.replication.AbstractPeerProcedure;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.master.replication.AddPeerProcedure;<a name="line.142"></a>
-<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.master.replication.DisablePeerProcedure;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.master.replication.EnablePeerProcedure;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.master.replication.RemovePeerProcedure;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.master.replication.ReplicationPeerManager;<a name="line.146"></a>
-<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.master.replication.SyncReplicationReplayWALManager;<a name="line.147"></a>
-<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.master.replication.TransitPeerSyncReplicationStateProcedure;<a name="line.148"></a>
-<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.master.replication.UpdatePeerConfigProcedure;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.master.snapshot.SnapshotManager;<a name="line.150"></a>
-<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.master.zksyncer.MasterAddressSyncer;<a name="line.151"></a>
-<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.master.zksyncer.MetaLocationSyncer;<a name="line.152"></a>
-<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.mob.MobConstants;<a name="line.153"></a>
-<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.monitoring.MemoryBoundedLogMessageBuffer;<a name="line.154"></a>
-<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.155"></a>
-<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.156"></a>
-<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.procedure.MasterProcedureManagerHost;<a name="line.157"></a>
-<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.procedure.flush.MasterFlushTableProcedureManager;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.procedure2.LockedResource;<a name="line.159"></a>
-<span class="sourceLineNo">160</span>import org.apache.hadoop.hbase.procedure2.Procedure;<a name="line.160"></a>
-<span class="sourceLineNo">161</span>import org.apache.hadoop.hbase.procedure2.ProcedureEvent;<a name="line.161"></a>
-<span class="sourceLineNo">162</span>import org.apache.hadoop.hbase.procedure2.ProcedureExecutor;<a name="line.162"></a>
-<span class="sourceLineNo">163</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureDispatcher.RemoteProcedure;<a name="line.163"></a>
-<span class="sourceLineNo">164</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureException;<a name="line.164"></a>
-<span class="sourceLineNo">165</span>import org.apache.hadoop.hbase.procedure2.store.wal.WALProcedureStore;<a name="line.165"></a>
-<span class="sourceLineNo">166</span>import org.apache.hadoop.hbase.quotas.MasterQuotaManager;<a name="line.166"></a>
-<span class="sourceLineNo">167</span>import org.apache.hadoop.hbase.quotas.MasterQuotasObserver;<a name="line.167"></a>
-<span class="sourceLineNo">168</span>import org.apache.hadoop.hbase.quotas.QuotaObserverChore;<a name="line.168"></a>
-<span class="sourceLineNo">169</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.169"></a>
-<span class="sourceLineNo">170</span>import org.apache.hadoop.hbase.quotas.SnapshotQuotaObserverChore;<a name="line.170"></a>
-<span class="sourceLineNo">171</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifier;<a name="line.171"></a>
-<span class="sourceLineNo">172</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifierFactory;<a name="line.172"></a>
-<span class="sourceLineNo">173</span>import org.apache.hadoop.hbase.regionserver.DefaultStoreEngine;<a name="line.173"></a>
-<span class="sourceLineNo">174</span>import org.apache.hadoop.hbase.regionserver.HRegionServer;<a name="line.174"></a>
-<span class="sourceLineNo">175</span>import org.apache.hadoop.hbase.regionserver.HStore;<a name="line.175"></a>
-<span class="sourceLineNo">176</span>import org.apache.hadoop.hbase.regionserver.RSRpcServices;<a name="line.176"></a>
-<span class="sourceLineNo">177</span>import org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost;<a name="line.177"></a>
-<span class="sourceLineNo">178</span>import org.apache.hadoop.hbase.regionserver.RegionSplitPolicy;<a name="line.178"></a>
-<span class="sourceLineNo">179</span>import org.apache.hadoop.hbase.regionserver.compactions.ExploringCompactionPolicy;<a name="line.179"></a>
-<span class="sourceLineNo">180</span>import org.apache.hadoop.hbase.regionserver.compactions.FIFOCompactionPolicy;<a name="line.180"></a>
-<span class="sourceLineNo">181</span>import org.apache.hadoop.hbase.replication.ReplicationException;<a name="line.181"></a>
-<span class="sourceLineNo">182</span>import org.apache.hadoop.hbase.replication.ReplicationLoadSource;<a name="line.182"></a>
-<span class="sourceLineNo">183</span>import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;<a name="line.183"></a>
-<span class="sourceLineNo">184</span>import org.apache.hadoop.hbase.replication.ReplicationPeerDescription;<a name="line.184"></a>
-<span class="sourceLineNo">185</span>import org.apache.hadoop.hbase.replication.ReplicationUtils;<a name="line.185"></a>
-<span class="sourceLineNo">186</span>import org.apache.hadoop.hbase.replication.SyncReplicationState;<a name="line.186"></a>
-<span class="sourceLineNo">187</span>import org.apache.hadoop.hbase.replication.master.ReplicationHFileCleaner;<a name="line.187"></a>
-<span class="sourceLineNo">188</span>import org.apache.hadoop.hbase.replication.master.ReplicationLogCleaner;<a name="line.188"></a>
-<span class="sourceLineNo">189</span>import org.apache.hadoop.hbase.replication.master.ReplicationPeerConfigUpgrader;<a name="line.189"></a>
-<span class="sourceLineNo">190</span>import org.apache.hadoop.hbase.security.AccessDeniedException;<a name="line.190"></a>
-<span class="sourceLineNo">191</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.191"></a>
-<span class="sourceLineNo">192</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.192"></a>
-<span class="sourceLineNo">193</span>import org.apache.hadoop.hbase.util.Addressing;<a name="line.193"></a>
-<span class="sourceLineNo">194</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.194"></a>
-<span class="sourceLineNo">195</span>import org.apache.hadoop.hbase.util.CompressionTest;<a name="line.195"></a>
-<span class="sourceLineNo">196</span>import org.apache.hadoop.hbase.util.EncryptionTest;<a name="line.196"></a>
-<span class="sourceLineNo">197</span>import org.apache.hadoop.hbase.util.HBaseFsck;<a name="line.197"></a>
-<span class="sourceLineNo">198</span>import org.apache.hadoop.hbase.util.HFileArchiveUtil;<a name="line.198"></a>
-<span class="sourceLineNo">199</span>import org.apache.hadoop.hbase.util.HasThread;<a name="line.199"></a>
-<span class="sourceLineNo">200</span>import org.apache.hadoop.hbase.util.IdLock;<a name="line.200"></a>
-<span class="sourceLineNo">201</span>import org.apache.hadoop.hbase.util.ModifyRegionUtils;<a name="line.201"></a>
-<span class="sourceLineNo">202</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.202"></a>
-<span class="sourceLineNo">203</span>import org.apache.hadoop.hbase.util.RetryCounter;<a name="line.203"></a>
-<span class="sourceLineNo">204</span>import org.apache.hadoop.hbase.util.RetryCounterFactory;<a name="line.204"></a>
-<span class="sourceLineNo">205</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.205"></a>
-<span class="sourceLineNo">206</span>import org.apache.hadoop.hbase.util.VersionInfo;<a name="line.206"></a>
-<span class="sourceLineNo">207</span>import org.apache.hadoop.hbase.zookeeper.LoadBalancerTracker;<a name="line.207"></a>
-<span class="sourceLineNo">208</span>import org.apache.hadoop.hbase.zookeeper.MasterAddressTracker;<a name="line.208"></a>
-<span class="sourceLineNo">209</span>import org.apache.hadoop.hbase.zookeeper.MasterMaintenanceModeTracker;<a name="line.209"></a>
-<span class="sourceLineNo">210</span>import org.apache.hadoop.hbase.zookeeper.RegionNormalizerTracker;<a name="line.210"></a>
-<span class="sourceLineNo">211</span>import org.apache.hadoop.hbase.zookeeper.ZKClusterId;<a name="line.211"></a>
-<span class="sourceLineNo">212</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.212"></a>
-<span class="sourceLineNo">213</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.213"></a>
-<span class="sourceLineNo">214</span>import org.apache.hadoop.hbase.zookeeper.ZNodePaths;<a name="line.214"></a>
-<span class="sourceLineNo">215</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.215"></a>
-<span class="sourceLineNo">216</span>import org.apache.zookeeper.KeeperException;<a name="line.216"></a>
-<span class="sourceLineNo">217</span>import org.eclipse.jetty.server.Server;<a name="line.217"></a>
-<span class="sourceLineNo">218</span>import org.eclipse.jetty.server.ServerConnector;<a name="line.218"></a>
-<span class="sourceLineNo">219</span>import org.eclipse.jetty.servlet.ServletHolder;<a name="line.219"></a>
-<span class="sourceLineNo">220</span>import org.eclipse.jetty.webapp.WebAppContext;<a name="line.220"></a>
-<span class="sourceLineNo">221</span>import org.slf4j.Logger;<a name="line.221"></a>
-<span class="sourceLineNo">222</span>import org.slf4j.LoggerFactory;<a name="line.222"></a>
-<span class="sourceLineNo">223</span><a name="line.223"></a>
-<span class="sourceLineNo">224</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.224"></a>
-<span class="sourceLineNo">225</span>import org.apache.hbase.thirdparty.com.google.common.collect.ImmutableSet;<a name="line.225"></a>
-<span class="sourceLineNo">226</span>import org.apache.hbase.thirdparty.com.google.common.collect.Lists;<a name="line.226"></a>
-<span class="sourceLineNo">227</span>import org.apache.hbase.thirdparty.com.google.common.collect.Maps;<a name="line.227"></a>
-<span class="sourceLineNo">228</span><a name="line.228"></a>
-<span class="sourceLineNo">229</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.229"></a>
-<span class="sourceLineNo">230</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoResponse.CompactionState;<a name="line.230"></a>
-<span class="sourceLineNo">231</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.Quotas;<a name="line.231"></a>
-<span class="sourceLineNo">232</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.SpaceViolationPolicy;<a name="line.232"></a>
-<span class="sourceLineNo">233</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;<a name="line.233"></a>
-<span class="sourceLineNo">234</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos;<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> * HMaster is the "master server" for HBase. An HBase cluster has one active<a name="line.237"></a>
-<span class="sourceLineNo">238</span> * master.  If many masters are started, all compete.  Whichever wins goes on to<a name="line.238"></a>
-<span class="sourceLineNo">239</span> * run the cluster.  All others park themselves in their constructor until<a name="line.239"></a>
-<span class="sourceLineNo">240</span> * master or cluster shutdown or until the active master loses its lease in<a name="line.240"></a>
-<span class="sourceLineNo">241</span> * zookeeper.  Thereafter, all running master jostle to take over master role.<a name="line.241"></a>
-<span class="sourceLineNo">242</span> *<a name="line.242"></a>
-<span class="sourceLineNo">243</span> * &lt;p&gt;The Master can be asked shutdown the cluster. See {@link #shutdown()}.  In<a name="line.243"></a>
-<span class="sourceLineNo">244</span> * this case it will tell all regionservers to go down and then wait on them<a name="line.244"></a>
-<span class="sourceLineNo">245</span> * all reporting in that they are down.  This master will then shut itself down.<a name="line.245"></a>
-<span class="sourceLineNo">246</span> *<a name="line.246"></a>
-<span class="sourceLineNo">247</span> * &lt;p&gt;You can also shutdown just this master.  Call {@link #stopMaster()}.<a name="line.247"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.CompoundConfiguration;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.HBaseIOException;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.HBaseInterfaceAudience;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.HConstants;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.InvalidFamilyOperationException;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.MasterNotRunningException;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.MetaTableAccessor;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.PleaseHoldException;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.ReplicationPeerNotFoundException;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.ServerName;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.TableDescriptors;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.TableName;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.TableNotDisabledException;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.TableNotFoundException;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.UnknownRegionException;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.client.MasterSwitchType;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.client.RegionInfoBuilder;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.client.Result;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.client.TableState;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.coprocessor.CoprocessorHost;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.exceptions.MergeRegionException;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.executor.ExecutorType;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.favored.FavoredNodesManager;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.favored.FavoredNodesPromoter;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.http.InfoServer;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcUtils;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.101"></a>
+<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.ipc.ServerNotRunningYetException;<a name="line.102"></a>
+<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.log.HBaseMarkers;<a name="line.103"></a>
+<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.master.MasterRpcServices.BalanceSwitchMode;<a name="line.104"></a>
+<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.master.assignment.AssignProcedure;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.master.assignment.AssignmentManager;<a name="line.106"></a>
+<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.master.assignment.MergeTableRegionsProcedure;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.master.assignment.MoveRegionProcedure;<a name="line.108"></a>
+<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.master.assignment.RegionStateNode;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.master.assignment.RegionStates;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.master.assignment.TransitRegionStateProcedure;<a name="line.111"></a>
+<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.master.assignment.UnassignProcedure;<a name="line.112"></a>
+<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.master.balancer.BalancerChore;<a name="line.113"></a>
+<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.master.balancer.BaseLoadBalancer;<a name="line.114"></a>
+<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.master.balancer.ClusterStatusChore;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.master.balancer.LoadBalancerFactory;<a name="line.116"></a>
+<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.master.cleaner.CleanerChore;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.master.cleaner.HFileCleaner;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.master.cleaner.LogCleaner;<a name="line.119"></a>
+<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.master.cleaner.ReplicationBarrierCleaner;<a name="line.120"></a>
+<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.master.locking.LockManager;<a name="line.121"></a>
+<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.master.normalizer.NormalizationPlan;<a name="line.122"></a>
+<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.master.normalizer.NormalizationPlan.PlanType;<a name="line.123"></a>
+<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizer;<a name="line.124"></a>
+<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizerChore;<a name="line.125"></a>
+<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizerFactory;<a name="line.126"></a>
+<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.master.procedure.CreateTableProcedure;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.master.procedure.DeleteNamespaceProcedure;<a name="line.128"></a>
+<span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.master.procedure.DeleteTableProcedure;<a name="line.129"></a>
+<span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.master.procedure.DisableTableProcedure;<a name="line.130"></a>
+<span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.master.procedure.EnableTableProcedure;<a name="line.131"></a>
+<span class="sourceLineNo">132</span>import org.apache.hadoop.hbase.master.procedure.InitMetaProcedure;<a name="line.132"></a>
+<span class="sourceLineNo">133</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureConstants;<a name="line.133"></a>
+<span class="sourceLineNo">134</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureScheduler;<a name="line.135"></a>
+<span class="sourceLineNo">136</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureUtil;<a name="line.136"></a>
+<span class="sourceLineNo">137</span>import org.apache.hadoop.hbase.master.procedure.ModifyTableProcedure;<a name="line.137"></a>
+<span class="sourceLineNo">138</span>import org.apache.hadoop.hbase.master.procedure.ProcedurePrepareLatch;<a name="line.138"></a>
+<span class="sourceLineNo">139</span>import org.apache.hadoop.hbase.master.procedure.RecoverMetaProcedure;<a name="line.139"></a>
+<span class="sourceLineNo">140</span>import org.apache.hadoop.hbase.master.procedure.ServerCrashProcedure;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.master.procedure.TruncateTableProcedure;<a name="line.141"></a>
+<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.master.replication.AbstractPeerProcedure;<a name="line.142"></a>
+<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.master.replication.AddPeerProcedure;<a name="line.143"></a>
+<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.master.replication.DisablePeerProcedure;<a name="line.144"></a>
+<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.master.replication.EnablePeerProcedure;<a name="line.145"></a>
+<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.master.replication.RemovePeerProcedure;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.master.replication.ReplicationPeerManager;<a name="line.147"></a>
+<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.master.replication.SyncReplicationReplayWALManager;<a name="line.148"></a>
+<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.master.replication.TransitPeerSyncReplicationStateProcedure;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.master.replication.UpdatePeerConfigProcedure;<a name="line.150"></a>
+<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.master.snapshot.SnapshotManager;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.master.zksyncer.MasterAddressSyncer;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.master.zksyncer.MetaLocationSyncer;<a name="line.153"></a>
+<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.mob.MobConstants;<a name="line.154"></a>
+<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.monitoring.MemoryBoundedLogMessageBuffer;<a name="line.155"></a>
+<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.156"></a>
+<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.157"></a>
+<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.procedure.MasterProcedureManagerHost;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.procedure.flush.MasterFlushTableProcedureManager;<a name="line.159"></a>
+<span class="sourceLineNo">160</span>import org.apache.hadoop.hbase.procedure2.LockedResource;<a name="line.160"></a>
+<span class="sourceLineNo">161</span>import org.apache.hadoop.hbase.procedure2.Procedure;<a name="line.161"></a>
+<span class="sourceLineNo">162</span>import org.apache.hadoop.hbase.procedure2.ProcedureEvent;<a name="line.162"></a>
+<span class="sourceLineNo">163</span>import org.apache.hadoop.hbase.procedure2.ProcedureExecutor;<a name="line.163"></a>
+<span class="sourceLineNo">164</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureDispatcher.RemoteProcedure;<a name="line.164"></a>
+<span class="sourceLineNo">165</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureException;<a name="line.165"></a>
+<span class="sourceLineNo">166</span>import org.apache.hadoop.hbase.procedure2.store.wal.WALProcedureStore;<a name="line.166"></a>
+<span class="sourceLineNo">167</span>import org.apache.hadoop.hbase.quotas.MasterQuotaManager;<a name="line.167"></a>
+<span class="sourceLineNo">168</span>import org.apache.hadoop.hbase.quotas.MasterQuotasObserver;<a name="line.168"></a>
+<span class="sourceLineNo">169</span>import org.apache.hadoop.hbase.quotas.QuotaObserverChore;<a name="line.169"></a>
+<span class="sourceLineNo">170</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.170"></a>
+<span class="sourceLineNo">171</span>import org.apache.hadoop.hbase.quotas.SnapshotQuotaObserverChore;<a name="line.171"></a>
+<span class="sourceLineNo">172</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifier;<a name="line.172"></a>
+<span class="sourceLineNo">173</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifierFactory;<a name="line.173"></a>
+<span class="sourceLineNo">174</span>import org.apache.hadoop.hbase.regionserver.DefaultStoreEngine;<a name="line.174"></a>
+<span class="sourceLineNo">175</span>import org.apache.hadoop.hbase.regionserver.HRegionServer;<a name="line.175"></a>
+<span class="sourceLineNo">176</span>import org.apache.hadoop.hbase.regionserver.HStore;<a name="line.176"></a>
+<span class="sourceLineNo">177</span>import org.apache.hadoop.hbase.regionserver.RSRpcServices;<a name="line.177"></a>
+<span class="sourceLineNo">178</span>import org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost;<a name="line.178"></a>
+<span class="sourceLineNo">179</span>import org.apache.hadoop.hbase.regionserver.RegionSplitPolicy;<a name="line.179"></a>
+<span class="sourceLineNo">180</span>import org.apache.hadoop.hbase.regionserver.compactions.ExploringCompactionPolicy;<a name="line.180"></a>
+<span class="sourceLineNo">181</span>import org.apache.hadoop.hbase.regionserver.compactions.FIFOCompactionPolicy;<a name="line.181"></a>
+<span class="sourceLineNo">182</span>import org.apache.hadoop.hbase.replication.ReplicationException;<a name="line.182"></a>
+<span class="sourceLineNo">183</span>import org.apache.hadoop.hbase.replication.ReplicationLoadSource;<a name="line.183"></a>
+<span class="sourceLineNo">184</span>import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;<a name="line.184"></a>
+<span class="sourceLineNo">185</span>import org.apache.hadoop.hbase.replication.ReplicationPeerDescription;<a name="line.185"></a>
+<span class="sourceLineNo">186</span>import org.apache.hadoop.hbase.replication.ReplicationUtils;<a name="line.186"></a>
+<span class="sourceLineNo">187</span>import org.apache.hadoop.hbase.replication.SyncReplicationState;<a name="line.187"></a>
+<span class="sourceLineNo">188</span>import org.apache.hadoop.hbase.replication.master.ReplicationHFileCleaner;<a name="line.188"></a>
+<span class="sourceLineNo">189</span>import org.apache.hadoop.hbase.replication.master.ReplicationLogCleaner;<a name="line.189"></a>
+<span class="sourceLineNo">190</span>import org.apache.hadoop.hbase.replication.master.ReplicationPeerConfigUpgrader;<a name="line.190"></a>
+<span class="sourceLineNo">191</span>import org.apache.hadoop.hbase.security.AccessDeniedException;<a name="line.191"></a>
+<span class="sourceLineNo">192</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.192"></a>
+<span class="sourceLineNo">193</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.193"></a>
+<span class="sourceLineNo">194</span>import org.apache.hadoop.hbase.util.Addressing;<a name="line.194"></a>
+<span class="sourceLineNo">195</span>import org.apache.hadoop.hbase.util.BloomFilterUtil;<a name="line.195"></a>
+<span class="sourceLineNo">196</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.196"></a>
+<span class="sourceLineNo">197</span>import org.apache.hadoop.hbase.util.CompressionTest;<a name="line.197"></a>
+<span class="sourceLineNo">198</span>import org.apache.hadoop.hbase.util.EncryptionTest;<a name="line.198"></a>
+<span class="sourceLineNo">199</span>import org.apache.hadoop.hbase.util.HBaseFsck;<a name="line.199"></a>
+<span class="sourceLineNo">200</span>import org.apache.hadoop.hbase.util.HFileArchiveUtil;<a name="line.200"></a>
+<span class="sourceLineNo">201</span>import org.apache.hadoop.hbase.util.HasThread;<a name="line.201"></a>
+<span class="sourceLineNo">202</span>import org.apache.hadoop.hbase.util.IdLock;<a name="line.202"></a>
+<span class="sourceLineNo">203</span>import org.apache.hadoop.hbase.util.ModifyRegionUtils;<a name="line.203"></a>
+<span class="sourceLineNo">204</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.204"></a>
+<span class="sourceLineNo">205</span>import org.apache.hadoop.hbase.util.RetryCounter;<a name="line.205"></a>
+<span class="sourceLineNo">206</span>import org.apache.hadoop.hbase.util.RetryCounterFactory;<a name="line.206"></a>
+<span class="sourceLineNo">207</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.207"></a>
+<span class="sourceLineNo">208</span>import org.apache.hadoop.hbase.util.VersionInfo;<a name="line.208"></a>
+<span class="sourceLineNo">209</span>import org.apache.hadoop.hbase.zookeeper.LoadBalancerTracker;<a name="line.209"></a>
+<span class="sourceLineNo">210</span>import org.apache.hadoop.hbase.zookeeper.MasterAddressTracker;<a name="line.210"></a>
+<span class="sourceLineNo">211</span>import org.apache.hadoop.hbase.zookeeper.MasterMaintenanceModeTracker;<a name="line.211"></a>
+<span class="sourceLineNo">212</span>import org.apache.hadoop.hbase.zookeeper.RegionNormalizerTracker;<a name="line.212"></a>
+<span class="sourceLineNo">213</span>import org.apache.hadoop.hbase.zookeeper.ZKClusterId;<a name="line.213"></a>
+<span class="sourceLineNo">214</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.214"></a>
+<span class="sourceLineNo">215</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.215"></a>
+<span class="sourceLineNo">216</span>import org.apache.hadoop.hbase.zookeeper.ZNodePaths;<a name="line.216"></a>
+<span class="sourceLineNo">217</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.217"></a>
+<span class="sourceLineNo">218</span>import org.apache.zookeeper.KeeperException;<a name="line.218"></a>
+<span class="sourceLineNo">219</span>import org.eclipse.jetty.server.Server;<a name="line.219"></a>
+<span class="sourceLineNo">220</span>import org.eclipse.jetty.server.ServerConnector;<a name="line.220"></a>
+<span class="sourceLineNo">221</span>import org.eclipse.jetty.servlet.ServletHolder;<a name="line.221"></a>
+<span class="sourceLineNo">222</span>import org.eclipse.jetty.webapp.WebAppContext;<a name="line.222"></a>
+<span class="sourceLineNo">223</span>import org.slf4j.Logger;<a name="line.223"></a>
+<span class="sourceLineNo">224</span>import org.slf4j.LoggerFactory;<a name="line.224"></a>
+<span class="sourceLineNo">225</span><a name="line.225"></a>
+<span class="sourceLineNo">226</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.226"></a>
+<span class="sourceLineNo">227</span>import org.apache.hbase.thirdparty.com.google.common.collect.ImmutableSet;<a name="line.227"></a>
+<span class="sourceLineNo">228</span>import org.apache.hbase.thirdparty.com.google.common.collect.Lists;<a name="line.228"></a>
+<span class="sourceLineNo">229</span>import org.apache.hbase.thirdparty.com.google.common.collect.Maps;<a name="line.229"></a>
+<span class="sourceLineNo">230</span><a name="line.230"></a>
+<span class="sourceLineNo">231</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.231"></a>
+<span class="sourceLineNo">232</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoResponse.CompactionState;<a name="line.232"></a>
+<span class="sourceLineNo">233</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.Quotas;<a name="line.233"></a>
+<span class="sourceLineNo">234</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.SpaceViolationPolicy;<a name="line.234"></a>
+<span class="sourceLineNo">235</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;<a name="line.235"></a>
+<span class="sourceLineNo">236</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos;<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> * HMaster is the "master server" for HBase. An HBase cluster has one active<a name="line.239"></a>
+<span class="sourceLineNo">240</span> * master.  If many masters are started, all compete.  Whichever wins goes on to<a name="line.240"></a>
+<span class="sourceLineNo">241</span> * run the cluster.  All others park themselves in their constructor until<a name="line.241"></a>
+<span class="sourceLineNo">242</span> * master or cluster shutdown or until the active master loses its lease in<a name="line.242"></a>
+<span class="sourceLineNo">243</span> * zookeeper.  Thereafter, all running master jostle to take over master role.<a name="line.243"></a>
+<span class="sourceLineNo">244</span> *<a name="line.244"></a>
+<span class="sourceLineNo">245</span> * &lt;p&gt;The Master can be asked shutdown the cluster. See {@link #shutdown()}.  In<a name="line.245"></a>
+<span class="sourceLineNo">246</span> * this case it will tell all regionservers to go down and then wait on them<a name="line.246"></a>
+<span class="sourceLineNo">247</span> * all reporting in that they are down.  This master will then shut itself down.<a name="line.247"></a>
 <span class="sourceLineNo">248</span> *<a name="line.248"></a>
-<span class="sourceLineNo">249</span> * @see org.apache.zookeeper.Watcher<a name="line.249"></a>
-<span class="sourceLineNo">250</span> */<a name="line.250"></a>
-<span class="sourceLineNo">251</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS)<a name="line.251"></a>
-<span class="sourceLineNo">252</span>@SuppressWarnings("deprecation")<a name="line.252"></a>
-<span class="sourceLineNo">253</span>public class HMaster extends HRegionServer implements MasterServices {<a name="line.253"></a>
-<span class="sourceLineNo">254</span>  private static Logger LOG = LoggerFactory.getLogger(HMaster.class);<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>   * Protection against zombie master. Started once Master accepts active responsibility and<a name="line.257"></a>
-<span class="sourceLineNo">258</span>   * starts taking over responsibilities. Allows a finite time window before giving up ownership.<a name="line.258"></a>
-<span class="sourceLineNo">259</span>   */<a name="line.259"></a>
-<span class="sourceLineNo">260</span>  private static class InitializationMonitor extends HasThread {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    /** The amount of time in milliseconds to sleep before checking initialization status. */<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    public static final String TIMEOUT_KEY = "hbase.master.initializationmonitor.timeout";<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    public static final long TIMEOUT_DEFAULT = TimeUnit.MILLISECONDS.convert(15, TimeUnit.MINUTES);<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">266</span>     * When timeout expired and initialization has not complete, call {@link System#exit(int)} when<a name="line.266"></a>
-<span class="sourceLineNo">267</span>     * true, do nothing otherwise.<a name="line.267"></a>
-<span class="sourceLineNo">268</span>     */<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    public static final String HALT_KEY = "hbase.master.initializationmonitor.haltontimeout";<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    public static final boolean HALT_DEFAULT = false;<a name="line.270"></a>
-<span class="sourceLineNo">271</span><a name="line.271"></a>
-<span class="sourceLineNo">272</span>    private final HMaster master;<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    private final long timeout;<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    private final boolean haltOnTimeout;<a name="line.274"></a>
-<span class="sourceLineNo">275</span><a name="line.275"></a>
-<span class="sourceLineNo">276</span>    /** Creates a Thread that monitors the {@link #isInitialized()} state. */<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    InitializationMonitor(HMaster master) {<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      super("MasterInitializationMonitor");<a name="line.278"></a>
-<span class="sourceLineNo">279</span>      this.master = master;<a name="line.279"></a>
-<span class="sourceLineNo">280</span>      this.timeout = master.getConfiguration().getLong(TIMEOUT_KEY, TIMEOUT_DEFAULT);<a name="line.280"></a>
-<span class="sourceLineNo">281</span>      this.haltOnTimeout = master.getConfiguration().getBoolean(HALT_KEY, HALT_DEFAULT);<a name="line.281"></a>
-<span class="sourceLineNo">282</span>      this.setDaemon(true);<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>    @Override<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    public void run() {<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      try {<a name="line.287"></a>
-<span class="sourceLineNo">288</span>        while (!master.isStopped() &amp;&amp; master.isActiveMaster()) {<a name="line.288"></a>
-<span class="sourceLineNo">289</span>          Thread.sleep(timeout);<a name="line.289"></a>
-<span class="sourceLineNo">290</span>          if (master.isInitialized()) {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>            LOG.debug("Initialization completed within allotted tolerance. Monitor exiting.");<a name="line.291"></a>
-<span class="sourceLineNo">292</span>          } else {<a name="line.292"></a>
-<span class="sourceLineNo">293</span>            LOG.error("Master failed to complete initialization after " + timeout + "ms. Please"<a name="line.293"></a>
-<span class="sourceLineNo">294</span>                + " consider submitting a bug report including a thread dump of this process.");<a name="line.294"></a>
-<span class="sourceLineNo">295</span>            if (haltOnTimeout) {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>              LOG.error("Zombie Master exiting. Thread dump to stdout");<a name="line.296"></a>
-<span class="sourceLineNo">297</span>              Threads.printThreadInfo(System.out, "Zombie HMaster");<a name="line.297"></a>
-<span class="sourceLineNo">298</span>              System.exit(-1);<a name="line.298"></a>
-<span class="sourceLineNo">299</span>            }<a name="line.299"></a>
-<span class="sourceLineNo">300</span>          }<a name="line.300"></a>
-<span class="sourceLineNo">301</span>        }<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      } catch (InterruptedException ie) {<a name="line.302"></a>
-<span class="sourceLineNo">303</span>        LOG.trace("InitMonitor thread interrupted. Existing.");<a name="line.303"></a>
-<span class="sourceLineNo">304</span>      }<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><a name="line.307"></a>
-<span class="sourceLineNo">308</span>  // MASTER is name of the webapp and the attribute name used stuffing this<a name="line.308"></a>
-<span class="sourceLineNo">309</span>  //instance into web context.<a name="line.309"></a>
-<span class="sourceLineNo">310</span>  public static final String MASTER = "master";<a name="line.310"></a>
-<span class="sourceLineNo">311</span><a name="line.311"></a>
-<span class="sourceLineNo">312</span>  // Manager and zk listener for master election<a name="line.312"></a>
-<span class="sourceLineNo">313</span>  private final ActiveMasterManager activeMasterManager;<a name="line.313"></a>
-<span class="sourceLineNo">314</span>  // Region server tracker<a name="line.314"></a>
-<span class="sourceLineNo">315</span>  private RegionServerTracker regionServerTracker;<a name="line.315"></a>
-<span class="sourceLineNo">316</span>  // Draining region server tracker<a name="line.316"></a>
-<span class="sourceLineNo">317</span>  private DrainingServerTracker drainingServerTracker;<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  // Tracker for load balancer state<a name="line.318"></a>
-<span class="sourceLineNo">319</span>  LoadBalancerTracker loadBalancerTracker;<a name="line.319"></a>
-<span class="sourceLineNo">320</span>  // Tracker for meta location, if any client ZK quorum specified<a name="line.320"></a>
-<span class="sourceLineNo">321</span>  MetaLocationSyncer metaLocationSyncer;<a name="line.321"></a>
-<span class="sourceLineNo">322</span>  // Tracker for active master location, if any client ZK quorum specified<a name="line.322"></a>
-<span class="sourceLineNo">323</span>  MasterAddressSyncer masterAddressSyncer;<a name="line.323"></a>
-<span class="sourceLineNo">324</span><a name="line.324"></a>
-<span class="sourceLineNo">325</span>  // Tracker for split and merge state<a name="line.325"></a>
-<span class="sourceLineNo">326</span>  private SplitOrMergeTracker splitOrMergeTracker;<a name="line.326"></a>
-<span class="sourceLineNo">327</span><a name="line.327"></a>
-<span class="sourceLineNo">328</span>  // Tracker for region normalizer state<a name="line.328"></a>
-<span class="sourceLineNo">329</span>  private RegionNormalizerTracker regionNormalizerTracker;<a name="line.329"></a>
-<span class="sourceLineNo">330</span><a name="line.330"></a>
-<span class="sourceLineNo">331</span>  //Tracker for master maintenance mode setting<a name="line.331"></a>
-<span class="sourceLineNo">332</span>  private MasterMaintenanceModeTracker maintenanceModeTracker;<a name="line.332"></a>
-<span class="sourceLineNo">333</span><a name="line.333"></a>
-<span class="sourceLineNo">334</span>  private ClusterSchemaService clusterSchemaService;<a name="line.334"></a>
+<span class="sourceLineNo">249</span> * &lt;p&gt;You can also shutdown just this master.  Call {@link #stopMaster()}.<a name="line.249"></a>
+<span class="sourceLineNo">250</span> *<a name="line.250"></a>
+<span class="sourceLineNo">251</span> * @see org.apache.zookeeper.Watcher<a name="line.251"></a>
+<span class="sourceLineNo">252</span> */<a name="line.252"></a>
+<span class="sourceLineNo">253</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS)<a name="line.253"></a>
+<span class="sourceLineNo">254</span>@SuppressWarnings("deprecation")<a name="line.254"></a>
+<span class="sourceLineNo">255</span>public class HMaster extends HRegionServer implements MasterServices {<a name="line.255"></a>
+<span class="sourceLineNo">256</span>  private static Logger LOG = LoggerFactory.getLogger(HMaster.class);<a name="line.256"></a>
+<span class="sourceLineNo">257</span><a name="line.257"></a>
+<span class="sourceLineNo">258</span>  /**<a name="line.258"></a>
+<span class="sourceLineNo">259</span>   * Protection against zombie master. Started once Master accepts active responsibility and<a name="line.259"></a>
+<span class="sourceLineNo">260</span>   * starts taking over responsibilities. Allows a finite time window before giving up ownership.<a name="line.260"></a>
+<span class="sourceLineNo">261</span>   */<a name="line.261"></a>
+<span class="sourceLineNo">262</span>  private static class InitializationMonitor extends HasThread {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    /** The amount of time in milliseconds to sleep before checking initialization status. */<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    public static final String TIMEOUT_KEY = "hbase.master.initializationmonitor.timeout";<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    public static final long TIMEOUT_DEFAULT = TimeUnit.MILLISECONDS.convert(15, TimeUnit.MINUTES);<a name="line.265"></a>
+<span class="sourceLineNo">266</span><a name="line.266"></a>
+<span class="sourceLineNo">267</span>    /**<a name="line.267"></a>
+<span class="sourceLineNo">268</span>     * When timeout expired and initialization has not complete, call {@link System#exit(int)} when<a name="line.268"></a>
+<span class="sourceLineNo">269</span>     * true, do nothing otherwise.<a name="line.269"></a>
+<span class="sourceLineNo">270</span>     */<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    public static final String HALT_KEY = "hbase.master.initializationmonitor.haltontimeout";<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    public static final boolean HALT_DEFAULT = false;<a name="line.272"></a>
+<span class="sourceLineNo">273</span><a name="line.273"></a>
+<span class="sourceLineNo">274</span>    private final HMaster master;<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    private final long timeout;<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    private final boolean haltOnTimeout;<a name="line.276"></a>
+<span class="sourceLineNo">277</span><a name="line.277"></a>
+<span class="sourceLineNo">278</span>    /** Creates a Thread that monitors the {@link #isInitialized()} state. */<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    InitializationMonitor(HMaster master) {<a name="line.279"></a>
+<span class="sourceLineNo">280</span>      super("MasterInitializationMonitor");<a name="line.280"></a>
+<span class="sourceLineNo">281</span>      this.master = master;<a name="line.281"></a>
+<span class="sourceLineNo">282</span>      this.timeout = master.getConfiguration().getLong(TIMEOUT_KEY, TIMEOUT_DEFAULT);<a name="line.282"></a>
+<span class="sourceLineNo">283</span>      this.haltOnTimeout = master.getConfiguration().getBoolean(HALT_KEY, HALT_DEFAULT);<a name="line.283"></a>
+<span class="sourceLineNo">284</span>      this.setDaemon(true);<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    }<a name="line.285"></a>
+<span class="sourceLineNo">286</span><a name="line.286"></a>
+<span class="sourceLineNo">287</span>    @Override<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    public void run() {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>      try {<a name="line.289"></a>
+<span class="sourceLineNo">290</span>        while (!master.isStopped() &amp;&amp; master.isActiveMaster()) {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>          Thread.sleep(timeout);<a name="line.291"></a>
+<span class="sourceLineNo">292</span>          if (master.isInitialized()) {<a name="line.292"></a>
+<span class="sourceLineNo">293</span>            LOG.debug("Initialization completed within allotted tolerance. Monitor exiting.");<a name="line.293"></a>
+<span class="sourceLineNo">294</span>          } else {<a name="line.294"></a>
+<span class="sourceLineNo">295</span>            LOG.error("Master failed to complete initialization after " + timeout + "ms. Please"<a name="line.295"></a>
+<span class="sourceLineNo">296</span>                + " consider submitting a bug report including a thread dump of this process.");<a name="line.296"></a>
+<span class="sourceLineNo">297</span>            if (haltOnTimeout) {<a name="line.297"></a>
+<span class="sourceLineNo">298</span>              LOG.error("Zombie Master exiting. Thread dump to stdout");<a name="line.298"></a>
+<span class="sourceLineNo">299</span>              Threads.printThreadInfo(System.out, "Zombie HMaster");<a name="line.299"></a>
+<span class="sourceLineNo">300</span>              System.exit(-1);<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>      } catch (InterruptedException ie) {<a name="line.304"></a>
+<span class="sourceLineNo">305</span>        LOG.trace("InitMonitor thread interrupted. Existing.");<a name="line.305"></a>
+<span class="sourceLineNo">306</span>      }<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    }<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>  // MASTER is name of the webapp and the attribute name used stuffing this<a name="line.310"></a>
+<span class="sourceLineNo">311</span>  //instance into web context.<a name="line.311"></a>
+<span class="sourceLineNo">312</span>  public static final String MASTER = "master";<a name="line.312"></a>
+<span class="sourceLineNo">313</span><a name="line.313"></a>
+<span class="sourceLineNo">314</span>  // Manager and zk listener for master election<a name="line.314"></a>
+<span class="sourceLineNo">315</span>  private final ActiveMasterManager activeMasterManager;<a name="line.315"></a>
+<span class="sourceLineNo">316</span>  // Region server tracker<a name="line.316"></a>
+<span class="sourceLineNo">317</span>  private RegionServerTracker regionServerTracker;<a name="line.317"></a>
+<span class="sourceLineNo">318</span>  // Draining region server tracker<a name="line.318"></a>
+<span class="sourceLineNo">319</span>  private DrainingServerTracker drainingServerTracker;<a name="line.319"></a>
+<span class="sourceLineNo">320</span>  // Tracker for load balancer state<a name="line.320"></a>
+<span class="sourceLineNo">321</span>  LoadBalancerTracker loadBalancerTracker;<a name="line.321"></a>
+<span class="sourceLineNo">322</span>  // Tracker for meta location, if any client ZK quorum specified<a name="line.322"></a>
+<span class="sourceLineNo">323</span>  MetaLocationSyncer metaLocationSyncer;<a name="line.323"></a>
+<span class="sourceLineNo">324</span>  // Tracker for active master location, if any client ZK quorum specified<a name="line.324"></a>
+<span class="sourceLineNo">325</span>  MasterAddressSyncer masterAddressSyncer;<a name="line.325"></a>
+<span class="sourceLineNo">326</span><a name="line.326"></a>
+<span class="sourceLineNo">327</span>  // Tracker for split and merge state<a name="line.327"></a>
+<span class="sourceLineNo">328</span>  private SplitOrMergeTracker splitOrMergeTracker;<a name="line.328"></a>
+<span class="sourceLineNo">329</span><a name="line.329"></a>
+<span class="sourceLineNo">330</span>  // Tracker for region normalizer state<a name="line.330"></a>
+<span class="sourceLineNo">331</span>  private RegionNormalizerTracker regionNormalizerTracker;<a name="line.331"></a>
+<span class="sourceLineNo">332</span><a name="line.332"></a>
+<span class="sourceLineNo">333</span>  //Tracker for master maintenance mode setting<a name="line.333"></a>
+<span class="sourceLineNo">334</span>  private MasterMaintenanceModeTracker maintenanceModeTracker;<a name="line.334"></a>
 <span class="sourceLineNo">335</span><a name="line.335"></a>
-<span class="sourceLineNo">336</span>  public static final String HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS =<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    "hbase.master.wait.on.service.seconds";<a name="line.337"></a>
-<span class="sourceLineNo">338</span>  public static final int DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS = 5 * 60;<a name="line.338"></a>
-<span class="sourceLineNo">339</span><a name="line.339"></a>
-<span class="sourceLineNo">340</span>  // Metrics for the HMaster<a name="line.340"></a>
-<span class="sourceLineNo">341</span>  final MetricsMaster metricsMaster;<a name="line.341"></a>
-<span class="sourceLineNo">342</span>  // file system manager for the master FS operations<a name="line.342"></a>
-<span class="sourceLineNo">343</span>  private MasterFileSystem fileSystemManager;<a name="line.343"></a>
-<span class="sourceLineNo">344</span>  private MasterWalManager walManager;<a name="line.344"></a>
-<span class="sourceLineNo">345</span><a name="line.345"></a>
-<span class="sourceLineNo">346</span>  // server manager to deal with region server info<a name="line.346"></a>
-<span class="sourceLineNo">347</span>  private volatile ServerManager serverManager;<a name="line.347"></a>
-<span class="sourceLineNo">348</span><a name="line.348"></a>
-<span class="sourceLineNo">349</span>  // manager of assignment nodes in zookeeper<a name="line.349"></a>
-<span class="sourceLineNo">350</span>  private AssignmentManager assignmentManager;<a name="line.350"></a>
-<span class="sourceLineNo">351</span><a name="line.351"></a>
-<span class="sourceLineNo">352</span>  // manager of replication<a name="line.352"></a>
-<span class="sourceLineNo">353</span>  private ReplicationPeerManager replicationPeerManager;<a name="line.353"></a>
-<span class="sourceLineNo">354</span><a name="line.354"></a>
-<span class="sourceLineNo">355</span>  private SyncReplicationReplayWALManager syncReplicationReplayWALManager;<a name="line.355"></a>
+<span class="sourceLineNo">336</span>  private ClusterSchemaService clusterSchemaService;<a name="line.336"></a>
+<span class="sourceLineNo">337</span><a name="line.337"></a>
+<span class="sourceLineNo">338</span>  public static final String HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS =<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    "hbase.master.wait.on.service.seconds";<a name="line.339"></a>
+<span class="sourceLineNo">340</span>  public static final int DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS = 5 * 60;<a name="line.340"></a>
+<span class="sourceLineNo">341</span><a name="line.341"></a>
+<span class="sourceLineNo">342</span>  // Metrics for the HMaster<a name="line.342"></a>
+<span class="sourceLineNo">343</span>  final MetricsMaster metricsMaster;<a name="line.343"></a>
+<span class="sourceLineNo">344</span>  // file system manager for the master FS operations<a name="line.344"></a>
+<span class="sourceLineNo">345</span>  private MasterFileSystem fileSystemManager;<a name="line.345"></a>
+<span class="sourceLineNo">346</span>  private MasterWalManager walManager;<a name="line.346"></a>
+<span class="sourceLineNo">347</span><a name="line.347"></a>
+<span class="sourceLineNo">348</span>  // server manager to deal with region server info<a name="line.348"></a>
+<span class="sourceLineNo">349</span>  private volatile ServerManager serverManager;<a name="line.349"></a>
+<span class="sourceLineNo">350</span><a name="line.350"></a>
+<span class="sourceLineNo">351</span>  // manager of assignment nodes in zookeeper<a name="line.351"></a>
+<span class="sourceLineNo">352</span>  private AssignmentManager assignmentManager;<a name="line.352"></a>
+<span class="sourceLineNo">353</span><a name="line.353"></a>
+<span class="sourceLineNo">354</span>  // manager of replication<a name="line.354"></a>
+<span class="sourceLineNo">355</span>  private ReplicationPeerManager replicationPeerManager;<a name="line.355"></a>
 <span class="sourceLineNo">356</span><a name="line.356"></a>
-<span class="sourceLineNo">357</span>  // buffer for "fatal error" notices from region servers<a name="line.357"></a>
-<span class="sourceLineNo">358</span>  // in the cluster. This is only used for assisting<a name="line.358"></a>
-<span class="sourceLineNo">359</span>  // operations/debugging.<a name="line.359"></a>
-<span class="sourceLineNo">360</span>  MemoryBoundedLogMessageBuffer rsFatals;<a name="line.360"></a>
-<span class="sourceLineNo">361</span><a name="line.361"></a>
-<span class="sourceLineNo">362</span>  // flag set after we become the active master (used for testing)<a name="line.362"></a>
-<span class="sourceLineNo">363</span>  private volatile boolean activeMaster = false;<a name="line.363"></a>
-<span class="sourceLineNo">364</span><a name="line.364"></a>
-<span class="sourceLineNo">365</span>  // flag set after we complete initialization once active<a name="line.365"></a>
-<span class="sourceLineNo">366</span>  private final ProcedureEvent&lt;?&gt; initialized = new ProcedureEvent&lt;&gt;("master initialized");<a name="line.366"></a>
-<span class="sourceLineNo">367</span><a name="line.367"></a>
-<span class="sourceLineNo">368</span>  // flag set after master services are started,<a name="line.368"></a>
-<span class="sourceLineNo">369</span>  // initialization may have not completed yet.<a name="line.369"></a>
-<span class="sourceLineNo">370</span>  volatile boolean serviceStarted = false;<a name="line.370"></a>
-<span class="sourceLineNo">371</span><a name="line.371"></a>
-<span class="sourceLineNo">372</span>  // Maximum time we should run balancer for<a name="line.372"></a>
-<span class="sourceLineNo">373</span>  private final int maxBlancingTime;<a name="line.373"></a>
-<span class="sourceLineNo">374</span>  // Maximum percent of regions in transition when balancing<a name="line.374"></a>
-<span class="sourceLineNo">375</span>  private final double maxRitPercent;<a name="line.375"></a>
-<span class="sourceLineNo">376</span><a name="line.376"></a>
-<span class="sourceLineNo">377</span>  private final LockManager lockManager = new LockManager(this);<a name="line.377"></a>
+<span class="sourceLineNo">357</span>  private SyncReplicationReplayWALManager syncReplicationReplayWALManager;<a name="line.357"></a>
+<span class="sourceLineNo">358</span><a name="line.358"></a>
+<span class="sourceLineNo">359</span>  // buffer for "fatal error" notices from region servers<a name="line.359"></a>
+<span class="sourceLineNo">360</span>  // in the cluster. This is only used for assisting<a name="line.360"></a>
+<span class="sourceLineNo">361</span>  // operations/debugging.<a name="line.361"></a>
+<span class="sourceLineNo">362</span>  MemoryBoundedLogMessageBuffer rsFatals;<a name="line.362"></a>
+<span class="sourceLineNo">363</span><a name="line.363"></a>
+<span class="sourceLineNo">364</span>  // flag set after we become the active master (used for testing)<a name="line.364"></a>
+<span class="sourceLineNo">365</span>  private volatile boolean activeMaster = false;<a name="line.365"></a>
+<span class="sourceLineNo">366</span><a name="line.366"></a>
+<span class="sourceLineNo">367</span>  // flag set after we complete initialization once active<a name="line.367"></a>
+<span class="sourceLineNo">368</span>  private final ProcedureEvent&lt;?&gt; initialized = new ProcedureEvent&lt;&gt;("master initialized");<a name="line.368"></a>
+<span class="sourceLineNo">369</span><a name="line.369"></a>
+<span class="sourceLineNo">370</span>  // flag set after master services are started,<a name="line.370"></a>
+<span class="sourceLineNo">371</span>  // initialization may have not completed yet.<a name="line.371"></a>
+<span class="sourceLineNo">372</span>  volatile boolean serviceStarted = false;<a name="line.372"></a>
+<span class="sourceLineNo">373</span><a name="line.373"></a>
+<span class="sourceLineNo">374</span>  // Maximum time we should run balancer for<a name="line.374"></a>
+<span class="sourceLineNo">375</span>  private final int maxBlancingTime;<a name="line.375"></a>
+<span class="sourceLineNo">376</span>  // Maximum percent of regions in transition when balancing<a name="line.376"></a>
+<span class="sourceLineNo">377</span>  private final double maxRitPercent;<a name="line.377"></a>
 <span class="sourceLineNo">378</span><a name="line.378"></a>
-<span class="sourceLineNo">379</span>  private LoadBalancer balancer;<a name="line.379"></a>
-<span class="sourceLineNo">380</span>  private RegionNormalizer normalizer;<a name="line.380"></a>
-<span class="sourceLineNo">381</span>  private BalancerChore balancerChore;<a name="line.381"></a>
-<span class="sourceLineNo">382</span>  private RegionNormalizerChore normalizerChore;<a name="line.382"></a>
-<span class="sourceLineNo">383</span>  private ClusterStatusChore clusterStatusChore;<a name="line.383"></a>
-<span class="sourceLineNo">384</span>  private ClusterStatusPublisher clusterStatusPublisherChore = null;<a name="line.384"></a>
-<span class="sourceLineNo">385</span><a name="line.385"></a>
-<span class="sourceLineNo">386</span>  CatalogJanitor catalogJanitorChore;<a name="line.386"></a>
-<span class="sourceLineNo">387</span>  private LogCleaner logCleaner;<a name="line.387"></a>
-<span class="sourceLineNo">388</span>  private HFileCleaner hfileCleaner;<a name="line.388"></a>
-<span class="sourceLineNo">389</span>  private ReplicationBarrierCleaner replicationBarrierCleaner;<a name="line.389"></a>
-<span class="sourceLineNo">390</span>  private ExpiredMobFileCleanerChore expiredMobFileCleanerChore;<a name="line.390"></a>
-<span class="sourceLineNo">391</span>  private MobCompactionChore mobCompactChore;<a name="line.391"></a>
-<span class="sourceLineNo">392</span>  private MasterMobCompactionThread mobCompactThread;<a name="line.392"></a>
-<span class="sourceLineNo">393</span>  // used to synchronize the mobCompactionStates<a name="line.393"></a>
-<span class="sourceLineNo">394</span>  private final IdLock mobCompactionLock = new IdLock();<a name="line.394"></a>
-<span class="sourceLineNo">395</span>  // save the information of mob compactions in tables.<a name="line.395"></a>
-<span class="sourceLineNo">396</span>  // the key is table name, the value is the number of compactions in that table.<a name="line.396"></a>
-<span class="sourceLineNo">397</span>  private Map&lt;TableName, AtomicInteger&gt; mobCompactionStates = Maps.newConcurrentMap();<a name="line.397"></a>
-<span class="sourceLineNo">398</span><a name="line.398"></a>
-<span class="sourceLineNo">399</span>  MasterCoprocessorHost cpHost;<a name="line.399"></a>
+<span class="sourceLineNo">379</span>  private final LockManager lockManager = new LockManager(this);<a name="line.379"></a>
+<span class="sourceLineNo">380</span><a name="line.380"></a>
+<span class="sourceLineNo">381</span>  private LoadBalancer balancer;<a name="line.381"></a>
+<span class="sourceLineNo">382</span>  private RegionNormalizer normalizer;<a name="line.382"></a>
+<span class="sourceLineNo">383</span>  private BalancerChore balancerChore;<a name="line.383"></a>
+<span class="sourceLineNo">384</span>  private RegionNormalizerChore normalizerChore;<a name="line.384"></a>
+<span class="sourceLineNo">385</span>  private ClusterStatusChore clusterStatusChore;<a name="line.385"></a>
+<span class="sourceLineNo">386</span>  private ClusterStatusPublisher clusterStatusPublisherChore = null;<a name="line.386"></a>
+<span class="sourceLineNo">387</span><a name="line.387"></a>
+<span class="sourceLineNo">388</span>  CatalogJanitor catalogJanitorChore;<a name="line.388"></a>
+<span class="sourceLineNo">389</span>  private LogCleaner logCleaner;<a name="line.389"></a>
+<span class="sourceLineNo">390</span>  private HFileCleaner hfileCleaner;<a name="line.390"></a>
+<span class="sourceLineNo">391</span>  private ReplicationBarrierCleaner replicationBarrierCleaner;<a name="line.391"></a>
+<span class="sourceLineNo">392</span>  private ExpiredMobFileCleanerChore expiredMobFileCleanerChore;<a name="line.392"></a>
+<span class="sourceLineNo">393</span>  private MobCompactionChore mobCompactChore;<a name="line.393"></a>
+<span class="sourceLineNo">394</span>  private MasterMobCompactionThread mobCompactThread;<a name="line.394"></a>
+<span class="sourceLineNo">395</span>  // used to synchronize the mobCompactionStates<a name="line.395"></a>
+<span class="sourceLineNo">396</span>  private final IdLock mobCompactionLock = new IdLock();<a name="line.396"></a>
+<span class="sourceLineNo">397</span>  // save the information of mob compactions in tables.<a name="line.397"></a>
+<span class="sourceLineNo">398</span>  // the key is table name, the value is the number of compactions in that table.<a name="line.398"></a>
+<span class="sourceLineNo">399</span>  private Map&lt;TableName, AtomicInteger&gt; mobCompactionStates = Maps.newConcurrentMap();<a name="line.399"></a>
 <span class="sourceLineNo">400</span><a name="line.400"></a>
-<span class="sourceLineNo">401</span>  private final boolean preLoadTableDescriptors;<a name="line.401"></a>
+<span class="sourceLineNo">401</span>  MasterCoprocessorHost cpHost;<a name="line.401"></a>
 <span class="sourceLineNo">402</span><a name="line.402"></a>
-<span class="sourceLineNo">403</span>  // Time stamps for when a hmaster became active<a name="line.403"></a>
-<span class="sourceLineNo">404</span>  private long masterActiveTime;<a name="line.404"></a>
-<span class="sourceLineNo">405</span><a name="line.405"></a>
-<span class="sourceLineNo">406</span>  // Time stamp for when HMaster finishes becoming Active Master<a name="line.406"></a>
-<span class="sourceLineNo">407</span>  private long masterFinishedInitializationTime;<a name="line.407"></a>
-<span class="sourceLineNo">408</span><a name="line.408"></a>
-<span class="sourceLineNo">409</span>  //should we check the compression codec type at master side, default true, HBASE-6370<a name="line.409"></a>
-<span class="sourceLineNo">410</span>  private final boolean masterCheckCompression;<a name="line.410"></a>
-<span class="sourceLineNo">411</span><a name="line.411"></a>
-<span class="sourceLineNo">412</span>  //should we check encryption settings at master side, default true<a name="line.412"></a>
-<span class="sourceLineNo">413</span>  private final boolean masterCheckEncryption;<a name="line.413"></a>
-<span class="sourceLineNo">414</span><a name="line.414"></a>
-<span class="sourceLineNo">415</span>  Map&lt;String, Service&gt; coprocessorServiceHandlers = Maps.newHashMap();<a name="line.415"></a>
+<span class="sourceLineNo">403</span>  private final boolean preLoadTableDescriptors;<a name="line.403"></a>
+<span class="sourceLineNo">404</span><a name="line.404"></a>
+<span class="sourceLineNo">405</span>  // Time stamps for when a hmaster became active<a name="line.405"></a>
+<span class="sourceLineNo">406</span>  private long masterActiveTime;<a name="line.406"></a>
+<span class="sourceLineNo">407</span><a name="line.407"></a>
+<span class="sourceLineNo">408</span>  // Time stamp for when HMaster finishes becoming Active Master<a name="line.408"></a>
+<span class="sourceLineNo">409</span>  private long masterFinishedInitializationTime;<a name="line.409"></a>
+<span class="sourceLineNo">410</span><a name="line.410"></a>
+<span class="sourceLineNo">411</span>  //should we check the compression codec type at master side, default true, HBASE-6370<a name="line.411"></a>
+<span class="sourceLineNo">412</span>  private final boolean masterCheckCompression;<a name="line.412"></a>
+<span class="sourceLineNo">413</span><a name="line.413"></a>
+<span class="sourceLineNo">414</span>  //should we check encryption settings at master side, default true<a name="line.414"></a>
+<span class="sourceLineNo">415</span>  private final boolean masterCheckEncryption;<a name="line.415"></a>
 <span class="sourceLineNo">416</span><a name="line.416"></a>
-<span class="sourceLineNo">417</span>  // monitor for snapshot of hbase tables<a name="line.417"></a>
-<span class="sourceLineNo">418</span>  SnapshotManager snapshotManager;<a name="line.418"></a>
-<span class="sourceLineNo">419</span>  // monitor for distributed procedures<a name="line.419"></a>
-<span class="sourceLineNo">420</span>  private MasterProcedureManagerHost mpmHost;<a name="line.420"></a>
-<span class="sourceLineNo">421</span><a name="line.421"></a>
-<span class="sourceLineNo">422</span>  // it is assigned after 'initialized' guard set to true, so should be volatile<a name="line.422"></a>
-<span class="sourceLineNo">423</span>  private volatile MasterQuotaManager quotaManager;<a name="line.423"></a>
-<span class="sourceLineNo">424</span>  private SpaceQuotaSnapshotNotifier spaceQuotaSnapshotNotifier;<a name="line.424"></a>
-<span class="sourceLineNo">425</span>  private QuotaObserverChore quotaObserverChore;<a name="line.425"></a>
-<span class="sourceLineNo">426</span>  private SnapshotQuotaObserverChore snapshotQuotaChore;<a name="line.426"></a>
-<span class="sourceLineNo">427</span><a name="line.427"></a>
-<span class="sourceLineNo">428</span>  private ProcedureExecutor&lt;MasterProcedureEnv&gt; procedureExecutor;<a name="line.428"></a>
-<span class="sourceLineNo">429</span>  private WALProcedureStore procedureStore;<a name="line.429"></a>
-<span class="sourceLineNo">430</span><a name="line.430"></a>
-<span class="sourceLineNo">431</span>  // handle table states<a name="line.431"></a>
-<span class="sourceLineNo">432</span>  private TableStateManager tableStateManager;<a name="line.432"></a>
-<span class="sourceLineNo">433</span><a name="line.433"></a>
-<span class="sourceLineNo">434</span>  private long splitPlanCount;<a name="line.434"></a>
-<span class="sourceLineNo">435</span>  private long mergePlanCount;<a name="line.435"></a>
-<span class="sourceLineNo">436</span><a name="line.436"></a>
-<span class="sourceLineNo">437</span>  /* Handle favored nodes information */<a name="line.437"></a>
-<span class="sourceLineNo">438</span>  private FavoredNodesManager favoredNodesManager;<a name="line.438"></a>
-<span class="sourceLineNo">439</span><a name="line.439"></a>
-<span class="sourceLineNo">440</span>  /** jetty server for master to redirect requests to regionserver infoServer */<a name="line.440"></a>
-<span class="sourceLineNo">441</span>  private Server masterJettyServer;<a name="line.441"></a>
-<span class="sourceLineNo">442</span><a name="line.442"></a>
-<span class="sourceLineNo">443</span>  public static class RedirectServlet extends HttpServlet {<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    private static final long serialVersionUID = 2894774810058302473L;<a name="line.444"></a>
-<span class="sourceLineNo">445</span>    private final int regionServerInfoPort;<a name="line.445"></a>
-<span class="sourceLineNo">446</span>    private final String regionServerHostname;<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>     * @param infoServer that we're trying to send all requests to<a name="line.449"></a>
-<span class="sourceLineNo">450</span>     * @param hostname may be null. if given, will be used for redirects instead of host from client.<a name="line.450"></a>
-<span class="sourceLineNo">451</span>     */<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    public RedirectServlet(InfoServer infoServer, String hostname) {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>       regionServerInfoPort = infoServer.getPort();<a name="line.453"></a>
-<span class="sourceLineNo">454</span>       regionServerHostname = hostname;<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 void doGet(HttpServletRequest request,<a name="line.458"></a>
-<span class="sourceLineNo">459</span>        HttpServletResponse response) throws ServletException, IOException {<a name="line.459"></a>
-<span class="sourceLineNo">460</span>      String redirectHost = regionServerHostname;<a name="line.460"></a>
-<span class="sourceLineNo">461</span>      if(redirectHost == null) {<a name="line.461"></a>
-<span class="sourceLineNo">462</span>        redirectHost = request.getServerName();<a name="line.462"></a>
-<span class="sourceLineNo">463</span>        if(!Addressing.isLocalAddress(InetAddress.getByName(redirectHost))) {<a name="line.463"></a>
-<span class="sourceLineNo">464</span>          LOG.warn("Couldn't resolve '" + redirectHost + "' as an address local to this node and '" +<a name="line.464"></a>
-<span class="sourceLineNo">465</span>              MASTER_HOSTNAME_KEY + "' is not set; client will get a HTTP 400 response. If " +<a name="line.465"></a>
-<span class="sourceLineNo">466</span>              "your HBase deployment relies on client accessible names that the region server process " +<a name="line.466"></a>
-<span class="sourceLineNo">467</span>              "can't resolve locally, then you should set the previously mentioned configuration variable " +<a name="line.467"></a>
-<span class="sourceLineNo">468</span>              "to an appropriate hostname.");<a name="line.468"></a>
-<span class="sourceLineNo">469</span>          // no sending client provided input back to the client, so the goal host is just in the logs.<a name="line.469"></a>
-<span class="sourceLineNo">470</span>          response.sendError(400, "Request was to a host that I can't resolve for any of the network interfaces on " +<a name="line.470"></a>
-<span class="sourceLineNo">471</span>              "this node. If this is due to an intermediary such as an HTTP load balancer or other proxy, your HBase " +<a name="line.471"></a>
-<span class="sourceLineNo">472</span>              "administrator can set '" + MASTER_HOSTNAME_KEY + "' to point to the correct hostname.");<a name="line.472"></a>
-<span class="sourceLineNo">473</span>          return;<a name="line.473"></a>
-<span class="sourceLineNo">474</span>        }<a name="line.474"></a>
-<span class="sourceLineNo">475</span>      }<a name="line.475"></a>
-<span class="sourceLineNo">476</span>      // TODO this scheme should come from looking at the scheme registered in the infoserver's http server for the<a name="line.476"></a>
-<span class="sourceLineNo">477</span>      // host and port we're using, but it's buried way too deep to do that ATM.<a name="line.477"></a>
-<span class="sourceLineNo">478</span>      String redirectUrl = request.getScheme() + "://"<a name="line.478"></a>
-<span class="sourceLineNo">479</span>        + redirectHost + ":" + regionServerInfoPort<a name="line.479"></a>
-<span class="sourceLineNo">480</span>        + request.getRequestURI();<a name="line.480"></a>
-<span class="sourceLineNo">481</span>      response.sendRedirect(redirectUrl);<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>  /**<a name="line.485"></a>
-<span class="sourceLineNo">486</span>   * Initializes the HMaster. The steps are as follows:<a name="line.486"></a>
-<span class="sourceLineNo">487</span>   * &lt;p&gt;<a name="line.487"></a>
-<span class="sourceLineNo">488</span>   * &lt;ol&gt;<a name="line.488"></a>
-<span class="sourceLineNo">489</span>   * &lt;li&gt;Initialize the local HRegionServer<a name="line.489"></a>
-<span class="sourceLineNo">490</span>   * &lt;li&gt;Start the ActiveMasterManager.<a name="line.490"></a>
-<span class="sourceLineNo">491</span>   * &lt;/ol&gt;<a name="line.491"></a>
-<span class="sourceLineNo">492</span>   * &lt;p&gt;<a name="line.492"></a>
-<span class="sourceLineNo">493</span>   * Remaining steps of initialization occur in<a name="line.493"></a>
-<span class="sourceLineNo">494</span>   * #finishActiveMasterInitialization(MonitoredTask) after<a name="line.494"></a>
-<span class="sourceLineNo">495</span>   * the master becomes the active one.<a name="line.495"></a>
-<span class="sourceLineNo">496</span>   */<a name="line.496"></a>
-<span class="sourceLineNo">497</span>  public HMaster(final Configuration conf)<a name="line.497"></a>
-<span class="sourceLineNo">498</span>      throws IOException, KeeperException {<a name="line.498"></a>
-<span class="sourceLineNo">499</span>    super(conf);<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    TraceUtil.initTracer(conf);<a name="line.500"></a>
-<span class="sourceLineNo">501</span>    try {<a name="line.501"></a>
-<span class="sourceLineNo">502</span>      this.rsFatals = new MemoryBoundedLogMessageBuffer(<a name="line.502"></a>
-<span class="sourceLineNo">503</span>          conf.getLong("hbase.master.buffer.for.rs.fatals", 1 * 1024 * 1024));<a name="line.503"></a>
-<span class="sourceLineNo">504</span>      LOG.info("hbase.rootdir=" + getRootDir() +<a name="line.504"></a>
-<span class="sourceLineNo">505</span>          ", hbase.cluster.distributed=" + this.conf.getBoolean(HConstants.CLUSTER_DISTRIBUTED, false));<a name="line.505"></a>
-<span class="sourceLineNo">506</span><a name="line.506"></a>
-<span class="sourceLineNo">507</span>      // Disable usage of meta replicas in the master<a name="line.507"></a>
-<span class="sourceLineNo">508</span>      this.conf.setBoolean(HConstants.USE_META_REPLICAS, false);<a name="line.508"></a>
-<span class="sourceLineNo">509</span><a name="line.509"></a>
-<span class="sourceLineNo">510</span>      decorateMasterConfiguration(this.conf);<a name="line.510"></a>
+<span class="sourceLineNo">417</span>  Map&lt;String, Service&gt; coprocessorServiceHandlers = Maps.newHashMap();<a name="line.417"></a>
+<span class="sourceLineNo">418</span><a name="line.418"></a>
+<span class="sourceLineNo">419</span>  // monitor for snapshot of hbase tables<a name="line.419"></a>
+<span class="sourceLineNo">420</span>  SnapshotManager snapshotManager;<a name="line.420"></a>
+<span class="sourceLineNo">421</span>  // monitor for distributed procedures<a name="line.421"></a>
+<span class="sourceLineNo">422</span>  private MasterProcedureManagerHost mpmHost;<a name="line.422"></a>
+<span class="sourceLineNo">423</span><a name="line.423"></a>
+<span class="sourceLineNo">424</span>  // it is assigned after 'ini

<TRUNCATED>

[14/43] hbase-site git commit: Published site at 7ab77518a2569e2416a50020393aa386e7734501.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/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 2f28172..2ff788d 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html
@@ -184,305 +184,307 @@
 <span class="sourceLineNo">176</span>    // set env and directly in order to handle static init/gc issues<a name="line.176"></a>
 <span class="sourceLineNo">177</span>    System.setProperty("zookeeper.preAllocSize", "100");<a name="line.177"></a>
 <span class="sourceLineNo">178</span>    FileTxnLog.setPreallocSize(100 * 1024);<a name="line.178"></a>
-<span class="sourceLineNo">179</span>  }<a name="line.179"></a>
-<span class="sourceLineNo">180</span><a name="line.180"></a>
-<span class="sourceLineNo">181</span>  public int startup(File baseDir) throws IOException, InterruptedException {<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    int numZooKeeperServers = clientPortList.size();<a name="line.182"></a>
-<span class="sourceLineNo">183</span>    if (numZooKeeperServers == 0) {<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      numZooKeeperServers = 1; // need at least 1 ZK server for testing<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    }<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    return startup(baseDir, numZooKeeperServers);<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>   * @param baseDir the base directory to use<a name="line.190"></a>
-<span class="sourceLineNo">191</span>   * @param numZooKeeperServers the number of ZooKeeper servers<a name="line.191"></a>
-<span class="sourceLineNo">192</span>   * @return ClientPort server bound to, -1 if there was a binding problem and we couldn't pick<a name="line.192"></a>
-<span class="sourceLineNo">193</span>   *         another port.<a name="line.193"></a>
-<span class="sourceLineNo">194</span>   * @throws IOException if an operation fails during the startup<a name="line.194"></a>
-<span class="sourceLineNo">195</span>   * @throws InterruptedException if the startup fails<a name="line.195"></a>
-<span class="sourceLineNo">196</span>   */<a name="line.196"></a>
-<span class="sourceLineNo">197</span>  public int startup(File baseDir, int numZooKeeperServers) throws IOException,<a name="line.197"></a>
-<span class="sourceLineNo">198</span>          InterruptedException {<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    if (numZooKeeperServers &lt;= 0) {<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      return -1;<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>    setupTestEnv();<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    shutdown();<a name="line.204"></a>
-<span class="sourceLineNo">205</span><a name="line.205"></a>
-<span class="sourceLineNo">206</span>    int tentativePort = -1; // the seed port<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    int currentClientPort;<a name="line.207"></a>
-<span class="sourceLineNo">208</span><a name="line.208"></a>
-<span class="sourceLineNo">209</span>    // running all the ZK servers<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    for (int i = 0; i &lt; numZooKeeperServers; i++) {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>      File dir = new File(baseDir, "zookeeper_"+i).getAbsoluteFile();<a name="line.211"></a>
-<span class="sourceLineNo">212</span>      createDir(dir);<a name="line.212"></a>
-<span class="sourceLineNo">213</span>      int tickTimeToUse;<a name="line.213"></a>
-<span class="sourceLineNo">214</span>      if (this.tickTime &gt; 0) {<a name="line.214"></a>
-<span class="sourceLineNo">215</span>        tickTimeToUse = this.tickTime;<a name="line.215"></a>
-<span class="sourceLineNo">216</span>      } else {<a name="line.216"></a>
-<span class="sourceLineNo">217</span>        tickTimeToUse = TICK_TIME;<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>      // Set up client port - if we have already had a list of valid ports, use it.<a name="line.220"></a>
-<span class="sourceLineNo">221</span>      if (hasValidClientPortInList(i)) {<a name="line.221"></a>
-<span class="sourceLineNo">222</span>        currentClientPort = clientPortList.get(i);<a name="line.222"></a>
-<span class="sourceLineNo">223</span>      } else {<a name="line.223"></a>
-<span class="sourceLineNo">224</span>        tentativePort = selectClientPort(tentativePort); // update the seed<a name="line.224"></a>
-<span class="sourceLineNo">225</span>        currentClientPort = tentativePort;<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>      ZooKeeperServer server = new ZooKeeperServer(dir, dir, tickTimeToUse);<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      // Setting {min,max}SessionTimeout defaults to be the same as in Zookeeper<a name="line.229"></a>
-<span class="sourceLineNo">230</span>      server.setMinSessionTimeout(configuration.getInt(<a name="line.230"></a>
-<span class="sourceLineNo">231</span>              "hbase.zookeeper.property.minSessionTimeout", -1));<a name="line.231"></a>
-<span class="sourceLineNo">232</span>      server.setMaxSessionTimeout(configuration.getInt(<a name="line.232"></a>
-<span class="sourceLineNo">233</span>              "hbase.zookeeper.property.maxSessionTimeout", -1));<a name="line.233"></a>
-<span class="sourceLineNo">234</span>      NIOServerCnxnFactory standaloneServerFactory;<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      while (true) {<a name="line.235"></a>
-<span class="sourceLineNo">236</span>        try {<a name="line.236"></a>
-<span class="sourceLineNo">237</span>          standaloneServerFactory = new NIOServerCnxnFactory();<a name="line.237"></a>
-<span class="sourceLineNo">238</span>          standaloneServerFactory.configure(<a name="line.238"></a>
-<span class="sourceLineNo">239</span>            new InetSocketAddress(currentClientPort),<a name="line.239"></a>
-<span class="sourceLineNo">240</span>            configuration.getInt(HConstants.ZOOKEEPER_MAX_CLIENT_CNXNS,<a name="line.240"></a>
-<span class="sourceLineNo">241</span>                    HConstants.DEFAULT_ZOOKEEPER_MAX_CLIENT_CNXNS));<a name="line.241"></a>
-<span class="sourceLineNo">242</span>        } catch (BindException e) {<a name="line.242"></a>
-<span class="sourceLineNo">243</span>          LOG.debug("Failed binding ZK Server to client port: " +<a name="line.243"></a>
-<span class="sourceLineNo">244</span>              currentClientPort, e);<a name="line.244"></a>
-<span class="sourceLineNo">245</span>          // We're told to use some port but it's occupied, fail<a name="line.245"></a>
-<span class="sourceLineNo">246</span>          if (hasValidClientPortInList(i)) {<a name="line.246"></a>
-<span class="sourceLineNo">247</span>            return -1;<a name="line.247"></a>
-<span class="sourceLineNo">248</span>          }<a name="line.248"></a>
-<span class="sourceLineNo">249</span>          // This port is already in use, try to use another.<a name="line.249"></a>
-<span class="sourceLineNo">250</span>          tentativePort = selectClientPort(tentativePort);<a name="line.250"></a>
-<span class="sourceLineNo">251</span>          currentClientPort = tentativePort;<a name="line.251"></a>
-<span class="sourceLineNo">252</span>          continue;<a name="line.252"></a>
-<span class="sourceLineNo">253</span>        }<a name="line.253"></a>
-<span class="sourceLineNo">254</span>        break;<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>      // Start up this ZK server<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      standaloneServerFactory.startup(server);<a name="line.258"></a>
-<span class="sourceLineNo">259</span>      // Runs a 'stat' against the servers.<a name="line.259"></a>
-<span class="sourceLineNo">260</span>      if (!waitForServerUp(currentClientPort, connectionTimeout)) {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>        throw new IOException("Waiting for startup of standalone server");<a name="line.261"></a>
-<span class="sourceLineNo">262</span>      }<a name="line.262"></a>
-<span class="sourceLineNo">263</span><a name="line.263"></a>
-<span class="sourceLineNo">264</span>      // We have selected a port as a client port.  Update clientPortList if necessary.<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      if (clientPortList.size() &lt;= i) { // it is not in the list, add the port<a name="line.265"></a>
-<span class="sourceLineNo">266</span>        clientPortList.add(currentClientPort);<a name="line.266"></a>
-<span class="sourceLineNo">267</span>      }<a name="line.267"></a>
-<span class="sourceLineNo">268</span>      else if (clientPortList.get(i) &lt;= 0) { // the list has invalid port, update with valid port<a name="line.268"></a>
-<span class="sourceLineNo">269</span>        clientPortList.remove(i);<a name="line.269"></a>
-<span class="sourceLineNo">270</span>        clientPortList.add(i, currentClientPort);<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>      standaloneServerFactoryList.add(standaloneServerFactory);<a name="line.273"></a>
-<span class="sourceLineNo">274</span>      zooKeeperServers.add(server);<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    }<a name="line.275"></a>
-<span class="sourceLineNo">276</span><a name="line.276"></a>
-<span class="sourceLineNo">277</span>    // set the first one to be active ZK; Others are backups<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    activeZKServerIndex = 0;<a name="line.278"></a>
-<span class="sourceLineNo">279</span>    started = true;<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    int clientPort = clientPortList.get(activeZKServerIndex);<a name="line.280"></a>
-<span class="sourceLineNo">281</span>    LOG.info("Started MiniZooKeeperCluster and ran successful 'stat' " +<a name="line.281"></a>
-<span class="sourceLineNo">282</span>        "on client port=" + clientPort);<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    return clientPort;<a name="line.283"></a>
-<span class="sourceLineNo">284</span>  }<a name="line.284"></a>
-<span class="sourceLineNo">285</span><a name="line.285"></a>
-<span class="sourceLineNo">286</span>  private void createDir(File dir) throws IOException {<a name="line.286"></a>
-<span class="sourceLineNo">287</span>    try {<a name="line.287"></a>
-<span class="sourceLineNo">288</span>      if (!dir.exists()) {<a name="line.288"></a>
-<span class="sourceLineNo">289</span>        dir.mkdirs();<a name="line.289"></a>
-<span class="sourceLineNo">290</span>      }<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    } catch (SecurityException e) {<a name="line.291"></a>
-<span class="sourceLineNo">292</span>      throw new IOException("creating dir: " + dir, e);<a name="line.292"></a>
-<span class="sourceLineNo">293</span>    }<a name="line.293"></a>
-<span class="sourceLineNo">294</span>  }<a name="line.294"></a>
-<span class="sourceLineNo">295</span><a name="line.295"></a>
-<span class="sourceLineNo">296</span>  /**<a name="line.296"></a>
-<span class="sourceLineNo">297</span>   * @throws IOException if waiting for the shutdown of a server fails<a name="line.297"></a>
-<span class="sourceLineNo">298</span>   */<a name="line.298"></a>
-<span class="sourceLineNo">299</span>  public void shutdown() throws IOException {<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    // shut down all the zk servers<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    for (int i = 0; i &lt; standaloneServerFactoryList.size(); i++) {<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      NIOServerCnxnFactory standaloneServerFactory =<a name="line.302"></a>
-<span class="sourceLineNo">303</span>        standaloneServerFactoryList.get(i);<a name="line.303"></a>
-<span class="sourceLineNo">304</span>      int clientPort = clientPortList.get(i);<a name="line.304"></a>
-<span class="sourceLineNo">305</span><a name="line.305"></a>
-<span class="sourceLineNo">306</span>      standaloneServerFactory.shutdown();<a name="line.306"></a>
-<span class="sourceLineNo">307</span>      if (!waitForServerDown(clientPort, connectionTimeout)) {<a name="line.307"></a>
-<span class="sourceLineNo">308</span>        throw new IOException("Waiting for shutdown of standalone server");<a name="line.308"></a>
-<span class="sourceLineNo">309</span>      }<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    }<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    standaloneServerFactoryList.clear();<a name="line.311"></a>
-<span class="sourceLineNo">312</span><a name="line.312"></a>
-<span class="sourceLineNo">313</span>    for (ZooKeeperServer zkServer: zooKeeperServers) {<a name="line.313"></a>
-<span class="sourceLineNo">314</span>      //explicitly close ZKDatabase since ZookeeperServer does not close them<a name="line.314"></a>
-<span class="sourceLineNo">315</span>      zkServer.getZKDatabase().close();<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    }<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    zooKeeperServers.clear();<a name="line.317"></a>
-<span class="sourceLineNo">318</span><a name="line.318"></a>
-<span class="sourceLineNo">319</span>    // clear everything<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    if (started) {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>      started = false;<a name="line.321"></a>
-<span class="sourceLineNo">322</span>      activeZKServerIndex = 0;<a name="line.322"></a>
-<span class="sourceLineNo">323</span>      clientPortList.clear();<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      LOG.info("Shutdown MiniZK cluster with all ZK servers");<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    }<a name="line.325"></a>
-<span class="sourceLineNo">326</span>  }<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>   * @return clientPort return clientPort if there is another ZK backup can run<a name="line.329"></a>
-<span class="sourceLineNo">330</span>   *         when killing the current active; return -1, if there is no backups.<a name="line.330"></a>
-<span class="sourceLineNo">331</span>   * @throws IOException if waiting for the shutdown of a server fails<a name="line.331"></a>
-<span class="sourceLineNo">332</span>   */<a name="line.332"></a>
-<span class="sourceLineNo">333</span>  public int killCurrentActiveZooKeeperServer() throws IOException, InterruptedException {<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    if (!started || activeZKServerIndex &lt; 0) {<a name="line.334"></a>
-<span class="sourceLineNo">335</span>      return -1;<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>    // Shutdown the current active one<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    NIOServerCnxnFactory standaloneServerFactory =<a name="line.339"></a>
-<span class="sourceLineNo">340</span>      standaloneServerFactoryList.get(activeZKServerIndex);<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    int clientPort = clientPortList.get(activeZKServerIndex);<a name="line.341"></a>
-<span class="sourceLineNo">342</span><a name="line.342"></a>
-<span class="sourceLineNo">343</span>    standaloneServerFactory.shutdown();<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    if (!waitForServerDown(clientPort, connectionTimeout)) {<a name="line.344"></a>
-<span class="sourceLineNo">345</span>      throw new IOException("Waiting for shutdown of standalone server");<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>
-<span class="sourceLineNo">348</span>    zooKeeperServers.get(activeZKServerIndex).getZKDatabase().close();<a name="line.348"></a>
+<span class="sourceLineNo">179</span>    // allow all 4 letter words<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    System.setProperty("zookeeper.4lw.commands.whitelist","*");<a name="line.180"></a>
+<span class="sourceLineNo">181</span>  }<a name="line.181"></a>
+<span class="sourceLineNo">182</span><a name="line.182"></a>
+<span class="sourceLineNo">183</span>  public int startup(File baseDir) throws IOException, InterruptedException {<a name="line.183"></a>
+<span class="sourceLineNo">184</span>    int numZooKeeperServers = clientPortList.size();<a name="line.184"></a>
+<span class="sourceLineNo">185</span>    if (numZooKeeperServers == 0) {<a name="line.185"></a>
+<span class="sourceLineNo">186</span>      numZooKeeperServers = 1; // need at least 1 ZK server for testing<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    }<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    return startup(baseDir, numZooKeeperServers);<a name="line.188"></a>
+<span class="sourceLineNo">189</span>  }<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>   * @param baseDir the base directory to use<a name="line.192"></a>
+<span class="sourceLineNo">193</span>   * @param numZooKeeperServers the number of ZooKeeper servers<a name="line.193"></a>
+<span class="sourceLineNo">194</span>   * @return ClientPort server bound to, -1 if there was a binding problem and we couldn't pick<a name="line.194"></a>
+<span class="sourceLineNo">195</span>   *         another port.<a name="line.195"></a>
+<span class="sourceLineNo">196</span>   * @throws IOException if an operation fails during the startup<a name="line.196"></a>
+<span class="sourceLineNo">197</span>   * @throws InterruptedException if the startup fails<a name="line.197"></a>
+<span class="sourceLineNo">198</span>   */<a name="line.198"></a>
+<span class="sourceLineNo">199</span>  public int startup(File baseDir, int numZooKeeperServers) throws IOException,<a name="line.199"></a>
+<span class="sourceLineNo">200</span>          InterruptedException {<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    if (numZooKeeperServers &lt;= 0) {<a name="line.201"></a>
+<span class="sourceLineNo">202</span>      return -1;<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>    setupTestEnv();<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    shutdown();<a name="line.206"></a>
+<span class="sourceLineNo">207</span><a name="line.207"></a>
+<span class="sourceLineNo">208</span>    int tentativePort = -1; // the seed port<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    int currentClientPort;<a name="line.209"></a>
+<span class="sourceLineNo">210</span><a name="line.210"></a>
+<span class="sourceLineNo">211</span>    // running all the ZK servers<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    for (int i = 0; i &lt; numZooKeeperServers; i++) {<a name="line.212"></a>
+<span class="sourceLineNo">213</span>      File dir = new File(baseDir, "zookeeper_"+i).getAbsoluteFile();<a name="line.213"></a>
+<span class="sourceLineNo">214</span>      createDir(dir);<a name="line.214"></a>
+<span class="sourceLineNo">215</span>      int tickTimeToUse;<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      if (this.tickTime &gt; 0) {<a name="line.216"></a>
+<span class="sourceLineNo">217</span>        tickTimeToUse = this.tickTime;<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      } else {<a name="line.218"></a>
+<span class="sourceLineNo">219</span>        tickTimeToUse = TICK_TIME;<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>      // Set up client port - if we have already had a list of valid ports, use it.<a name="line.222"></a>
+<span class="sourceLineNo">223</span>      if (hasValidClientPortInList(i)) {<a name="line.223"></a>
+<span class="sourceLineNo">224</span>        currentClientPort = clientPortList.get(i);<a name="line.224"></a>
+<span class="sourceLineNo">225</span>      } else {<a name="line.225"></a>
+<span class="sourceLineNo">226</span>        tentativePort = selectClientPort(tentativePort); // update the seed<a name="line.226"></a>
+<span class="sourceLineNo">227</span>        currentClientPort = tentativePort;<a name="line.227"></a>
+<span class="sourceLineNo">228</span>      }<a name="line.228"></a>
+<span class="sourceLineNo">229</span><a name="line.229"></a>
+<span class="sourceLineNo">230</span>      ZooKeeperServer server = new ZooKeeperServer(dir, dir, tickTimeToUse);<a name="line.230"></a>
+<span class="sourceLineNo">231</span>      // Setting {min,max}SessionTimeout defaults to be the same as in Zookeeper<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      server.setMinSessionTimeout(configuration.getInt(<a name="line.232"></a>
+<span class="sourceLineNo">233</span>              "hbase.zookeeper.property.minSessionTimeout", -1));<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      server.setMaxSessionTimeout(configuration.getInt(<a name="line.234"></a>
+<span class="sourceLineNo">235</span>              "hbase.zookeeper.property.maxSessionTimeout", -1));<a name="line.235"></a>
+<span class="sourceLineNo">236</span>      NIOServerCnxnFactory standaloneServerFactory;<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      while (true) {<a name="line.237"></a>
+<span class="sourceLineNo">238</span>        try {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>          standaloneServerFactory = new NIOServerCnxnFactory();<a name="line.239"></a>
+<span class="sourceLineNo">240</span>          standaloneServerFactory.configure(<a name="line.240"></a>
+<span class="sourceLineNo">241</span>            new InetSocketAddress(currentClientPort),<a name="line.241"></a>
+<span class="sourceLineNo">242</span>            configuration.getInt(HConstants.ZOOKEEPER_MAX_CLIENT_CNXNS,<a name="line.242"></a>
+<span class="sourceLineNo">243</span>                    HConstants.DEFAULT_ZOOKEEPER_MAX_CLIENT_CNXNS));<a name="line.243"></a>
+<span class="sourceLineNo">244</span>        } catch (BindException e) {<a name="line.244"></a>
+<span class="sourceLineNo">245</span>          LOG.debug("Failed binding ZK Server to client port: " +<a name="line.245"></a>
+<span class="sourceLineNo">246</span>              currentClientPort, e);<a name="line.246"></a>
+<span class="sourceLineNo">247</span>          // We're told to use some port but it's occupied, fail<a name="line.247"></a>
+<span class="sourceLineNo">248</span>          if (hasValidClientPortInList(i)) {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>            return -1;<a name="line.249"></a>
+<span class="sourceLineNo">250</span>          }<a name="line.250"></a>
+<span class="sourceLineNo">251</span>          // This port is already in use, try to use another.<a name="line.251"></a>
+<span class="sourceLineNo">252</span>          tentativePort = selectClientPort(tentativePort);<a name="line.252"></a>
+<span class="sourceLineNo">253</span>          currentClientPort = tentativePort;<a name="line.253"></a>
+<span class="sourceLineNo">254</span>          continue;<a name="line.254"></a>
+<span class="sourceLineNo">255</span>        }<a name="line.255"></a>
+<span class="sourceLineNo">256</span>        break;<a name="line.256"></a>
+<span class="sourceLineNo">257</span>      }<a name="line.257"></a>
+<span class="sourceLineNo">258</span><a name="line.258"></a>
+<span class="sourceLineNo">259</span>      // Start up this ZK server<a name="line.259"></a>
+<span class="sourceLineNo">260</span>      standaloneServerFactory.startup(server);<a name="line.260"></a>
+<span class="sourceLineNo">261</span>      // Runs a 'stat' against the servers.<a name="line.261"></a>
+<span class="sourceLineNo">262</span>      if (!waitForServerUp(currentClientPort, connectionTimeout)) {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>        throw new IOException("Waiting for startup of standalone server");<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">266</span>      // We have selected a port as a client port.  Update clientPortList if necessary.<a name="line.266"></a>
+<span class="sourceLineNo">267</span>      if (clientPortList.size() &lt;= i) { // it is not in the list, add the port<a name="line.267"></a>
+<span class="sourceLineNo">268</span>        clientPortList.add(currentClientPort);<a name="line.268"></a>
+<span class="sourceLineNo">269</span>      }<a name="line.269"></a>
+<span class="sourceLineNo">270</span>      else if (clientPortList.get(i) &lt;= 0) { // the list has invalid port, update with valid port<a name="line.270"></a>
+<span class="sourceLineNo">271</span>        clientPortList.remove(i);<a name="line.271"></a>
+<span class="sourceLineNo">272</span>        clientPortList.add(i, currentClientPort);<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>      standaloneServerFactoryList.add(standaloneServerFactory);<a name="line.275"></a>
+<span class="sourceLineNo">276</span>      zooKeeperServers.add(server);<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>    // set the first one to be active ZK; Others are backups<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    activeZKServerIndex = 0;<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    started = true;<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    int clientPort = clientPortList.get(activeZKServerIndex);<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    LOG.info("Started MiniZooKeeperCluster and ran successful 'stat' " +<a name="line.283"></a>
+<span class="sourceLineNo">284</span>        "on client port=" + clientPort);<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    return clientPort;<a name="line.285"></a>
+<span class="sourceLineNo">286</span>  }<a name="line.286"></a>
+<span class="sourceLineNo">287</span><a name="line.287"></a>
+<span class="sourceLineNo">288</span>  private void createDir(File dir) throws IOException {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    try {<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      if (!dir.exists()) {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        dir.mkdirs();<a name="line.291"></a>
+<span class="sourceLineNo">292</span>      }<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    } catch (SecurityException e) {<a name="line.293"></a>
+<span class="sourceLineNo">294</span>      throw new IOException("creating dir: " + dir, e);<a name="line.294"></a>
+<span class="sourceLineNo">295</span>    }<a name="line.295"></a>
+<span class="sourceLineNo">296</span>  }<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>   * @throws IOException if waiting for the shutdown of a server fails<a name="line.299"></a>
+<span class="sourceLineNo">300</span>   */<a name="line.300"></a>
+<span class="sourceLineNo">301</span>  public void shutdown() throws IOException {<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    // shut down all the zk servers<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    for (int i = 0; i &lt; standaloneServerFactoryList.size(); i++) {<a name="line.303"></a>
+<span class="sourceLineNo">304</span>      NIOServerCnxnFactory standaloneServerFactory =<a name="line.304"></a>
+<span class="sourceLineNo">305</span>        standaloneServerFactoryList.get(i);<a name="line.305"></a>
+<span class="sourceLineNo">306</span>      int clientPort = clientPortList.get(i);<a name="line.306"></a>
+<span class="sourceLineNo">307</span><a name="line.307"></a>
+<span class="sourceLineNo">308</span>      standaloneServerFactory.shutdown();<a name="line.308"></a>
+<span class="sourceLineNo">309</span>      if (!waitForServerDown(clientPort, connectionTimeout)) {<a name="line.309"></a>
+<span class="sourceLineNo">310</span>        throw new IOException("Waiting for shutdown of standalone server");<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>    standaloneServerFactoryList.clear();<a name="line.313"></a>
+<span class="sourceLineNo">314</span><a name="line.314"></a>
+<span class="sourceLineNo">315</span>    for (ZooKeeperServer zkServer: zooKeeperServers) {<a name="line.315"></a>
+<span class="sourceLineNo">316</span>      //explicitly close ZKDatabase since ZookeeperServer does not close them<a name="line.316"></a>
+<span class="sourceLineNo">317</span>      zkServer.getZKDatabase().close();<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    }<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    zooKeeperServers.clear();<a name="line.319"></a>
+<span class="sourceLineNo">320</span><a name="line.320"></a>
+<span class="sourceLineNo">321</span>    // clear everything<a name="line.321"></a>
+<span class="sourceLineNo">322</span>    if (started) {<a name="line.322"></a>
+<span class="sourceLineNo">323</span>      started = false;<a name="line.323"></a>
+<span class="sourceLineNo">324</span>      activeZKServerIndex = 0;<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      clientPortList.clear();<a name="line.325"></a>
+<span class="sourceLineNo">326</span>      LOG.info("Shutdown MiniZK cluster with all ZK servers");<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>   * @return clientPort return clientPort if there is another ZK backup can run<a name="line.331"></a>
+<span class="sourceLineNo">332</span>   *         when killing the current active; return -1, if there is no backups.<a name="line.332"></a>
+<span class="sourceLineNo">333</span>   * @throws IOException if waiting for the shutdown of a server fails<a name="line.333"></a>
+<span class="sourceLineNo">334</span>   */<a name="line.334"></a>
+<span class="sourceLineNo">335</span>  public int killCurrentActiveZooKeeperServer() throws IOException, InterruptedException {<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    if (!started || activeZKServerIndex &lt; 0) {<a name="line.336"></a>
+<span class="sourceLineNo">337</span>      return -1;<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>    // Shutdown the current active one<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    NIOServerCnxnFactory standaloneServerFactory =<a name="line.341"></a>
+<span class="sourceLineNo">342</span>      standaloneServerFactoryList.get(activeZKServerIndex);<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    int clientPort = clientPortList.get(activeZKServerIndex);<a name="line.343"></a>
+<span class="sourceLineNo">344</span><a name="line.344"></a>
+<span class="sourceLineNo">345</span>    standaloneServerFactory.shutdown();<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    if (!waitForServerDown(clientPort, connectionTimeout)) {<a name="line.346"></a>
+<span class="sourceLineNo">347</span>      throw new IOException("Waiting for shutdown of standalone server");<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>    // remove the current active zk server<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    standaloneServerFactoryList.remove(activeZKServerIndex);<a name="line.351"></a>
-<span class="sourceLineNo">352</span>    clientPortList.remove(activeZKServerIndex);<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    zooKeeperServers.remove(activeZKServerIndex);<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    LOG.info("Kill the current active ZK servers in the cluster " +<a name="line.354"></a>
-<span class="sourceLineNo">355</span>        "on client port: " + clientPort);<a name="line.355"></a>
-<span class="sourceLineNo">356</span><a name="line.356"></a>
-<span class="sourceLineNo">357</span>    if (standaloneServerFactoryList.isEmpty()) {<a name="line.357"></a>
-<span class="sourceLineNo">358</span>      // there is no backup servers;<a name="line.358"></a>
-<span class="sourceLineNo">359</span>      return -1;<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    }<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    clientPort = clientPortList.get(activeZKServerIndex);<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    LOG.info("Activate a backup zk server in the cluster " +<a name="line.362"></a>
-<span class="sourceLineNo">363</span>        "on client port: " + clientPort);<a name="line.363"></a>
-<span class="sourceLineNo">364</span>    // return the next back zk server's port<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    return clientPort;<a name="line.365"></a>
-<span class="sourceLineNo">366</span>  }<a name="line.366"></a>
-<span class="sourceLineNo">367</span><a name="line.367"></a>
-<span class="sourceLineNo">368</span>  /**<a name="line.368"></a>
-<span class="sourceLineNo">369</span>   * Kill one back up ZK servers.<a name="line.369"></a>
-<span class="sourceLineNo">370</span>   *<a name="line.370"></a>
-<span class="sourceLineNo">371</span>   * @throws IOException if waiting for the shutdown of a server fails<a name="line.371"></a>
-<span class="sourceLineNo">372</span>   */<a name="line.372"></a>
-<span class="sourceLineNo">373</span>  public void killOneBackupZooKeeperServer() throws IOException, InterruptedException {<a name="line.373"></a>
-<span class="sourceLineNo">374</span>    if (!started || activeZKServerIndex &lt; 0 || standaloneServerFactoryList.size() &lt;= 1) {<a name="line.374"></a>
-<span class="sourceLineNo">375</span>      return ;<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>    int backupZKServerIndex = activeZKServerIndex+1;<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    // Shutdown the current active one<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    NIOServerCnxnFactory standaloneServerFactory =<a name="line.380"></a>
-<span class="sourceLineNo">381</span>      standaloneServerFactoryList.get(backupZKServerIndex);<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    int clientPort = clientPortList.get(backupZKServerIndex);<a name="line.382"></a>
-<span class="sourceLineNo">383</span><a name="line.383"></a>
-<span class="sourceLineNo">384</span>    standaloneServerFactory.shutdown();<a name="line.384"></a>
-<span class="sourceLineNo">385</span>    if (!waitForServerDown(clientPort, connectionTimeout)) {<a name="line.385"></a>
-<span class="sourceLineNo">386</span>      throw new IOException("Waiting for shutdown of standalone server");<a name="line.386"></a>
-<span class="sourceLineNo">387</span>    }<a name="line.387"></a>
-<span class="sourceLineNo">388</span><a name="line.388"></a>
-<span class="sourceLineNo">389</span>    zooKeeperServers.get(backupZKServerIndex).getZKDatabase().close();<a name="line.389"></a>
+<span class="sourceLineNo">350</span>    zooKeeperServers.get(activeZKServerIndex).getZKDatabase().close();<a name="line.350"></a>
+<span class="sourceLineNo">351</span><a name="line.351"></a>
+<span class="sourceLineNo">352</span>    // remove the current active zk server<a name="line.352"></a>
+<span class="sourceLineNo">353</span>    standaloneServerFactoryList.remove(activeZKServerIndex);<a name="line.353"></a>
+<span class="sourceLineNo">354</span>    clientPortList.remove(activeZKServerIndex);<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    zooKeeperServers.remove(activeZKServerIndex);<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    LOG.info("Kill the current active ZK servers in the cluster " +<a name="line.356"></a>
+<span class="sourceLineNo">357</span>        "on client port: " + clientPort);<a name="line.357"></a>
+<span class="sourceLineNo">358</span><a name="line.358"></a>
+<span class="sourceLineNo">359</span>    if (standaloneServerFactoryList.isEmpty()) {<a name="line.359"></a>
+<span class="sourceLineNo">360</span>      // there is no backup servers;<a name="line.360"></a>
+<span class="sourceLineNo">361</span>      return -1;<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    }<a name="line.362"></a>
+<span class="sourceLineNo">363</span>    clientPort = clientPortList.get(activeZKServerIndex);<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    LOG.info("Activate a backup zk server in the cluster " +<a name="line.364"></a>
+<span class="sourceLineNo">365</span>        "on client port: " + clientPort);<a name="line.365"></a>
+<span class="sourceLineNo">366</span>    // return the next back zk server's port<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    return clientPort;<a name="line.367"></a>
+<span class="sourceLineNo">368</span>  }<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>   * Kill one back up ZK servers.<a name="line.371"></a>
+<span class="sourceLineNo">372</span>   *<a name="line.372"></a>
+<span class="sourceLineNo">373</span>   * @throws IOException if waiting for the shutdown of a server fails<a name="line.373"></a>
+<span class="sourceLineNo">374</span>   */<a name="line.374"></a>
+<span class="sourceLineNo">375</span>  public void killOneBackupZooKeeperServer() throws IOException, InterruptedException {<a name="line.375"></a>
+<span class="sourceLineNo">376</span>    if (!started || activeZKServerIndex &lt; 0 || standaloneServerFactoryList.size() &lt;= 1) {<a name="line.376"></a>
+<span class="sourceLineNo">377</span>      return ;<a name="line.377"></a>
+<span class="sourceLineNo">378</span>    }<a name="line.378"></a>
+<span class="sourceLineNo">379</span><a name="line.379"></a>
+<span class="sourceLineNo">380</span>    int backupZKServerIndex = activeZKServerIndex+1;<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    // Shutdown the current active one<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    NIOServerCnxnFactory standaloneServerFactory =<a name="line.382"></a>
+<span class="sourceLineNo">383</span>      standaloneServerFactoryList.get(backupZKServerIndex);<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    int clientPort = clientPortList.get(backupZKServerIndex);<a name="line.384"></a>
+<span class="sourceLineNo">385</span><a name="line.385"></a>
+<span class="sourceLineNo">386</span>    standaloneServerFactory.shutdown();<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    if (!waitForServerDown(clientPort, connectionTimeout)) {<a name="line.387"></a>
+<span class="sourceLineNo">388</span>      throw new IOException("Waiting for shutdown of standalone server");<a name="line.388"></a>
+<span class="sourceLineNo">389</span>    }<a name="line.389"></a>
 <span class="sourceLineNo">390</span><a name="line.390"></a>
-<span class="sourceLineNo">391</span>    // remove this backup zk server<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    standaloneServerFactoryList.remove(backupZKServerIndex);<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    clientPortList.remove(backupZKServerIndex);<a name="line.393"></a>
-<span class="sourceLineNo">394</span>    zooKeeperServers.remove(backupZKServerIndex);<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    LOG.info("Kill one backup ZK servers in the cluster " +<a name="line.395"></a>
-<span class="sourceLineNo">396</span>        "on client port: " + clientPort);<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>  // XXX: From o.a.zk.t.ClientBase<a name="line.399"></a>
-<span class="sourceLineNo">400</span>  private static boolean waitForServerDown(int port, long timeout) throws IOException {<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    long start = System.currentTimeMillis();<a name="line.401"></a>
-<span class="sourceLineNo">402</span>    while (true) {<a name="line.402"></a>
-<span class="sourceLineNo">403</span>      try {<a name="line.403"></a>
-<span class="sourceLineNo">404</span>        Socket sock = new Socket("localhost", port);<a name="line.404"></a>
-<span class="sourceLineNo">405</span>        try {<a name="line.405"></a>
-<span class="sourceLineNo">406</span>          OutputStream outstream = sock.getOutputStream();<a name="line.406"></a>
-<span class="sourceLineNo">407</span>          outstream.write("stat".getBytes());<a name="line.407"></a>
-<span class="sourceLineNo">408</span>          outstream.flush();<a name="line.408"></a>
-<span class="sourceLineNo">409</span>        } finally {<a name="line.409"></a>
-<span class="sourceLineNo">410</span>          sock.close();<a name="line.410"></a>
-<span class="sourceLineNo">411</span>        }<a name="line.411"></a>
-<span class="sourceLineNo">412</span>      } catch (IOException e) {<a name="line.412"></a>
-<span class="sourceLineNo">413</span>        return true;<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>      if (System.currentTimeMillis() &gt; start + timeout) {<a name="line.416"></a>
-<span class="sourceLineNo">417</span>        break;<a name="line.417"></a>
-<span class="sourceLineNo">418</span>      }<a name="line.418"></a>
-<span class="sourceLineNo">419</span>      try {<a name="line.419"></a>
-<span class="sourceLineNo">420</span>        Thread.sleep(250);<a name="line.420"></a>
-<span class="sourceLineNo">421</span>      } catch (InterruptedException e) {<a name="line.421"></a>
-<span class="sourceLineNo">422</span>        throw (InterruptedIOException)new InterruptedIOException().initCause(e);<a name="line.422"></a>
-<span class="sourceLineNo">423</span>      }<a name="line.423"></a>
-<span class="sourceLineNo">424</span>    }<a name="line.424"></a>
-<span class="sourceLineNo">425</span>    return false;<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>  // XXX: From o.a.zk.t.ClientBase<a name="line.428"></a>
-<span class="sourceLineNo">429</span>  private static boolean waitForServerUp(int port, long timeout) throws IOException {<a name="line.429"></a>
-<span class="sourceLineNo">430</span>    long start = System.currentTimeMillis();<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    while (true) {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>      try {<a name="line.432"></a>
-<span class="sourceLineNo">433</span>        Socket sock = new Socket("localhost", port);<a name="line.433"></a>
-<span class="sourceLineNo">434</span>        BufferedReader reader = null;<a name="line.434"></a>
-<span class="sourceLineNo">435</span>        try {<a name="line.435"></a>
-<span class="sourceLineNo">436</span>          OutputStream outstream = sock.getOutputStream();<a name="line.436"></a>
-<span class="sourceLineNo">437</span>          outstream.write("stat".getBytes());<a name="line.437"></a>
-<span class="sourceLineNo">438</span>          outstream.flush();<a name="line.438"></a>
-<span class="sourceLineNo">439</span><a name="line.439"></a>
-<span class="sourceLineNo">440</span>          Reader isr = new InputStreamReader(sock.getInputStream());<a name="line.440"></a>
-<span class="sourceLineNo">441</span>          reader = new BufferedReader(isr);<a name="line.441"></a>
-<span class="sourceLineNo">442</span>          String line = reader.readLine();<a name="line.442"></a>
-<span class="sourceLineNo">443</span>          if (line != null &amp;&amp; line.startsWith("Zookeeper version:")) {<a name="line.443"></a>
-<span class="sourceLineNo">444</span>            return true;<a name="line.444"></a>
-<span class="sourceLineNo">445</span>          }<a name="line.445"></a>
-<span class="sourceLineNo">446</span>        } finally {<a name="line.446"></a>
-<span class="sourceLineNo">447</span>          sock.close();<a name="line.447"></a>
-<span class="sourceLineNo">448</span>          if (reader != null) {<a name="line.448"></a>
-<span class="sourceLineNo">449</span>            reader.close();<a name="line.449"></a>
-<span class="sourceLineNo">450</span>          }<a name="line.450"></a>
-<span class="sourceLineNo">451</span>        }<a name="line.451"></a>
-<span class="sourceLineNo">452</span>      } catch (IOException e) {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>        // ignore as this is expected<a name="line.453"></a>
-<span class="sourceLineNo">454</span>        LOG.info("server localhost:" + port + " not up " + e);<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>      if (System.currentTimeMillis() &gt; start + timeout) {<a name="line.457"></a>
-<span class="sourceLineNo">458</span>        break;<a name="line.458"></a>
-<span class="sourceLineNo">459</span>      }<a name="line.459"></a>
-<span class="sourceLineNo">460</span>      try {<a name="line.460"></a>
-<span class="sourceLineNo">461</span>        Thread.sleep(250);<a name="line.461"></a>
-<span class="sourceLineNo">462</span>      } catch (InterruptedException e) {<a name="line.462"></a>
-<span class="sourceLineNo">463</span>        throw (InterruptedIOException)new InterruptedIOException().initCause(e);<a name="line.463"></a>
-<span class="sourceLineNo">464</span>      }<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    }<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    return false;<a name="line.466"></a>
-<span class="sourceLineNo">467</span>  }<a name="line.467"></a>
-<span class="sourceLineNo">468</span><a name="line.468"></a>
-<span class="sourceLineNo">469</span>  public int getClientPort() {<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    return activeZKServerIndex &lt; 0 || activeZKServerIndex &gt;= clientPortList.size() ? -1<a name="line.470"></a>
-<span class="sourceLineNo">471</span>        : clientPortList.get(activeZKServerIndex);<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>  List&lt;ZooKeeperServer&gt; getZooKeeperServers() {<a name="line.474"></a>
-<span class="sourceLineNo">475</span>    return zooKeeperServers;<a name="line.475"></a>
-<span class="sourceLineNo">476</span>  }<a name="line.476"></a>
-<span class="sourceLineNo">477</span>}<a name="line.477"></a>
+<span class="sourceLineNo">391</span>    zooKeeperServers.get(backupZKServerIndex).getZKDatabase().close();<a name="line.391"></a>
+<span class="sourceLineNo">392</span><a name="line.392"></a>
+<span class="sourceLineNo">393</span>    // remove this backup zk server<a name="line.393"></a>
+<span class="sourceLineNo">394</span>    standaloneServerFactoryList.remove(backupZKServerIndex);<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    clientPortList.remove(backupZKServerIndex);<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    zooKeeperServers.remove(backupZKServerIndex);<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    LOG.info("Kill one backup ZK servers in the cluster " +<a name="line.397"></a>
+<span class="sourceLineNo">398</span>        "on client port: " + clientPort);<a name="line.398"></a>
+<span class="sourceLineNo">399</span>  }<a name="line.399"></a>
+<span class="sourceLineNo">400</span><a name="line.400"></a>
+<span class="sourceLineNo">401</span>  // XXX: From o.a.zk.t.ClientBase<a name="line.401"></a>
+<span class="sourceLineNo">402</span>  private static boolean waitForServerDown(int port, long timeout) throws IOException {<a name="line.402"></a>
+<span class="sourceLineNo">403</span>    long start = System.currentTimeMillis();<a name="line.403"></a>
+<span class="sourceLineNo">404</span>    while (true) {<a name="line.404"></a>
+<span class="sourceLineNo">405</span>      try {<a name="line.405"></a>
+<span class="sourceLineNo">406</span>        Socket sock = new Socket("localhost", port);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>        try {<a name="line.407"></a>
+<span class="sourceLineNo">408</span>          OutputStream outstream = sock.getOutputStream();<a name="line.408"></a>
+<span class="sourceLineNo">409</span>          outstream.write("stat".getBytes());<a name="line.409"></a>
+<span class="sourceLineNo">410</span>          outstream.flush();<a name="line.410"></a>
+<span class="sourceLineNo">411</span>        } finally {<a name="line.411"></a>
+<span class="sourceLineNo">412</span>          sock.close();<a name="line.412"></a>
+<span class="sourceLineNo">413</span>        }<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      } catch (IOException e) {<a name="line.414"></a>
+<span class="sourceLineNo">415</span>        return true;<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>      if (System.currentTimeMillis() &gt; start + timeout) {<a name="line.418"></a>
+<span class="sourceLineNo">419</span>        break;<a name="line.419"></a>
+<span class="sourceLineNo">420</span>      }<a name="line.420"></a>
+<span class="sourceLineNo">421</span>      try {<a name="line.421"></a>
+<span class="sourceLineNo">422</span>        Thread.sleep(250);<a name="line.422"></a>
+<span class="sourceLineNo">423</span>      } catch (InterruptedException e) {<a name="line.423"></a>
+<span class="sourceLineNo">424</span>        throw (InterruptedIOException)new InterruptedIOException().initCause(e);<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>    return false;<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>  // XXX: From o.a.zk.t.ClientBase<a name="line.430"></a>
+<span class="sourceLineNo">431</span>  private static boolean waitForServerUp(int port, long timeout) throws IOException {<a name="line.431"></a>
+<span class="sourceLineNo">432</span>    long start = System.currentTimeMillis();<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    while (true) {<a name="line.433"></a>
+<span class="sourceLineNo">434</span>      try {<a name="line.434"></a>
+<span class="sourceLineNo">435</span>        Socket sock = new Socket("localhost", port);<a name="line.435"></a>
+<span class="sourceLineNo">436</span>        BufferedReader reader = null;<a name="line.436"></a>
+<span class="sourceLineNo">437</span>        try {<a name="line.437"></a>
+<span class="sourceLineNo">438</span>          OutputStream outstream = sock.getOutputStream();<a name="line.438"></a>
+<span class="sourceLineNo">439</span>          outstream.write("stat".getBytes());<a name="line.439"></a>
+<span class="sourceLineNo">440</span>          outstream.flush();<a name="line.440"></a>
+<span class="sourceLineNo">441</span><a name="line.441"></a>
+<span class="sourceLineNo">442</span>          Reader isr = new InputStreamReader(sock.getInputStream());<a name="line.442"></a>
+<span class="sourceLineNo">443</span>          reader = new BufferedReader(isr);<a name="line.443"></a>
+<span class="sourceLineNo">444</span>          String line = reader.readLine();<a name="line.444"></a>
+<span class="sourceLineNo">445</span>          if (line != null &amp;&amp; line.startsWith("Zookeeper version:")) {<a name="line.445"></a>
+<span class="sourceLineNo">446</span>            return true;<a name="line.446"></a>
+<span class="sourceLineNo">447</span>          }<a name="line.447"></a>
+<span class="sourceLineNo">448</span>        } finally {<a name="line.448"></a>
+<span class="sourceLineNo">449</span>          sock.close();<a name="line.449"></a>
+<span class="sourceLineNo">450</span>          if (reader != null) {<a name="line.450"></a>
+<span class="sourceLineNo">451</span>            reader.close();<a name="line.451"></a>
+<span class="sourceLineNo">452</span>          }<a name="line.452"></a>
+<span class="sourceLineNo">453</span>        }<a name="line.453"></a>
+<span class="sourceLineNo">454</span>      } catch (IOException e) {<a name="line.454"></a>
+<span class="sourceLineNo">455</span>        // ignore as this is expected<a name="line.455"></a>
+<span class="sourceLineNo">456</span>        LOG.info("server localhost:" + port + " not up " + e);<a name="line.456"></a>
+<span class="sourceLineNo">457</span>      }<a name="line.457"></a>
+<span class="sourceLineNo">458</span><a name="line.458"></a>
+<span class="sourceLineNo">459</span>      if (System.currentTimeMillis() &gt; start + timeout) {<a name="line.459"></a>
+<span class="sourceLineNo">460</span>        break;<a name="line.460"></a>
+<span class="sourceLineNo">461</span>      }<a name="line.461"></a>
+<span class="sourceLineNo">462</span>      try {<a name="line.462"></a>
+<span class="sourceLineNo">463</span>        Thread.sleep(250);<a name="line.463"></a>
+<span class="sourceLineNo">464</span>      } catch (InterruptedException e) {<a name="line.464"></a>
+<span class="sourceLineNo">465</span>        throw (InterruptedIOException)new InterruptedIOException().initCause(e);<a name="line.465"></a>
+<span class="sourceLineNo">466</span>      }<a name="line.466"></a>
+<span class="sourceLineNo">467</span>    }<a name="line.467"></a>
+<span class="sourceLineNo">468</span>    return false;<a name="line.468"></a>
+<span class="sourceLineNo">469</span>  }<a name="line.469"></a>
+<span class="sourceLineNo">470</span><a name="line.470"></a>
+<span class="sourceLineNo">471</span>  public int getClientPort() {<a name="line.471"></a>
+<span class="sourceLineNo">472</span>    return activeZKServerIndex &lt; 0 || activeZKServerIndex &gt;= clientPortList.size() ? -1<a name="line.472"></a>
+<span class="sourceLineNo">473</span>        : clientPortList.get(activeZKServerIndex);<a name="line.473"></a>
+<span class="sourceLineNo">474</span>  }<a name="line.474"></a>
+<span class="sourceLineNo">475</span><a name="line.475"></a>
+<span class="sourceLineNo">476</span>  List&lt;ZooKeeperServer&gt; getZooKeeperServers() {<a name="line.476"></a>
+<span class="sourceLineNo">477</span>    return zooKeeperServers;<a name="line.477"></a>
+<span class="sourceLineNo">478</span>  }<a name="line.478"></a>
+<span class="sourceLineNo">479</span>}<a name="line.479"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/downloads.html
----------------------------------------------------------------------
diff --git a/downloads.html b/downloads.html
index 3a90676..fc53541 100644
--- a/downloads.html
+++ b/downloads.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="20180921" />
+    <meta name="Date-Revision-yyyymmdd" content="20180922" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Apache HBase Downloads</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -423,7 +423,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: 2018-09-21</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-22</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/export_control.html
----------------------------------------------------------------------
diff --git a/export_control.html b/export_control.html
index 967796d..efe5252 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="20180921" />
+    <meta name="Date-Revision-yyyymmdd" content="20180922" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Export Control
@@ -331,7 +331,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: 2018-09-21</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-22</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/index.html
----------------------------------------------------------------------
diff --git a/index.html b/index.html
index 3284808..9df26d9 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="20180921" />
+    <meta name="Date-Revision-yyyymmdd" content="20180922" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Apache HBaseâ„¢ Home</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -411,7 +411,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: 2018-09-21</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-22</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/integration.html
----------------------------------------------------------------------
diff --git a/integration.html b/integration.html
index d21b960..90a0374 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="20180921" />
+    <meta name="Date-Revision-yyyymmdd" content="20180922" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; CI Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -291,7 +291,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-09-21</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-22</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/issue-tracking.html
----------------------------------------------------------------------
diff --git a/issue-tracking.html b/issue-tracking.html
index 7d2baa7..e238c77 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="20180921" />
+    <meta name="Date-Revision-yyyymmdd" content="20180922" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Issue Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -288,7 +288,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-09-21</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-22</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/license.html
----------------------------------------------------------------------
diff --git a/license.html b/license.html
index 3ce5cbc..c26b1b1 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="20180921" />
+    <meta name="Date-Revision-yyyymmdd" content="20180922" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Licenses</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -491,7 +491,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-09-21</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-22</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/mail-lists.html
----------------------------------------------------------------------
diff --git a/mail-lists.html b/mail-lists.html
index 8de8dc0..5c94666 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="20180921" />
+    <meta name="Date-Revision-yyyymmdd" content="20180922" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Mailing Lists</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -341,7 +341,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-09-21</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-22</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/metrics.html
----------------------------------------------------------------------
diff --git a/metrics.html b/metrics.html
index b7319df..56ae0b2 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="20180921" />
+    <meta name="Date-Revision-yyyymmdd" content="20180922" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Apache HBase (TM) Metrics
@@ -459,7 +459,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: 2018-09-21</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-22</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/old_news.html
----------------------------------------------------------------------
diff --git a/old_news.html b/old_news.html
index 2969336..de53383 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="20180921" />
+    <meta name="Date-Revision-yyyymmdd" content="20180922" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Old Apache HBase (TM) News
@@ -440,7 +440,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: 2018-09-21</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-22</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/plugin-management.html
----------------------------------------------------------------------
diff --git a/plugin-management.html b/plugin-management.html
index 83e2edf..81a01e2 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="20180921" />
+    <meta name="Date-Revision-yyyymmdd" content="20180922" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Plugin Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -440,7 +440,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-09-21</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-22</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/plugins.html
----------------------------------------------------------------------
diff --git a/plugins.html b/plugins.html
index 47389c7..ef0ef88 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="20180921" />
+    <meta name="Date-Revision-yyyymmdd" content="20180922" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Plugins</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -375,7 +375,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-09-21</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-22</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/poweredbyhbase.html
----------------------------------------------------------------------
diff --git a/poweredbyhbase.html b/poweredbyhbase.html
index 7c8a2b0..51cc58c 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="20180921" />
+    <meta name="Date-Revision-yyyymmdd" content="20180922" />
     <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.4-HBase.min.css" />
@@ -769,7 +769,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: 2018-09-21</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-22</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/project-info.html
----------------------------------------------------------------------
diff --git a/project-info.html b/project-info.html
index 13f1271..60eb715 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="20180921" />
+    <meta name="Date-Revision-yyyymmdd" content="20180922" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -335,7 +335,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-09-21</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-22</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/project-reports.html
----------------------------------------------------------------------
diff --git a/project-reports.html b/project-reports.html
index 599cd93..6774478 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="20180921" />
+    <meta name="Date-Revision-yyyymmdd" content="20180922" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Generated Reports</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -305,7 +305,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-09-21</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-22</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/project-summary.html
----------------------------------------------------------------------
diff --git a/project-summary.html b/project-summary.html
index 593f0c0..5de3b2e 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="20180921" />
+    <meta name="Date-Revision-yyyymmdd" content="20180922" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Summary</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -331,7 +331,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-09-21</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-22</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/pseudo-distributed.html
----------------------------------------------------------------------
diff --git a/pseudo-distributed.html b/pseudo-distributed.html
index 48dbfee..1324197 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="20180921" />
+    <meta name="Date-Revision-yyyymmdd" content="20180922" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
 Running Apache HBase (TM) in pseudo-distributed mode
@@ -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: 2018-09-21</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-22</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/replication.html
----------------------------------------------------------------------
diff --git a/replication.html b/replication.html
index e5ad8c0..df3ed4d 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="20180921" />
+    <meta name="Date-Revision-yyyymmdd" content="20180922" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Apache HBase (TM) Replication
@@ -303,7 +303,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: 2018-09-21</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-22</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/resources.html
----------------------------------------------------------------------
diff --git a/resources.html b/resources.html
index df15b35..1fc4741 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="20180921" />
+    <meta name="Date-Revision-yyyymmdd" content="20180922" />
     <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.4-HBase.min.css" />
@@ -331,7 +331,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: 2018-09-21</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-22</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/source-repository.html
----------------------------------------------------------------------
diff --git a/source-repository.html b/source-repository.html
index cc7efa0..f6dba2b 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="20180921" />
+    <meta name="Date-Revision-yyyymmdd" content="20180922" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Source Code Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -299,7 +299,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-09-21</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-22</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/sponsors.html
----------------------------------------------------------------------
diff --git a/sponsors.html b/sponsors.html
index ae65fed..07fe099 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="20180921" />
+    <meta name="Date-Revision-yyyymmdd" content="20180922" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Apache HBase™ Sponsors</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -333,7 +333,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: 2018-09-21</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-22</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/supportingprojects.html
----------------------------------------------------------------------
diff --git a/supportingprojects.html b/supportingprojects.html
index 1966fbe..26c58ce 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="20180921" />
+    <meta name="Date-Revision-yyyymmdd" content="20180922" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Supporting Projects</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -520,7 +520,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: 2018-09-21</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-22</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/team-list.html
----------------------------------------------------------------------
diff --git a/team-list.html b/team-list.html
index f67270c..064cb59 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="20180921" />
+    <meta name="Date-Revision-yyyymmdd" content="20180922" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Team</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -754,7 +754,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-09-21</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-22</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/testdevapidocs/allclasses-frame.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/allclasses-frame.html b/testdevapidocs/allclasses-frame.html
index c5ec25b..ab3f8dd 100644
--- a/testdevapidocs/allclasses-frame.html
+++ b/testdevapidocs/allclasses-frame.html
@@ -1935,6 +1935,7 @@
 <li><a href="org/apache/hadoop/hbase/mapred/TestRowCounter.OutputReader.html" title="class in org.apache.hadoop.hbase.mapred" target="classFrame">TestRowCounter.OutputReader</a></li>
 <li><a href="org/apache/hadoop/hbase/mapred/TestRowCounter.Outs.html" title="enum in org.apache.hadoop.hbase.mapred" target="classFrame">TestRowCounter.Outs</a></li>
 <li><a href="org/apache/hadoop/hbase/rest/model/TestRowModel.html" title="class in org.apache.hadoop.hbase.rest.model" target="classFrame">TestRowModel</a></li>
+<li><a href="org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestRowPrefixBloomFilter</a></li>
 <li><a href="org/apache/hadoop/hbase/coprocessor/TestRowProcessorEndpoint.html" title="class in org.apache.hadoop.hbase.coprocessor" target="classFrame">TestRowProcessorEndpoint</a></li>
 <li><a href="org/apache/hadoop/hbase/coprocessor/TestRowProcessorEndpoint.RowProcessorEndpoint.html" title="class in org.apache.hadoop.hbase.coprocessor" target="classFrame">TestRowProcessorEndpoint.RowProcessorEndpoint</a></li>
 <li><a href="org/apache/hadoop/hbase/coprocessor/TestRowProcessorEndpoint.RowProcessorEndpoint.FriendsOfFriendsProcessor.html" title="class in org.apache.hadoop.hbase.coprocessor" target="classFrame">TestRowProcessorEndpoint.RowProcessorEndpoint.FriendsOfFriendsProcessor</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/testdevapidocs/allclasses-noframe.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/allclasses-noframe.html b/testdevapidocs/allclasses-noframe.html
index 5bdc983..1cc5d78 100644
--- a/testdevapidocs/allclasses-noframe.html
+++ b/testdevapidocs/allclasses-noframe.html
@@ -1935,6 +1935,7 @@
 <li><a href="org/apache/hadoop/hbase/mapred/TestRowCounter.OutputReader.html" title="class in org.apache.hadoop.hbase.mapred">TestRowCounter.OutputReader</a></li>
 <li><a href="org/apache/hadoop/hbase/mapred/TestRowCounter.Outs.html" title="enum in org.apache.hadoop.hbase.mapred">TestRowCounter.Outs</a></li>
 <li><a href="org/apache/hadoop/hbase/rest/model/TestRowModel.html" title="class in org.apache.hadoop.hbase.rest.model">TestRowModel</a></li>
+<li><a href="org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html" title="class in org.apache.hadoop.hbase.regionserver">TestRowPrefixBloomFilter</a></li>
 <li><a href="org/apache/hadoop/hbase/coprocessor/TestRowProcessorEndpoint.html" title="class in org.apache.hadoop.hbase.coprocessor">TestRowProcessorEndpoint</a></li>
 <li><a href="org/apache/hadoop/hbase/coprocessor/TestRowProcessorEndpoint.RowProcessorEndpoint.html" title="class in org.apache.hadoop.hbase.coprocessor">TestRowProcessorEndpoint.RowProcessorEndpoint</a></li>
 <li><a href="org/apache/hadoop/hbase/coprocessor/TestRowProcessorEndpoint.RowProcessorEndpoint.FriendsOfFriendsProcessor.html" title="class in org.apache.hadoop.hbase.coprocessor">TestRowProcessorEndpoint.RowProcessorEndpoint.FriendsOfFriendsProcessor</a></li>


[15/43] hbase-site git commit: Published site at 7ab77518a2569e2416a50020393aa386e7734501.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/devapidocs/src-html/org/apache/hadoop/hbase/util/BloomFilterChunk.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/util/BloomFilterChunk.html b/devapidocs/src-html/org/apache/hadoop/hbase/util/BloomFilterChunk.html
index 3464580..b1a17d7 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/util/BloomFilterChunk.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/util/BloomFilterChunk.html
@@ -195,12 +195,12 @@
 <span class="sourceLineNo">187</span>    int hash1;<a name="line.187"></a>
 <span class="sourceLineNo">188</span>    int hash2;<a name="line.188"></a>
 <span class="sourceLineNo">189</span>    HashKey&lt;Cell&gt; hashKey;<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    if (this.bloomType == BloomType.ROW) {<a name="line.190"></a>
-<span class="sourceLineNo">191</span>      hashKey = new RowBloomHashKey(cell);<a name="line.191"></a>
+<span class="sourceLineNo">190</span>    if (this.bloomType == BloomType.ROWCOL) {<a name="line.190"></a>
+<span class="sourceLineNo">191</span>      hashKey = new RowColBloomHashKey(cell);<a name="line.191"></a>
 <span class="sourceLineNo">192</span>      hash1 = this.hash.hash(hashKey, 0);<a name="line.192"></a>
 <span class="sourceLineNo">193</span>      hash2 = this.hash.hash(hashKey, hash1);<a name="line.193"></a>
 <span class="sourceLineNo">194</span>    } else {<a name="line.194"></a>
-<span class="sourceLineNo">195</span>      hashKey = new RowColBloomHashKey(cell);<a name="line.195"></a>
+<span class="sourceLineNo">195</span>      hashKey = new RowBloomHashKey(cell);<a name="line.195"></a>
 <span class="sourceLineNo">196</span>      hash1 = this.hash.hash(hashKey, 0);<a name="line.196"></a>
 <span class="sourceLineNo">197</span>      hash2 = this.hash.hash(hashKey, hash1);<a name="line.197"></a>
 <span class="sourceLineNo">198</span>    }<a name="line.198"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/devapidocs/src-html/org/apache/hadoop/hbase/util/BloomFilterUtil.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/util/BloomFilterUtil.html b/devapidocs/src-html/org/apache/hadoop/hbase/util/BloomFilterUtil.html
index ae6ba83..4f3415b 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/util/BloomFilterUtil.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/util/BloomFilterUtil.html
@@ -28,271 +28,317 @@
 <span class="sourceLineNo">020</span>import java.text.NumberFormat;<a name="line.20"></a>
 <span class="sourceLineNo">021</span>import java.util.Random;<a name="line.21"></a>
 <span class="sourceLineNo">022</span><a name="line.22"></a>
-<span class="sourceLineNo">023</span>import org.apache.hadoop.hbase.Cell;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import org.apache.hadoop.hbase.nio.ByteBuff;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.regionserver.BloomType;<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>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.28"></a>
+<span class="sourceLineNo">023</span>import org.apache.hadoop.conf.Configuration;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import org.apache.hadoop.hbase.Cell;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.HConstants;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.nio.ByteBuff;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.regionserver.BloomType;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.yetus.audience.InterfaceAudience;<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> * Utility methods related to BloomFilters<a name="line.31"></a>
-<span class="sourceLineNo">032</span> */<a name="line.32"></a>
-<span class="sourceLineNo">033</span>@InterfaceAudience.Private<a name="line.33"></a>
-<span class="sourceLineNo">034</span>public final class BloomFilterUtil {<a name="line.34"></a>
-<span class="sourceLineNo">035</span><a name="line.35"></a>
-<span class="sourceLineNo">036</span>  /** Record separator for the Bloom filter statistics human-readable string */<a name="line.36"></a>
-<span class="sourceLineNo">037</span>  public static final String STATS_RECORD_SEP = "; ";<a name="line.37"></a>
-<span class="sourceLineNo">038</span>  /**<a name="line.38"></a>
-<span class="sourceLineNo">039</span>   * Used in computing the optimal Bloom filter size. This approximately equals<a name="line.39"></a>
-<span class="sourceLineNo">040</span>   * 0.480453.<a name="line.40"></a>
-<span class="sourceLineNo">041</span>   */<a name="line.41"></a>
-<span class="sourceLineNo">042</span>  public static final double LOG2_SQUARED = Math.log(2) * Math.log(2);<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 random number generator to use for "fake lookups" when testing to<a name="line.45"></a>
-<span class="sourceLineNo">046</span>   * estimate the ideal false positive rate.<a name="line.46"></a>
-<span class="sourceLineNo">047</span>   */<a name="line.47"></a>
-<span class="sourceLineNo">048</span>  private static Random randomGeneratorForTest;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>  <a name="line.49"></a>
-<span class="sourceLineNo">050</span>  /** Bit-value lookup array to prevent doing the same work over and over */<a name="line.50"></a>
-<span class="sourceLineNo">051</span>  public static final byte [] bitvals = {<a name="line.51"></a>
-<span class="sourceLineNo">052</span>    (byte) 0x01,<a name="line.52"></a>
-<span class="sourceLineNo">053</span>    (byte) 0x02,<a name="line.53"></a>
-<span class="sourceLineNo">054</span>    (byte) 0x04,<a name="line.54"></a>
-<span class="sourceLineNo">055</span>    (byte) 0x08,<a name="line.55"></a>
-<span class="sourceLineNo">056</span>    (byte) 0x10,<a name="line.56"></a>
-<span class="sourceLineNo">057</span>    (byte) 0x20,<a name="line.57"></a>
-<span class="sourceLineNo">058</span>    (byte) 0x40,<a name="line.58"></a>
-<span class="sourceLineNo">059</span>    (byte) 0x80<a name="line.59"></a>
-<span class="sourceLineNo">060</span>  };<a name="line.60"></a>
-<span class="sourceLineNo">061</span><a name="line.61"></a>
-<span class="sourceLineNo">062</span>  /**<a name="line.62"></a>
-<span class="sourceLineNo">063</span>   * Private constructor to keep this class from being instantiated.<a name="line.63"></a>
-<span class="sourceLineNo">064</span>   */<a name="line.64"></a>
-<span class="sourceLineNo">065</span>  private BloomFilterUtil() {<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 name="line.68"></a>
-<span class="sourceLineNo">069</span>   * @param maxKeys<a name="line.69"></a>
-<span class="sourceLineNo">070</span>   * @param errorRate<a name="line.70"></a>
-<span class="sourceLineNo">071</span>   * @return the number of bits for a Bloom filter than can hold the given<a name="line.71"></a>
-<span class="sourceLineNo">072</span>   *         number of keys and provide the given error rate, assuming that the<a name="line.72"></a>
-<span class="sourceLineNo">073</span>   *         optimal number of hash functions is used and it does not have to<a name="line.73"></a>
-<span class="sourceLineNo">074</span>   *         be an integer.<a name="line.74"></a>
-<span class="sourceLineNo">075</span>   */<a name="line.75"></a>
-<span class="sourceLineNo">076</span>  public static long computeBitSize(long maxKeys, double errorRate) {<a name="line.76"></a>
-<span class="sourceLineNo">077</span>    return (long) Math.ceil(maxKeys * (-Math.log(errorRate) / LOG2_SQUARED));<a name="line.77"></a>
-<span class="sourceLineNo">078</span>  }<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>   * Sets a random generator to be used for look-ups instead of computing hashes. Can be used to<a name="line.81"></a>
-<span class="sourceLineNo">082</span>   * simulate uniformity of accesses better in a test environment. Should not be set in a real<a name="line.82"></a>
-<span class="sourceLineNo">083</span>   * environment where correctness matters!<a name="line.83"></a>
-<span class="sourceLineNo">084</span>   * &lt;p&gt;<a name="line.84"></a>
-<span class="sourceLineNo">085</span> *   This gets used in {@link #contains(ByteBuff, int, int, Hash, int, HashKey)}<a name="line.85"></a>
-<span class="sourceLineNo">086</span>   * @param random The random number source to use, or null to compute actual hashes<a name="line.86"></a>
-<span class="sourceLineNo">087</span>   */<a name="line.87"></a>
-<span class="sourceLineNo">088</span>  @VisibleForTesting<a name="line.88"></a>
-<span class="sourceLineNo">089</span>  public static void setRandomGeneratorForTest(Random random) {<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    randomGeneratorForTest = random;<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>   * The maximum number of keys we can put into a Bloom filter of a certain<a name="line.94"></a>
-<span class="sourceLineNo">095</span>   * size to maintain the given error rate, assuming the number of hash<a name="line.95"></a>
-<span class="sourceLineNo">096</span>   * functions is chosen optimally and does not even have to be an integer<a name="line.96"></a>
-<span class="sourceLineNo">097</span>   * (hence the "ideal" in the function name).<a name="line.97"></a>
-<span class="sourceLineNo">098</span>   *<a name="line.98"></a>
-<span class="sourceLineNo">099</span>   * @param bitSize<a name="line.99"></a>
-<span class="sourceLineNo">100</span>   * @param errorRate<a name="line.100"></a>
-<span class="sourceLineNo">101</span>   * @return maximum number of keys that can be inserted into the Bloom filter<a name="line.101"></a>
-<span class="sourceLineNo">102</span>   * @see #computeMaxKeys(long, double, int) for a more precise estimate<a name="line.102"></a>
-<span class="sourceLineNo">103</span>   */<a name="line.103"></a>
-<span class="sourceLineNo">104</span>  public static long idealMaxKeys(long bitSize, double errorRate) {<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    // The reason we need to use floor here is that otherwise we might put<a name="line.105"></a>
-<span class="sourceLineNo">106</span>    // more keys in a Bloom filter than is allowed by the target error rate.<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    return (long) (bitSize * (LOG2_SQUARED / -Math.log(errorRate)));<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>  /**<a name="line.110"></a>
-<span class="sourceLineNo">111</span>   * The maximum number of keys we can put into a Bloom filter of a certain<a name="line.111"></a>
-<span class="sourceLineNo">112</span>   * size to get the given error rate, with the given number of hash functions.<a name="line.112"></a>
-<span class="sourceLineNo">113</span>   *<a name="line.113"></a>
-<span class="sourceLineNo">114</span>   * @param bitSize<a name="line.114"></a>
-<span class="sourceLineNo">115</span>   * @param errorRate<a name="line.115"></a>
-<span class="sourceLineNo">116</span>   * @param hashCount<a name="line.116"></a>
-<span class="sourceLineNo">117</span>   * @return the maximum number of keys that can be inserted in a Bloom filter<a name="line.117"></a>
-<span class="sourceLineNo">118</span>   *         to maintain the target error rate, if the number of hash functions<a name="line.118"></a>
-<span class="sourceLineNo">119</span>   *         is provided.<a name="line.119"></a>
-<span class="sourceLineNo">120</span>   */<a name="line.120"></a>
-<span class="sourceLineNo">121</span>  public static long computeMaxKeys(long bitSize, double errorRate,<a name="line.121"></a>
-<span class="sourceLineNo">122</span>      int hashCount) {<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    return (long) (-bitSize * 1.0 / hashCount *<a name="line.123"></a>
-<span class="sourceLineNo">124</span>        Math.log(1 - Math.exp(Math.log(errorRate) / hashCount)));<a name="line.124"></a>
-<span class="sourceLineNo">125</span>  }<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>   * Computes the actual error rate for the given number of elements, number<a name="line.128"></a>
-<span class="sourceLineNo">129</span>   * of bits, and number of hash functions. Taken directly from the<a name="line.129"></a>
-<span class="sourceLineNo">130</span>   * &lt;a href=<a name="line.130"></a>
-<span class="sourceLineNo">131</span>   * "http://en.wikipedia.org/wiki/Bloom_filter#Probability_of_false_positives"<a name="line.131"></a>
-<span class="sourceLineNo">132</span>   * &gt; Wikipedia Bloom filter article&lt;/a&gt;.<a name="line.132"></a>
-<span class="sourceLineNo">133</span>   *<a name="line.133"></a>
-<span class="sourceLineNo">134</span>   * @param maxKeys<a name="line.134"></a>
-<span class="sourceLineNo">135</span>   * @param bitSize<a name="line.135"></a>
-<span class="sourceLineNo">136</span>   * @param functionCount<a name="line.136"></a>
-<span class="sourceLineNo">137</span>   * @return the actual error rate<a name="line.137"></a>
-<span class="sourceLineNo">138</span>   */<a name="line.138"></a>
-<span class="sourceLineNo">139</span>  public static double actualErrorRate(long maxKeys, long bitSize,<a name="line.139"></a>
-<span class="sourceLineNo">140</span>      int functionCount) {<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    return Math.exp(Math.log(1 - Math.exp(-functionCount * maxKeys * 1.0<a name="line.141"></a>
-<span class="sourceLineNo">142</span>        / bitSize)) * functionCount);<a name="line.142"></a>
-<span class="sourceLineNo">143</span>  }<a name="line.143"></a>
-<span class="sourceLineNo">144</span><a name="line.144"></a>
-<span class="sourceLineNo">145</span>  /**<a name="line.145"></a>
-<span class="sourceLineNo">146</span>   * Increases the given byte size of a Bloom filter until it can be folded by<a name="line.146"></a>
-<span class="sourceLineNo">147</span>   * the given factor.<a name="line.147"></a>
-<span class="sourceLineNo">148</span>   *<a name="line.148"></a>
-<span class="sourceLineNo">149</span>   * @param bitSize<a name="line.149"></a>
-<span class="sourceLineNo">150</span>   * @param foldFactor<a name="line.150"></a>
-<span class="sourceLineNo">151</span>   * @return Foldable byte size<a name="line.151"></a>
-<span class="sourceLineNo">152</span>   */<a name="line.152"></a>
-<span class="sourceLineNo">153</span>  public static int computeFoldableByteSize(long bitSize, int foldFactor) {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    long byteSizeLong = (bitSize + 7) / 8;<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    int mask = (1 &lt;&lt; foldFactor) - 1;<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    if ((mask &amp; byteSizeLong) != 0) {<a name="line.156"></a>
-<span class="sourceLineNo">157</span>      byteSizeLong &gt;&gt;= foldFactor;<a name="line.157"></a>
-<span class="sourceLineNo">158</span>      ++byteSizeLong;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>      byteSizeLong &lt;&lt;= foldFactor;<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    }<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    if (byteSizeLong &gt; Integer.MAX_VALUE) {<a name="line.161"></a>
-<span class="sourceLineNo">162</span>      throw new IllegalArgumentException("byteSize=" + byteSizeLong + " too "<a name="line.162"></a>
-<span class="sourceLineNo">163</span>          + "large for bitSize=" + bitSize + ", foldFactor=" + foldFactor);<a name="line.163"></a>
-<span class="sourceLineNo">164</span>    }<a name="line.164"></a>
-<span class="sourceLineNo">165</span>    return (int) byteSizeLong;<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>  public static int optimalFunctionCount(int maxKeys, long bitSize) {<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    long i = bitSize / maxKeys;<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    double result = Math.ceil(Math.log(2) * i);<a name="line.170"></a>
-<span class="sourceLineNo">171</span>    if (result &gt; Integer.MAX_VALUE){<a name="line.171"></a>
-<span class="sourceLineNo">172</span>      throw new IllegalArgumentException("result too large for integer value.");<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    }<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    return (int)result;<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>   * Creates a Bloom filter chunk of the given size.<a name="line.178"></a>
-<span class="sourceLineNo">179</span>   *<a name="line.179"></a>
-<span class="sourceLineNo">180</span>   * @param byteSizeHint the desired number of bytes for the Bloom filter bit<a name="line.180"></a>
-<span class="sourceLineNo">181</span>   *          array. Will be increased so that folding is possible.<a name="line.181"></a>
-<span class="sourceLineNo">182</span>   * @param errorRate target false positive rate of the Bloom filter<a name="line.182"></a>
-<span class="sourceLineNo">183</span>   * @param hashType Bloom filter hash function type<a name="line.183"></a>
-<span class="sourceLineNo">184</span>   * @param foldFactor<a name="line.184"></a>
-<span class="sourceLineNo">185</span>   * @param bloomType<a name="line.185"></a>
-<span class="sourceLineNo">186</span>   * @return the new Bloom filter of the desired size<a name="line.186"></a>
-<span class="sourceLineNo">187</span>   */<a name="line.187"></a>
-<span class="sourceLineNo">188</span>  public static BloomFilterChunk createBySize(int byteSizeHint,<a name="line.188"></a>
-<span class="sourceLineNo">189</span>      double errorRate, int hashType, int foldFactor, BloomType bloomType) {<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    BloomFilterChunk bbf = new BloomFilterChunk(hashType, bloomType);<a name="line.190"></a>
-<span class="sourceLineNo">191</span><a name="line.191"></a>
-<span class="sourceLineNo">192</span>    bbf.byteSize = computeFoldableByteSize(byteSizeHint * 8L, foldFactor);<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    long bitSize = bbf.byteSize * 8;<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    bbf.maxKeys = (int) idealMaxKeys(bitSize, errorRate);<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    bbf.hashCount = optimalFunctionCount(bbf.maxKeys, bitSize);<a name="line.195"></a>
+<span class="sourceLineNo">030</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.30"></a>
+<span class="sourceLineNo">031</span><a name="line.31"></a>
+<span class="sourceLineNo">032</span>/**<a name="line.32"></a>
+<span class="sourceLineNo">033</span> * Utility methods related to BloomFilters<a name="line.33"></a>
+<span class="sourceLineNo">034</span> */<a name="line.34"></a>
+<span class="sourceLineNo">035</span>@InterfaceAudience.Private<a name="line.35"></a>
+<span class="sourceLineNo">036</span>public final class BloomFilterUtil {<a name="line.36"></a>
+<span class="sourceLineNo">037</span><a name="line.37"></a>
+<span class="sourceLineNo">038</span>  /** Record separator for the Bloom filter statistics human-readable string */<a name="line.38"></a>
+<span class="sourceLineNo">039</span>  public static final String STATS_RECORD_SEP = "; ";<a name="line.39"></a>
+<span class="sourceLineNo">040</span>  /**<a name="line.40"></a>
+<span class="sourceLineNo">041</span>   * Used in computing the optimal Bloom filter size. This approximately equals<a name="line.41"></a>
+<span class="sourceLineNo">042</span>   * 0.480453.<a name="line.42"></a>
+<span class="sourceLineNo">043</span>   */<a name="line.43"></a>
+<span class="sourceLineNo">044</span>  public static final double LOG2_SQUARED = Math.log(2) * Math.log(2);<a name="line.44"></a>
+<span class="sourceLineNo">045</span>  <a name="line.45"></a>
+<span class="sourceLineNo">046</span>  /**<a name="line.46"></a>
+<span class="sourceLineNo">047</span>   * A random number generator to use for "fake lookups" when testing to<a name="line.47"></a>
+<span class="sourceLineNo">048</span>   * estimate the ideal false positive rate.<a name="line.48"></a>
+<span class="sourceLineNo">049</span>   */<a name="line.49"></a>
+<span class="sourceLineNo">050</span>  private static Random randomGeneratorForTest;<a name="line.50"></a>
+<span class="sourceLineNo">051</span><a name="line.51"></a>
+<span class="sourceLineNo">052</span>  public static final String PREFIX_LENGTH_KEY = "RowPrefixBloomFilter.prefix_length";<a name="line.52"></a>
+<span class="sourceLineNo">053</span>  public static final String DELIMITER_KEY = "RowPrefixDelimitedBloomFilter.delimiter";<a name="line.53"></a>
+<span class="sourceLineNo">054</span>  <a name="line.54"></a>
+<span class="sourceLineNo">055</span>  /** Bit-value lookup array to prevent doing the same work over and over */<a name="line.55"></a>
+<span class="sourceLineNo">056</span>  public static final byte [] bitvals = {<a name="line.56"></a>
+<span class="sourceLineNo">057</span>    (byte) 0x01,<a name="line.57"></a>
+<span class="sourceLineNo">058</span>    (byte) 0x02,<a name="line.58"></a>
+<span class="sourceLineNo">059</span>    (byte) 0x04,<a name="line.59"></a>
+<span class="sourceLineNo">060</span>    (byte) 0x08,<a name="line.60"></a>
+<span class="sourceLineNo">061</span>    (byte) 0x10,<a name="line.61"></a>
+<span class="sourceLineNo">062</span>    (byte) 0x20,<a name="line.62"></a>
+<span class="sourceLineNo">063</span>    (byte) 0x40,<a name="line.63"></a>
+<span class="sourceLineNo">064</span>    (byte) 0x80<a name="line.64"></a>
+<span class="sourceLineNo">065</span>  };<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>   * Private constructor to keep this class from being instantiated.<a name="line.68"></a>
+<span class="sourceLineNo">069</span>   */<a name="line.69"></a>
+<span class="sourceLineNo">070</span>  private BloomFilterUtil() {<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>  /**<a name="line.73"></a>
+<span class="sourceLineNo">074</span>   * @param maxKeys<a name="line.74"></a>
+<span class="sourceLineNo">075</span>   * @param errorRate<a name="line.75"></a>
+<span class="sourceLineNo">076</span>   * @return the number of bits for a Bloom filter than can hold the given<a name="line.76"></a>
+<span class="sourceLineNo">077</span>   *         number of keys and provide the given error rate, assuming that the<a name="line.77"></a>
+<span class="sourceLineNo">078</span>   *         optimal number of hash functions is used and it does not have to<a name="line.78"></a>
+<span class="sourceLineNo">079</span>   *         be an integer.<a name="line.79"></a>
+<span class="sourceLineNo">080</span>   */<a name="line.80"></a>
+<span class="sourceLineNo">081</span>  public static long computeBitSize(long maxKeys, double errorRate) {<a name="line.81"></a>
+<span class="sourceLineNo">082</span>    return (long) Math.ceil(maxKeys * (-Math.log(errorRate) / LOG2_SQUARED));<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>   * Sets a random generator to be used for look-ups instead of computing hashes. Can be used to<a name="line.86"></a>
+<span class="sourceLineNo">087</span>   * simulate uniformity of accesses better in a test environment. Should not be set in a real<a name="line.87"></a>
+<span class="sourceLineNo">088</span>   * environment where correctness matters!<a name="line.88"></a>
+<span class="sourceLineNo">089</span>   * &lt;p&gt;<a name="line.89"></a>
+<span class="sourceLineNo">090</span> *   This gets used in {@link #contains(ByteBuff, int, int, Hash, int, HashKey)}<a name="line.90"></a>
+<span class="sourceLineNo">091</span>   * @param random The random number source to use, or null to compute actual hashes<a name="line.91"></a>
+<span class="sourceLineNo">092</span>   */<a name="line.92"></a>
+<span class="sourceLineNo">093</span>  @VisibleForTesting<a name="line.93"></a>
+<span class="sourceLineNo">094</span>  public static void setRandomGeneratorForTest(Random random) {<a name="line.94"></a>
+<span class="sourceLineNo">095</span>    randomGeneratorForTest = random;<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>  /**<a name="line.98"></a>
+<span class="sourceLineNo">099</span>   * The maximum number of keys we can put into a Bloom filter of a certain<a name="line.99"></a>
+<span class="sourceLineNo">100</span>   * size to maintain the given error rate, assuming the number of hash<a name="line.100"></a>
+<span class="sourceLineNo">101</span>   * functions is chosen optimally and does not even have to be an integer<a name="line.101"></a>
+<span class="sourceLineNo">102</span>   * (hence the "ideal" in the function name).<a name="line.102"></a>
+<span class="sourceLineNo">103</span>   *<a name="line.103"></a>
+<span class="sourceLineNo">104</span>   * @param bitSize<a name="line.104"></a>
+<span class="sourceLineNo">105</span>   * @param errorRate<a name="line.105"></a>
+<span class="sourceLineNo">106</span>   * @return maximum number of keys that can be inserted into the Bloom filter<a name="line.106"></a>
+<span class="sourceLineNo">107</span>   * @see #computeMaxKeys(long, double, int) for a more precise estimate<a name="line.107"></a>
+<span class="sourceLineNo">108</span>   */<a name="line.108"></a>
+<span class="sourceLineNo">109</span>  public static long idealMaxKeys(long bitSize, double errorRate) {<a name="line.109"></a>
+<span class="sourceLineNo">110</span>    // The reason we need to use floor here is that otherwise we might put<a name="line.110"></a>
+<span class="sourceLineNo">111</span>    // more keys in a Bloom filter than is allowed by the target error rate.<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    return (long) (bitSize * (LOG2_SQUARED / -Math.log(errorRate)));<a name="line.112"></a>
+<span class="sourceLineNo">113</span>  }<a name="line.113"></a>
+<span class="sourceLineNo">114</span><a name="line.114"></a>
+<span class="sourceLineNo">115</span>  /**<a name="line.115"></a>
+<span class="sourceLineNo">116</span>   * The maximum number of keys we can put into a Bloom filter of a certain<a name="line.116"></a>
+<span class="sourceLineNo">117</span>   * size to get the given error rate, with the given number of hash functions.<a name="line.117"></a>
+<span class="sourceLineNo">118</span>   *<a name="line.118"></a>
+<span class="sourceLineNo">119</span>   * @param bitSize<a name="line.119"></a>
+<span class="sourceLineNo">120</span>   * @param errorRate<a name="line.120"></a>
+<span class="sourceLineNo">121</span>   * @param hashCount<a name="line.121"></a>
+<span class="sourceLineNo">122</span>   * @return the maximum number of keys that can be inserted in a Bloom filter<a name="line.122"></a>
+<span class="sourceLineNo">123</span>   *         to maintain the target error rate, if the number of hash functions<a name="line.123"></a>
+<span class="sourceLineNo">124</span>   *         is provided.<a name="line.124"></a>
+<span class="sourceLineNo">125</span>   */<a name="line.125"></a>
+<span class="sourceLineNo">126</span>  public static long computeMaxKeys(long bitSize, double errorRate,<a name="line.126"></a>
+<span class="sourceLineNo">127</span>      int hashCount) {<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    return (long) (-bitSize * 1.0 / hashCount *<a name="line.128"></a>
+<span class="sourceLineNo">129</span>        Math.log(1 - Math.exp(Math.log(errorRate) / hashCount)));<a name="line.129"></a>
+<span class="sourceLineNo">130</span>  }<a name="line.130"></a>
+<span class="sourceLineNo">131</span><a name="line.131"></a>
+<span class="sourceLineNo">132</span>  /**<a name="line.132"></a>
+<span class="sourceLineNo">133</span>   * Computes the actual error rate for the given number of elements, number<a name="line.133"></a>
+<span class="sourceLineNo">134</span>   * of bits, and number of hash functions. Taken directly from the<a name="line.134"></a>
+<span class="sourceLineNo">135</span>   * &lt;a href=<a name="line.135"></a>
+<span class="sourceLineNo">136</span>   * "http://en.wikipedia.org/wiki/Bloom_filter#Probability_of_false_positives"<a name="line.136"></a>
+<span class="sourceLineNo">137</span>   * &gt; Wikipedia Bloom filter article&lt;/a&gt;.<a name="line.137"></a>
+<span class="sourceLineNo">138</span>   *<a name="line.138"></a>
+<span class="sourceLineNo">139</span>   * @param maxKeys<a name="line.139"></a>
+<span class="sourceLineNo">140</span>   * @param bitSize<a name="line.140"></a>
+<span class="sourceLineNo">141</span>   * @param functionCount<a name="line.141"></a>
+<span class="sourceLineNo">142</span>   * @return the actual error rate<a name="line.142"></a>
+<span class="sourceLineNo">143</span>   */<a name="line.143"></a>
+<span class="sourceLineNo">144</span>  public static double actualErrorRate(long maxKeys, long bitSize,<a name="line.144"></a>
+<span class="sourceLineNo">145</span>      int functionCount) {<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    return Math.exp(Math.log(1 - Math.exp(-functionCount * maxKeys * 1.0<a name="line.146"></a>
+<span class="sourceLineNo">147</span>        / bitSize)) * functionCount);<a name="line.147"></a>
+<span class="sourceLineNo">148</span>  }<a name="line.148"></a>
+<span class="sourceLineNo">149</span><a name="line.149"></a>
+<span class="sourceLineNo">150</span>  /**<a name="line.150"></a>
+<span class="sourceLineNo">151</span>   * Increases the given byte size of a Bloom filter until it can be folded by<a name="line.151"></a>
+<span class="sourceLineNo">152</span>   * the given factor.<a name="line.152"></a>
+<span class="sourceLineNo">153</span>   *<a name="line.153"></a>
+<span class="sourceLineNo">154</span>   * @param bitSize<a name="line.154"></a>
+<span class="sourceLineNo">155</span>   * @param foldFactor<a name="line.155"></a>
+<span class="sourceLineNo">156</span>   * @return Foldable byte size<a name="line.156"></a>
+<span class="sourceLineNo">157</span>   */<a name="line.157"></a>
+<span class="sourceLineNo">158</span>  public static int computeFoldableByteSize(long bitSize, int foldFactor) {<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    long byteSizeLong = (bitSize + 7) / 8;<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    int mask = (1 &lt;&lt; foldFactor) - 1;<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    if ((mask &amp; byteSizeLong) != 0) {<a name="line.161"></a>
+<span class="sourceLineNo">162</span>      byteSizeLong &gt;&gt;= foldFactor;<a name="line.162"></a>
+<span class="sourceLineNo">163</span>      ++byteSizeLong;<a name="line.163"></a>
+<span class="sourceLineNo">164</span>      byteSizeLong &lt;&lt;= foldFactor;<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    }<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    if (byteSizeLong &gt; Integer.MAX_VALUE) {<a name="line.166"></a>
+<span class="sourceLineNo">167</span>      throw new IllegalArgumentException("byteSize=" + byteSizeLong + " too "<a name="line.167"></a>
+<span class="sourceLineNo">168</span>          + "large for bitSize=" + bitSize + ", foldFactor=" + foldFactor);<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    }<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    return (int) byteSizeLong;<a name="line.170"></a>
+<span class="sourceLineNo">171</span>  }<a name="line.171"></a>
+<span class="sourceLineNo">172</span><a name="line.172"></a>
+<span class="sourceLineNo">173</span>  public static int optimalFunctionCount(int maxKeys, long bitSize) {<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    long i = bitSize / maxKeys;<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    double result = Math.ceil(Math.log(2) * i);<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    if (result &gt; Integer.MAX_VALUE){<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      throw new IllegalArgumentException("result too large for integer value.");<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    }<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    return (int)result;<a name="line.179"></a>
+<span class="sourceLineNo">180</span>  }<a name="line.180"></a>
+<span class="sourceLineNo">181</span>  <a name="line.181"></a>
+<span class="sourceLineNo">182</span>  /**<a name="line.182"></a>
+<span class="sourceLineNo">183</span>   * Creates a Bloom filter chunk of the given size.<a name="line.183"></a>
+<span class="sourceLineNo">184</span>   *<a name="line.184"></a>
+<span class="sourceLineNo">185</span>   * @param byteSizeHint the desired number of bytes for the Bloom filter bit<a name="line.185"></a>
+<span class="sourceLineNo">186</span>   *          array. Will be increased so that folding is possible.<a name="line.186"></a>
+<span class="sourceLineNo">187</span>   * @param errorRate target false positive rate of the Bloom filter<a name="line.187"></a>
+<span class="sourceLineNo">188</span>   * @param hashType Bloom filter hash function type<a name="line.188"></a>
+<span class="sourceLineNo">189</span>   * @param foldFactor<a name="line.189"></a>
+<span class="sourceLineNo">190</span>   * @param bloomType<a name="line.190"></a>
+<span class="sourceLineNo">191</span>   * @return the new Bloom filter of the desired size<a name="line.191"></a>
+<span class="sourceLineNo">192</span>   */<a name="line.192"></a>
+<span class="sourceLineNo">193</span>  public static BloomFilterChunk createBySize(int byteSizeHint,<a name="line.193"></a>
+<span class="sourceLineNo">194</span>      double errorRate, int hashType, int foldFactor, BloomType bloomType) {<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    BloomFilterChunk bbf = new BloomFilterChunk(hashType, bloomType);<a name="line.195"></a>
 <span class="sourceLineNo">196</span><a name="line.196"></a>
-<span class="sourceLineNo">197</span>    // Adjust max keys to bring error rate closer to what was requested,<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    // because byteSize was adjusted to allow for folding, and hashCount was<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    // rounded.<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    bbf.maxKeys = (int) computeMaxKeys(bitSize, errorRate, bbf.hashCount);<a name="line.200"></a>
+<span class="sourceLineNo">197</span>    bbf.byteSize = computeFoldableByteSize(byteSizeHint * 8L, foldFactor);<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    long bitSize = bbf.byteSize * 8;<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    bbf.maxKeys = (int) idealMaxKeys(bitSize, errorRate);<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    bbf.hashCount = optimalFunctionCount(bbf.maxKeys, bitSize);<a name="line.200"></a>
 <span class="sourceLineNo">201</span><a name="line.201"></a>
-<span class="sourceLineNo">202</span>    return bbf;<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>  public static boolean contains(byte[] buf, int offset, int length,<a name="line.205"></a>
-<span class="sourceLineNo">206</span>      ByteBuff bloomBuf, int bloomOffset, int bloomSize, Hash hash,<a name="line.206"></a>
-<span class="sourceLineNo">207</span>      int hashCount) {<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    HashKey&lt;byte[]&gt; hashKey = new ByteArrayHashKey(buf, offset, length);<a name="line.208"></a>
-<span class="sourceLineNo">209</span>    return contains(bloomBuf, bloomOffset, bloomSize, hash, hashCount, hashKey);<a name="line.209"></a>
-<span class="sourceLineNo">210</span>  }<a name="line.210"></a>
-<span class="sourceLineNo">211</span><a name="line.211"></a>
-<span class="sourceLineNo">212</span>  private static &lt;T&gt; boolean contains(ByteBuff bloomBuf, int bloomOffset, int bloomSize, Hash hash,<a name="line.212"></a>
-<span class="sourceLineNo">213</span>      int hashCount, HashKey&lt;T&gt; hashKey) {<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    int hash1 = hash.hash(hashKey, 0);<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    int bloomBitSize = bloomSize &lt;&lt; 3;<a name="line.215"></a>
+<span class="sourceLineNo">202</span>    // Adjust max keys to bring error rate closer to what was requested,<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    // because byteSize was adjusted to allow for folding, and hashCount was<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    // rounded.<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    bbf.maxKeys = (int) computeMaxKeys(bitSize, errorRate, bbf.hashCount);<a name="line.205"></a>
+<span class="sourceLineNo">206</span><a name="line.206"></a>
+<span class="sourceLineNo">207</span>    return bbf;<a name="line.207"></a>
+<span class="sourceLineNo">208</span>  }<a name="line.208"></a>
+<span class="sourceLineNo">209</span><a name="line.209"></a>
+<span class="sourceLineNo">210</span>  public static boolean contains(byte[] buf, int offset, int length,<a name="line.210"></a>
+<span class="sourceLineNo">211</span>      ByteBuff bloomBuf, int bloomOffset, int bloomSize, Hash hash,<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      int hashCount) {<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    HashKey&lt;byte[]&gt; hashKey = new ByteArrayHashKey(buf, offset, length);<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    return contains(bloomBuf, bloomOffset, bloomSize, hash, hashCount, hashKey);<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>    int hash2 = 0;<a name="line.217"></a>
-<span class="sourceLineNo">218</span>    int compositeHash = 0;<a name="line.218"></a>
-<span class="sourceLineNo">219</span><a name="line.219"></a>
-<span class="sourceLineNo">220</span>    if (randomGeneratorForTest == null) {<a name="line.220"></a>
-<span class="sourceLineNo">221</span>      // Production mode<a name="line.221"></a>
-<span class="sourceLineNo">222</span>      compositeHash = hash1;<a name="line.222"></a>
-<span class="sourceLineNo">223</span>      hash2 = hash.hash(hashKey, hash1);<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>    for (int i = 0; i &lt; hashCount; i++) {<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      int hashLoc = (randomGeneratorForTest == null<a name="line.227"></a>
-<span class="sourceLineNo">228</span>          // Production mode<a name="line.228"></a>
-<span class="sourceLineNo">229</span>          ? Math.abs(compositeHash % bloomBitSize)<a name="line.229"></a>
-<span class="sourceLineNo">230</span>          // Test mode with "fake look-ups" to estimate "ideal false positive rate"<a name="line.230"></a>
-<span class="sourceLineNo">231</span>          : randomGeneratorForTest.nextInt(bloomBitSize));<a name="line.231"></a>
-<span class="sourceLineNo">232</span>      compositeHash += hash2;<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      if (!checkBit(hashLoc, bloomBuf, bloomOffset)) {<a name="line.233"></a>
-<span class="sourceLineNo">234</span>        return false;<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>    return true;<a name="line.237"></a>
-<span class="sourceLineNo">238</span>  }<a name="line.238"></a>
-<span class="sourceLineNo">239</span><a name="line.239"></a>
-<span class="sourceLineNo">240</span>  public static boolean contains(Cell cell, ByteBuff bloomBuf, int bloomOffset, int bloomSize,<a name="line.240"></a>
-<span class="sourceLineNo">241</span>      Hash hash, int hashCount, BloomType type) {<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    HashKey&lt;Cell&gt; hashKey = type == BloomType.ROW ? new RowBloomHashKey(cell)<a name="line.242"></a>
-<span class="sourceLineNo">243</span>        : new RowColBloomHashKey(cell);<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    return contains(bloomBuf, bloomOffset, bloomSize, hash, hashCount, hashKey);<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>  /**<a name="line.247"></a>
-<span class="sourceLineNo">248</span>   * Check if bit at specified index is 1.<a name="line.248"></a>
-<span class="sourceLineNo">249</span>   *<a name="line.249"></a>
-<span class="sourceLineNo">250</span>   * @param pos index of bit<a name="line.250"></a>
-<span class="sourceLineNo">251</span>   * @return true if bit at specified index is 1, false if 0.<a name="line.251"></a>
-<span class="sourceLineNo">252</span>   */<a name="line.252"></a>
-<span class="sourceLineNo">253</span>   static boolean checkBit(int pos, ByteBuff bloomBuf, int bloomOffset) {<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    int bytePos = pos &gt;&gt; 3; //pos / 8<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    int bitPos = pos &amp; 0x7; //pos % 8<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    byte curByte = bloomBuf.get(bloomOffset + bytePos);<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    curByte &amp;= bitvals[bitPos];<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    return (curByte != 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>  /**<a name="line.261"></a>
-<span class="sourceLineNo">262</span>   * A human-readable string with statistics for the given Bloom filter.<a name="line.262"></a>
-<span class="sourceLineNo">263</span>   *<a name="line.263"></a>
-<span class="sourceLineNo">264</span>   * @param bloomFilter the Bloom filter to output statistics for;<a name="line.264"></a>
-<span class="sourceLineNo">265</span>   * @return a string consisting of "&amp;lt;key&amp;gt;: &amp;lt;value&amp;gt;" parts<a name="line.265"></a>
-<span class="sourceLineNo">266</span>   *         separated by {@link #STATS_RECORD_SEP}.<a name="line.266"></a>
-<span class="sourceLineNo">267</span>   */<a name="line.267"></a>
-<span class="sourceLineNo">268</span>  public static String formatStats(BloomFilterBase bloomFilter) {<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    StringBuilder sb = new StringBuilder();<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    long k = bloomFilter.getKeyCount();<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    long m = bloomFilter.getMaxKeys();<a name="line.271"></a>
-<span class="sourceLineNo">272</span><a name="line.272"></a>
-<span class="sourceLineNo">273</span>    sb.append("BloomSize: " + bloomFilter.getByteSize() + STATS_RECORD_SEP);<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    sb.append("No of Keys in bloom: " + k + STATS_RECORD_SEP);<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    sb.append("Max Keys for bloom: " + m);<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    if (m &gt; 0) {<a name="line.276"></a>
-<span class="sourceLineNo">277</span>      sb.append(STATS_RECORD_SEP + "Percentage filled: "<a name="line.277"></a>
-<span class="sourceLineNo">278</span>          + NumberFormat.getPercentInstance().format(k * 1.0 / m));<a name="line.278"></a>
-<span class="sourceLineNo">279</span>    }<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    return sb.toString();<a name="line.280"></a>
-<span class="sourceLineNo">281</span>  }<a name="line.281"></a>
-<span class="sourceLineNo">282</span><a name="line.282"></a>
-<span class="sourceLineNo">283</span>  public static String toString(BloomFilterChunk bloomFilter) {<a name="line.283"></a>
-<span class="sourceLineNo">284</span>    return formatStats(bloomFilter) + STATS_RECORD_SEP + "Actual error rate: "<a name="line.284"></a>
-<span class="sourceLineNo">285</span>        + String.format("%.8f", bloomFilter.actualErrorRate());<a name="line.285"></a>
+<span class="sourceLineNo">217</span>  private static &lt;T&gt; boolean contains(ByteBuff bloomBuf, int bloomOffset, int bloomSize, Hash hash,<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      int hashCount, HashKey&lt;T&gt; hashKey) {<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    int hash1 = hash.hash(hashKey, 0);<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    int bloomBitSize = bloomSize &lt;&lt; 3;<a name="line.220"></a>
+<span class="sourceLineNo">221</span><a name="line.221"></a>
+<span class="sourceLineNo">222</span>    int hash2 = 0;<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    int compositeHash = 0;<a name="line.223"></a>
+<span class="sourceLineNo">224</span><a name="line.224"></a>
+<span class="sourceLineNo">225</span>    if (randomGeneratorForTest == null) {<a name="line.225"></a>
+<span class="sourceLineNo">226</span>      // Production mode<a name="line.226"></a>
+<span class="sourceLineNo">227</span>      compositeHash = hash1;<a name="line.227"></a>
+<span class="sourceLineNo">228</span>      hash2 = hash.hash(hashKey, hash1);<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>    for (int i = 0; i &lt; hashCount; i++) {<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      int hashLoc = (randomGeneratorForTest == null<a name="line.232"></a>
+<span class="sourceLineNo">233</span>          // Production mode<a name="line.233"></a>
+<span class="sourceLineNo">234</span>          ? Math.abs(compositeHash % bloomBitSize)<a name="line.234"></a>
+<span class="sourceLineNo">235</span>          // Test mode with "fake look-ups" to estimate "ideal false positive rate"<a name="line.235"></a>
+<span class="sourceLineNo">236</span>          : randomGeneratorForTest.nextInt(bloomBitSize));<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      compositeHash += hash2;<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      if (!checkBit(hashLoc, bloomBuf, bloomOffset)) {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>        return false;<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>    return true;<a name="line.242"></a>
+<span class="sourceLineNo">243</span>  }<a name="line.243"></a>
+<span class="sourceLineNo">244</span><a name="line.244"></a>
+<span class="sourceLineNo">245</span>  public static boolean contains(Cell cell, ByteBuff bloomBuf, int bloomOffset, int bloomSize,<a name="line.245"></a>
+<span class="sourceLineNo">246</span>      Hash hash, int hashCount, BloomType type) {<a name="line.246"></a>
+<span class="sourceLineNo">247</span>    HashKey&lt;Cell&gt; hashKey = type == BloomType.ROWCOL ? new RowColBloomHashKey(cell)<a name="line.247"></a>
+<span class="sourceLineNo">248</span>        : new RowBloomHashKey(cell);<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    return contains(bloomBuf, bloomOffset, bloomSize, hash, hashCount, hashKey);<a name="line.249"></a>
+<span class="sourceLineNo">250</span>  }<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>
+<span class="sourceLineNo">253</span>   * Check if bit at specified index is 1.<a name="line.253"></a>
+<span class="sourceLineNo">254</span>   *<a name="line.254"></a>
+<span class="sourceLineNo">255</span>   * @param pos index of bit<a name="line.255"></a>
+<span class="sourceLineNo">256</span>   * @return true if bit at specified index is 1, false if 0.<a name="line.256"></a>
+<span class="sourceLineNo">257</span>   */<a name="line.257"></a>
+<span class="sourceLineNo">258</span>   static boolean checkBit(int pos, ByteBuff bloomBuf, int bloomOffset) {<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    int bytePos = pos &gt;&gt; 3; //pos / 8<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    int bitPos = pos &amp; 0x7; //pos % 8<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    byte curByte = bloomBuf.get(bloomOffset + bytePos);<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    curByte &amp;= bitvals[bitPos];<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    return (curByte != 0);<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">266</span>  /**<a name="line.266"></a>
+<span class="sourceLineNo">267</span>   * A human-readable string with statistics for the given Bloom filter.<a name="line.267"></a>
+<span class="sourceLineNo">268</span>   *<a name="line.268"></a>
+<span class="sourceLineNo">269</span>   * @param bloomFilter the Bloom filter to output statistics for;<a name="line.269"></a>
+<span class="sourceLineNo">270</span>   * @return a string consisting of "&amp;lt;key&amp;gt;: &amp;lt;value&amp;gt;" parts<a name="line.270"></a>
+<span class="sourceLineNo">271</span>   *         separated by {@link #STATS_RECORD_SEP}.<a name="line.271"></a>
+<span class="sourceLineNo">272</span>   */<a name="line.272"></a>
+<span class="sourceLineNo">273</span>  public static String formatStats(BloomFilterBase bloomFilter) {<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    StringBuilder sb = new StringBuilder();<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    long k = bloomFilter.getKeyCount();<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    long m = bloomFilter.getMaxKeys();<a name="line.276"></a>
+<span class="sourceLineNo">277</span><a name="line.277"></a>
+<span class="sourceLineNo">278</span>    sb.append("BloomSize: " + bloomFilter.getByteSize() + STATS_RECORD_SEP);<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    sb.append("No of Keys in bloom: " + k + STATS_RECORD_SEP);<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    sb.append("Max Keys for bloom: " + m);<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    if (m &gt; 0) {<a name="line.281"></a>
+<span class="sourceLineNo">282</span>      sb.append(STATS_RECORD_SEP + "Percentage filled: "<a name="line.282"></a>
+<span class="sourceLineNo">283</span>          + NumberFormat.getPercentInstance().format(k * 1.0 / m));<a name="line.283"></a>
+<span class="sourceLineNo">284</span>    }<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    return sb.toString();<a name="line.285"></a>
 <span class="sourceLineNo">286</span>  }<a name="line.286"></a>
-<span class="sourceLineNo">287</span>}<a name="line.287"></a>
+<span class="sourceLineNo">287</span><a name="line.287"></a>
+<span class="sourceLineNo">288</span>  public static String toString(BloomFilterChunk bloomFilter) {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    return formatStats(bloomFilter) + STATS_RECORD_SEP + "Actual error rate: "<a name="line.289"></a>
+<span class="sourceLineNo">290</span>        + String.format("%.8f", bloomFilter.actualErrorRate());<a name="line.290"></a>
+<span class="sourceLineNo">291</span>  }<a name="line.291"></a>
+<span class="sourceLineNo">292</span><a name="line.292"></a>
+<span class="sourceLineNo">293</span>  public static byte[] getBloomFilterParam(BloomType bloomFilterType, Configuration conf)<a name="line.293"></a>
+<span class="sourceLineNo">294</span>      throws IllegalArgumentException{<a name="line.294"></a>
+<span class="sourceLineNo">295</span>    byte[] bloomParam = null;<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    String message = "Bloom filter type is " + bloomFilterType + ", ";<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    switch (bloomFilterType) {<a name="line.297"></a>
+<span class="sourceLineNo">298</span>      case ROWPREFIX_FIXED_LENGTH:<a name="line.298"></a>
+<span class="sourceLineNo">299</span>        String prefixLengthString = conf.get(PREFIX_LENGTH_KEY);<a name="line.299"></a>
+<span class="sourceLineNo">300</span>        if (prefixLengthString == null) {<a name="line.300"></a>
+<span class="sourceLineNo">301</span>          message += PREFIX_LENGTH_KEY + " not specified.";<a name="line.301"></a>
+<span class="sourceLineNo">302</span>          throw new IllegalArgumentException(message);<a name="line.302"></a>
+<span class="sourceLineNo">303</span>        }<a name="line.303"></a>
+<span class="sourceLineNo">304</span>        int prefixLength;<a name="line.304"></a>
+<span class="sourceLineNo">305</span>        try {<a name="line.305"></a>
+<span class="sourceLineNo">306</span>          prefixLength = Integer.parseInt(prefixLengthString);<a name="line.306"></a>
+<span class="sourceLineNo">307</span>          if (prefixLength &lt;= 0 || prefixLength &gt; HConstants.MAX_ROW_LENGTH) {<a name="line.307"></a>
+<span class="sourceLineNo">308</span>            message += "the value of " + PREFIX_LENGTH_KEY<a name="line.308"></a>
+<span class="sourceLineNo">309</span>                + " must &gt;=0 and &lt; " + HConstants.MAX_ROW_LENGTH;<a name="line.309"></a>
+<span class="sourceLineNo">310</span>            throw new IllegalArgumentException(message);<a name="line.310"></a>
+<span class="sourceLineNo">311</span>          }<a name="line.311"></a>
+<span class="sourceLineNo">312</span>        } catch (NumberFormatException nfe) {<a name="line.312"></a>
+<span class="sourceLineNo">313</span>          message = "Number format exception when parsing " + PREFIX_LENGTH_KEY + " for BloomType "<a name="line.313"></a>
+<span class="sourceLineNo">314</span>              + bloomFilterType.toString() + ":"<a name="line.314"></a>
+<span class="sourceLineNo">315</span>              + prefixLengthString;<a name="line.315"></a>
+<span class="sourceLineNo">316</span>          throw new IllegalArgumentException(message, nfe);<a name="line.316"></a>
+<span class="sourceLineNo">317</span>        }<a name="line.317"></a>
+<span class="sourceLineNo">318</span>        bloomParam = Bytes.toBytes(prefixLength);<a name="line.318"></a>
+<span class="sourceLineNo">319</span>        break;<a name="line.319"></a>
+<span class="sourceLineNo">320</span>      case ROWPREFIX_DELIMITED:<a name="line.320"></a>
+<span class="sourceLineNo">321</span>        String delimiterString = conf.get(DELIMITER_KEY);<a name="line.321"></a>
+<span class="sourceLineNo">322</span>        if (delimiterString == null || delimiterString.length() == 0) {<a name="line.322"></a>
+<span class="sourceLineNo">323</span>          message += DELIMITER_KEY + " not specified.";<a name="line.323"></a>
+<span class="sourceLineNo">324</span>          throw new IllegalArgumentException(message);<a name="line.324"></a>
+<span class="sourceLineNo">325</span>        }<a name="line.325"></a>
+<span class="sourceLineNo">326</span>        bloomParam = Bytes.toBytes(delimiterString);<a name="line.326"></a>
+<span class="sourceLineNo">327</span>        break;<a name="line.327"></a>
+<span class="sourceLineNo">328</span>      default:<a name="line.328"></a>
+<span class="sourceLineNo">329</span>        break;<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    }<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    return bloomParam;<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>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/devapidocs/src-html/org/apache/hadoop/hbase/util/RowPrefixDelimiterBloomContext.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/util/RowPrefixDelimiterBloomContext.html b/devapidocs/src-html/org/apache/hadoop/hbase/util/RowPrefixDelimiterBloomContext.html
new file mode 100644
index 0000000..9f92a72
--- /dev/null
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/util/RowPrefixDelimiterBloomContext.html
@@ -0,0 +1,134 @@
+<!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.util;<a name="line.18"></a>
+<span class="sourceLineNo">019</span><a name="line.19"></a>
+<span class="sourceLineNo">020</span>import java.io.IOException;<a name="line.20"></a>
+<span class="sourceLineNo">021</span><a name="line.21"></a>
+<span class="sourceLineNo">022</span>import org.apache.hadoop.hbase.Cell;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import org.apache.hadoop.hbase.CellBuilderType;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.ExtendedCellBuilderFactory;<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><a name="line.28"></a>
+<span class="sourceLineNo">029</span>/**<a name="line.29"></a>
+<span class="sourceLineNo">030</span> * Handles ROWPREFIX_DELIMITED bloom related context.<a name="line.30"></a>
+<span class="sourceLineNo">031</span> * It works with both ByteBufferedCell and byte[] backed cells<a name="line.31"></a>
+<span class="sourceLineNo">032</span> */<a name="line.32"></a>
+<span class="sourceLineNo">033</span>@InterfaceAudience.Private<a name="line.33"></a>
+<span class="sourceLineNo">034</span>public class RowPrefixDelimiterBloomContext extends RowBloomContext {<a name="line.34"></a>
+<span class="sourceLineNo">035</span>  private final byte[] delimiter;<a name="line.35"></a>
+<span class="sourceLineNo">036</span><a name="line.36"></a>
+<span class="sourceLineNo">037</span>  public RowPrefixDelimiterBloomContext(BloomFilterWriter bloomFilterWriter,<a name="line.37"></a>
+<span class="sourceLineNo">038</span>      CellComparator comparator, byte[] delimiter) {<a name="line.38"></a>
+<span class="sourceLineNo">039</span>    super(bloomFilterWriter, comparator);<a name="line.39"></a>
+<span class="sourceLineNo">040</span>    this.delimiter = delimiter;<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>  public void writeBloom(Cell cell) throws IOException {<a name="line.43"></a>
+<span class="sourceLineNo">044</span>    super.writeBloom(getDelimitedRowPrefixCell(cell));<a name="line.44"></a>
+<span class="sourceLineNo">045</span>  }<a name="line.45"></a>
+<span class="sourceLineNo">046</span><a name="line.46"></a>
+<span class="sourceLineNo">047</span>  /**<a name="line.47"></a>
+<span class="sourceLineNo">048</span>   * @param cell the new cell<a name="line.48"></a>
+<span class="sourceLineNo">049</span>   * @return the new cell created by delimited row prefix<a name="line.49"></a>
+<span class="sourceLineNo">050</span>   */<a name="line.50"></a>
+<span class="sourceLineNo">051</span>  private Cell getDelimitedRowPrefixCell(Cell cell) {<a name="line.51"></a>
+<span class="sourceLineNo">052</span>    byte[] row = CellUtil.copyRow(cell);<a name="line.52"></a>
+<span class="sourceLineNo">053</span>    int prefixLength = Bytes.indexOf(row, delimiter);<a name="line.53"></a>
+<span class="sourceLineNo">054</span>    if (prefixLength &lt;= 0) {<a name="line.54"></a>
+<span class="sourceLineNo">055</span>      return cell;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>    }<a name="line.56"></a>
+<span class="sourceLineNo">057</span>    return ExtendedCellBuilderFactory.create(CellBuilderType.DEEP_COPY)<a name="line.57"></a>
+<span class="sourceLineNo">058</span>        .setRow(row, 0, Math.min(prefixLength, row.length))<a name="line.58"></a>
+<span class="sourceLineNo">059</span>        .setType(Cell.Type.Put)<a name="line.59"></a>
+<span class="sourceLineNo">060</span>        .build();<a name="line.60"></a>
+<span class="sourceLineNo">061</span>  }<a name="line.61"></a>
+<span class="sourceLineNo">062</span>}<a name="line.62"></a>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/devapidocs/src-html/org/apache/hadoop/hbase/util/RowPrefixFixedLengthBloomContext.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/util/RowPrefixFixedLengthBloomContext.html b/devapidocs/src-html/org/apache/hadoop/hbase/util/RowPrefixFixedLengthBloomContext.html
new file mode 100644
index 0000000..b76323a
--- /dev/null
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/util/RowPrefixFixedLengthBloomContext.html
@@ -0,0 +1,130 @@
+<!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.util;<a name="line.18"></a>
+<span class="sourceLineNo">019</span><a name="line.19"></a>
+<span class="sourceLineNo">020</span>import java.io.IOException;<a name="line.20"></a>
+<span class="sourceLineNo">021</span><a name="line.21"></a>
+<span class="sourceLineNo">022</span>import org.apache.hadoop.hbase.Cell;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import org.apache.hadoop.hbase.CellBuilderType;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.ExtendedCellBuilderFactory;<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><a name="line.28"></a>
+<span class="sourceLineNo">029</span>/**<a name="line.29"></a>
+<span class="sourceLineNo">030</span> * Handles ROWPREFIX bloom related context.<a name="line.30"></a>
+<span class="sourceLineNo">031</span> * It works with both ByteBufferedCell and byte[] backed cells<a name="line.31"></a>
+<span class="sourceLineNo">032</span> */<a name="line.32"></a>
+<span class="sourceLineNo">033</span>@InterfaceAudience.Private<a name="line.33"></a>
+<span class="sourceLineNo">034</span>public class RowPrefixFixedLengthBloomContext extends RowBloomContext {<a name="line.34"></a>
+<span class="sourceLineNo">035</span>  private final int prefixLength;<a name="line.35"></a>
+<span class="sourceLineNo">036</span><a name="line.36"></a>
+<span class="sourceLineNo">037</span>  public RowPrefixFixedLengthBloomContext(BloomFilterWriter bloomFilterWriter,<a name="line.37"></a>
+<span class="sourceLineNo">038</span>      CellComparator comparator, int prefixLength) {<a name="line.38"></a>
+<span class="sourceLineNo">039</span>    super(bloomFilterWriter, comparator);<a name="line.39"></a>
+<span class="sourceLineNo">040</span>    this.prefixLength = prefixLength;<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>  public void writeBloom(Cell cell) throws IOException {<a name="line.43"></a>
+<span class="sourceLineNo">044</span>    super.writeBloom(getRowPrefixCell(cell));<a name="line.44"></a>
+<span class="sourceLineNo">045</span>  }<a name="line.45"></a>
+<span class="sourceLineNo">046</span><a name="line.46"></a>
+<span class="sourceLineNo">047</span>  /**<a name="line.47"></a>
+<span class="sourceLineNo">048</span>   * @param cell the cell<a name="line.48"></a>
+<span class="sourceLineNo">049</span>   * @return the new cell created by row prefix<a name="line.49"></a>
+<span class="sourceLineNo">050</span>   */<a name="line.50"></a>
+<span class="sourceLineNo">051</span>  private Cell getRowPrefixCell(Cell cell) {<a name="line.51"></a>
+<span class="sourceLineNo">052</span>    byte[] row = CellUtil.copyRow(cell);<a name="line.52"></a>
+<span class="sourceLineNo">053</span>    return ExtendedCellBuilderFactory.create(CellBuilderType.DEEP_COPY)<a name="line.53"></a>
+<span class="sourceLineNo">054</span>        .setRow(row, 0, Math.min(prefixLength, row.length))<a name="line.54"></a>
+<span class="sourceLineNo">055</span>        .setType(Cell.Type.Put)<a name="line.55"></a>
+<span class="sourceLineNo">056</span>        .build();<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>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>


[35/43] hbase-site git commit: Published site at 7ab77518a2569e2416a50020393aa386e7734501.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/devapidocs/org/apache/hadoop/hbase/master/MasterRpcServices.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/MasterRpcServices.html b/devapidocs/org/apache/hadoop/hbase/master/MasterRpcServices.html
index 6585bb5..b6b03a7 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/MasterRpcServices.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/MasterRpcServices.html
@@ -2693,7 +2693,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>getRegionInfo</h4>
-<pre>private&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/master/MasterRpcServices.html#line.2349">getRegionInfo</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.RegionSpecifier&nbsp;rs)
+<pre>private&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/master/MasterRpcServices.html#line.2348">getRegionInfo</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.RegionSpecifier&nbsp;rs)
                           throws <a href="../../../../../org/apache/hadoop/hbase/UnknownRegionException.html" title="class in org.apache.hadoop.hbase">UnknownRegionException</a></pre>
 <div class="block">Get RegionInfo from Master using content of RegionSpecifier as key.</div>
 <dl>
@@ -2710,7 +2710,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>assigns</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.AssignsResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.2373">assigns</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.AssignsResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.2372">assigns</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
                                                                                               org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.AssignsRequest&nbsp;request)
                                                                                        throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException</pre>
 <div class="block">A 'raw' version of assign that does bulk and skirts Master state checks (assigns can be made
@@ -2729,7 +2729,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>unassigns</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.UnassignsResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.2404">unassigns</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.UnassignsResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.2403">unassigns</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
                                                                                                   org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.UnassignsRequest&nbsp;request)
                                                                                            throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException</pre>
 <div class="block">A 'raw' version of unassign that does bulk and skirts Master state checks (unassigns can be
@@ -2748,7 +2748,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockListLast">
 <li class="blockList">
 <h4>bypassProcedure</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.BypassProcedureResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.2442">bypassProcedure</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.BypassProcedureResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.2441">bypassProcedure</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
                                                                                                               org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.BypassProcedureRequest&nbsp;request)
                                                                                                        throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException</pre>
 <div class="block">Bypass specified procedure to completion. Procedure is marked completed but no actual work

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/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 1799704..abd92a9 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/balancer/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/balancer/package-tree.html
@@ -198,8 +198,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.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>
+<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>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/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 95ff204..4fae9b5 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/package-tree.html
@@ -347,11 +347,11 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.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>
-<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.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/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/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/MetricsMasterSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">MetricsMasterSourceFactoryImpl.FactoryStorage</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html
index a189946..e392df8 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html
@@ -216,10 +216,10 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MetaProcedureInterface.MetaOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">MetaProcedureInterface.MetaOperationType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.TableOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">TableProcedureInterface.TableOperationType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/PeerProcedureInterface.PeerOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">PeerProcedureInterface.PeerOperationType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerProcedureInterface.ServerOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">ServerProcedureInterface.ServerOperationType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/PeerProcedureInterface.PeerOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">PeerProcedureInterface.PeerOperationType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MetaProcedureInterface.MetaOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">MetaProcedureInterface.MetaOperationType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/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 38e9b10..1d342c3 100644
--- a/devapidocs/org/apache/hadoop/hbase/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/package-tree.html
@@ -437,19 +437,19 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.<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/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/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/Size.Unit.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">Size.Unit</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/ClusterMetrics.Option.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ClusterMetrics.Option</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/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/Cell.Type.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">Cell.Type</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/ClusterMetrics.Option.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ClusterMetrics.Option</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/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/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/Cell.Type.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">Cell.Type</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/Size.Unit.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">Size.Unit</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>
+<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/KeepDeletedCells.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">KeepDeletedCells</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/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 87717f8..06d81e4 100644
--- a/devapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
@@ -216,11 +216,11 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.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/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/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/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/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/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>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/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 210f41c..ef2df60 100644
--- a/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html
@@ -229,13 +229,13 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.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/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/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/RpcThrottlingException.Type.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">RpcThrottlingException.Type</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/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/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/RpcThrottlingException.Type.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">RpcThrottlingException.Type</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/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/bbe517ae/devapidocs/org/apache/hadoop/hbase/regionserver/BloomType.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/BloomType.html b/devapidocs/org/apache/hadoop/hbase/regionserver/BloomType.html
index 83d06cc..c3b5601 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/BloomType.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/BloomType.html
@@ -153,6 +153,16 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?i
 <div class="block">Bloom enabled with Table row &amp; column (family+qualifier) as Key</div>
 </td>
 </tr>
+<tr class="rowColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/BloomType.html#ROWPREFIX_DELIMITED">ROWPREFIX_DELIMITED</a></span></code>
+<div class="block">Bloom enabled with Table row prefix as Key, specify the delimiter of the prefix</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/BloomType.html#ROWPREFIX_FIXED_LENGTH">ROWPREFIX_FIXED_LENGTH</a></span></code>
+<div class="block">Bloom enabled with Table row prefix as Key, specify the length of the prefix</div>
+</td>
+</tr>
 </table>
 </li>
 </ul>
@@ -233,13 +243,33 @@ the order they are declared.</div>
 <a name="ROWCOL">
 <!--   -->
 </a>
-<ul class="blockListLast">
+<ul class="blockList">
 <li class="blockList">
 <h4>ROWCOL</h4>
 <pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/BloomType.html" title="enum in org.apache.hadoop.hbase.regionserver">BloomType</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/BloomType.html#line.37">ROWCOL</a></pre>
 <div class="block">Bloom enabled with Table row &amp; column (family+qualifier) as Key</div>
 </li>
 </ul>
+<a name="ROWPREFIX_FIXED_LENGTH">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>ROWPREFIX_FIXED_LENGTH</h4>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/BloomType.html" title="enum in org.apache.hadoop.hbase.regionserver">BloomType</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/BloomType.html#line.41">ROWPREFIX_FIXED_LENGTH</a></pre>
+<div class="block">Bloom enabled with Table row prefix as Key, specify the length of the prefix</div>
+</li>
+</ul>
+<a name="ROWPREFIX_DELIMITED">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>ROWPREFIX_DELIMITED</h4>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/BloomType.html" title="enum in org.apache.hadoop.hbase.regionserver">BloomType</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/BloomType.html#line.45">ROWPREFIX_DELIMITED</a></pre>
+<div class="block">Bloom enabled with Table row prefix as Key, specify the delimiter of the prefix</div>
+</li>
+</ul>
 </li>
 </ul>
 <!-- ============ METHOD DETAIL ========== -->
@@ -254,7 +284,7 @@ the order they are declared.</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>values</h4>
-<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/BloomType.html" title="enum in org.apache.hadoop.hbase.regionserver">BloomType</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/BloomType.html#line.38">values</a>()</pre>
+<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/BloomType.html" title="enum in org.apache.hadoop.hbase.regionserver">BloomType</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/BloomType.html#line.46">values</a>()</pre>
 <div class="block">Returns an array containing the constants of this enum type, in
 the order they are declared.  This method may be used to iterate
 over the constants as follows:
@@ -274,7 +304,7 @@ for (BloomType c : BloomType.values())
 <ul class="blockListLast">
 <li class="blockList">
 <h4>valueOf</h4>
-<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/BloomType.html" title="enum in org.apache.hadoop.hbase.regionserver">BloomType</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/BloomType.html#line.38">valueOf</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</pre>
+<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/BloomType.html" title="enum in org.apache.hadoop.hbase.regionserver">BloomType</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/BloomType.html#line.46">valueOf</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</pre>
 <div class="block">Returns the enum constant of this type with the specified name.
 The string must match <i>exactly</i> an identifier used to declare an
 enum constant in this type.  (Extraneous whitespace characters are 


[11/43] hbase-site git commit: Published site at 7ab77518a2569e2416a50020393aa386e7734501.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/testdevapidocs/org/apache/hadoop/hbase/io/hfile/TestSeekBeforeWithInlineBlocks.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/io/hfile/TestSeekBeforeWithInlineBlocks.html b/testdevapidocs/org/apache/hadoop/hbase/io/hfile/TestSeekBeforeWithInlineBlocks.html
index 65a6726..fda1d31 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/io/hfile/TestSeekBeforeWithInlineBlocks.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/io/hfile/TestSeekBeforeWithInlineBlocks.html
@@ -109,7 +109,7 @@ var activeTableTab = "activeTableTab";
 <li class="blockList">
 <hr>
 <br>
-<pre>public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestSeekBeforeWithInlineBlocks.html#line.48">TestSeekBeforeWithInlineBlocks</a>
+<pre>public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestSeekBeforeWithInlineBlocks.html#line.49">TestSeekBeforeWithInlineBlocks</a>
 extends <a href="https://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>
@@ -264,7 +264,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>CLASS_RULE</h4>
-<pre>public static final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestSeekBeforeWithInlineBlocks.html#line.51">CLASS_RULE</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestSeekBeforeWithInlineBlocks.html#line.52">CLASS_RULE</a></pre>
 </li>
 </ul>
 <a name="LOG">
@@ -273,7 +273,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestSeekBeforeWithInlineBlocks.html#line.54">LOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestSeekBeforeWithInlineBlocks.html#line.55">LOG</a></pre>
 </li>
 </ul>
 <a name="TEST_UTIL">
@@ -282,7 +282,7 @@ extends <a href="https://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/io/hfile/TestSeekBeforeWithInlineBlocks.html#line.56">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/io/hfile/TestSeekBeforeWithInlineBlocks.html#line.57">TEST_UTIL</a></pre>
 </li>
 </ul>
 <a name="NUM_KV">
@@ -291,7 +291,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>NUM_KV</h4>
-<pre>private static final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestSeekBeforeWithInlineBlocks.html#line.59">NUM_KV</a></pre>
+<pre>private static final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestSeekBeforeWithInlineBlocks.html#line.60">NUM_KV</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.io.hfile.TestSeekBeforeWithInlineBlocks.NUM_KV">Constant Field Values</a></dd>
@@ -304,7 +304,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>DATA_BLOCK_SIZE</h4>
-<pre>private static final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestSeekBeforeWithInlineBlocks.html#line.61">DATA_BLOCK_SIZE</a></pre>
+<pre>private static final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestSeekBeforeWithInlineBlocks.html#line.62">DATA_BLOCK_SIZE</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.io.hfile.TestSeekBeforeWithInlineBlocks.DATA_BLOCK_SIZE">Constant Field Values</a></dd>
@@ -317,7 +317,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>BLOOM_BLOCK_SIZE</h4>
-<pre>private static final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestSeekBeforeWithInlineBlocks.html#line.62">BLOOM_BLOCK_SIZE</a></pre>
+<pre>private static final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestSeekBeforeWithInlineBlocks.html#line.63">BLOOM_BLOCK_SIZE</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.io.hfile.TestSeekBeforeWithInlineBlocks.BLOOM_BLOCK_SIZE">Constant Field Values</a></dd>
@@ -330,7 +330,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>INDEX_CHUNK_SIZES</h4>
-<pre>private static final&nbsp;int[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestSeekBeforeWithInlineBlocks.html#line.63">INDEX_CHUNK_SIZES</a></pre>
+<pre>private static final&nbsp;int[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestSeekBeforeWithInlineBlocks.html#line.64">INDEX_CHUNK_SIZES</a></pre>
 </li>
 </ul>
 <a name="EXPECTED_NUM_LEVELS">
@@ -339,7 +339,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>EXPECTED_NUM_LEVELS</h4>
-<pre>private static final&nbsp;int[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestSeekBeforeWithInlineBlocks.html#line.64">EXPECTED_NUM_LEVELS</a></pre>
+<pre>private static final&nbsp;int[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestSeekBeforeWithInlineBlocks.html#line.65">EXPECTED_NUM_LEVELS</a></pre>
 </li>
 </ul>
 <a name="RAND">
@@ -348,7 +348,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>RAND</h4>
-<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true" title="class or interface in java.util">Random</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestSeekBeforeWithInlineBlocks.html#line.66">RAND</a></pre>
+<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true" title="class or interface in java.util">Random</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestSeekBeforeWithInlineBlocks.html#line.67">RAND</a></pre>
 </li>
 </ul>
 <a name="FAM">
@@ -357,7 +357,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>FAM</h4>
-<pre>private static final&nbsp;byte[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestSeekBeforeWithInlineBlocks.html#line.67">FAM</a></pre>
+<pre>private static final&nbsp;byte[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestSeekBeforeWithInlineBlocks.html#line.68">FAM</a></pre>
 </li>
 </ul>
 <a name="fs">
@@ -366,7 +366,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>fs</h4>
-<pre>private&nbsp;org.apache.hadoop.fs.FileSystem <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestSeekBeforeWithInlineBlocks.html#line.69">fs</a></pre>
+<pre>private&nbsp;org.apache.hadoop.fs.FileSystem <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestSeekBeforeWithInlineBlocks.html#line.70">fs</a></pre>
 </li>
 </ul>
 <a name="conf">
@@ -375,7 +375,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>conf</h4>
-<pre>private&nbsp;org.apache.hadoop.conf.Configuration <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestSeekBeforeWithInlineBlocks.html#line.70">conf</a></pre>
+<pre>private&nbsp;org.apache.hadoop.conf.Configuration <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestSeekBeforeWithInlineBlocks.html#line.71">conf</a></pre>
 </li>
 </ul>
 </li>
@@ -392,7 +392,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestSeekBeforeWithInlineBlocks</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestSeekBeforeWithInlineBlocks.html#line.48">TestSeekBeforeWithInlineBlocks</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestSeekBeforeWithInlineBlocks.html#line.49">TestSeekBeforeWithInlineBlocks</a>()</pre>
 </li>
 </ul>
 </li>
@@ -409,7 +409,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testMultiIndexLevelRandomHFileWithBlooms</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestSeekBeforeWithInlineBlocks.html#line.81">testMultiIndexLevelRandomHFileWithBlooms</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestSeekBeforeWithInlineBlocks.html#line.82">testMultiIndexLevelRandomHFileWithBlooms</a>()
                                               throws <a href="https://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">Scanner.seekBefore() could fail because when seeking to a previous HFile data block, it needs
  to know the size of that data block, which it calculates using current data block offset and
@@ -429,7 +429,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>checkSeekBefore</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestSeekBeforeWithInlineBlocks.html#line.171">checkSeekBefore</a>(org.apache.hadoop.hbase.Cell[]&nbsp;cells,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestSeekBeforeWithInlineBlocks.html#line.176">checkSeekBefore</a>(org.apache.hadoop.hbase.Cell[]&nbsp;cells,
                              org.apache.hadoop.hbase.io.hfile.HFileScanner&nbsp;scanner,
                              int&nbsp;i)
                       throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -445,7 +445,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>checkNoSeekBefore</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestSeekBeforeWithInlineBlocks.html#line.178">checkNoSeekBefore</a>(org.apache.hadoop.hbase.Cell[]&nbsp;cells,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestSeekBeforeWithInlineBlocks.html#line.183">checkNoSeekBefore</a>(org.apache.hadoop.hbase.Cell[]&nbsp;cells,
                                org.apache.hadoop.hbase.io.hfile.HFileScanner&nbsp;scanner,
                                int&nbsp;i)
                         throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -461,7 +461,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>checkCell</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestSeekBeforeWithInlineBlocks.html#line.186">checkCell</a>(org.apache.hadoop.hbase.Cell&nbsp;expected,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestSeekBeforeWithInlineBlocks.html#line.191">checkCell</a>(org.apache.hadoop.hbase.Cell&nbsp;expected,
                        org.apache.hadoop.hbase.Cell&nbsp;actual)</pre>
 <div class="block">Check a key/value pair after it was read by the reader</div>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/testdevapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
index ec56445..4837d80 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
@@ -158,8 +158,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/TestCacheOnWrite.CacheOnWriteType.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">TestCacheOnWrite.CacheOnWriteType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/TagUsage.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">TagUsage</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/TestCacheOnWrite.CacheOnWriteType.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">TestCacheOnWrite.CacheOnWriteType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/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 ba30dcf..4a4418e 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/package-tree.html
@@ -582,15 +582,15 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.<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/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/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>
-<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/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/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/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/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/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/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/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/ScanPerformanceEvaluation.ScanCounter.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ScanPerformanceEvaluation.ScanCounter</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/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 a904793..6f5d107 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
@@ -211,9 +211,9 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
+<li type="circle">org.apache.hadoop.hbase.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/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/bbe517ae/testdevapidocs/org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.html
index cd6fa2c..78dd420 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.html
@@ -109,7 +109,7 @@ var activeTableTab = "activeTableTab";
 <li class="blockList">
 <hr>
 <br>
-<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.html#line.50">CreateRandomStoreFile</a>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.html#line.51">CreateRandomStoreFile</a>
 extends <a href="https://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">Creates an HFile with random key/value pairs.</div>
 </li>
@@ -143,81 +143,85 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.html#BLOOM_FILTER_OPTION">BLOOM_FILTER_OPTION</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><code>private static <a href="https://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/regionserver/CreateRandomStoreFile.html#BLOOM_FILTER_PARAM_OPTION">BLOOM_FILTER_PARAM_OPTION</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/regionserver/CreateRandomStoreFile.html#cfLen">cfLen</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="https://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/regionserver/CreateRandomStoreFile.html#COMPRESSION_OPTION">COMPRESSION_OPTION</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<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/regionserver/CreateRandomStoreFile.html#EXIT_FAILURE">EXIT_FAILURE</a></span></code>
 <div class="block">The exit code this command-line tool returns on failure</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="https://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/regionserver/CreateRandomStoreFile.html#HFILE_VERSION_OPTION">HFILE_VERSION_OPTION</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="https://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/regionserver/CreateRandomStoreFile.html#INDEX_BLOCK_SIZE_OPTION">INDEX_BLOCK_SIZE_OPTION</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="https://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/regionserver/CreateRandomStoreFile.html#KEY_SIZE_OPTION">KEY_SIZE_OPTION</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.html#keyLen">keyLen</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.html#keyPrefixLen">keyPrefixLen</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<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/regionserver/CreateRandomStoreFile.html#LEN_VARIATION">LEN_VARIATION</a></span></code>
 <div class="block">As much as this number of bytes can be added or subtracted from key/value
  lengths.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static org.slf4j.Logger</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.html#LOG">LOG</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="https://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/regionserver/CreateRandomStoreFile.html#NUM_KV_OPTION">NUM_KV_OPTION</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<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/regionserver/CreateRandomStoreFile.html#NUM_VALID_KEY_TYPES">NUM_VALID_KEY_TYPES</a></span></code>
 <div class="block">The number of valid key types in a store file</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private org.apache.hbase.thirdparty.org.apache.commons.cli.Options</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.html#options">options</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="https://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/regionserver/CreateRandomStoreFile.html#OUTPUT_DIR_OPTION">OUTPUT_DIR_OPTION</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true" title="class or interface in java.util">Random</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.html#rand">rand</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.html#rowLen">rowLen</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="https://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/regionserver/CreateRandomStoreFile.html#VALUE_SIZE_OPTION">VALUE_SIZE_OPTION</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.html#valueLen">valueLen</a></span></code>&nbsp;</td>
 </tr>
@@ -321,7 +325,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>LEN_VARIATION</h4>
-<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.html#line.56">LEN_VARIATION</a></pre>
+<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.html#line.57">LEN_VARIATION</a></pre>
 <div class="block">As much as this number of bytes can be added or subtracted from key/value
  lengths.</div>
 <dl>
@@ -336,7 +340,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.html#line.58">LOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.html#line.59">LOG</a></pre>
 </li>
 </ul>
 <a name="OUTPUT_DIR_OPTION">
@@ -345,7 +349,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>OUTPUT_DIR_OPTION</h4>
-<pre>private static final&nbsp;<a href="https://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/CreateRandomStoreFile.html#line.60">OUTPUT_DIR_OPTION</a></pre>
+<pre>private static final&nbsp;<a href="https://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/CreateRandomStoreFile.html#line.61">OUTPUT_DIR_OPTION</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.CreateRandomStoreFile.OUTPUT_DIR_OPTION">Constant Field Values</a></dd>
@@ -358,7 +362,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>NUM_KV_OPTION</h4>
-<pre>private static final&nbsp;<a href="https://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/CreateRandomStoreFile.html#line.61">NUM_KV_OPTION</a></pre>
+<pre>private static final&nbsp;<a href="https://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/CreateRandomStoreFile.html#line.62">NUM_KV_OPTION</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.CreateRandomStoreFile.NUM_KV_OPTION">Constant Field Values</a></dd>
@@ -371,7 +375,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>HFILE_VERSION_OPTION</h4>
-<pre>private static final&nbsp;<a href="https://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/CreateRandomStoreFile.html#line.62">HFILE_VERSION_OPTION</a></pre>
+<pre>private static final&nbsp;<a href="https://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/CreateRandomStoreFile.html#line.63">HFILE_VERSION_OPTION</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.CreateRandomStoreFile.HFILE_VERSION_OPTION">Constant Field Values</a></dd>
@@ -384,7 +388,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>KEY_SIZE_OPTION</h4>
-<pre>private static final&nbsp;<a href="https://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/CreateRandomStoreFile.html#line.63">KEY_SIZE_OPTION</a></pre>
+<pre>private static final&nbsp;<a href="https://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/CreateRandomStoreFile.html#line.64">KEY_SIZE_OPTION</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.CreateRandomStoreFile.KEY_SIZE_OPTION">Constant Field Values</a></dd>
@@ -397,7 +401,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>VALUE_SIZE_OPTION</h4>
-<pre>private static final&nbsp;<a href="https://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/CreateRandomStoreFile.html#line.64">VALUE_SIZE_OPTION</a></pre>
+<pre>private static final&nbsp;<a href="https://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/CreateRandomStoreFile.html#line.65">VALUE_SIZE_OPTION</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.CreateRandomStoreFile.VALUE_SIZE_OPTION">Constant Field Values</a></dd>
@@ -410,7 +414,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>COMPRESSION_OPTION</h4>
-<pre>private static final&nbsp;<a href="https://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/CreateRandomStoreFile.html#line.65">COMPRESSION_OPTION</a></pre>
+<pre>private static final&nbsp;<a href="https://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/CreateRandomStoreFile.html#line.66">COMPRESSION_OPTION</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.CreateRandomStoreFile.COMPRESSION_OPTION">Constant Field Values</a></dd>
@@ -423,20 +427,33 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>BLOOM_FILTER_OPTION</h4>
-<pre>private static final&nbsp;<a href="https://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/CreateRandomStoreFile.html#line.66">BLOOM_FILTER_OPTION</a></pre>
+<pre>private static final&nbsp;<a href="https://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/CreateRandomStoreFile.html#line.67">BLOOM_FILTER_OPTION</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.CreateRandomStoreFile.BLOOM_FILTER_OPTION">Constant Field Values</a></dd>
 </dl>
 </li>
 </ul>
+<a name="BLOOM_FILTER_PARAM_OPTION">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>BLOOM_FILTER_PARAM_OPTION</h4>
+<pre>private static final&nbsp;<a href="https://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/CreateRandomStoreFile.html#line.68">BLOOM_FILTER_PARAM_OPTION</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.CreateRandomStoreFile.BLOOM_FILTER_PARAM_OPTION">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
 <a name="BLOCK_SIZE_OPTION">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>BLOCK_SIZE_OPTION</h4>
-<pre>private static final&nbsp;<a href="https://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/CreateRandomStoreFile.html#line.67">BLOCK_SIZE_OPTION</a></pre>
+<pre>private static final&nbsp;<a href="https://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/CreateRandomStoreFile.html#line.69">BLOCK_SIZE_OPTION</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.CreateRandomStoreFile.BLOCK_SIZE_OPTION">Constant Field Values</a></dd>
@@ -449,7 +466,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>BLOOM_BLOCK_SIZE_OPTION</h4>
-<pre>private static final&nbsp;<a href="https://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/CreateRandomStoreFile.html#line.68">BLOOM_BLOCK_SIZE_OPTION</a></pre>
+<pre>private static final&nbsp;<a href="https://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/CreateRandomStoreFile.html#line.70">BLOOM_BLOCK_SIZE_OPTION</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.CreateRandomStoreFile.BLOOM_BLOCK_SIZE_OPTION">Constant Field Values</a></dd>
@@ -462,7 +479,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>INDEX_BLOCK_SIZE_OPTION</h4>
-<pre>private static final&nbsp;<a href="https://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/CreateRandomStoreFile.html#line.69">INDEX_BLOCK_SIZE_OPTION</a></pre>
+<pre>private static final&nbsp;<a href="https://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/CreateRandomStoreFile.html#line.71">INDEX_BLOCK_SIZE_OPTION</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.CreateRandomStoreFile.INDEX_BLOCK_SIZE_OPTION">Constant Field Values</a></dd>
@@ -475,7 +492,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>EXIT_FAILURE</h4>
-<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.html#line.72">EXIT_FAILURE</a></pre>
+<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.html#line.74">EXIT_FAILURE</a></pre>
 <div class="block">The exit code this command-line tool returns on failure</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -489,7 +506,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>NUM_VALID_KEY_TYPES</h4>
-<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.html#line.75">NUM_VALID_KEY_TYPES</a></pre>
+<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.html#line.77">NUM_VALID_KEY_TYPES</a></pre>
 <div class="block">The number of valid key types in a store file</div>
 </li>
 </ul>
@@ -499,7 +516,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>options</h4>
-<pre>private&nbsp;org.apache.hbase.thirdparty.org.apache.commons.cli.Options <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.html#line.78">options</a></pre>
+<pre>private&nbsp;org.apache.hbase.thirdparty.org.apache.commons.cli.Options <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.html#line.80">options</a></pre>
 </li>
 </ul>
 <a name="keyPrefixLen">
@@ -508,7 +525,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>keyPrefixLen</h4>
-<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.html#line.80">keyPrefixLen</a></pre>
+<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.html#line.82">keyPrefixLen</a></pre>
 </li>
 </ul>
 <a name="keyLen">
@@ -517,7 +534,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>keyLen</h4>
-<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.html#line.80">keyLen</a></pre>
+<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.html#line.82">keyLen</a></pre>
 </li>
 </ul>
 <a name="rowLen">
@@ -526,7 +543,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>rowLen</h4>
-<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.html#line.80">rowLen</a></pre>
+<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.html#line.82">rowLen</a></pre>
 </li>
 </ul>
 <a name="cfLen">
@@ -535,7 +552,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>cfLen</h4>
-<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.html#line.80">cfLen</a></pre>
+<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.html#line.82">cfLen</a></pre>
 </li>
 </ul>
 <a name="valueLen">
@@ -544,7 +561,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>valueLen</h4>
-<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.html#line.80">valueLen</a></pre>
+<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.html#line.82">valueLen</a></pre>
 </li>
 </ul>
 <a name="rand">
@@ -553,7 +570,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>rand</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true" title="class or interface in java.util">Random</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.html#line.81">rand</a></pre>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true" title="class or interface in java.util">Random</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.html#line.83">rand</a></pre>
 </li>
 </ul>
 </li>
@@ -570,7 +587,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>CreateRandomStoreFile</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.html#line.50">CreateRandomStoreFile</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.html#line.51">CreateRandomStoreFile</a>()</pre>
 </li>
 </ul>
 </li>
@@ -587,7 +604,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>run</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.html#line.90">run</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;args)
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.html#line.92">run</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;args)
             throws <a href="https://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">Runs the tools.</div>
 <dl>
@@ -606,7 +623,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>configureKeyValue</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.html#line.217">configureKeyValue</a>(long&nbsp;numKV,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.html#line.240">configureKeyValue</a>(long&nbsp;numKV,
                                int&nbsp;keyLen,
                                int&nbsp;valueLen)</pre>
 </li>
@@ -617,7 +634,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>nextInRange</h4>
-<pre>private&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.html#line.234">nextInRange</a>(int&nbsp;range)</pre>
+<pre>private&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.html#line.257">nextInRange</a>(int&nbsp;range)</pre>
 </li>
 </ul>
 <a name="generateKeyValue-long-">
@@ -626,7 +643,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>generateKeyValue</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.KeyValue&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.html#line.238">generateKeyValue</a>(long&nbsp;i)</pre>
+<pre>public&nbsp;org.apache.hadoop.hbase.KeyValue&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.html#line.261">generateKeyValue</a>(long&nbsp;i)</pre>
 </li>
 </ul>
 <a name="generateKeyType-java.util.Random-">
@@ -635,7 +652,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>generateKeyType</h4>
-<pre>public static&nbsp;org.apache.hadoop.hbase.KeyValue.Type&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.html#line.251">generateKeyType</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true" title="class or interface in java.util">Random</a>&nbsp;rand)</pre>
+<pre>public static&nbsp;org.apache.hadoop.hbase.KeyValue.Type&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.html#line.274">generateKeyType</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true" title="class or interface in java.util">Random</a>&nbsp;rand)</pre>
 </li>
 </ul>
 <a name="generateString--">
@@ -644,7 +661,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>generateString</h4>
-<pre>private&nbsp;<a href="https://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/CreateRandomStoreFile.html#line.267">generateString</a>()</pre>
+<pre>private&nbsp;<a href="https://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/CreateRandomStoreFile.html#line.290">generateString</a>()</pre>
 </li>
 </ul>
 <a name="generateKey-long-">
@@ -653,7 +670,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>generateKey</h4>
-<pre>private&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.html#line.275">generateKey</a>(long&nbsp;i)</pre>
+<pre>private&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.html#line.298">generateKey</a>(long&nbsp;i)</pre>
 </li>
 </ul>
 <a name="generateValue--">
@@ -662,7 +679,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>generateValue</h4>
-<pre>private&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.html#line.288">generateValue</a>()</pre>
+<pre>private&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.html#line.311">generateValue</a>()</pre>
 </li>
 </ul>
 <a name="main-java.lang.String:A-">
@@ -671,7 +688,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>main</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.html#line.296">main</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;args)</pre>
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.html#line.319">main</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;args)</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/testdevapidocs/org/apache/hadoop/hbase/regionserver/MockHStoreFile.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/MockHStoreFile.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/MockHStoreFile.html
index 982c5da..e8294d0 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/MockHStoreFile.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/MockHStoreFile.html
@@ -194,7 +194,7 @@ extends org.apache.hadoop.hbase.regionserver.HStoreFile</pre>
 <!--   -->
 </a>
 <h3>Fields inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.HStoreFile</h3>
-<code>BLOOM_FILTER_TYPE_KEY, BULKLOAD_TASK_KEY, BULKLOAD_TIME_KEY, DELETE_FAMILY_COUNT, EARLIEST_PUT_TS, EXCLUDE_FROM_MINOR_COMPACTION_KEY, LAST_BLOOM_KEY, MAJOR_COMPACTION_KEY, MAX_SEQ_ID_KEY, MOB_CELLS_COUNT, SKIP_RESET_SEQ_ID, STORE_FILE_READER_NO_READAHEAD, TIMERANGE_KEY</code></li>
+<code>BLOOM_FILTER_PARAM_KEY, BLOOM_FILTER_TYPE_KEY, BULKLOAD_TASK_KEY, BULKLOAD_TIME_KEY, DELETE_FAMILY_COUNT, EARLIEST_PUT_TS, EXCLUDE_FROM_MINOR_COMPACTION_KEY, LAST_BLOOM_KEY, MAJOR_COMPACTION_KEY, MAX_SEQ_ID_KEY, MOB_CELLS_COUNT, SKIP_RESET_SEQ_ID, STORE_FILE_READER_NO_READAHEAD, TIMERANGE_KEY</code></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestMultiColumnScanner.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestMultiColumnScanner.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestMultiColumnScanner.html
index 20b06c6..f2a808a 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestMultiColumnScanner.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestMultiColumnScanner.html
@@ -109,7 +109,7 @@ var activeTableTab = "activeTableTab";
 <li class="blockList">
 <hr>
 <br>
-<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestMultiColumnScanner.html#line.67">TestMultiColumnScanner</a>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestMultiColumnScanner.html#line.68">TestMultiColumnScanner</a>
 extends <a href="https://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">Tests optimized scanning of multiple columns.</div>
 </li>
@@ -325,7 +325,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>CLASS_RULE</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestMultiColumnScanner.html#line.70">CLASS_RULE</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestMultiColumnScanner.html#line.71">CLASS_RULE</a></pre>
 </li>
 </ul>
 <a name="LOG">
@@ -334,7 +334,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestMultiColumnScanner.html#line.73">LOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestMultiColumnScanner.html#line.74">LOG</a></pre>
 </li>
 </ul>
 <a name="TABLE_NAME">
@@ -343,7 +343,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>TABLE_NAME</h4>
-<pre>private static final&nbsp;<a href="https://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/TestMultiColumnScanner.html#line.75">TABLE_NAME</a></pre>
+<pre>private static final&nbsp;<a href="https://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/TestMultiColumnScanner.html#line.76">TABLE_NAME</a></pre>
 </li>
 </ul>
 <a name="MAX_VERSIONS">
@@ -352,7 +352,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>MAX_VERSIONS</h4>
-<pre>static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestMultiColumnScanner.html#line.78">MAX_VERSIONS</a></pre>
+<pre>static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestMultiColumnScanner.html#line.79">MAX_VERSIONS</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.TestMultiColumnScanner.MAX_VERSIONS">Constant Field Values</a></dd>
@@ -365,7 +365,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>FAMILY</h4>
-<pre>private static final&nbsp;<a href="https://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/TestMultiColumnScanner.html#line.80">FAMILY</a></pre>
+<pre>private static final&nbsp;<a href="https://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/TestMultiColumnScanner.html#line.81">FAMILY</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.TestMultiColumnScanner.FAMILY">Constant Field Values</a></dd>
@@ -378,7 +378,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>FAMILY_BYTES</h4>
-<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestMultiColumnScanner.html#line.81">FAMILY_BYTES</a></pre>
+<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestMultiColumnScanner.html#line.82">FAMILY_BYTES</a></pre>
 </li>
 </ul>
 <a name="NUM_COLUMNS">
@@ -387,7 +387,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>NUM_COLUMNS</h4>
-<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestMultiColumnScanner.html#line.87">NUM_COLUMNS</a></pre>
+<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestMultiColumnScanner.html#line.88">NUM_COLUMNS</a></pre>
 <div class="block">The size of the column qualifier set used. Increasing this parameter
  exponentially increases test time.</div>
 <dl>
@@ -402,7 +402,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>MAX_COLUMN_BIT_MASK</h4>
-<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestMultiColumnScanner.html#line.89">MAX_COLUMN_BIT_MASK</a></pre>
+<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestMultiColumnScanner.html#line.90">MAX_COLUMN_BIT_MASK</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.TestMultiColumnScanner.MAX_COLUMN_BIT_MASK">Constant Field Values</a></dd>
@@ -415,7 +415,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>NUM_FLUSHES</h4>
-<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestMultiColumnScanner.html#line.90">NUM_FLUSHES</a></pre>
+<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestMultiColumnScanner.html#line.91">NUM_FLUSHES</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.TestMultiColumnScanner.NUM_FLUSHES">Constant Field Values</a></dd>
@@ -428,7 +428,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>NUM_ROWS</h4>
-<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestMultiColumnScanner.html#line.91">NUM_ROWS</a></pre>
+<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestMultiColumnScanner.html#line.92">NUM_ROWS</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.TestMultiColumnScanner.NUM_ROWS">Constant Field Values</a></dd>
@@ -441,7 +441,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>BIG_LONG</h4>
-<pre>private static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestMultiColumnScanner.html#line.94">BIG_LONG</a></pre>
+<pre>private static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestMultiColumnScanner.html#line.95">BIG_LONG</a></pre>
 <div class="block">A large value of type long for use as a timestamp</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -455,7 +455,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>TIMESTAMPS</h4>
-<pre>private static final&nbsp;long[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestMultiColumnScanner.html#line.100">TIMESTAMPS</a></pre>
+<pre>private static final&nbsp;long[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestMultiColumnScanner.html#line.101">TIMESTAMPS</a></pre>
 <div class="block">Timestamps to test with. Cannot use <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true#MAX_VALUE" title="class or interface in java.lang"><code>Long.MAX_VALUE</code></a> here, because
  it will be replaced by an timestamp auto-generated based on the time.</div>
 </li>
@@ -466,7 +466,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>COLUMN_SKIP_IN_STORE_FILE_PROB</h4>
-<pre>private static final&nbsp;double <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestMultiColumnScanner.html#line.104">COLUMN_SKIP_IN_STORE_FILE_PROB</a></pre>
+<pre>private static final&nbsp;double <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestMultiColumnScanner.html#line.105">COLUMN_SKIP_IN_STORE_FILE_PROB</a></pre>
 <div class="block">The probability that a column is skipped in a store file.</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -480,7 +480,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>COLUMN_SKIP_IN_ROW_PROB</h4>
-<pre>private static final&nbsp;double <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestMultiColumnScanner.html#line.107">COLUMN_SKIP_IN_ROW_PROB</a></pre>
+<pre>private static final&nbsp;double <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestMultiColumnScanner.html#line.108">COLUMN_SKIP_IN_ROW_PROB</a></pre>
 <div class="block">The probability of skipping a column in a single row</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -494,7 +494,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>COLUMN_SKIP_EVERYWHERE_PROB</h4>
-<pre>private static final&nbsp;double <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestMultiColumnScanner.html#line.110">COLUMN_SKIP_EVERYWHERE_PROB</a></pre>
+<pre>private static final&nbsp;double <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestMultiColumnScanner.html#line.111">COLUMN_SKIP_EVERYWHERE_PROB</a></pre>
 <div class="block">The probability of skipping a column everywhere</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -508,7 +508,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>DELETE_PROBABILITY</h4>
-<pre>private static final&nbsp;double <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestMultiColumnScanner.html#line.113">DELETE_PROBABILITY</a></pre>
+<pre>private static final&nbsp;double <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestMultiColumnScanner.html#line.114">DELETE_PROBABILITY</a></pre>
 <div class="block">The probability to delete a row/column pair</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -522,7 +522,7 @@ extends <a href="https://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/regionserver/TestMultiColumnScanner.html#line.115">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/regionserver/TestMultiColumnScanner.html#line.116">TEST_UTIL</a></pre>
 </li>
 </ul>
 <a name="comprAlgo">
@@ -531,7 +531,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>comprAlgo</h4>
-<pre>private final&nbsp;org.apache.hadoop.hbase.io.compress.Compression.Algorithm <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestMultiColumnScanner.html#line.117">comprAlgo</a></pre>
+<pre>private final&nbsp;org.apache.hadoop.hbase.io.compress.Compression.Algorithm <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestMultiColumnScanner.html#line.118">comprAlgo</a></pre>
 </li>
 </ul>
 <a name="bloomType">
@@ -540,7 +540,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>bloomType</h4>
-<pre>private final&nbsp;org.apache.hadoop.hbase.regionserver.BloomType <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestMultiColumnScanner.html#line.118">bloomType</a></pre>
+<pre>private final&nbsp;org.apache.hadoop.hbase.regionserver.BloomType <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestMultiColumnScanner.html#line.119">bloomType</a></pre>
 </li>
 </ul>
 <a name="dataBlockEncoding">
@@ -549,7 +549,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>dataBlockEncoding</h4>
-<pre>private final&nbsp;org.apache.hadoop.hbase.io.encoding.DataBlockEncoding <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestMultiColumnScanner.html#line.119">dataBlockEncoding</a></pre>
+<pre>private final&nbsp;org.apache.hadoop.hbase.io.encoding.DataBlockEncoding <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestMultiColumnScanner.html#line.120">dataBlockEncoding</a></pre>
 </li>
 </ul>
 </li>
@@ -566,7 +566,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestMultiColumnScanner</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestMultiColumnScanner.html#line.143">TestMultiColumnScanner</a>(org.apache.hadoop.hbase.io.compress.Compression.Algorithm&nbsp;comprAlgo,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestMultiColumnScanner.html#line.144">TestMultiColumnScanner</a>(org.apache.hadoop.hbase.io.compress.Compression.Algorithm&nbsp;comprAlgo,
                               org.apache.hadoop.hbase.regionserver.BloomType&nbsp;bloomType,
                               boolean&nbsp;useDataBlockEncoding)</pre>
 </li>
@@ -585,7 +585,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>parameters</h4>
-<pre>public static final&nbsp;<a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestMultiColumnScanner.html#line.131">parameters</a>()</pre>
+<pre>public static final&nbsp;<a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestMultiColumnScanner.html#line.132">parameters</a>()</pre>
 </li>
 </ul>
 <a name="testMultiColumnScanner--">
@@ -594,7 +594,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testMultiColumnScanner</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestMultiColumnScanner.html#line.152">testMultiColumnScanner</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestMultiColumnScanner.html#line.153">testMultiColumnScanner</a>()
                             throws <a href="https://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>
@@ -608,7 +608,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getRowQualStr</h4>
-<pre>private static&nbsp;<a href="https://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/TestMultiColumnScanner.html#line.296">getRowQualStr</a>(org.apache.hadoop.hbase.Cell&nbsp;kv)</pre>
+<pre>private static&nbsp;<a href="https://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/TestMultiColumnScanner.html#line.299">getRowQualStr</a>(org.apache.hadoop.hbase.Cell&nbsp;kv)</pre>
 </li>
 </ul>
 <a name="matchesQuery-org.apache.hadoop.hbase.KeyValue-java.util.Set-int-java.util.Map-">
@@ -617,7 +617,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>matchesQuery</h4>
-<pre>private static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestMultiColumnScanner.html#line.302">matchesQuery</a>(org.apache.hadoop.hbase.KeyValue&nbsp;kv,
+<pre>private static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestMultiColumnScanner.html#line.305">matchesQuery</a>(org.apache.hadoop.hbase.KeyValue&nbsp;kv,
                                     <a href="https://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="https://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;qualSet,
                                     int&nbsp;maxVersions,
                                     <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://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="https://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;lastDelTimeMap)</pre>
@@ -629,7 +629,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>qualStr</h4>
-<pre>private static&nbsp;<a href="https://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/TestMultiColumnScanner.html#line.311">qualStr</a>(org.apache.hadoop.hbase.KeyValue&nbsp;kv)</pre>
+<pre>private static&nbsp;<a href="https://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/TestMultiColumnScanner.html#line.314">qualStr</a>(org.apache.hadoop.hbase.KeyValue&nbsp;kv)</pre>
 </li>
 </ul>
 <a name="rowQualKey-java.lang.String-java.lang.String-">
@@ -638,7 +638,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>rowQualKey</h4>
-<pre>private static&nbsp;<a href="https://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/TestMultiColumnScanner.html#line.316">rowQualKey</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;row,
+<pre>private static&nbsp;<a href="https://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/TestMultiColumnScanner.html#line.319">rowQualKey</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;row,
                                  <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;qual)</pre>
 </li>
 </ul>
@@ -648,7 +648,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>createValue</h4>
-<pre>static&nbsp;<a href="https://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/TestMultiColumnScanner.html#line.320">createValue</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;row,
+<pre>static&nbsp;<a href="https://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/TestMultiColumnScanner.html#line.323">createValue</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;row,
                           <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;qual,
                           long&nbsp;ts)</pre>
 </li>
@@ -659,7 +659,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>sequentialStrings</h4>
-<pre>private static&nbsp;<a href="https://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="https://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/TestMultiColumnScanner.html#line.324">sequentialStrings</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;prefix,
+<pre>private static&nbsp;<a href="https://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="https://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/TestMultiColumnScanner.html#line.327">sequentialStrings</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;prefix,
                                               int&nbsp;n)</pre>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestReversibleScanners.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestReversibleScanners.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestReversibleScanners.html
index eed022c..a7c768f 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestReversibleScanners.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestReversibleScanners.html
@@ -50,7 +50,7 @@ var activeTableTab = "activeTableTab";
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestResettingCounters.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRowTooBig.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/hadoop/hbase/regionserver/TestReversibleScanners.html" target="_top">Frames</a></li>
@@ -897,7 +897,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestResettingCounters.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRowTooBig.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/hadoop/hbase/regionserver/TestReversibleScanners.html" target="_top">Frames</a></li>


[40/43] hbase-site git commit: Published site at 7ab77518a2569e2416a50020393aa386e7734501.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/checkstyle-aggregate.html
----------------------------------------------------------------------
diff --git a/checkstyle-aggregate.html b/checkstyle-aggregate.html
index c8379a1..93d4a73 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="20180921" />
+    <meta name="Date-Revision-yyyymmdd" content="20180922" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Checkstyle Results</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -281,10 +281,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>3740</td>
+<td>3743</td>
 <td>0</td>
 <td>0</td>
-<td>15223</td></tr></table></div>
+<td>15216</td></tr></table></div>
 <div class="section">
 <h2><a name="Files"></a>Files</h2>
 <table border="0" class="table table-striped">
@@ -4607,7 +4607,7 @@
 <td><a href="#org.apache.hadoop.hbase.master.MasterRpcServices.java">org/apache/hadoop/hbase/master/MasterRpcServices.java</a></td>
 <td>0</td>
 <td>0</td>
-<td>12</td></tr>
+<td>13</td></tr>
 <tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.MasterServices.java">org/apache/hadoop/hbase/master/MasterServices.java</a></td>
 <td>0</td>
@@ -6647,7 +6647,7 @@
 <td><a href="#org.apache.hadoop.hbase.regionserver.StoreFileWriter.java">org/apache/hadoop/hbase/regionserver/StoreFileWriter.java</a></td>
 <td>0</td>
 <td>0</td>
-<td>13</td></tr>
+<td>5</td></tr>
 <tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.StoreFlushContext.java">org/apache/hadoop/hbase/regionserver/StoreFlushContext.java</a></td>
 <td>0</td>
@@ -9800,7 +9800,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>110</td>
+<td>111</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
 <tr class="a">
 <td>indentation</td>
@@ -9811,19 +9811,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>4825</td>
+<td>4817</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>734</td>
+<td>733</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>3539</td>
+<td>3540</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
 <tr class="b">
 <td>misc</td>
@@ -19153,7 +19153,7 @@
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>JavadocTagContinuationIndentation</td>
+<td>NonEmptyAtclauseDescription</td>
 <td>Javadoc comment at column 0 has parse error. Details: no viable alternative at input '   *' while parsing JAVADOC_TAG</td>
 <td>117</td></tr>
 <tr class="a">
@@ -55313,110 +55313,110 @@
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>MethodLength</td>
-<td>Method length is 272 lines (max allowed is 150).</td>
-<td>188</td></tr>
+<td>Method length is 279 lines (max allowed is 150).</td>
+<td>191</td></tr>
 <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>195</td></tr>
+<td>198</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 102).</td>
-<td>425</td></tr>
+<td>435</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 6, expected level should be 8.</td>
-<td>455</td></tr>
+<td>465</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>LeftCurly</td>
 <td>'{' at column 5 should be on the previous line.</td>
-<td>496</td></tr>
+<td>506</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>LeftCurly</td>
 <td>'{' at column 9 should be on the previous line.</td>
-<td>503</td></tr>
+<td>513</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>MethodParamPad</td>
 <td>'(' should be on the previous line.</td>
-<td>509</td></tr>
+<td>519</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>MethodParamPad</td>
 <td>'(' should be on the previous line.</td>
-<td>537</td></tr>
+<td>547</td></tr>
 <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>640</td></tr>
+<td>650</td></tr>
 <tr class="a">
 <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>641</td></tr>
+<td>651</td></tr>
 <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>643</td></tr>
+<td>653</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
 <td>')' is preceded with whitespace.</td>
-<td>643</td></tr>
+<td>653</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>LeftCurly</td>
 <td>'{' at column 5 should be on the previous line.</td>
-<td>644</td></tr>
+<td>654</td></tr>
 <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 146).</td>
-<td>652</td></tr>
+<td>662</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 101).</td>
-<td>655</td></tr>
+<td>665</td></tr>
 <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 103).</td>
-<td>834</td></tr>
+<td>861</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 124).</td>
-<td>836</td></tr>
+<td>863</td></tr>
 <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 121).</td>
-<td>851</td></tr></table></div>
+<td>878</td></tr></table></div>
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.mapreduce.HRegionPartitioner.java">org/apache/hadoop/hbase/mapreduce/HRegionPartitioner.java</h3>
 <table border="0" class="table table-striped">
@@ -60303,919 +60303,919 @@
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 101).</td>
-<td>450</td></tr>
+<td>452</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'ctor def' child has incorrect indentation level 7, expected level should be 6.</td>
-<td>453</td></tr>
+<td>455</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'ctor def' child has incorrect indentation level 7, expected level should be 6.</td>
-<td>454</td></tr>
+<td>456</td></tr>
 <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 101).</td>
-<td>464</td></tr>
+<td>466</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 105).</td>
-<td>466</td></tr>
+<td>468</td></tr>
 <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 109).</td>
-<td>467</td></tr>
+<td>469</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 103).</td>
-<td>469</td></tr>
+<td>471</td></tr>
 <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 118).</td>
-<td>470</td></tr>
+<td>472</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 120).</td>
-<td>471</td></tr>
+<td>473</td></tr>
 <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 103).</td>
-<td>472</td></tr>
+<td>474</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 115).</td>
-<td>476</td></tr>
+<td>478</td></tr>
 <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>505</td></tr>
+<td>507</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 114).</td>
-<td>650</td></tr>
+<td>652</td></tr>
 <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 131).</td>
-<td>664</td></tr>
+<td>666</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td>794</td></tr>
+<td>796</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>MethodLength</td>
 <td>Method length is 279 lines (max allowed is 150).</td>
-<td>886</td></tr>
+<td>888</td></tr>
 <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 has incorrect indentation level 3, expected level should be 4.</td>
-<td>1382</td></tr>
+<td>1384</td></tr>
 <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 has incorrect indentation level 3, expected level should be 4.</td>
-<td>1384</td></tr>
+<td>1386</td></tr>
 <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 has incorrect indentation level 3, expected level should be 4.</td>
-<td>1386</td></tr>
+<td>1388</td></tr>
 <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 has incorrect indentation level 3, expected level should be 4.</td>
-<td>1388</td></tr>
+<td>1390</td></tr>
 <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 has incorrect indentation level 3, expected level should be 4.</td>
-<td>1390</td></tr>
+<td>1392</td></tr>
 <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 has incorrect indentation level 3, expected level should be 4.</td>
-<td>1398</td></tr>
+<td>1400</td></tr>
 <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 has incorrect indentation level 3, expected level should be 4.</td>
-<td>1399</td></tr>
+<td>1401</td></tr>
 <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 has incorrect indentation level 3, expected level should be 4.</td>
-<td>1404</td></tr>
+<td>1406</td></tr>
 <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 has incorrect indentation level 3, expected level should be 4.</td>
-<td>1405</td></tr>
+<td>1407</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td>1613</td></tr>
+<td>1615</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td>1635</td></tr>
+<td>1637</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td>1652</td></tr>
+<td>1654</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td>1687</td></tr>
+<td>1689</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>MethodParamPad</td>
 <td>'(' is preceded with whitespace.</td>
-<td>1831</td></tr>
+<td>1833</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>MethodParamPad</td>
 <td>'(' is preceded with whitespace.</td>
-<td>1835</td></tr>
+<td>1837</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def modifier' has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>1847</td></tr>
+<td>1849</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>1849</td></tr>
+<td>1851</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>1851</td></tr>
+<td>1853</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>1854</td></tr>
+<td>1856</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>1857</td></tr>
+<td>1859</td></tr>
 <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' has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>1858</td></tr>
+<td>1860</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def modifier' has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>1860</td></tr>
+<td>1862</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>1862</td></tr>
+<td>1864</td></tr>
 <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' has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>1863</td></tr>
+<td>1865</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'object def rcurly' has incorrect indentation level 4, expected level should be one of the following: 6, 8.</td>
-<td>1864</td></tr>
+<td>1866</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
-<td>1870</td></tr>
+<td>1872</td></tr>
 <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' has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>1874</td></tr>
+<td>1876</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>1876</td></tr>
+<td>1878</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>1877</td></tr>
+<td>1879</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>1880</td></tr>
+<td>1882</td></tr>
 <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' has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>1881</td></tr>
+<td>1883</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def modifier' has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>1883</td></tr>
+<td>1885</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>1885</td></tr>
+<td>1887</td></tr>
 <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' has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>1886</td></tr>
+<td>1888</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'object def rcurly' has incorrect indentation level 4, expected level should be one of the following: 6, 8.</td>
-<td>1887</td></tr>
+<td>1889</td></tr>
 <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 116).</td>
-<td>1906</td></tr>
+<td>1908</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 105).</td>
-<td>1908</td></tr>
+<td>1910</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def modifier' has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>1999</td></tr>
+<td>2001</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2001</td></tr>
+<td>2003</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2003</td></tr>
+<td>2005</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2010</td></tr>
+<td>2012</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2011</td></tr>
+<td>2013</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2013</td></tr>
+<td>2015</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2015</td></tr>
+<td>2017</td></tr>
 <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' has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2016</td></tr>
+<td>2018</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def modifier' has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2018</td></tr>
+<td>2020</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2020</td></tr>
+<td>2022</td></tr>
 <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' has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2021</td></tr>
+<td>2023</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'object def rcurly' has incorrect indentation level 4, expected level should be one of the following: 6, 8.</td>
-<td>2022</td></tr>
+<td>2024</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>2052</td></tr>
+<td>2054</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
-<td>2302</td></tr>
+<td>2316</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td>2303</td></tr>
+<td>2317</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
-<td>2310</td></tr>
+<td>2324</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td>2311</td></tr>
+<td>2325</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
-<td>2317</td></tr>
+<td>2331</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td>2318</td></tr>
+<td>2332</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
-<td>2325</td></tr>
+<td>2339</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td>2326</td></tr>
+<td>2340</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
-<td>2331</td></tr>
+<td>2345</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def modifier' has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2349</td></tr>
+<td>2363</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2351</td></tr>
+<td>2365</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2353</td></tr>
+<td>2367</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2359</td></tr>
+<td>2373</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2360</td></tr>
+<td>2374</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2362</td></tr>
+<td>2376</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2364</td></tr>
+<td>2378</td></tr>
 <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' has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2365</td></tr>
+<td>2379</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def modifier' has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2367</td></tr>
+<td>2381</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2369</td></tr>
+<td>2383</td></tr>
 <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' has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2370</td></tr>
+<td>2384</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'object def rcurly' has incorrect indentation level 4, expected level should be one of the following: 6, 8.</td>
-<td>2371</td></tr>
+<td>2385</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def modifier' has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2384</td></tr>
+<td>2398</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2386</td></tr>
+<td>2400</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2388</td></tr>
+<td>2402</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2389</td></tr>
+<td>2403</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2390</td></tr>
+<td>2404</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2392</td></tr>
+<td>2406</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2394</td></tr>
+<td>2408</td></tr>
 <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' has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2395</td></tr>
+<td>2409</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def modifier' has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2397</td></tr>
+<td>2411</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2399</td></tr>
+<td>2413</td></tr>
 <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' has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2400</td></tr>
+<td>2414</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'object def rcurly' has incorrect indentation level 4, expected level should be one of the following: 6, 8.</td>
-<td>2401</td></tr>
+<td>2415</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def modifier' has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2484</td></tr>
+<td>2498</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2486</td></tr>
+<td>2500</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2492</td></tr>
+<td>2506</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if' has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2493</td></tr>
+<td>2507</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if' has incorrect indentation level 10, expected level should be one of the following: 12, 14.</td>
-<td>2494</td></tr>
+<td>2508</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if' child has incorrect indentation level 12, expected level should be one of the following: 14, 16.</td>
-<td>2495</td></tr>
+<td>2509</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if' has incorrect indentation level 12, expected level should be one of the following: 14, 16.</td>
-<td>2496</td></tr>
+<td>2510</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if' child has incorrect indentation level 14, expected level should be one of the following: 16, 18.</td>
-<td>2497</td></tr>
+<td>2511</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if' has incorrect indentation level 14, expected level should be one of the following: 16, 18.</td>
-<td>2498</td></tr>
+<td>2512</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if' child has incorrect indentation level 16, expected level should be one of the following: 18, 20.</td>
-<td>2499</td></tr>
+<td>2513</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if rcurly' has incorrect indentation level 14, expected level should be one of the following: 16, 18.</td>
-<td>2501</td></tr>
+<td>2515</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if rcurly' has incorrect indentation level 12, expected level should be one of the following: 14, 16.</td>
-<td>2502</td></tr>
+<td>2516</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if rcurly' has incorrect indentation level 10, expected level should be one of the following: 12, 14.</td>
-<td>2503</td></tr>
+<td>2517</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if' child has incorrect indentation level 12, expected level should be one of the following: 14, 16.</td>
-<td>2504</td></tr>
+<td>2518</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if rcurly' has incorrect indentation level 10, expected level should be one of the following: 12, 14.</td>
-<td>2505</td></tr>
+<td>2519</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if rcurly' has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2506</td></tr>
+<td>2520</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2508</td></tr>
+<td>2522</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2515</td></tr>
+<td>2529</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2516</td></tr>
+<td>2530</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2518</td></tr>
+<td>2532</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2520</td></tr>
+<td>2534</td></tr>
 <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' has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2521</td></tr>
+<td>2535</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def modifier' has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2523</td></tr>
+<td>2537</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2525</td></tr>
+<td>2539</td></tr>
 <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' has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2526</td></tr>
+<td>2540</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'object def rcurly' has incorrect indentation level 4, expected level should be one of the following: 6, 8.</td>
-<td>2527</td></tr>
+<td>2541</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def modifier' has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2537</td></tr>
+<td>2551</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2539</td></tr>
+<td>2553</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2541</td></tr>
+<td>2555</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2551</td></tr>
+<td>2565</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2552</td></tr>
+<td>2566</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2554</td></tr>
+<td>2568</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2556</td></tr>
+<td>2570</td></tr>
 <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' has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2557</td></tr>
+<td>2571</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def modifier' has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2559</td></tr>
+<td>2573</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2561</td></tr>
+<td>2575</td></tr>
 <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' has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2562</td></tr>
+<td>2576</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'object def rcurly' has incorrect indentation level 4, expected level should be one of the following: 6, 8.</td>
-<td>2563</td></tr>
+<td>2577</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
-<td>2575</td></tr>
+<td>2589</td></tr>
 <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' has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2660</td></tr>
+<td>2674</td></tr>
 <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' has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2664</td></tr>
+<td>2678</td></tr>
 <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' has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2666</td></tr>
+<td>2680</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2668</td></tr>
+<td>2682</td></tr>
 <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' has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2669</td></tr>
+<td>2683</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'object def rcurly' has incorrect indentation level 4, expected level should be one of the following: 6, 8.</td>
-<td>2670</td></tr>
+<td>2684</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>3130</td></tr>
+<td>3144</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td>3306</td></tr>
+<td>3320</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td>3308</td></tr>
+<td>3322</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
-<td>3401</td></tr>
+<td>3415</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'for' construct must use '{}'s.</td>
-<td>3431</td></tr>
+<td>3445</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>3438</td></tr>
+<td>3452</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
-<td>3443</td></tr>
+<td>3457</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td>3472</td></tr>
+<td>3486</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 111).</td>
-<td>3570</td></tr></table></div>
+<td>3584</td></tr></table></div>
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.master.HMasterCommandLine.java">org/apache/hadoop/hbase/master/HMasterCommandLine.java</h3>
 <table border="0" class="table table-striped">
@@ -61584,65 +61584,71 @@
 <td>32</td></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.hadoop.hbase.client.Connection.</td>
+<td>47</td></tr>
+<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>319</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>578</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>'throws' has incorrect indentation level 2, expected level should be 4.</td>
 <td>623</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>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>1005</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>1007</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>1046</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>1151</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>1392</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>1634</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>
@@ -61651,253 +61657,253 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.master.MasterServices.java">org/apache/hadoop/hbase/master/MasterServices.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>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>152</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>162</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>182</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>183</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>184</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>195</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>196</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>197</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>209</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>210</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>211</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>223</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>224</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>225</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>235</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>236</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>237</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>249</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>250</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>251</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>264</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>265</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>279</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>280</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>281</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>297</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>312</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>336</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>361</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>369</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>376</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>384</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>392</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>399</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>400</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>405</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>407</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>
@@ -61906,31 +61912,31 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.master.MasterStatusServlet.java">org/apache/hadoop/hbase/master/MasterStatusServlet.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.conf.Configuration' 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>LeftCurly</td>
 <td>'{' at column 3 should be on the previous line.</td>
 <td>48</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>77</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>
@@ -61939,13 +61945,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.master.MasterWalManager.java">org/apache/hadoop/hbase/master/MasterWalManager.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>NeedBraces</td>
@@ -61954,31 +61960,31 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.master.MetricsAssignmentManager.java">org/apache/hadoop/hbase/master/MetricsAssignmentManager.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>52</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>61</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>69</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>
@@ -61987,31 +61993,31 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.master.MetricsMaster.java">org/apache/hadoop/hbase/master/MetricsMaster.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.CompatibilitySingletonFactory' 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>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 117).</td>
 <td>49</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 114).</td>
 <td>51</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>
@@ -62020,13 +62026,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.master.MetricsMasterWrapperImpl.java">org/apache/hadoop/hbase/master/MetricsMasterWrapperImpl.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>
@@ -62035,13 +62041,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.master.MirroringTableStateManager.java">org/apache/hadoop/hbase/master/MirroringTableStateManager.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>
@@ -62050,13 +62056,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.master.MobCompactionChore.java">org/apache/hadoop/hbase/master/MobCompactionChore.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>
@@ -62065,73 +62071,73 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.master.MockRegionServer.java">org/apache/hadoop/hbase/master/MockRegionServer.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>indentation</td>
 <td>Indentation</td>
 <td>'ClientProtos' has incorrect indentation level 0, expected level should be 2.</td>
 <td>145</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>193</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>194</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>'throws' has incorrect indentation level 2, expected level should be 4.</td>
 <td>197</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>205</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>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>207</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>222</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>223</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>254</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>
@@ -62140,19 +62146,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.master.RackManager.java">org/apache/hadoop/hbase/master/RackManager.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>UnusedImports</td>
 <td>Unused import - java.util.Arrays.</td>
 <td>21</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>
@@ -62161,181 +62167,181 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.master.RegionPlacementMaintainer.java">org/apache/hadoop/hbase/master/RegionPlacementMaintainer.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>
 <td>Line is longer than 100 characters (found 101).</td>
 <td>121</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>'for' construct must use '{}'s.</td>
 <td>129</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>136</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>'throws' has incorrect indentation level 2, expected level should be 4.</td>
 <td>139</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>148</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>150</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>185</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>186</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>187</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>188</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>190</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>191</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>192</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>MethodLength</td>
 <td>Method length is 260 lines (max allowed is 150).</td>
 <td>194</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 preceded with whitespace.</td>
 <td>475</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
 <td>')' is preceded with whitespace.</td>
 <td>491</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>612</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>615</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 preceded with whitespace.</td>
 <td>624</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>'throws' has incorrect indentation level 2, expected level should be 4.</td>
 <td>636</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>657</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>658</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>'throws' has incorrect indentation level 2, expected level should be 4.</td>
 <td>661</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
 <td>')' is preceded with whitespace.</td>
 <td>721</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>785</td></tr>
-<tr class="b">
+<tr class="a">
 <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>838</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>941</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>MethodLength</td>
 <td>Method length is 163 lines (max allowed is 150).</td>
 <td>951</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>
@@ -62344,19 +62350,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.master.RegionState.java">org/apache/hadoop/hbase/master/RegionState.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>
 <td>Line is longer than 100 characters (found 103).</td>
 <td>395</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>
@@ -62365,13 +62371,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.master.ServerListener.java">org/apache/hadoop/hbase/master/ServerListener.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>
@@ -62380,121 +62386,121 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.master.ServerManager.java">org/apache/hadoop/hbase/master/ServerManager.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>221</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>247</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>368</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>466</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>560</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>'throws' has incorrect indentation level 2, expected level should be 4.</td>
 <td>569</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>653</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>692</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>723</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>725</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>737</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>739</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>'throws' has incorrect indentation level 2, expected level should be 4.</td>
 <td>743</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>790</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 106).</td>
 <td>819</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 106).</td>
 <td>832</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>833</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>
@@ -62503,85 +62509,85 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.master.SnapshotOfRegionAssignmentFromMeta.java">org/apache/hadoop/hbase/master/SnapshotOfRegionAssignmentFromMeta.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>103</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>113</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>115</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>117</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>118</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>123</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>128</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>130</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>139</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>156</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>157</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>158</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>
@@ -62590,19 +62596,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.master.SnapshotSentinel.java">org/apache/hadoop/hbase/master/SnapshotSentinel.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.errorhandling.ForeignException' import.</td>
 <td>22</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>
@@ -62611,109 +62617,109 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.master.SplitLogManager.java">org/apache/hadoop/hbase/master/SplitLogManager.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>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>118</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>190</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>375</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>VisibilityModifier</td>
 <td>Variable 'installed' must be private and have accessor methods.</td>
 <td>476</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>VisibilityModifier</td>
 <td>Variable 'done' must be private and have accessor methods.</td>
 <td>477</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>VisibilityModifier</td>
 <td>Variable 'error' must be private and have accessor methods.</td>
 <td>478</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>VisibilityModifier</td>
 <td>Variable 'isDead' must be private and have accessor methods.</td>
 <td>479</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>VisibilityModifier</td>
 <td>Variable 'last_update' must be private and have accessor methods.</td>
 <td>492</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>VisibilityModifier</td>
 <td>Variable 'last_version' must be private and have accessor methods.</td>
 <td>493</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>VisibilityModifier</td>
 <td>Variable 'cur_worker_name' must be private and have accessor methods.</td>
 <td>494</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>VisibilityModifier</t

<TRUNCATED>

[32/43] hbase-site git commit: Published site at 7ab77518a2569e2416a50020393aa386e7734501.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/devapidocs/org/apache/hadoop/hbase/regionserver/StoreFileWriter.Builder.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/StoreFileWriter.Builder.html b/devapidocs/org/apache/hadoop/hbase/regionserver/StoreFileWriter.Builder.html
index add9545..d0aed1b 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/StoreFileWriter.Builder.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/StoreFileWriter.Builder.html
@@ -113,7 +113,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#line.343">StoreFileWriter.Builder</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#line.364">StoreFileWriter.Builder</a>
 extends <a href="https://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>
@@ -287,7 +287,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>conf</h4>
-<pre>private final&nbsp;org.apache.hadoop.conf.Configuration <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.Builder.html#line.344">conf</a></pre>
+<pre>private final&nbsp;org.apache.hadoop.conf.Configuration <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.Builder.html#line.365">conf</a></pre>
 </li>
 </ul>
 <a name="cacheConf">
@@ -296,7 +296,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>cacheConf</h4>
-<pre>private final&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/StoreFileWriter.Builder.html#line.345">cacheConf</a></pre>
+<pre>private final&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/StoreFileWriter.Builder.html#line.366">cacheConf</a></pre>
 </li>
 </ul>
 <a name="fs">
@@ -305,7 +305,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>fs</h4>
-<pre>private final&nbsp;org.apache.hadoop.fs.FileSystem <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.Builder.html#line.346">fs</a></pre>
+<pre>private final&nbsp;org.apache.hadoop.fs.FileSystem <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.Builder.html#line.367">fs</a></pre>
 </li>
 </ul>
 <a name="comparator">
@@ -314,7 +314,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>comparator</h4>
-<pre>private&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/StoreFileWriter.Builder.html#line.348">comparator</a></pre>
+<pre>private&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/StoreFileWriter.Builder.html#line.369">comparator</a></pre>
 </li>
 </ul>
 <a name="bloomType">
@@ -323,7 +323,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>bloomType</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/BloomType.html" title="enum in org.apache.hadoop.hbase.regionserver">BloomType</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.Builder.html#line.349">bloomType</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/BloomType.html" title="enum in org.apache.hadoop.hbase.regionserver">BloomType</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.Builder.html#line.370">bloomType</a></pre>
 </li>
 </ul>
 <a name="maxKeyCount">
@@ -332,7 +332,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>maxKeyCount</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.Builder.html#line.350">maxKeyCount</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.Builder.html#line.371">maxKeyCount</a></pre>
 </li>
 </ul>
 <a name="dir">
@@ -341,7 +341,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>dir</h4>
-<pre>private&nbsp;org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.Builder.html#line.351">dir</a></pre>
+<pre>private&nbsp;org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.Builder.html#line.372">dir</a></pre>
 </li>
 </ul>
 <a name="filePath">
@@ -350,7 +350,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>filePath</h4>
-<pre>private&nbsp;org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.Builder.html#line.352">filePath</a></pre>
+<pre>private&nbsp;org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.Builder.html#line.373">filePath</a></pre>
 </li>
 </ul>
 <a name="favoredNodes">
@@ -359,7 +359,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>favoredNodes</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/net/InetSocketAddress.html?is-external=true" title="class or interface in java.net">InetSocketAddress</a>[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.Builder.html#line.353">favoredNodes</a></pre>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/net/InetSocketAddress.html?is-external=true" title="class or interface in java.net">InetSocketAddress</a>[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.Builder.html#line.374">favoredNodes</a></pre>
 </li>
 </ul>
 <a name="fileContext">
@@ -368,7 +368,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>fileContext</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> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.Builder.html#line.354">fileContext</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileContext.html" title="class in org.apache.hadoop.hbase.io.hfile">HFileContext</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.Builder.html#line.375">fileContext</a></pre>
 </li>
 </ul>
 <a name="shouldDropCacheBehind">
@@ -377,7 +377,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>shouldDropCacheBehind</h4>
-<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.Builder.html#line.355">shouldDropCacheBehind</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.Builder.html#line.376">shouldDropCacheBehind</a></pre>
 </li>
 </ul>
 </li>
@@ -394,7 +394,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>Builder</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.Builder.html#line.357">Builder</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.Builder.html#line.378">Builder</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                <a href="../../../../../org/apache/hadoop/hbase/io/hfile/CacheConfig.html" title="class in org.apache.hadoop.hbase.io.hfile">CacheConfig</a>&nbsp;cacheConf,
                org.apache.hadoop.fs.FileSystem&nbsp;fs)</pre>
 </li>
@@ -405,7 +405,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>Builder</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.Builder.html#line.367">Builder</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.Builder.html#line.388">Builder</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                org.apache.hadoop.fs.FileSystem&nbsp;fs)</pre>
 <div class="block">Creates Builder with cache configuration disabled</div>
 </li>
@@ -424,7 +424,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>withOutputDir</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileWriter.Builder.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileWriter.Builder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.Builder.html#line.380">withOutputDir</a>(org.apache.hadoop.fs.Path&nbsp;dir)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileWriter.Builder.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileWriter.Builder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.Builder.html#line.401">withOutputDir</a>(org.apache.hadoop.fs.Path&nbsp;dir)</pre>
 <div class="block">Use either this method or <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileWriter.Builder.html#withFilePath-org.apache.hadoop.fs.Path-"><code>withFilePath(org.apache.hadoop.fs.Path)</code></a>, but not both.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -442,7 +442,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>withFilePath</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileWriter.Builder.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileWriter.Builder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.Builder.html#line.391">withFilePath</a>(org.apache.hadoop.fs.Path&nbsp;filePath)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileWriter.Builder.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileWriter.Builder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.Builder.html#line.412">withFilePath</a>(org.apache.hadoop.fs.Path&nbsp;filePath)</pre>
 <div class="block">Use either this method or <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileWriter.Builder.html#withOutputDir-org.apache.hadoop.fs.Path-"><code>withOutputDir(org.apache.hadoop.fs.Path)</code></a>, but not both.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -458,7 +458,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>withFavoredNodes</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileWriter.Builder.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileWriter.Builder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.Builder.html#line.401">withFavoredNodes</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/net/InetSocketAddress.html?is-external=true" title="class or interface in java.net">InetSocketAddress</a>[]&nbsp;favoredNodes)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileWriter.Builder.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileWriter.Builder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.Builder.html#line.422">withFavoredNodes</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/net/InetSocketAddress.html?is-external=true" title="class or interface in java.net">InetSocketAddress</a>[]&nbsp;favoredNodes)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>favoredNodes</code> - an array of favored nodes or possibly null</dd>
@@ -473,7 +473,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>withComparator</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileWriter.Builder.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileWriter.Builder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.Builder.html#line.406">withComparator</a>(<a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileWriter.Builder.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileWriter.Builder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.Builder.html#line.427">withComparator</a>(<a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator)</pre>
 </li>
 </ul>
 <a name="withBloomType-org.apache.hadoop.hbase.regionserver.BloomType-">
@@ -482,7 +482,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>withBloomType</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileWriter.Builder.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileWriter.Builder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.Builder.html#line.412">withBloomType</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/BloomType.html" title="enum in org.apache.hadoop.hbase.regionserver">BloomType</a>&nbsp;bloomType)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileWriter.Builder.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileWriter.Builder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.Builder.html#line.433">withBloomType</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/BloomType.html" title="enum in org.apache.hadoop.hbase.regionserver">BloomType</a>&nbsp;bloomType)</pre>
 </li>
 </ul>
 <a name="withMaxKeyCount-long-">
@@ -491,7 +491,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>withMaxKeyCount</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileWriter.Builder.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileWriter.Builder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.Builder.html#line.422">withMaxKeyCount</a>(long&nbsp;maxKeyCount)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileWriter.Builder.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileWriter.Builder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.Builder.html#line.443">withMaxKeyCount</a>(long&nbsp;maxKeyCount)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>maxKeyCount</code> - estimated maximum number of keys we expect to add</dd>
@@ -506,7 +506,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>withFileContext</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileWriter.Builder.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileWriter.Builder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.Builder.html#line.427">withFileContext</a>(<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileContext.html" title="class in org.apache.hadoop.hbase.io.hfile">HFileContext</a>&nbsp;fileContext)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileWriter.Builder.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileWriter.Builder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.Builder.html#line.448">withFileContext</a>(<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileContext.html" title="class in org.apache.hadoop.hbase.io.hfile">HFileContext</a>&nbsp;fileContext)</pre>
 </li>
 </ul>
 <a name="withShouldDropCacheBehind-boolean-">
@@ -515,7 +515,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>withShouldDropCacheBehind</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileWriter.Builder.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileWriter.Builder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.Builder.html#line.432">withShouldDropCacheBehind</a>(boolean&nbsp;shouldDropCacheBehind)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileWriter.Builder.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileWriter.Builder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.Builder.html#line.453">withShouldDropCacheBehind</a>(boolean&nbsp;shouldDropCacheBehind)</pre>
 </li>
 </ul>
 <a name="build--">
@@ -524,7 +524,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>build</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/StoreFileWriter.Builder.html#line.442">build</a>()
+<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/StoreFileWriter.Builder.html#line.463">build</a>()
                       throws <a href="https://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">Create a store file writer. Client is responsible for closing file when
  done. If metadata, add BEFORE closing using

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/devapidocs/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html b/devapidocs/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html
index ecd101d..6d637db 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html
@@ -114,7 +114,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Private
-public class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#line.62">StoreFileWriter</a>
+public class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#line.66">StoreFileWriter</a>
 extends <a href="https://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/CellSink.html" title="interface in org.apache.hadoop.hbase.regionserver">CellSink</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/ShipperListener.html" title="interface in org.apache.hadoop.hbase.regionserver">ShipperListener</a></pre>
 <div class="block">A StoreFile writer.  Use this to read/write HBase Store Files. It is package
@@ -161,42 +161,46 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSink
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#bloomContext">bloomContext</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><code>private byte[]</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#bloomParam">bloomParam</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/regionserver/BloomType.html" title="enum in org.apache.hadoop.hbase.regionserver">BloomType</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#bloomType">bloomType</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html?is-external=true" title="class or interface in java.util.regex">Pattern</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#dash">dash</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/util/BloomContext.html" title="class in org.apache.hadoop.hbase.util">BloomContext</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#deleteFamilyBloomContext">deleteFamilyBloomContext</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/util/BloomFilterWriter.html" title="interface in org.apache.hadoop.hbase.util">BloomFilterWriter</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#deleteFamilyBloomFilterWriter">deleteFamilyBloomFilterWriter</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#deleteFamilyCnt">deleteFamilyCnt</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#earliestPutTs">earliestPutTs</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/util/BloomFilterWriter.html" title="interface in org.apache.hadoop.hbase.util">BloomFilterWriter</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#generalBloomFilterWriter">generalBloomFilterWriter</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static org.slf4j.Logger</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#LOG">LOG</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/regionserver/TimeRangeTracker.html" title="class in org.apache.hadoop.hbase.regionserver">TimeRangeTracker</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#timeRangeTracker">timeRangeTracker</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFile.Writer.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFile.Writer</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#writer">writer</a></span></code>&nbsp;</td>
 </tr>
@@ -366,7 +370,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSink
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#line.63">LOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#line.67">LOG</a></pre>
 </li>
 </ul>
 <a name="dash">
@@ -375,7 +379,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSink
 <ul class="blockList">
 <li class="blockList">
 <h4>dash</h4>
-<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html?is-external=true" title="class or interface in java.util.regex">Pattern</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#line.64">dash</a></pre>
+<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html?is-external=true" title="class or interface in java.util.regex">Pattern</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#line.68">dash</a></pre>
 </li>
 </ul>
 <a name="generalBloomFilterWriter">
@@ -384,7 +388,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSink
 <ul class="blockList">
 <li class="blockList">
 <h4>generalBloomFilterWriter</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/BloomFilterWriter.html" title="interface in org.apache.hadoop.hbase.util">BloomFilterWriter</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#line.65">generalBloomFilterWriter</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/BloomFilterWriter.html" title="interface in org.apache.hadoop.hbase.util">BloomFilterWriter</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#line.69">generalBloomFilterWriter</a></pre>
 </li>
 </ul>
 <a name="deleteFamilyBloomFilterWriter">
@@ -393,7 +397,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSink
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteFamilyBloomFilterWriter</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/BloomFilterWriter.html" title="interface in org.apache.hadoop.hbase.util">BloomFilterWriter</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#line.66">deleteFamilyBloomFilterWriter</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/BloomFilterWriter.html" title="interface in org.apache.hadoop.hbase.util">BloomFilterWriter</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#line.70">deleteFamilyBloomFilterWriter</a></pre>
 </li>
 </ul>
 <a name="bloomType">
@@ -402,7 +406,16 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSink
 <ul class="blockList">
 <li class="blockList">
 <h4>bloomType</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/BloomType.html" title="enum in org.apache.hadoop.hbase.regionserver">BloomType</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#line.67">bloomType</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/BloomType.html" title="enum in org.apache.hadoop.hbase.regionserver">BloomType</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#line.71">bloomType</a></pre>
+</li>
+</ul>
+<a name="bloomParam">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>bloomParam</h4>
+<pre>private&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#line.72">bloomParam</a></pre>
 </li>
 </ul>
 <a name="earliestPutTs">
@@ -411,7 +424,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSink
 <ul class="blockList">
 <li class="blockList">
 <h4>earliestPutTs</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#line.68">earliestPutTs</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#line.73">earliestPutTs</a></pre>
 </li>
 </ul>
 <a name="deleteFamilyCnt">
@@ -420,7 +433,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSink
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteFamilyCnt</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#line.69">deleteFamilyCnt</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#line.74">deleteFamilyCnt</a></pre>
 </li>
 </ul>
 <a name="bloomContext">
@@ -429,7 +442,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSink
 <ul class="blockList">
 <li class="blockList">
 <h4>bloomContext</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/BloomContext.html" title="class in org.apache.hadoop.hbase.util">BloomContext</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#line.70">bloomContext</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/BloomContext.html" title="class in org.apache.hadoop.hbase.util">BloomContext</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#line.75">bloomContext</a></pre>
 </li>
 </ul>
 <a name="deleteFamilyBloomContext">
@@ -438,7 +451,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSink
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteFamilyBloomContext</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/BloomContext.html" title="class in org.apache.hadoop.hbase.util">BloomContext</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#line.71">deleteFamilyBloomContext</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/BloomContext.html" title="class in org.apache.hadoop.hbase.util">BloomContext</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#line.76">deleteFamilyBloomContext</a></pre>
 </li>
 </ul>
 <a name="timeRangeTracker">
@@ -447,7 +460,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSink
 <ul class="blockList">
 <li class="blockList">
 <h4>timeRangeTracker</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/TimeRangeTracker.html" title="class in org.apache.hadoop.hbase.regionserver">TimeRangeTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#line.72">timeRangeTracker</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/TimeRangeTracker.html" title="class in org.apache.hadoop.hbase.regionserver">TimeRangeTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#line.77">timeRangeTracker</a></pre>
 </li>
 </ul>
 <a name="writer">
@@ -456,7 +469,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSink
 <ul class="blockListLast">
 <li class="blockList">
 <h4>writer</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFile.Writer.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFile.Writer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#line.74">writer</a></pre>
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFile.Writer.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFile.Writer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#line.79">writer</a></pre>
 </li>
 </ul>
 </li>
@@ -473,7 +486,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSink
 <ul class="blockListLast">
 <li class="blockList">
 <h4>StoreFileWriter</h4>
-<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#line.90">StoreFileWriter</a>(org.apache.hadoop.fs.FileSystem&nbsp;fs,
+<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#line.95">StoreFileWriter</a>(org.apache.hadoop.fs.FileSystem&nbsp;fs,
                         org.apache.hadoop.fs.Path&nbsp;path,
                         org.apache.hadoop.conf.Configuration&nbsp;conf,
                         <a href="../../../../../org/apache/hadoop/hbase/io/hfile/CacheConfig.html" title="class in org.apache.hadoop.hbase.io.hfile">CacheConfig</a>&nbsp;cacheConf,
@@ -516,7 +529,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSink
 <ul class="blockList">
 <li class="blockList">
 <h4>appendMetadata</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#line.157">appendMetadata</a>(long&nbsp;maxSequenceId,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#line.173">appendMetadata</a>(long&nbsp;maxSequenceId,
                            boolean&nbsp;majorCompaction)
                     throws <a href="https://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">Writes meta data.
@@ -536,7 +549,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSink
 <ul class="blockList">
 <li class="blockList">
 <h4>appendMetadata</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#line.172">appendMetadata</a>(long&nbsp;maxSequenceId,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#line.188">appendMetadata</a>(long&nbsp;maxSequenceId,
                            boolean&nbsp;majorCompaction,
                            long&nbsp;mobCellsCount)
                     throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -558,7 +571,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSink
 <ul class="blockList">
 <li class="blockList">
 <h4>appendTrackedTimestampsToMetadata</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#line.183">appendTrackedTimestampsToMetadata</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#line.199">appendTrackedTimestampsToMetadata</a>()
                                        throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Add TimestampRange and earliest put timestamp to Metadata</div>
 <dl>
@@ -573,7 +586,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSink
 <ul class="blockList">
 <li class="blockList">
 <h4>trackTimestamps</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#line.196">trackTimestamps</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#line.212">trackTimestamps</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</pre>
 <div class="block">Record the earlest Put timestamp.
 
  If the timeRangeTracker is not set,
@@ -586,7 +599,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSink
 <ul class="blockList">
 <li class="blockList">
 <h4>appendGeneralBloomfilter</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#line.203">appendGeneralBloomfilter</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#line.219">appendGeneralBloomfilter</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)
                                throws <a href="https://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>
@@ -600,7 +613,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSink
 <ul class="blockList">
 <li class="blockList">
 <h4>appendDeleteFamilyBloomFilter</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#line.217">appendDeleteFamilyBloomFilter</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#line.235">appendDeleteFamilyBloomFilter</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)
                                     throws <a href="https://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>
@@ -614,7 +627,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSink
 <ul class="blockList">
 <li class="blockList">
 <h4>append</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#line.231">append</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/StoreFileWriter.html#line.249">append</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)
             throws <a href="https://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/CellSink.html#append-org.apache.hadoop.hbase.Cell-">CellSink</a></code></span></div>
 <div class="block">Append the given cell</div>
@@ -634,7 +647,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSink
 <ul class="blockList">
 <li class="blockList">
 <h4>beforeShipped</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#line.239">beforeShipped</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#line.257">beforeShipped</a>()
                    throws <a href="https://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/ShipperListener.html#beforeShipped--">ShipperListener</a></code></span></div>
 <div class="block">The action that needs to be performed before <a href="../../../../../org/apache/hadoop/hbase/regionserver/Shipper.html#shipped--"><code>Shipper.shipped()</code></a> is performed</div>
@@ -652,7 +665,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSink
 <ul class="blockList">
 <li class="blockList">
 <h4>getPath</h4>
-<pre>public&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#line.251">getPath</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#line.269">getPath</a>()</pre>
 </li>
 </ul>
 <a name="hasGeneralBloom--">
@@ -661,7 +674,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSink
 <ul class="blockList">
 <li class="blockList">
 <h4>hasGeneralBloom</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#line.255">hasGeneralBloom</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#line.273">hasGeneralBloom</a>()</pre>
 </li>
 </ul>
 <a name="getGeneralBloomWriter--">
@@ -670,7 +683,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSink
 <ul class="blockList">
 <li class="blockList">
 <h4>getGeneralBloomWriter</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/util/BloomFilterWriter.html" title="interface in org.apache.hadoop.hbase.util">BloomFilterWriter</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#line.264">getGeneralBloomWriter</a>()</pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/util/BloomFilterWriter.html" title="interface in org.apache.hadoop.hbase.util">BloomFilterWriter</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#line.282">getGeneralBloomWriter</a>()</pre>
 <div class="block">For unit testing only.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -684,7 +697,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSink
 <ul class="blockList">
 <li class="blockList">
 <h4>closeBloomFilter</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#line.268">closeBloomFilter</a>(<a href="../../../../../org/apache/hadoop/hbase/util/BloomFilterWriter.html" title="interface in org.apache.hadoop.hbase.util">BloomFilterWriter</a>&nbsp;bfw)
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#line.286">closeBloomFilter</a>(<a href="../../../../../org/apache/hadoop/hbase/util/BloomFilterWriter.html" title="interface in org.apache.hadoop.hbase.util">BloomFilterWriter</a>&nbsp;bfw)
                           throws <a href="https://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>
@@ -698,7 +711,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSink
 <ul class="blockList">
 <li class="blockList">
 <h4>closeGeneralBloomFilter</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#line.276">closeGeneralBloomFilter</a>()
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#line.294">closeGeneralBloomFilter</a>()
                                  throws <a href="https://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>
@@ -712,7 +725,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSink
 <ul class="blockList">
 <li class="blockList">
 <h4>closeDeleteFamilyBloomFilter</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#line.288">closeDeleteFamilyBloomFilter</a>()
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#line.309">closeDeleteFamilyBloomFilter</a>()
                                       throws <a href="https://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>
@@ -726,7 +739,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSink
 <ul class="blockList">
 <li class="blockList">
 <h4>close</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#line.303">close</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#line.324">close</a>()
            throws <a href="https://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>
@@ -740,7 +753,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSink
 <ul class="blockList">
 <li class="blockList">
 <h4>appendFileInfo</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#line.319">appendFileInfo</a>(byte[]&nbsp;key,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#line.340">appendFileInfo</a>(byte[]&nbsp;key,
                            byte[]&nbsp;value)
                     throws <a href="https://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>
@@ -755,7 +768,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSink
 <ul class="blockList">
 <li class="blockList">
 <h4>getHFileWriter</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFile.Writer.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFile.Writer</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#line.325">getHFileWriter</a>()</pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFile.Writer.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFile.Writer</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#line.346">getHFileWriter</a>()</pre>
 <div class="block">For use in testing.</div>
 </li>
 </ul>
@@ -765,7 +778,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSink
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getUniqueFile</h4>
-<pre>static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#line.334">getUniqueFile</a>(org.apache.hadoop.fs.FileSystem&nbsp;fs,
+<pre>static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#line.355">getUniqueFile</a>(org.apache.hadoop.fs.FileSystem&nbsp;fs,
                                                org.apache.hadoop.fs.Path&nbsp;dir)
                                         throws <a href="https://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>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/BloomType.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/BloomType.html b/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/BloomType.html
index 92f6849..90e5a60 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/BloomType.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/BloomType.html
@@ -493,6 +493,11 @@ the order they are declared.</div>
  <a href="../../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver"><code>HStoreFile</code></a> writing.</div>
 </td>
 </tr>
+<tr class="altColor">
+<td class="colFirst"><code>static byte[]</code></td>
+<td class="colLast"><span class="typeNameLabel">BloomFilterUtil.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/util/BloomFilterUtil.html#getBloomFilterParam-org.apache.hadoop.hbase.regionserver.BloomType-org.apache.hadoop.conf.Configuration-">getBloomFilterParam</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/BloomType.html" title="enum in org.apache.hadoop.hbase.regionserver">BloomType</a>&nbsp;bloomFilterType,
+                   org.apache.hadoop.conf.Configuration&nbsp;conf)</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/bbe517ae/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 801a91b..565e4e7 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
@@ -710,20 +710,20 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
+<li type="circle">org.apache.hadoop.hbase.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/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/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/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/ChunkCreator.ChunkType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ChunkCreator.ChunkType</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/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/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/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/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/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/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/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/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/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/ChunkCreator.ChunkType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ChunkCreator.ChunkType</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/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/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/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/CompactingMemStore.IndexType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">CompactingMemStore.IndexType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/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 3bd22b5..2731576 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/package-tree.html
@@ -131,8 +131,8 @@
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
 <li type="circle">org.apache.hadoop.hbase.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>
 <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/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/bbe517ae/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 f0c55c8..19354d1 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-tree.html
@@ -247,9 +247,9 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.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/CompressionContext.DictionaryIndex.html" title="enum in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">CompressionContext.DictionaryIndex</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>
+<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>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/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 c20ff47..034077c 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="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.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/bbe517ae/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 c128782..f594c43 100644
--- a/devapidocs/org/apache/hadoop/hbase/security/access/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/security/access/package-tree.html
@@ -142,9 +142,9 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.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/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/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/bbe517ae/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 6ef281d..13f949c 100644
--- a/devapidocs/org/apache/hadoop/hbase/security/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/security/package-tree.html
@@ -192,8 +192,8 @@
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
 <li type="circle">org.apache.hadoop.hbase.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/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/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>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html b/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html
index 2cef8bd..81a90a9 100644
--- a/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html
@@ -199,9 +199,9 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
+<li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/MetricsThriftServerSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">MetricsThriftServerSourceFactoryImpl.FactoryStorage</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">ThriftServerRunner.ImplType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.ThriftServerType.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">ThriftMetrics.ThriftServerType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/MetricsThriftServerSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">MetricsThriftServerSourceFactoryImpl.FactoryStorage</span></a></li>
 </ul>
 </li>
 </ul>


[25/43] hbase-site git commit: Published site at 7ab77518a2569e2416a50020393aa386e7734501.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.MasterStoppedException.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.MasterStoppedException.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.MasterStoppedException.html
index e5feb84..0cf012a 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.MasterStoppedException.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.MasterStoppedException.html
@@ -72,3861 +72,3875 @@
 <span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.ClusterMetrics;<a name="line.64"></a>
 <span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.ClusterMetrics.Option;<a name="line.65"></a>
 <span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.ClusterMetricsBuilder;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.HBaseIOException;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.HBaseInterfaceAudience;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.HConstants;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.InvalidFamilyOperationException;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.MasterNotRunningException;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.MetaTableAccessor;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.PleaseHoldException;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.ReplicationPeerNotFoundException;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.ServerName;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.TableDescriptors;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.TableName;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.TableNotDisabledException;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.TableNotFoundException;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.UnknownRegionException;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.client.MasterSwitchType;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.client.RegionInfoBuilder;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.client.Result;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.client.TableState;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.coprocessor.CoprocessorHost;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.exceptions.MergeRegionException;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.executor.ExecutorType;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.favored.FavoredNodesManager;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.favored.FavoredNodesPromoter;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.http.InfoServer;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcUtils;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.ipc.ServerNotRunningYetException;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.log.HBaseMarkers;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.master.MasterRpcServices.BalanceSwitchMode;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.master.assignment.AssignProcedure;<a name="line.104"></a>
-<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.master.assignment.AssignmentManager;<a name="line.105"></a>
-<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.master.assignment.MergeTableRegionsProcedure;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.master.assignment.MoveRegionProcedure;<a name="line.107"></a>
-<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.master.assignment.RegionStateNode;<a name="line.108"></a>
-<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.master.assignment.RegionStates;<a name="line.109"></a>
-<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.master.assignment.TransitRegionStateProcedure;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.master.assignment.UnassignProcedure;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.master.balancer.BalancerChore;<a name="line.112"></a>
-<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.master.balancer.BaseLoadBalancer;<a name="line.113"></a>
-<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.master.balancer.ClusterStatusChore;<a name="line.114"></a>
-<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.master.balancer.LoadBalancerFactory;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.master.cleaner.CleanerChore;<a name="line.116"></a>
-<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.master.cleaner.HFileCleaner;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.master.cleaner.LogCleaner;<a name="line.118"></a>
-<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.master.cleaner.ReplicationBarrierCleaner;<a name="line.119"></a>
-<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.master.locking.LockManager;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.master.normalizer.NormalizationPlan;<a name="line.121"></a>
-<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.master.normalizer.NormalizationPlan.PlanType;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizer;<a name="line.123"></a>
-<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizerChore;<a name="line.124"></a>
-<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizerFactory;<a name="line.125"></a>
-<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.master.procedure.CreateTableProcedure;<a name="line.126"></a>
-<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.master.procedure.DeleteNamespaceProcedure;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.master.procedure.DeleteTableProcedure;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.master.procedure.DisableTableProcedure;<a name="line.129"></a>
-<span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.master.procedure.EnableTableProcedure;<a name="line.130"></a>
-<span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.master.procedure.InitMetaProcedure;<a name="line.131"></a>
-<span class="sourceLineNo">132</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureConstants;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv;<a name="line.133"></a>
-<span class="sourceLineNo">134</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureScheduler;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureUtil;<a name="line.135"></a>
-<span class="sourceLineNo">136</span>import org.apache.hadoop.hbase.master.procedure.ModifyTableProcedure;<a name="line.136"></a>
-<span class="sourceLineNo">137</span>import org.apache.hadoop.hbase.master.procedure.ProcedurePrepareLatch;<a name="line.137"></a>
-<span class="sourceLineNo">138</span>import org.apache.hadoop.hbase.master.procedure.RecoverMetaProcedure;<a name="line.138"></a>
-<span class="sourceLineNo">139</span>import org.apache.hadoop.hbase.master.procedure.ServerCrashProcedure;<a name="line.139"></a>
-<span class="sourceLineNo">140</span>import org.apache.hadoop.hbase.master.procedure.TruncateTableProcedure;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.master.replication.AbstractPeerProcedure;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.master.replication.AddPeerProcedure;<a name="line.142"></a>
-<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.master.replication.DisablePeerProcedure;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.master.replication.EnablePeerProcedure;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.master.replication.RemovePeerProcedure;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.master.replication.ReplicationPeerManager;<a name="line.146"></a>
-<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.master.replication.SyncReplicationReplayWALManager;<a name="line.147"></a>
-<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.master.replication.TransitPeerSyncReplicationStateProcedure;<a name="line.148"></a>
-<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.master.replication.UpdatePeerConfigProcedure;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.master.snapshot.SnapshotManager;<a name="line.150"></a>
-<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.master.zksyncer.MasterAddressSyncer;<a name="line.151"></a>
-<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.master.zksyncer.MetaLocationSyncer;<a name="line.152"></a>
-<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.mob.MobConstants;<a name="line.153"></a>
-<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.monitoring.MemoryBoundedLogMessageBuffer;<a name="line.154"></a>
-<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.155"></a>
-<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.156"></a>
-<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.procedure.MasterProcedureManagerHost;<a name="line.157"></a>
-<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.procedure.flush.MasterFlushTableProcedureManager;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.procedure2.LockedResource;<a name="line.159"></a>
-<span class="sourceLineNo">160</span>import org.apache.hadoop.hbase.procedure2.Procedure;<a name="line.160"></a>
-<span class="sourceLineNo">161</span>import org.apache.hadoop.hbase.procedure2.ProcedureEvent;<a name="line.161"></a>
-<span class="sourceLineNo">162</span>import org.apache.hadoop.hbase.procedure2.ProcedureExecutor;<a name="line.162"></a>
-<span class="sourceLineNo">163</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureDispatcher.RemoteProcedure;<a name="line.163"></a>
-<span class="sourceLineNo">164</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureException;<a name="line.164"></a>
-<span class="sourceLineNo">165</span>import org.apache.hadoop.hbase.procedure2.store.wal.WALProcedureStore;<a name="line.165"></a>
-<span class="sourceLineNo">166</span>import org.apache.hadoop.hbase.quotas.MasterQuotaManager;<a name="line.166"></a>
-<span class="sourceLineNo">167</span>import org.apache.hadoop.hbase.quotas.MasterQuotasObserver;<a name="line.167"></a>
-<span class="sourceLineNo">168</span>import org.apache.hadoop.hbase.quotas.QuotaObserverChore;<a name="line.168"></a>
-<span class="sourceLineNo">169</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.169"></a>
-<span class="sourceLineNo">170</span>import org.apache.hadoop.hbase.quotas.SnapshotQuotaObserverChore;<a name="line.170"></a>
-<span class="sourceLineNo">171</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifier;<a name="line.171"></a>
-<span class="sourceLineNo">172</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifierFactory;<a name="line.172"></a>
-<span class="sourceLineNo">173</span>import org.apache.hadoop.hbase.regionserver.DefaultStoreEngine;<a name="line.173"></a>
-<span class="sourceLineNo">174</span>import org.apache.hadoop.hbase.regionserver.HRegionServer;<a name="line.174"></a>
-<span class="sourceLineNo">175</span>import org.apache.hadoop.hbase.regionserver.HStore;<a name="line.175"></a>
-<span class="sourceLineNo">176</span>import org.apache.hadoop.hbase.regionserver.RSRpcServices;<a name="line.176"></a>
-<span class="sourceLineNo">177</span>import org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost;<a name="line.177"></a>
-<span class="sourceLineNo">178</span>import org.apache.hadoop.hbase.regionserver.RegionSplitPolicy;<a name="line.178"></a>
-<span class="sourceLineNo">179</span>import org.apache.hadoop.hbase.regionserver.compactions.ExploringCompactionPolicy;<a name="line.179"></a>
-<span class="sourceLineNo">180</span>import org.apache.hadoop.hbase.regionserver.compactions.FIFOCompactionPolicy;<a name="line.180"></a>
-<span class="sourceLineNo">181</span>import org.apache.hadoop.hbase.replication.ReplicationException;<a name="line.181"></a>
-<span class="sourceLineNo">182</span>import org.apache.hadoop.hbase.replication.ReplicationLoadSource;<a name="line.182"></a>
-<span class="sourceLineNo">183</span>import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;<a name="line.183"></a>
-<span class="sourceLineNo">184</span>import org.apache.hadoop.hbase.replication.ReplicationPeerDescription;<a name="line.184"></a>
-<span class="sourceLineNo">185</span>import org.apache.hadoop.hbase.replication.ReplicationUtils;<a name="line.185"></a>
-<span class="sourceLineNo">186</span>import org.apache.hadoop.hbase.replication.SyncReplicationState;<a name="line.186"></a>
-<span class="sourceLineNo">187</span>import org.apache.hadoop.hbase.replication.master.ReplicationHFileCleaner;<a name="line.187"></a>
-<span class="sourceLineNo">188</span>import org.apache.hadoop.hbase.replication.master.ReplicationLogCleaner;<a name="line.188"></a>
-<span class="sourceLineNo">189</span>import org.apache.hadoop.hbase.replication.master.ReplicationPeerConfigUpgrader;<a name="line.189"></a>
-<span class="sourceLineNo">190</span>import org.apache.hadoop.hbase.security.AccessDeniedException;<a name="line.190"></a>
-<span class="sourceLineNo">191</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.191"></a>
-<span class="sourceLineNo">192</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.192"></a>
-<span class="sourceLineNo">193</span>import org.apache.hadoop.hbase.util.Addressing;<a name="line.193"></a>
-<span class="sourceLineNo">194</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.194"></a>
-<span class="sourceLineNo">195</span>import org.apache.hadoop.hbase.util.CompressionTest;<a name="line.195"></a>
-<span class="sourceLineNo">196</span>import org.apache.hadoop.hbase.util.EncryptionTest;<a name="line.196"></a>
-<span class="sourceLineNo">197</span>import org.apache.hadoop.hbase.util.HBaseFsck;<a name="line.197"></a>
-<span class="sourceLineNo">198</span>import org.apache.hadoop.hbase.util.HFileArchiveUtil;<a name="line.198"></a>
-<span class="sourceLineNo">199</span>import org.apache.hadoop.hbase.util.HasThread;<a name="line.199"></a>
-<span class="sourceLineNo">200</span>import org.apache.hadoop.hbase.util.IdLock;<a name="line.200"></a>
-<span class="sourceLineNo">201</span>import org.apache.hadoop.hbase.util.ModifyRegionUtils;<a name="line.201"></a>
-<span class="sourceLineNo">202</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.202"></a>
-<span class="sourceLineNo">203</span>import org.apache.hadoop.hbase.util.RetryCounter;<a name="line.203"></a>
-<span class="sourceLineNo">204</span>import org.apache.hadoop.hbase.util.RetryCounterFactory;<a name="line.204"></a>
-<span class="sourceLineNo">205</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.205"></a>
-<span class="sourceLineNo">206</span>import org.apache.hadoop.hbase.util.VersionInfo;<a name="line.206"></a>
-<span class="sourceLineNo">207</span>import org.apache.hadoop.hbase.zookeeper.LoadBalancerTracker;<a name="line.207"></a>
-<span class="sourceLineNo">208</span>import org.apache.hadoop.hbase.zookeeper.MasterAddressTracker;<a name="line.208"></a>
-<span class="sourceLineNo">209</span>import org.apache.hadoop.hbase.zookeeper.MasterMaintenanceModeTracker;<a name="line.209"></a>
-<span class="sourceLineNo">210</span>import org.apache.hadoop.hbase.zookeeper.RegionNormalizerTracker;<a name="line.210"></a>
-<span class="sourceLineNo">211</span>import org.apache.hadoop.hbase.zookeeper.ZKClusterId;<a name="line.211"></a>
-<span class="sourceLineNo">212</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.212"></a>
-<span class="sourceLineNo">213</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.213"></a>
-<span class="sourceLineNo">214</span>import org.apache.hadoop.hbase.zookeeper.ZNodePaths;<a name="line.214"></a>
-<span class="sourceLineNo">215</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.215"></a>
-<span class="sourceLineNo">216</span>import org.apache.zookeeper.KeeperException;<a name="line.216"></a>
-<span class="sourceLineNo">217</span>import org.eclipse.jetty.server.Server;<a name="line.217"></a>
-<span class="sourceLineNo">218</span>import org.eclipse.jetty.server.ServerConnector;<a name="line.218"></a>
-<span class="sourceLineNo">219</span>import org.eclipse.jetty.servlet.ServletHolder;<a name="line.219"></a>
-<span class="sourceLineNo">220</span>import org.eclipse.jetty.webapp.WebAppContext;<a name="line.220"></a>
-<span class="sourceLineNo">221</span>import org.slf4j.Logger;<a name="line.221"></a>
-<span class="sourceLineNo">222</span>import org.slf4j.LoggerFactory;<a name="line.222"></a>
-<span class="sourceLineNo">223</span><a name="line.223"></a>
-<span class="sourceLineNo">224</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.224"></a>
-<span class="sourceLineNo">225</span>import org.apache.hbase.thirdparty.com.google.common.collect.ImmutableSet;<a name="line.225"></a>
-<span class="sourceLineNo">226</span>import org.apache.hbase.thirdparty.com.google.common.collect.Lists;<a name="line.226"></a>
-<span class="sourceLineNo">227</span>import org.apache.hbase.thirdparty.com.google.common.collect.Maps;<a name="line.227"></a>
-<span class="sourceLineNo">228</span><a name="line.228"></a>
-<span class="sourceLineNo">229</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.229"></a>
-<span class="sourceLineNo">230</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoResponse.CompactionState;<a name="line.230"></a>
-<span class="sourceLineNo">231</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.Quotas;<a name="line.231"></a>
-<span class="sourceLineNo">232</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.SpaceViolationPolicy;<a name="line.232"></a>
-<span class="sourceLineNo">233</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;<a name="line.233"></a>
-<span class="sourceLineNo">234</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos;<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> * HMaster is the "master server" for HBase. An HBase cluster has one active<a name="line.237"></a>
-<span class="sourceLineNo">238</span> * master.  If many masters are started, all compete.  Whichever wins goes on to<a name="line.238"></a>
-<span class="sourceLineNo">239</span> * run the cluster.  All others park themselves in their constructor until<a name="line.239"></a>
-<span class="sourceLineNo">240</span> * master or cluster shutdown or until the active master loses its lease in<a name="line.240"></a>
-<span class="sourceLineNo">241</span> * zookeeper.  Thereafter, all running master jostle to take over master role.<a name="line.241"></a>
-<span class="sourceLineNo">242</span> *<a name="line.242"></a>
-<span class="sourceLineNo">243</span> * &lt;p&gt;The Master can be asked shutdown the cluster. See {@link #shutdown()}.  In<a name="line.243"></a>
-<span class="sourceLineNo">244</span> * this case it will tell all regionservers to go down and then wait on them<a name="line.244"></a>
-<span class="sourceLineNo">245</span> * all reporting in that they are down.  This master will then shut itself down.<a name="line.245"></a>
-<span class="sourceLineNo">246</span> *<a name="line.246"></a>
-<span class="sourceLineNo">247</span> * &lt;p&gt;You can also shutdown just this master.  Call {@link #stopMaster()}.<a name="line.247"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.CompoundConfiguration;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.HBaseIOException;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.HBaseInterfaceAudience;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.HConstants;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.InvalidFamilyOperationException;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.MasterNotRunningException;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.MetaTableAccessor;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.PleaseHoldException;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.ReplicationPeerNotFoundException;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.ServerName;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.TableDescriptors;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.TableName;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.TableNotDisabledException;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.TableNotFoundException;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.UnknownRegionException;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.client.MasterSwitchType;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.client.RegionInfoBuilder;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.client.Result;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.client.TableState;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.coprocessor.CoprocessorHost;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.exceptions.MergeRegionException;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.executor.ExecutorType;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.favored.FavoredNodesManager;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.favored.FavoredNodesPromoter;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.http.InfoServer;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcUtils;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.101"></a>
+<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.ipc.ServerNotRunningYetException;<a name="line.102"></a>
+<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.log.HBaseMarkers;<a name="line.103"></a>
+<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.master.MasterRpcServices.BalanceSwitchMode;<a name="line.104"></a>
+<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.master.assignment.AssignProcedure;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.master.assignment.AssignmentManager;<a name="line.106"></a>
+<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.master.assignment.MergeTableRegionsProcedure;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.master.assignment.MoveRegionProcedure;<a name="line.108"></a>
+<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.master.assignment.RegionStateNode;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.master.assignment.RegionStates;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.master.assignment.TransitRegionStateProcedure;<a name="line.111"></a>
+<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.master.assignment.UnassignProcedure;<a name="line.112"></a>
+<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.master.balancer.BalancerChore;<a name="line.113"></a>
+<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.master.balancer.BaseLoadBalancer;<a name="line.114"></a>
+<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.master.balancer.ClusterStatusChore;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.master.balancer.LoadBalancerFactory;<a name="line.116"></a>
+<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.master.cleaner.CleanerChore;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.master.cleaner.HFileCleaner;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.master.cleaner.LogCleaner;<a name="line.119"></a>
+<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.master.cleaner.ReplicationBarrierCleaner;<a name="line.120"></a>
+<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.master.locking.LockManager;<a name="line.121"></a>
+<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.master.normalizer.NormalizationPlan;<a name="line.122"></a>
+<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.master.normalizer.NormalizationPlan.PlanType;<a name="line.123"></a>
+<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizer;<a name="line.124"></a>
+<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizerChore;<a name="line.125"></a>
+<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizerFactory;<a name="line.126"></a>
+<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.master.procedure.CreateTableProcedure;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.master.procedure.DeleteNamespaceProcedure;<a name="line.128"></a>
+<span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.master.procedure.DeleteTableProcedure;<a name="line.129"></a>
+<span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.master.procedure.DisableTableProcedure;<a name="line.130"></a>
+<span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.master.procedure.EnableTableProcedure;<a name="line.131"></a>
+<span class="sourceLineNo">132</span>import org.apache.hadoop.hbase.master.procedure.InitMetaProcedure;<a name="line.132"></a>
+<span class="sourceLineNo">133</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureConstants;<a name="line.133"></a>
+<span class="sourceLineNo">134</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureScheduler;<a name="line.135"></a>
+<span class="sourceLineNo">136</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureUtil;<a name="line.136"></a>
+<span class="sourceLineNo">137</span>import org.apache.hadoop.hbase.master.procedure.ModifyTableProcedure;<a name="line.137"></a>
+<span class="sourceLineNo">138</span>import org.apache.hadoop.hbase.master.procedure.ProcedurePrepareLatch;<a name="line.138"></a>
+<span class="sourceLineNo">139</span>import org.apache.hadoop.hbase.master.procedure.RecoverMetaProcedure;<a name="line.139"></a>
+<span class="sourceLineNo">140</span>import org.apache.hadoop.hbase.master.procedure.ServerCrashProcedure;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.master.procedure.TruncateTableProcedure;<a name="line.141"></a>
+<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.master.replication.AbstractPeerProcedure;<a name="line.142"></a>
+<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.master.replication.AddPeerProcedure;<a name="line.143"></a>
+<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.master.replication.DisablePeerProcedure;<a name="line.144"></a>
+<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.master.replication.EnablePeerProcedure;<a name="line.145"></a>
+<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.master.replication.RemovePeerProcedure;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.master.replication.ReplicationPeerManager;<a name="line.147"></a>
+<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.master.replication.SyncReplicationReplayWALManager;<a name="line.148"></a>
+<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.master.replication.TransitPeerSyncReplicationStateProcedure;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.master.replication.UpdatePeerConfigProcedure;<a name="line.150"></a>
+<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.master.snapshot.SnapshotManager;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.master.zksyncer.MasterAddressSyncer;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.master.zksyncer.MetaLocationSyncer;<a name="line.153"></a>
+<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.mob.MobConstants;<a name="line.154"></a>
+<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.monitoring.MemoryBoundedLogMessageBuffer;<a name="line.155"></a>
+<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.156"></a>
+<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.157"></a>
+<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.procedure.MasterProcedureManagerHost;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.procedure.flush.MasterFlushTableProcedureManager;<a name="line.159"></a>
+<span class="sourceLineNo">160</span>import org.apache.hadoop.hbase.procedure2.LockedResource;<a name="line.160"></a>
+<span class="sourceLineNo">161</span>import org.apache.hadoop.hbase.procedure2.Procedure;<a name="line.161"></a>
+<span class="sourceLineNo">162</span>import org.apache.hadoop.hbase.procedure2.ProcedureEvent;<a name="line.162"></a>
+<span class="sourceLineNo">163</span>import org.apache.hadoop.hbase.procedure2.ProcedureExecutor;<a name="line.163"></a>
+<span class="sourceLineNo">164</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureDispatcher.RemoteProcedure;<a name="line.164"></a>
+<span class="sourceLineNo">165</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureException;<a name="line.165"></a>
+<span class="sourceLineNo">166</span>import org.apache.hadoop.hbase.procedure2.store.wal.WALProcedureStore;<a name="line.166"></a>
+<span class="sourceLineNo">167</span>import org.apache.hadoop.hbase.quotas.MasterQuotaManager;<a name="line.167"></a>
+<span class="sourceLineNo">168</span>import org.apache.hadoop.hbase.quotas.MasterQuotasObserver;<a name="line.168"></a>
+<span class="sourceLineNo">169</span>import org.apache.hadoop.hbase.quotas.QuotaObserverChore;<a name="line.169"></a>
+<span class="sourceLineNo">170</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.170"></a>
+<span class="sourceLineNo">171</span>import org.apache.hadoop.hbase.quotas.SnapshotQuotaObserverChore;<a name="line.171"></a>
+<span class="sourceLineNo">172</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifier;<a name="line.172"></a>
+<span class="sourceLineNo">173</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifierFactory;<a name="line.173"></a>
+<span class="sourceLineNo">174</span>import org.apache.hadoop.hbase.regionserver.DefaultStoreEngine;<a name="line.174"></a>
+<span class="sourceLineNo">175</span>import org.apache.hadoop.hbase.regionserver.HRegionServer;<a name="line.175"></a>
+<span class="sourceLineNo">176</span>import org.apache.hadoop.hbase.regionserver.HStore;<a name="line.176"></a>
+<span class="sourceLineNo">177</span>import org.apache.hadoop.hbase.regionserver.RSRpcServices;<a name="line.177"></a>
+<span class="sourceLineNo">178</span>import org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost;<a name="line.178"></a>
+<span class="sourceLineNo">179</span>import org.apache.hadoop.hbase.regionserver.RegionSplitPolicy;<a name="line.179"></a>
+<span class="sourceLineNo">180</span>import org.apache.hadoop.hbase.regionserver.compactions.ExploringCompactionPolicy;<a name="line.180"></a>
+<span class="sourceLineNo">181</span>import org.apache.hadoop.hbase.regionserver.compactions.FIFOCompactionPolicy;<a name="line.181"></a>
+<span class="sourceLineNo">182</span>import org.apache.hadoop.hbase.replication.ReplicationException;<a name="line.182"></a>
+<span class="sourceLineNo">183</span>import org.apache.hadoop.hbase.replication.ReplicationLoadSource;<a name="line.183"></a>
+<span class="sourceLineNo">184</span>import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;<a name="line.184"></a>
+<span class="sourceLineNo">185</span>import org.apache.hadoop.hbase.replication.ReplicationPeerDescription;<a name="line.185"></a>
+<span class="sourceLineNo">186</span>import org.apache.hadoop.hbase.replication.ReplicationUtils;<a name="line.186"></a>
+<span class="sourceLineNo">187</span>import org.apache.hadoop.hbase.replication.SyncReplicationState;<a name="line.187"></a>
+<span class="sourceLineNo">188</span>import org.apache.hadoop.hbase.replication.master.ReplicationHFileCleaner;<a name="line.188"></a>
+<span class="sourceLineNo">189</span>import org.apache.hadoop.hbase.replication.master.ReplicationLogCleaner;<a name="line.189"></a>
+<span class="sourceLineNo">190</span>import org.apache.hadoop.hbase.replication.master.ReplicationPeerConfigUpgrader;<a name="line.190"></a>
+<span class="sourceLineNo">191</span>import org.apache.hadoop.hbase.security.AccessDeniedException;<a name="line.191"></a>
+<span class="sourceLineNo">192</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.192"></a>
+<span class="sourceLineNo">193</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.193"></a>
+<span class="sourceLineNo">194</span>import org.apache.hadoop.hbase.util.Addressing;<a name="line.194"></a>
+<span class="sourceLineNo">195</span>import org.apache.hadoop.hbase.util.BloomFilterUtil;<a name="line.195"></a>
+<span class="sourceLineNo">196</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.196"></a>
+<span class="sourceLineNo">197</span>import org.apache.hadoop.hbase.util.CompressionTest;<a name="line.197"></a>
+<span class="sourceLineNo">198</span>import org.apache.hadoop.hbase.util.EncryptionTest;<a name="line.198"></a>
+<span class="sourceLineNo">199</span>import org.apache.hadoop.hbase.util.HBaseFsck;<a name="line.199"></a>
+<span class="sourceLineNo">200</span>import org.apache.hadoop.hbase.util.HFileArchiveUtil;<a name="line.200"></a>
+<span class="sourceLineNo">201</span>import org.apache.hadoop.hbase.util.HasThread;<a name="line.201"></a>
+<span class="sourceLineNo">202</span>import org.apache.hadoop.hbase.util.IdLock;<a name="line.202"></a>
+<span class="sourceLineNo">203</span>import org.apache.hadoop.hbase.util.ModifyRegionUtils;<a name="line.203"></a>
+<span class="sourceLineNo">204</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.204"></a>
+<span class="sourceLineNo">205</span>import org.apache.hadoop.hbase.util.RetryCounter;<a name="line.205"></a>
+<span class="sourceLineNo">206</span>import org.apache.hadoop.hbase.util.RetryCounterFactory;<a name="line.206"></a>
+<span class="sourceLineNo">207</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.207"></a>
+<span class="sourceLineNo">208</span>import org.apache.hadoop.hbase.util.VersionInfo;<a name="line.208"></a>
+<span class="sourceLineNo">209</span>import org.apache.hadoop.hbase.zookeeper.LoadBalancerTracker;<a name="line.209"></a>
+<span class="sourceLineNo">210</span>import org.apache.hadoop.hbase.zookeeper.MasterAddressTracker;<a name="line.210"></a>
+<span class="sourceLineNo">211</span>import org.apache.hadoop.hbase.zookeeper.MasterMaintenanceModeTracker;<a name="line.211"></a>
+<span class="sourceLineNo">212</span>import org.apache.hadoop.hbase.zookeeper.RegionNormalizerTracker;<a name="line.212"></a>
+<span class="sourceLineNo">213</span>import org.apache.hadoop.hbase.zookeeper.ZKClusterId;<a name="line.213"></a>
+<span class="sourceLineNo">214</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.214"></a>
+<span class="sourceLineNo">215</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.215"></a>
+<span class="sourceLineNo">216</span>import org.apache.hadoop.hbase.zookeeper.ZNodePaths;<a name="line.216"></a>
+<span class="sourceLineNo">217</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.217"></a>
+<span class="sourceLineNo">218</span>import org.apache.zookeeper.KeeperException;<a name="line.218"></a>
+<span class="sourceLineNo">219</span>import org.eclipse.jetty.server.Server;<a name="line.219"></a>
+<span class="sourceLineNo">220</span>import org.eclipse.jetty.server.ServerConnector;<a name="line.220"></a>
+<span class="sourceLineNo">221</span>import org.eclipse.jetty.servlet.ServletHolder;<a name="line.221"></a>
+<span class="sourceLineNo">222</span>import org.eclipse.jetty.webapp.WebAppContext;<a name="line.222"></a>
+<span class="sourceLineNo">223</span>import org.slf4j.Logger;<a name="line.223"></a>
+<span class="sourceLineNo">224</span>import org.slf4j.LoggerFactory;<a name="line.224"></a>
+<span class="sourceLineNo">225</span><a name="line.225"></a>
+<span class="sourceLineNo">226</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.226"></a>
+<span class="sourceLineNo">227</span>import org.apache.hbase.thirdparty.com.google.common.collect.ImmutableSet;<a name="line.227"></a>
+<span class="sourceLineNo">228</span>import org.apache.hbase.thirdparty.com.google.common.collect.Lists;<a name="line.228"></a>
+<span class="sourceLineNo">229</span>import org.apache.hbase.thirdparty.com.google.common.collect.Maps;<a name="line.229"></a>
+<span class="sourceLineNo">230</span><a name="line.230"></a>
+<span class="sourceLineNo">231</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.231"></a>
+<span class="sourceLineNo">232</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoResponse.CompactionState;<a name="line.232"></a>
+<span class="sourceLineNo">233</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.Quotas;<a name="line.233"></a>
+<span class="sourceLineNo">234</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.SpaceViolationPolicy;<a name="line.234"></a>
+<span class="sourceLineNo">235</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;<a name="line.235"></a>
+<span class="sourceLineNo">236</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos;<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> * HMaster is the "master server" for HBase. An HBase cluster has one active<a name="line.239"></a>
+<span class="sourceLineNo">240</span> * master.  If many masters are started, all compete.  Whichever wins goes on to<a name="line.240"></a>
+<span class="sourceLineNo">241</span> * run the cluster.  All others park themselves in their constructor until<a name="line.241"></a>
+<span class="sourceLineNo">242</span> * master or cluster shutdown or until the active master loses its lease in<a name="line.242"></a>
+<span class="sourceLineNo">243</span> * zookeeper.  Thereafter, all running master jostle to take over master role.<a name="line.243"></a>
+<span class="sourceLineNo">244</span> *<a name="line.244"></a>
+<span class="sourceLineNo">245</span> * &lt;p&gt;The Master can be asked shutdown the cluster. See {@link #shutdown()}.  In<a name="line.245"></a>
+<span class="sourceLineNo">246</span> * this case it will tell all regionservers to go down and then wait on them<a name="line.246"></a>
+<span class="sourceLineNo">247</span> * all reporting in that they are down.  This master will then shut itself down.<a name="line.247"></a>
 <span class="sourceLineNo">248</span> *<a name="line.248"></a>
-<span class="sourceLineNo">249</span> * @see org.apache.zookeeper.Watcher<a name="line.249"></a>
-<span class="sourceLineNo">250</span> */<a name="line.250"></a>
-<span class="sourceLineNo">251</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS)<a name="line.251"></a>
-<span class="sourceLineNo">252</span>@SuppressWarnings("deprecation")<a name="line.252"></a>
-<span class="sourceLineNo">253</span>public class HMaster extends HRegionServer implements MasterServices {<a name="line.253"></a>
-<span class="sourceLineNo">254</span>  private static Logger LOG = LoggerFactory.getLogger(HMaster.class);<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>   * Protection against zombie master. Started once Master accepts active responsibility and<a name="line.257"></a>
-<span class="sourceLineNo">258</span>   * starts taking over responsibilities. Allows a finite time window before giving up ownership.<a name="line.258"></a>
-<span class="sourceLineNo">259</span>   */<a name="line.259"></a>
-<span class="sourceLineNo">260</span>  private static class InitializationMonitor extends HasThread {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    /** The amount of time in milliseconds to sleep before checking initialization status. */<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    public static final String TIMEOUT_KEY = "hbase.master.initializationmonitor.timeout";<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    public static final long TIMEOUT_DEFAULT = TimeUnit.MILLISECONDS.convert(15, TimeUnit.MINUTES);<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">266</span>     * When timeout expired and initialization has not complete, call {@link System#exit(int)} when<a name="line.266"></a>
-<span class="sourceLineNo">267</span>     * true, do nothing otherwise.<a name="line.267"></a>
-<span class="sourceLineNo">268</span>     */<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    public static final String HALT_KEY = "hbase.master.initializationmonitor.haltontimeout";<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    public static final boolean HALT_DEFAULT = false;<a name="line.270"></a>
-<span class="sourceLineNo">271</span><a name="line.271"></a>
-<span class="sourceLineNo">272</span>    private final HMaster master;<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    private final long timeout;<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    private final boolean haltOnTimeout;<a name="line.274"></a>
-<span class="sourceLineNo">275</span><a name="line.275"></a>
-<span class="sourceLineNo">276</span>    /** Creates a Thread that monitors the {@link #isInitialized()} state. */<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    InitializationMonitor(HMaster master) {<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      super("MasterInitializationMonitor");<a name="line.278"></a>
-<span class="sourceLineNo">279</span>      this.master = master;<a name="line.279"></a>
-<span class="sourceLineNo">280</span>      this.timeout = master.getConfiguration().getLong(TIMEOUT_KEY, TIMEOUT_DEFAULT);<a name="line.280"></a>
-<span class="sourceLineNo">281</span>      this.haltOnTimeout = master.getConfiguration().getBoolean(HALT_KEY, HALT_DEFAULT);<a name="line.281"></a>
-<span class="sourceLineNo">282</span>      this.setDaemon(true);<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>    @Override<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    public void run() {<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      try {<a name="line.287"></a>
-<span class="sourceLineNo">288</span>        while (!master.isStopped() &amp;&amp; master.isActiveMaster()) {<a name="line.288"></a>
-<span class="sourceLineNo">289</span>          Thread.sleep(timeout);<a name="line.289"></a>
-<span class="sourceLineNo">290</span>          if (master.isInitialized()) {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>            LOG.debug("Initialization completed within allotted tolerance. Monitor exiting.");<a name="line.291"></a>
-<span class="sourceLineNo">292</span>          } else {<a name="line.292"></a>
-<span class="sourceLineNo">293</span>            LOG.error("Master failed to complete initialization after " + timeout + "ms. Please"<a name="line.293"></a>
-<span class="sourceLineNo">294</span>                + " consider submitting a bug report including a thread dump of this process.");<a name="line.294"></a>
-<span class="sourceLineNo">295</span>            if (haltOnTimeout) {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>              LOG.error("Zombie Master exiting. Thread dump to stdout");<a name="line.296"></a>
-<span class="sourceLineNo">297</span>              Threads.printThreadInfo(System.out, "Zombie HMaster");<a name="line.297"></a>
-<span class="sourceLineNo">298</span>              System.exit(-1);<a name="line.298"></a>
-<span class="sourceLineNo">299</span>            }<a name="line.299"></a>
-<span class="sourceLineNo">300</span>          }<a name="line.300"></a>
-<span class="sourceLineNo">301</span>        }<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      } catch (InterruptedException ie) {<a name="line.302"></a>
-<span class="sourceLineNo">303</span>        LOG.trace("InitMonitor thread interrupted. Existing.");<a name="line.303"></a>
-<span class="sourceLineNo">304</span>      }<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><a name="line.307"></a>
-<span class="sourceLineNo">308</span>  // MASTER is name of the webapp and the attribute name used stuffing this<a name="line.308"></a>
-<span class="sourceLineNo">309</span>  //instance into web context.<a name="line.309"></a>
-<span class="sourceLineNo">310</span>  public static final String MASTER = "master";<a name="line.310"></a>
-<span class="sourceLineNo">311</span><a name="line.311"></a>
-<span class="sourceLineNo">312</span>  // Manager and zk listener for master election<a name="line.312"></a>
-<span class="sourceLineNo">313</span>  private final ActiveMasterManager activeMasterManager;<a name="line.313"></a>
-<span class="sourceLineNo">314</span>  // Region server tracker<a name="line.314"></a>
-<span class="sourceLineNo">315</span>  private RegionServerTracker regionServerTracker;<a name="line.315"></a>
-<span class="sourceLineNo">316</span>  // Draining region server tracker<a name="line.316"></a>
-<span class="sourceLineNo">317</span>  private DrainingServerTracker drainingServerTracker;<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  // Tracker for load balancer state<a name="line.318"></a>
-<span class="sourceLineNo">319</span>  LoadBalancerTracker loadBalancerTracker;<a name="line.319"></a>
-<span class="sourceLineNo">320</span>  // Tracker for meta location, if any client ZK quorum specified<a name="line.320"></a>
-<span class="sourceLineNo">321</span>  MetaLocationSyncer metaLocationSyncer;<a name="line.321"></a>
-<span class="sourceLineNo">322</span>  // Tracker for active master location, if any client ZK quorum specified<a name="line.322"></a>
-<span class="sourceLineNo">323</span>  MasterAddressSyncer masterAddressSyncer;<a name="line.323"></a>
-<span class="sourceLineNo">324</span><a name="line.324"></a>
-<span class="sourceLineNo">325</span>  // Tracker for split and merge state<a name="line.325"></a>
-<span class="sourceLineNo">326</span>  private SplitOrMergeTracker splitOrMergeTracker;<a name="line.326"></a>
-<span class="sourceLineNo">327</span><a name="line.327"></a>
-<span class="sourceLineNo">328</span>  // Tracker for region normalizer state<a name="line.328"></a>
-<span class="sourceLineNo">329</span>  private RegionNormalizerTracker regionNormalizerTracker;<a name="line.329"></a>
-<span class="sourceLineNo">330</span><a name="line.330"></a>
-<span class="sourceLineNo">331</span>  //Tracker for master maintenance mode setting<a name="line.331"></a>
-<span class="sourceLineNo">332</span>  private MasterMaintenanceModeTracker maintenanceModeTracker;<a name="line.332"></a>
-<span class="sourceLineNo">333</span><a name="line.333"></a>
-<span class="sourceLineNo">334</span>  private ClusterSchemaService clusterSchemaService;<a name="line.334"></a>
+<span class="sourceLineNo">249</span> * &lt;p&gt;You can also shutdown just this master.  Call {@link #stopMaster()}.<a name="line.249"></a>
+<span class="sourceLineNo">250</span> *<a name="line.250"></a>
+<span class="sourceLineNo">251</span> * @see org.apache.zookeeper.Watcher<a name="line.251"></a>
+<span class="sourceLineNo">252</span> */<a name="line.252"></a>
+<span class="sourceLineNo">253</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS)<a name="line.253"></a>
+<span class="sourceLineNo">254</span>@SuppressWarnings("deprecation")<a name="line.254"></a>
+<span class="sourceLineNo">255</span>public class HMaster extends HRegionServer implements MasterServices {<a name="line.255"></a>
+<span class="sourceLineNo">256</span>  private static Logger LOG = LoggerFactory.getLogger(HMaster.class);<a name="line.256"></a>
+<span class="sourceLineNo">257</span><a name="line.257"></a>
+<span class="sourceLineNo">258</span>  /**<a name="line.258"></a>
+<span class="sourceLineNo">259</span>   * Protection against zombie master. Started once Master accepts active responsibility and<a name="line.259"></a>
+<span class="sourceLineNo">260</span>   * starts taking over responsibilities. Allows a finite time window before giving up ownership.<a name="line.260"></a>
+<span class="sourceLineNo">261</span>   */<a name="line.261"></a>
+<span class="sourceLineNo">262</span>  private static class InitializationMonitor extends HasThread {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    /** The amount of time in milliseconds to sleep before checking initialization status. */<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    public static final String TIMEOUT_KEY = "hbase.master.initializationmonitor.timeout";<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    public static final long TIMEOUT_DEFAULT = TimeUnit.MILLISECONDS.convert(15, TimeUnit.MINUTES);<a name="line.265"></a>
+<span class="sourceLineNo">266</span><a name="line.266"></a>
+<span class="sourceLineNo">267</span>    /**<a name="line.267"></a>
+<span class="sourceLineNo">268</span>     * When timeout expired and initialization has not complete, call {@link System#exit(int)} when<a name="line.268"></a>
+<span class="sourceLineNo">269</span>     * true, do nothing otherwise.<a name="line.269"></a>
+<span class="sourceLineNo">270</span>     */<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    public static final String HALT_KEY = "hbase.master.initializationmonitor.haltontimeout";<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    public static final boolean HALT_DEFAULT = false;<a name="line.272"></a>
+<span class="sourceLineNo">273</span><a name="line.273"></a>
+<span class="sourceLineNo">274</span>    private final HMaster master;<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    private final long timeout;<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    private final boolean haltOnTimeout;<a name="line.276"></a>
+<span class="sourceLineNo">277</span><a name="line.277"></a>
+<span class="sourceLineNo">278</span>    /** Creates a Thread that monitors the {@link #isInitialized()} state. */<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    InitializationMonitor(HMaster master) {<a name="line.279"></a>
+<span class="sourceLineNo">280</span>      super("MasterInitializationMonitor");<a name="line.280"></a>
+<span class="sourceLineNo">281</span>      this.master = master;<a name="line.281"></a>
+<span class="sourceLineNo">282</span>      this.timeout = master.getConfiguration().getLong(TIMEOUT_KEY, TIMEOUT_DEFAULT);<a name="line.282"></a>
+<span class="sourceLineNo">283</span>      this.haltOnTimeout = master.getConfiguration().getBoolean(HALT_KEY, HALT_DEFAULT);<a name="line.283"></a>
+<span class="sourceLineNo">284</span>      this.setDaemon(true);<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    }<a name="line.285"></a>
+<span class="sourceLineNo">286</span><a name="line.286"></a>
+<span class="sourceLineNo">287</span>    @Override<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    public void run() {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>      try {<a name="line.289"></a>
+<span class="sourceLineNo">290</span>        while (!master.isStopped() &amp;&amp; master.isActiveMaster()) {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>          Thread.sleep(timeout);<a name="line.291"></a>
+<span class="sourceLineNo">292</span>          if (master.isInitialized()) {<a name="line.292"></a>
+<span class="sourceLineNo">293</span>            LOG.debug("Initialization completed within allotted tolerance. Monitor exiting.");<a name="line.293"></a>
+<span class="sourceLineNo">294</span>          } else {<a name="line.294"></a>
+<span class="sourceLineNo">295</span>            LOG.error("Master failed to complete initialization after " + timeout + "ms. Please"<a name="line.295"></a>
+<span class="sourceLineNo">296</span>                + " consider submitting a bug report including a thread dump of this process.");<a name="line.296"></a>
+<span class="sourceLineNo">297</span>            if (haltOnTimeout) {<a name="line.297"></a>
+<span class="sourceLineNo">298</span>              LOG.error("Zombie Master exiting. Thread dump to stdout");<a name="line.298"></a>
+<span class="sourceLineNo">299</span>              Threads.printThreadInfo(System.out, "Zombie HMaster");<a name="line.299"></a>
+<span class="sourceLineNo">300</span>              System.exit(-1);<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>      } catch (InterruptedException ie) {<a name="line.304"></a>
+<span class="sourceLineNo">305</span>        LOG.trace("InitMonitor thread interrupted. Existing.");<a name="line.305"></a>
+<span class="sourceLineNo">306</span>      }<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    }<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>  // MASTER is name of the webapp and the attribute name used stuffing this<a name="line.310"></a>
+<span class="sourceLineNo">311</span>  //instance into web context.<a name="line.311"></a>
+<span class="sourceLineNo">312</span>  public static final String MASTER = "master";<a name="line.312"></a>
+<span class="sourceLineNo">313</span><a name="line.313"></a>
+<span class="sourceLineNo">314</span>  // Manager and zk listener for master election<a name="line.314"></a>
+<span class="sourceLineNo">315</span>  private final ActiveMasterManager activeMasterManager;<a name="line.315"></a>
+<span class="sourceLineNo">316</span>  // Region server tracker<a name="line.316"></a>
+<span class="sourceLineNo">317</span>  private RegionServerTracker regionServerTracker;<a name="line.317"></a>
+<span class="sourceLineNo">318</span>  // Draining region server tracker<a name="line.318"></a>
+<span class="sourceLineNo">319</span>  private DrainingServerTracker drainingServerTracker;<a name="line.319"></a>
+<span class="sourceLineNo">320</span>  // Tracker for load balancer state<a name="line.320"></a>
+<span class="sourceLineNo">321</span>  LoadBalancerTracker loadBalancerTracker;<a name="line.321"></a>
+<span class="sourceLineNo">322</span>  // Tracker for meta location, if any client ZK quorum specified<a name="line.322"></a>
+<span class="sourceLineNo">323</span>  MetaLocationSyncer metaLocationSyncer;<a name="line.323"></a>
+<span class="sourceLineNo">324</span>  // Tracker for active master location, if any client ZK quorum specified<a name="line.324"></a>
+<span class="sourceLineNo">325</span>  MasterAddressSyncer masterAddressSyncer;<a name="line.325"></a>
+<span class="sourceLineNo">326</span><a name="line.326"></a>
+<span class="sourceLineNo">327</span>  // Tracker for split and merge state<a name="line.327"></a>
+<span class="sourceLineNo">328</span>  private SplitOrMergeTracker splitOrMergeTracker;<a name="line.328"></a>
+<span class="sourceLineNo">329</span><a name="line.329"></a>
+<span class="sourceLineNo">330</span>  // Tracker for region normalizer state<a name="line.330"></a>
+<span class="sourceLineNo">331</span>  private RegionNormalizerTracker regionNormalizerTracker;<a name="line.331"></a>
+<span class="sourceLineNo">332</span><a name="line.332"></a>
+<span class="sourceLineNo">333</span>  //Tracker for master maintenance mode setting<a name="line.333"></a>
+<span class="sourceLineNo">334</span>  private MasterMaintenanceModeTracker maintenanceModeTracker;<a name="line.334"></a>
 <span class="sourceLineNo">335</span><a name="line.335"></a>
-<span class="sourceLineNo">336</span>  public static final String HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS =<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    "hbase.master.wait.on.service.seconds";<a name="line.337"></a>
-<span class="sourceLineNo">338</span>  public static final int DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS = 5 * 60;<a name="line.338"></a>
-<span class="sourceLineNo">339</span><a name="line.339"></a>
-<span class="sourceLineNo">340</span>  // Metrics for the HMaster<a name="line.340"></a>
-<span class="sourceLineNo">341</span>  final MetricsMaster metricsMaster;<a name="line.341"></a>
-<span class="sourceLineNo">342</span>  // file system manager for the master FS operations<a name="line.342"></a>
-<span class="sourceLineNo">343</span>  private MasterFileSystem fileSystemManager;<a name="line.343"></a>
-<span class="sourceLineNo">344</span>  private MasterWalManager walManager;<a name="line.344"></a>
-<span class="sourceLineNo">345</span><a name="line.345"></a>
-<span class="sourceLineNo">346</span>  // server manager to deal with region server info<a name="line.346"></a>
-<span class="sourceLineNo">347</span>  private volatile ServerManager serverManager;<a name="line.347"></a>
-<span class="sourceLineNo">348</span><a name="line.348"></a>
-<span class="sourceLineNo">349</span>  // manager of assignment nodes in zookeeper<a name="line.349"></a>
-<span class="sourceLineNo">350</span>  private AssignmentManager assignmentManager;<a name="line.350"></a>
-<span class="sourceLineNo">351</span><a name="line.351"></a>
-<span class="sourceLineNo">352</span>  // manager of replication<a name="line.352"></a>
-<span class="sourceLineNo">353</span>  private ReplicationPeerManager replicationPeerManager;<a name="line.353"></a>
-<span class="sourceLineNo">354</span><a name="line.354"></a>
-<span class="sourceLineNo">355</span>  private SyncReplicationReplayWALManager syncReplicationReplayWALManager;<a name="line.355"></a>
+<span class="sourceLineNo">336</span>  private ClusterSchemaService clusterSchemaService;<a name="line.336"></a>
+<span class="sourceLineNo">337</span><a name="line.337"></a>
+<span class="sourceLineNo">338</span>  public static final String HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS =<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    "hbase.master.wait.on.service.seconds";<a name="line.339"></a>
+<span class="sourceLineNo">340</span>  public static final int DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS = 5 * 60;<a name="line.340"></a>
+<span class="sourceLineNo">341</span><a name="line.341"></a>
+<span class="sourceLineNo">342</span>  // Metrics for the HMaster<a name="line.342"></a>
+<span class="sourceLineNo">343</span>  final MetricsMaster metricsMaster;<a name="line.343"></a>
+<span class="sourceLineNo">344</span>  // file system manager for the master FS operations<a name="line.344"></a>
+<span class="sourceLineNo">345</span>  private MasterFileSystem fileSystemManager;<a name="line.345"></a>
+<span class="sourceLineNo">346</span>  private MasterWalManager walManager;<a name="line.346"></a>
+<span class="sourceLineNo">347</span><a name="line.347"></a>
+<span class="sourceLineNo">348</span>  // server manager to deal with region server info<a name="line.348"></a>
+<span class="sourceLineNo">349</span>  private volatile ServerManager serverManager;<a name="line.349"></a>
+<span class="sourceLineNo">350</span><a name="line.350"></a>
+<span class="sourceLineNo">351</span>  // manager of assignment nodes in zookeeper<a name="line.351"></a>
+<span class="sourceLineNo">352</span>  private AssignmentManager assignmentManager;<a name="line.352"></a>
+<span class="sourceLineNo">353</span><a name="line.353"></a>
+<span class="sourceLineNo">354</span>  // manager of replication<a name="line.354"></a>
+<span class="sourceLineNo">355</span>  private ReplicationPeerManager replicationPeerManager;<a name="line.355"></a>
 <span class="sourceLineNo">356</span><a name="line.356"></a>
-<span class="sourceLineNo">357</span>  // buffer for "fatal error" notices from region servers<a name="line.357"></a>
-<span class="sourceLineNo">358</span>  // in the cluster. This is only used for assisting<a name="line.358"></a>
-<span class="sourceLineNo">359</span>  // operations/debugging.<a name="line.359"></a>
-<span class="sourceLineNo">360</span>  MemoryBoundedLogMessageBuffer rsFatals;<a name="line.360"></a>
-<span class="sourceLineNo">361</span><a name="line.361"></a>
-<span class="sourceLineNo">362</span>  // flag set after we become the active master (used for testing)<a name="line.362"></a>
-<span class="sourceLineNo">363</span>  private volatile boolean activeMaster = false;<a name="line.363"></a>
-<span class="sourceLineNo">364</span><a name="line.364"></a>
-<span class="sourceLineNo">365</span>  // flag set after we complete initialization once active<a name="line.365"></a>
-<span class="sourceLineNo">366</span>  private final ProcedureEvent&lt;?&gt; initialized = new ProcedureEvent&lt;&gt;("master initialized");<a name="line.366"></a>
-<span class="sourceLineNo">367</span><a name="line.367"></a>
-<span class="sourceLineNo">368</span>  // flag set after master services are started,<a name="line.368"></a>
-<span class="sourceLineNo">369</span>  // initialization may have not completed yet.<a name="line.369"></a>
-<span class="sourceLineNo">370</span>  volatile boolean serviceStarted = false;<a name="line.370"></a>
-<span class="sourceLineNo">371</span><a name="line.371"></a>
-<span class="sourceLineNo">372</span>  // Maximum time we should run balancer for<a name="line.372"></a>
-<span class="sourceLineNo">373</span>  private final int maxBlancingTime;<a name="line.373"></a>
-<span class="sourceLineNo">374</span>  // Maximum percent of regions in transition when balancing<a name="line.374"></a>
-<span class="sourceLineNo">375</span>  private final double maxRitPercent;<a name="line.375"></a>
-<span class="sourceLineNo">376</span><a name="line.376"></a>
-<span class="sourceLineNo">377</span>  private final LockManager lockManager = new LockManager(this);<a name="line.377"></a>
+<span class="sourceLineNo">357</span>  private SyncReplicationReplayWALManager syncReplicationReplayWALManager;<a name="line.357"></a>
+<span class="sourceLineNo">358</span><a name="line.358"></a>
+<span class="sourceLineNo">359</span>  // buffer for "fatal error" notices from region servers<a name="line.359"></a>
+<span class="sourceLineNo">360</span>  // in the cluster. This is only used for assisting<a name="line.360"></a>
+<span class="sourceLineNo">361</span>  // operations/debugging.<a name="line.361"></a>
+<span class="sourceLineNo">362</span>  MemoryBoundedLogMessageBuffer rsFatals;<a name="line.362"></a>
+<span class="sourceLineNo">363</span><a name="line.363"></a>
+<span class="sourceLineNo">364</span>  // flag set after we become the active master (used for testing)<a name="line.364"></a>
+<span class="sourceLineNo">365</span>  private volatile boolean activeMaster = false;<a name="line.365"></a>
+<span class="sourceLineNo">366</span><a name="line.366"></a>
+<span class="sourceLineNo">367</span>  // flag set after we complete initialization once active<a name="line.367"></a>
+<span class="sourceLineNo">368</span>  private final ProcedureEvent&lt;?&gt; initialized = new ProcedureEvent&lt;&gt;("master initialized");<a name="line.368"></a>
+<span class="sourceLineNo">369</span><a name="line.369"></a>
+<span class="sourceLineNo">370</span>  // flag set after master services are started,<a name="line.370"></a>
+<span class="sourceLineNo">371</span>  // initialization may have not completed yet.<a name="line.371"></a>
+<span class="sourceLineNo">372</span>  volatile boolean serviceStarted = false;<a name="line.372"></a>
+<span class="sourceLineNo">373</span><a name="line.373"></a>
+<span class="sourceLineNo">374</span>  // Maximum time we should run balancer for<a name="line.374"></a>
+<span class="sourceLineNo">375</span>  private final int maxBlancingTime;<a name="line.375"></a>
+<span class="sourceLineNo">376</span>  // Maximum percent of regions in transition when balancing<a name="line.376"></a>
+<span class="sourceLineNo">377</span>  private final double maxRitPercent;<a name="line.377"></a>
 <span class="sourceLineNo">378</span><a name="line.378"></a>
-<span class="sourceLineNo">379</span>  private LoadBalancer balancer;<a name="line.379"></a>
-<span class="sourceLineNo">380</span>  private RegionNormalizer normalizer;<a name="line.380"></a>
-<span class="sourceLineNo">381</span>  private BalancerChore balancerChore;<a name="line.381"></a>
-<span class="sourceLineNo">382</span>  private RegionNormalizerChore normalizerChore;<a name="line.382"></a>
-<span class="sourceLineNo">383</span>  private ClusterStatusChore clusterStatusChore;<a name="line.383"></a>
-<span class="sourceLineNo">384</span>  private ClusterStatusPublisher clusterStatusPublisherChore = null;<a name="line.384"></a>
-<span class="sourceLineNo">385</span><a name="line.385"></a>
-<span class="sourceLineNo">386</span>  CatalogJanitor catalogJanitorChore;<a name="line.386"></a>
-<span class="sourceLineNo">387</span>  private LogCleaner logCleaner;<a name="line.387"></a>
-<span class="sourceLineNo">388</span>  private HFileCleaner hfileCleaner;<a name="line.388"></a>
-<span class="sourceLineNo">389</span>  private ReplicationBarrierCleaner replicationBarrierCleaner;<a name="line.389"></a>
-<span class="sourceLineNo">390</span>  private ExpiredMobFileCleanerChore expiredMobFileCleanerChore;<a name="line.390"></a>
-<span class="sourceLineNo">391</span>  private MobCompactionChore mobCompactChore;<a name="line.391"></a>
-<span class="sourceLineNo">392</span>  private MasterMobCompactionThread mobCompactThread;<a name="line.392"></a>
-<span class="sourceLineNo">393</span>  // used to synchronize the mobCompactionStates<a name="line.393"></a>
-<span class="sourceLineNo">394</span>  private final IdLock mobCompactionLock = new IdLock();<a name="line.394"></a>
-<span class="sourceLineNo">395</span>  // save the information of mob compactions in tables.<a name="line.395"></a>
-<span class="sourceLineNo">396</span>  // the key is table name, the value is the number of compactions in that table.<a name="line.396"></a>
-<span class="sourceLineNo">397</span>  private Map&lt;TableName, AtomicInteger&gt; mobCompactionStates = Maps.newConcurrentMap();<a name="line.397"></a>
-<span class="sourceLineNo">398</span><a name="line.398"></a>
-<span class="sourceLineNo">399</span>  MasterCoprocessorHost cpHost;<a name="line.399"></a>
+<span class="sourceLineNo">379</span>  private final LockManager lockManager = new LockManager(this);<a name="line.379"></a>
+<span class="sourceLineNo">380</span><a name="line.380"></a>
+<span class="sourceLineNo">381</span>  private LoadBalancer balancer;<a name="line.381"></a>
+<span class="sourceLineNo">382</span>  private RegionNormalizer normalizer;<a name="line.382"></a>
+<span class="sourceLineNo">383</span>  private BalancerChore balancerChore;<a name="line.383"></a>
+<span class="sourceLineNo">384</span>  private RegionNormalizerChore normalizerChore;<a name="line.384"></a>
+<span class="sourceLineNo">385</span>  private ClusterStatusChore clusterStatusChore;<a name="line.385"></a>
+<span class="sourceLineNo">386</span>  private ClusterStatusPublisher clusterStatusPublisherChore = null;<a name="line.386"></a>
+<span class="sourceLineNo">387</span><a name="line.387"></a>
+<span class="sourceLineNo">388</span>  CatalogJanitor catalogJanitorChore;<a name="line.388"></a>
+<span class="sourceLineNo">389</span>  private LogCleaner logCleaner;<a name="line.389"></a>
+<span class="sourceLineNo">390</span>  private HFileCleaner hfileCleaner;<a name="line.390"></a>
+<span class="sourceLineNo">391</span>  private ReplicationBarrierCleaner replicationBarrierCleaner;<a name="line.391"></a>
+<span class="sourceLineNo">392</span>  private ExpiredMobFileCleanerChore expiredMobFileCleanerChore;<a name="line.392"></a>
+<span class="sourceLineNo">393</span>  private MobCompactionChore mobCompactChore;<a name="line.393"></a>
+<span class="sourceLineNo">394</span>  private MasterMobCompactionThread mobCompactThread;<a name="line.394"></a>
+<span class="sourceLineNo">395</span>  // used to synchronize the mobCompactionStates<a name="line.395"></a>
+<span class="sourceLineNo">396</span>  private final IdLock mobCompactionLock = new IdLock();<a name="line.396"></a>
+<span class="sourceLineNo">397</span>  // save the information of mob compactions in tables.<a name="line.397"></a>
+<span class="sourceLineNo">398</span>  // the key is table name, the value is the number of compactions in that table.<a name="line.398"></a>
+<span class="sourceLineNo">399</span>  private Map&lt;TableName, AtomicInteger&gt; mobCompactionStates = Maps.newConcurrentMap();<a name="line.399"></a>
 <span class="sourceLineNo">400</span><a name="line.400"></a>
-<span class="sourceLineNo">401</span>  private final boolean preLoadTableDescriptors;<a name="line.401"></a>
+<span class="sourceLineNo">401</span>  MasterCoprocessorHost cpHost;<a name="line.401"></a>
 <span class="sourceLineNo">402</span><a name="line.402"></a>
-<span class="sourceLineNo">403</span>  // Time stamps for when a hmaster became active<a name="line.403"></a>
-<span class="sourceLineNo">404</span>  private long masterActiveTime;<a name="line.404"></a>
-<span class="sourceLineNo">405</span><a name="line.405"></a>
-<span class="sourceLineNo">406</span>  // Time stamp for when HMaster finishes becoming Active Master<a name="line.406"></a>
-<span class="sourceLineNo">407</span>  private long masterFinishedInitializationTime;<a name="line.407"></a>
-<span class="sourceLineNo">408</span><a name="line.408"></a>
-<span class="sourceLineNo">409</span>  //should we check the compression codec type at master side, default true, HBASE-6370<a name="line.409"></a>
-<span class="sourceLineNo">410</span>  private final boolean masterCheckCompression;<a name="line.410"></a>
-<span class="sourceLineNo">411</span><a name="line.411"></a>
-<span class="sourceLineNo">412</span>  //should we check encryption settings at master side, default true<a name="line.412"></a>
-<span class="sourceLineNo">413</span>  private final boolean masterCheckEncryption;<a name="line.413"></a>
-<span class="sourceLineNo">414</span><a name="line.414"></a>
-<span class="sourceLineNo">415</span>  Map&lt;String, Service&gt; coprocessorServiceHandlers = Maps.newHashMap();<a name="line.415"></a>
+<span class="sourceLineNo">403</span>  private final boolean preLoadTableDescriptors;<a name="line.403"></a>
+<span class="sourceLineNo">404</span><a name="line.404"></a>
+<span class="sourceLineNo">405</span>  // Time stamps for when a hmaster became active<a name="line.405"></a>
+<span class="sourceLineNo">406</span>  private long masterActiveTime;<a name="line.406"></a>
+<span class="sourceLineNo">407</span><a name="line.407"></a>
+<span class="sourceLineNo">408</span>  // Time stamp for when HMaster finishes becoming Active Master<a name="line.408"></a>
+<span class="sourceLineNo">409</span>  private long masterFinishedInitializationTime;<a name="line.409"></a>
+<span class="sourceLineNo">410</span><a name="line.410"></a>
+<span class="sourceLineNo">411</span>  //should we check the compression codec type at master side, default true, HBASE-6370<a name="line.411"></a>
+<span class="sourceLineNo">412</span>  private final boolean masterCheckCompression;<a name="line.412"></a>
+<span class="sourceLineNo">413</span><a name="line.413"></a>
+<span class="sourceLineNo">414</span>  //should we check encryption settings at master side, default true<a name="line.414"></a>
+<span class="sourceLineNo">415</span>  private final boolean masterCheckEncryption;<a name="line.415"></a>
 <span class="sourceLineNo">416</span><a name="line.416"></a>
-<span class="sourceLineNo">417</span>  // monitor for snapshot of hbase tables<a name="line.417"></a>
-<span class="sourceLineNo">418</span>  SnapshotManager snapshotManager;<a name="line.418"></a>
-<span class="sourceLineNo">419</span>  // monitor for distributed procedures<a name="line.419"></a>
-<span class="sourceLineNo">420</span>  private MasterProcedureManagerHost mpmHost;<a name="line.420"></a>
-<span class="sourceLineNo">421</span><a name="line.421"></a>
-<span class="sourceLineNo">422</span>  // it is assigned after 'initialized' guard set to true, so should be volatile<a name="line.422"></a>
-<span class="sourceLineNo">423</span>  private volatile MasterQuotaManager quotaManager;<a name="line.423"></a>
-<span class="sourceLineNo">424</span>  private SpaceQuotaSnapshotNotifier spaceQuotaSnapshotNotifier;<a name="line.424"></a>
-<span class="sourceLineNo">425</span>  private QuotaObserverChore quotaObserverChore;<a name="line.425"></a>
-<span class="sourceLineNo">426</span>  private SnapshotQuotaObserverChore snapshotQuotaChore;<a name="line.426"></a>
-<span class="sourceLineNo">427</span><a name="line.427"></a>
-<span class="sourceLineNo">428</span>  private ProcedureExecutor&lt;MasterProcedureEnv&gt; procedureExecutor;<a name="line.428"></a>
-<span class="sourceLineNo">429</span>  private WALProcedureStore procedureStore;<a name="line.429"></a>
-<span class="sourceLineNo">430</span><a name="line.430"></a>
-<span class="sourceLineNo">431</span>  // handle table states<a name="line.431"></a>
-<span class="sourceLineNo">432</span>  private TableStateManager tableStateManager;<a name="line.432"></a>
-<span class="sourceLineNo">433</span><a name="line.433"></a>
-<span class="sourceLineNo">434</span>  private long splitPlanCount;<a name="line.434"></a>
-<span class="sourceLineNo">435</span>  private long mergePlanCount;<a name="line.435"></a>
-<span class="sourceLineNo">436</span><a name="line.436"></a>
-<span class="sourceLineNo">437</span>  /* Handle favored nodes information */<a name="line.437"></a>
-<span class="sourceLineNo">438</span>  private FavoredNodesManager favoredNodesManager;<a name="line.438"></a>
-<span class="sourceLineNo">439</span><a name="line.439"></a>
-<span class="sourceLineNo">440</span>  /** jetty server for master to redirect requests to regionserver infoServer */<a name="line.440"></a>
-<span class="sourceLineNo">441</span>  private Server masterJettyServer;<a name="line.441"></a>
-<span class="sourceLineNo">442</span><a name="line.442"></a>
-<span class="sourceLineNo">443</span>  public static class RedirectServlet extends HttpServlet {<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    private static final long serialVersionUID = 2894774810058302473L;<a name="line.444"></a>
-<span class="sourceLineNo">445</span>    private final int regionServerInfoPort;<a name="line.445"></a>
-<span class="sourceLineNo">446</span>    private final String regionServerHostname;<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>     * @param infoServer that we're trying to send all requests to<a name="line.449"></a>
-<span class="sourceLineNo">450</span>     * @param hostname may be null. if given, will be used for redirects instead of host from client.<a name="line.450"></a>
-<span class="sourceLineNo">451</span>     */<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    public RedirectServlet(InfoServer infoServer, String hostname) {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>       regionServerInfoPort = infoServer.getPort();<a name="line.453"></a>
-<span class="sourceLineNo">454</span>       regionServerHostname = hostname;<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 void doGet(HttpServletRequest request,<a name="line.458"></a>
-<span class="sourceLineNo">459</span>        HttpServletResponse response) throws ServletException, IOException {<a name="line.459"></a>
-<span class="sourceLineNo">460</span>      String redirectHost = regionServerHostname;<a name="line.460"></a>
-<span class="sourceLineNo">461</span>      if(redirectHost == null) {<a name="line.461"></a>
-<span class="sourceLineNo">462</span>        redirectHost = request.getServerName();<a name="line.462"></a>
-<span class="sourceLineNo">463</span>        if(!Addressing.isLocalAddress(InetAddress.getByName(redirectHost))) {<a name="line.463"></a>
-<span class="sourceLineNo">464</span>          LOG.warn("Couldn't resolve '" + redirectHost + "' as an address local to this node and '" +<a name="line.464"></a>
-<span class="sourceLineNo">465</span>              MASTER_HOSTNAME_KEY + "' is not set; client will get a HTTP 400 response. If " +<a name="line.465"></a>
-<span class="sourceLineNo">466</span>              "your HBase deployment relies on client accessible names that the region server process " +<a name="line.466"></a>
-<span class="sourceLineNo">467</span>              "can't resolve locally, then you should set the previously mentioned configuration variable " +<a name="line.467"></a>
-<span class="sourceLineNo">468</span>              "to an appropriate hostname.");<a name="line.468"></a>
-<span class="sourceLineNo">469</span>          // no sending client provided input back to the client, so the goal host is just in the logs.<a name="line.469"></a>
-<span class="sourceLineNo">470</span>          response.sendError(400, "Request was to a host that I can't resolve for any of the network interfaces on " +<a name="line.470"></a>
-<span class="sourceLineNo">471</span>              "this node. If this is due to an intermediary such as an HTTP load balancer or other proxy, your HBase " +<a name="line.471"></a>
-<span class="sourceLineNo">472</span>              "administrator can set '" + MASTER_HOSTNAME_KEY + "' to point to the correct hostname.");<a name="line.472"></a>
-<span class="sourceLineNo">473</span>          return;<a name="line.473"></a>
-<span class="sourceLineNo">474</span>        }<a name="line.474"></a>
-<span class="sourceLineNo">475</span>      }<a name="line.475"></a>
-<span class="sourceLineNo">476</span>      // TODO this scheme should come from looking at the scheme registered in the infoserver's http server for the<a name="line.476"></a>
-<span class="sourceLineNo">477</span>      // host and port we're using, but it's buried way too deep to do that ATM.<a name="line.477"></a>
-<span class="sourceLineNo">478</span>      String redirectUrl = request.getScheme() + "://"<a name="line.478"></a>
-<span class="sourceLineNo">479</span>        + redirectHost + ":" + regionServerInfoPort<a name="line.479"></a>
-<span class="sourceLineNo">480</span>        + request.getRequestURI();<a name="line.480"></a>
-<span class="sourceLineNo">481</span>      response.sendRedirect(redirectUrl);<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>  /**<a name="line.485"></a>
-<span class="sourceLineNo">486</span>   * Initializes the HMaster. The steps are as follows:<a name="line.486"></a>
-<span class="sourceLineNo">487</span>   * &lt;p&gt;<a name="line.487"></a>
-<span class="sourceLineNo">488</span>   * &lt;ol&gt;<a name="line.488"></a>
-<span class="sourceLineNo">489</span>   * &lt;li&gt;Initialize the local HRegionServer<a name="line.489"></a>
-<span class="sourceLineNo">490</span>   * &lt;li&gt;Start the ActiveMasterManager.<a name="line.490"></a>
-<span class="sourceLineNo">491</span>   * &lt;/ol&gt;<a name="line.491"></a>
-<span class="sourceLineNo">492</span>   * &lt;p&gt;<a name="line.492"></a>
-<span class="sourceLineNo">493</span>   * Remaining steps of initialization occur in<a name="line.493"></a>
-<span class="sourceLineNo">494</span>   * #finishActiveMasterInitialization(MonitoredTask) after<a name="line.494"></a>
-<span class="sourceLineNo">495</span>   * the master becomes the active one.<a name="line.495"></a>
-<span class="sourceLineNo">496</span>   */<a name="line.496"></a>
-<span class="sourceLineNo">497</span>  public HMaster(final Configuration conf)<a name="line.497"></a>
-<span class="sourceLineNo">498</span>      throws IOException, KeeperException {<a name="line.498"></a>
-<span class="sourceLineNo">499</span>    super(conf);<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    TraceUtil.initTracer(conf);<a name="line.500"></a>
-<span class="sourceLineNo">501</span>    try {<a name="line.501"></a>
-<span class="sourceLineNo">502</span>      this.rsFatals = new MemoryBoundedLogMessageBuffer(<a name="line.502"></a>
-<span class="sourceLineNo">503</span>          conf.getLong("hbase.master.buffer.for.rs.fatals", 1 * 1024 * 1024));<a name="line.503"></a>
-<span class="sourceLineNo">504</span>      LOG.info("hbase.rootdir=" + getRootDir() +<a name="line.504"></a>
-<span class="sourceLineNo">505</span>          ", hbase.cluster.distributed=" + this.conf.getBoolean(HConstants.CLUSTER_DISTRIBUTED, false));<a name="line.505"></a>
-<span class="sourceLineNo">506</span><a name="line.506"></a>
-<span class="sourceLineNo">507</span>      // Disable usage of meta replicas in the master<a name="line.507"></a>
-<span class="sourceLineNo">508</span>      this.conf.setBoolean(HConstants.USE_META_REPLICAS, false);<a name="line.508"></a>
-<span class="sourceLineNo">509</span><a name="line.509"></a>
-<span class="sourceLineNo">510</span>      decorateMasterConfiguration(this.conf);<a name="line.510"></a>
+<span class="sourceLineNo">417</span>  Map&lt;String, Service&gt; coprocessorServiceHandlers = Maps.newHashMap();<a name="line.417"></a>
+<span class="sourceLineNo">418</span><a name="line.418"></a>
+<span class="sourceLineNo">419</span>  // monitor for snapshot of hbase tables<a name="line.419"></a>
+<span class="sourceLineNo">420</span>  SnapshotManager snapshotManager;<a name="line.420"></a>
+<span class="sourceLineNo">421</span>  // monitor for distributed procedures<a name="line.421"></a>
+<span class="sourceLineNo">422</span>  private MasterProcedureManagerHost mpmHost;<a name="line.422"></a>
+<span class="s

<TRUNCATED>

[24/43] hbase-site git commit: Published site at 7ab77518a2569e2416a50020393aa386e7734501.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html
index e5feb84..0cf012a 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html
@@ -72,3861 +72,3875 @@
 <span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.ClusterMetrics;<a name="line.64"></a>
 <span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.ClusterMetrics.Option;<a name="line.65"></a>
 <span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.ClusterMetricsBuilder;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.HBaseIOException;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.HBaseInterfaceAudience;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.HConstants;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.InvalidFamilyOperationException;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.MasterNotRunningException;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.MetaTableAccessor;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.PleaseHoldException;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.ReplicationPeerNotFoundException;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.ServerName;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.TableDescriptors;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.TableName;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.TableNotDisabledException;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.TableNotFoundException;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.UnknownRegionException;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.client.MasterSwitchType;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.client.RegionInfoBuilder;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.client.Result;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.client.TableState;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.coprocessor.CoprocessorHost;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.exceptions.MergeRegionException;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.executor.ExecutorType;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.favored.FavoredNodesManager;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.favored.FavoredNodesPromoter;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.http.InfoServer;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcUtils;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.ipc.ServerNotRunningYetException;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.log.HBaseMarkers;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.master.MasterRpcServices.BalanceSwitchMode;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.master.assignment.AssignProcedure;<a name="line.104"></a>
-<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.master.assignment.AssignmentManager;<a name="line.105"></a>
-<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.master.assignment.MergeTableRegionsProcedure;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.master.assignment.MoveRegionProcedure;<a name="line.107"></a>
-<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.master.assignment.RegionStateNode;<a name="line.108"></a>
-<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.master.assignment.RegionStates;<a name="line.109"></a>
-<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.master.assignment.TransitRegionStateProcedure;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.master.assignment.UnassignProcedure;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.master.balancer.BalancerChore;<a name="line.112"></a>
-<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.master.balancer.BaseLoadBalancer;<a name="line.113"></a>
-<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.master.balancer.ClusterStatusChore;<a name="line.114"></a>
-<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.master.balancer.LoadBalancerFactory;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.master.cleaner.CleanerChore;<a name="line.116"></a>
-<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.master.cleaner.HFileCleaner;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.master.cleaner.LogCleaner;<a name="line.118"></a>
-<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.master.cleaner.ReplicationBarrierCleaner;<a name="line.119"></a>
-<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.master.locking.LockManager;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.master.normalizer.NormalizationPlan;<a name="line.121"></a>
-<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.master.normalizer.NormalizationPlan.PlanType;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizer;<a name="line.123"></a>
-<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizerChore;<a name="line.124"></a>
-<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizerFactory;<a name="line.125"></a>
-<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.master.procedure.CreateTableProcedure;<a name="line.126"></a>
-<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.master.procedure.DeleteNamespaceProcedure;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.master.procedure.DeleteTableProcedure;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.master.procedure.DisableTableProcedure;<a name="line.129"></a>
-<span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.master.procedure.EnableTableProcedure;<a name="line.130"></a>
-<span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.master.procedure.InitMetaProcedure;<a name="line.131"></a>
-<span class="sourceLineNo">132</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureConstants;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv;<a name="line.133"></a>
-<span class="sourceLineNo">134</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureScheduler;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureUtil;<a name="line.135"></a>
-<span class="sourceLineNo">136</span>import org.apache.hadoop.hbase.master.procedure.ModifyTableProcedure;<a name="line.136"></a>
-<span class="sourceLineNo">137</span>import org.apache.hadoop.hbase.master.procedure.ProcedurePrepareLatch;<a name="line.137"></a>
-<span class="sourceLineNo">138</span>import org.apache.hadoop.hbase.master.procedure.RecoverMetaProcedure;<a name="line.138"></a>
-<span class="sourceLineNo">139</span>import org.apache.hadoop.hbase.master.procedure.ServerCrashProcedure;<a name="line.139"></a>
-<span class="sourceLineNo">140</span>import org.apache.hadoop.hbase.master.procedure.TruncateTableProcedure;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.master.replication.AbstractPeerProcedure;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.master.replication.AddPeerProcedure;<a name="line.142"></a>
-<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.master.replication.DisablePeerProcedure;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.master.replication.EnablePeerProcedure;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.master.replication.RemovePeerProcedure;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.master.replication.ReplicationPeerManager;<a name="line.146"></a>
-<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.master.replication.SyncReplicationReplayWALManager;<a name="line.147"></a>
-<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.master.replication.TransitPeerSyncReplicationStateProcedure;<a name="line.148"></a>
-<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.master.replication.UpdatePeerConfigProcedure;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.master.snapshot.SnapshotManager;<a name="line.150"></a>
-<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.master.zksyncer.MasterAddressSyncer;<a name="line.151"></a>
-<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.master.zksyncer.MetaLocationSyncer;<a name="line.152"></a>
-<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.mob.MobConstants;<a name="line.153"></a>
-<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.monitoring.MemoryBoundedLogMessageBuffer;<a name="line.154"></a>
-<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.155"></a>
-<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.156"></a>
-<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.procedure.MasterProcedureManagerHost;<a name="line.157"></a>
-<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.procedure.flush.MasterFlushTableProcedureManager;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.procedure2.LockedResource;<a name="line.159"></a>
-<span class="sourceLineNo">160</span>import org.apache.hadoop.hbase.procedure2.Procedure;<a name="line.160"></a>
-<span class="sourceLineNo">161</span>import org.apache.hadoop.hbase.procedure2.ProcedureEvent;<a name="line.161"></a>
-<span class="sourceLineNo">162</span>import org.apache.hadoop.hbase.procedure2.ProcedureExecutor;<a name="line.162"></a>
-<span class="sourceLineNo">163</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureDispatcher.RemoteProcedure;<a name="line.163"></a>
-<span class="sourceLineNo">164</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureException;<a name="line.164"></a>
-<span class="sourceLineNo">165</span>import org.apache.hadoop.hbase.procedure2.store.wal.WALProcedureStore;<a name="line.165"></a>
-<span class="sourceLineNo">166</span>import org.apache.hadoop.hbase.quotas.MasterQuotaManager;<a name="line.166"></a>
-<span class="sourceLineNo">167</span>import org.apache.hadoop.hbase.quotas.MasterQuotasObserver;<a name="line.167"></a>
-<span class="sourceLineNo">168</span>import org.apache.hadoop.hbase.quotas.QuotaObserverChore;<a name="line.168"></a>
-<span class="sourceLineNo">169</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.169"></a>
-<span class="sourceLineNo">170</span>import org.apache.hadoop.hbase.quotas.SnapshotQuotaObserverChore;<a name="line.170"></a>
-<span class="sourceLineNo">171</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifier;<a name="line.171"></a>
-<span class="sourceLineNo">172</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifierFactory;<a name="line.172"></a>
-<span class="sourceLineNo">173</span>import org.apache.hadoop.hbase.regionserver.DefaultStoreEngine;<a name="line.173"></a>
-<span class="sourceLineNo">174</span>import org.apache.hadoop.hbase.regionserver.HRegionServer;<a name="line.174"></a>
-<span class="sourceLineNo">175</span>import org.apache.hadoop.hbase.regionserver.HStore;<a name="line.175"></a>
-<span class="sourceLineNo">176</span>import org.apache.hadoop.hbase.regionserver.RSRpcServices;<a name="line.176"></a>
-<span class="sourceLineNo">177</span>import org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost;<a name="line.177"></a>
-<span class="sourceLineNo">178</span>import org.apache.hadoop.hbase.regionserver.RegionSplitPolicy;<a name="line.178"></a>
-<span class="sourceLineNo">179</span>import org.apache.hadoop.hbase.regionserver.compactions.ExploringCompactionPolicy;<a name="line.179"></a>
-<span class="sourceLineNo">180</span>import org.apache.hadoop.hbase.regionserver.compactions.FIFOCompactionPolicy;<a name="line.180"></a>
-<span class="sourceLineNo">181</span>import org.apache.hadoop.hbase.replication.ReplicationException;<a name="line.181"></a>
-<span class="sourceLineNo">182</span>import org.apache.hadoop.hbase.replication.ReplicationLoadSource;<a name="line.182"></a>
-<span class="sourceLineNo">183</span>import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;<a name="line.183"></a>
-<span class="sourceLineNo">184</span>import org.apache.hadoop.hbase.replication.ReplicationPeerDescription;<a name="line.184"></a>
-<span class="sourceLineNo">185</span>import org.apache.hadoop.hbase.replication.ReplicationUtils;<a name="line.185"></a>
-<span class="sourceLineNo">186</span>import org.apache.hadoop.hbase.replication.SyncReplicationState;<a name="line.186"></a>
-<span class="sourceLineNo">187</span>import org.apache.hadoop.hbase.replication.master.ReplicationHFileCleaner;<a name="line.187"></a>
-<span class="sourceLineNo">188</span>import org.apache.hadoop.hbase.replication.master.ReplicationLogCleaner;<a name="line.188"></a>
-<span class="sourceLineNo">189</span>import org.apache.hadoop.hbase.replication.master.ReplicationPeerConfigUpgrader;<a name="line.189"></a>
-<span class="sourceLineNo">190</span>import org.apache.hadoop.hbase.security.AccessDeniedException;<a name="line.190"></a>
-<span class="sourceLineNo">191</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.191"></a>
-<span class="sourceLineNo">192</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.192"></a>
-<span class="sourceLineNo">193</span>import org.apache.hadoop.hbase.util.Addressing;<a name="line.193"></a>
-<span class="sourceLineNo">194</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.194"></a>
-<span class="sourceLineNo">195</span>import org.apache.hadoop.hbase.util.CompressionTest;<a name="line.195"></a>
-<span class="sourceLineNo">196</span>import org.apache.hadoop.hbase.util.EncryptionTest;<a name="line.196"></a>
-<span class="sourceLineNo">197</span>import org.apache.hadoop.hbase.util.HBaseFsck;<a name="line.197"></a>
-<span class="sourceLineNo">198</span>import org.apache.hadoop.hbase.util.HFileArchiveUtil;<a name="line.198"></a>
-<span class="sourceLineNo">199</span>import org.apache.hadoop.hbase.util.HasThread;<a name="line.199"></a>
-<span class="sourceLineNo">200</span>import org.apache.hadoop.hbase.util.IdLock;<a name="line.200"></a>
-<span class="sourceLineNo">201</span>import org.apache.hadoop.hbase.util.ModifyRegionUtils;<a name="line.201"></a>
-<span class="sourceLineNo">202</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.202"></a>
-<span class="sourceLineNo">203</span>import org.apache.hadoop.hbase.util.RetryCounter;<a name="line.203"></a>
-<span class="sourceLineNo">204</span>import org.apache.hadoop.hbase.util.RetryCounterFactory;<a name="line.204"></a>
-<span class="sourceLineNo">205</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.205"></a>
-<span class="sourceLineNo">206</span>import org.apache.hadoop.hbase.util.VersionInfo;<a name="line.206"></a>
-<span class="sourceLineNo">207</span>import org.apache.hadoop.hbase.zookeeper.LoadBalancerTracker;<a name="line.207"></a>
-<span class="sourceLineNo">208</span>import org.apache.hadoop.hbase.zookeeper.MasterAddressTracker;<a name="line.208"></a>
-<span class="sourceLineNo">209</span>import org.apache.hadoop.hbase.zookeeper.MasterMaintenanceModeTracker;<a name="line.209"></a>
-<span class="sourceLineNo">210</span>import org.apache.hadoop.hbase.zookeeper.RegionNormalizerTracker;<a name="line.210"></a>
-<span class="sourceLineNo">211</span>import org.apache.hadoop.hbase.zookeeper.ZKClusterId;<a name="line.211"></a>
-<span class="sourceLineNo">212</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.212"></a>
-<span class="sourceLineNo">213</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.213"></a>
-<span class="sourceLineNo">214</span>import org.apache.hadoop.hbase.zookeeper.ZNodePaths;<a name="line.214"></a>
-<span class="sourceLineNo">215</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.215"></a>
-<span class="sourceLineNo">216</span>import org.apache.zookeeper.KeeperException;<a name="line.216"></a>
-<span class="sourceLineNo">217</span>import org.eclipse.jetty.server.Server;<a name="line.217"></a>
-<span class="sourceLineNo">218</span>import org.eclipse.jetty.server.ServerConnector;<a name="line.218"></a>
-<span class="sourceLineNo">219</span>import org.eclipse.jetty.servlet.ServletHolder;<a name="line.219"></a>
-<span class="sourceLineNo">220</span>import org.eclipse.jetty.webapp.WebAppContext;<a name="line.220"></a>
-<span class="sourceLineNo">221</span>import org.slf4j.Logger;<a name="line.221"></a>
-<span class="sourceLineNo">222</span>import org.slf4j.LoggerFactory;<a name="line.222"></a>
-<span class="sourceLineNo">223</span><a name="line.223"></a>
-<span class="sourceLineNo">224</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.224"></a>
-<span class="sourceLineNo">225</span>import org.apache.hbase.thirdparty.com.google.common.collect.ImmutableSet;<a name="line.225"></a>
-<span class="sourceLineNo">226</span>import org.apache.hbase.thirdparty.com.google.common.collect.Lists;<a name="line.226"></a>
-<span class="sourceLineNo">227</span>import org.apache.hbase.thirdparty.com.google.common.collect.Maps;<a name="line.227"></a>
-<span class="sourceLineNo">228</span><a name="line.228"></a>
-<span class="sourceLineNo">229</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.229"></a>
-<span class="sourceLineNo">230</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoResponse.CompactionState;<a name="line.230"></a>
-<span class="sourceLineNo">231</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.Quotas;<a name="line.231"></a>
-<span class="sourceLineNo">232</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.SpaceViolationPolicy;<a name="line.232"></a>
-<span class="sourceLineNo">233</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;<a name="line.233"></a>
-<span class="sourceLineNo">234</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos;<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> * HMaster is the "master server" for HBase. An HBase cluster has one active<a name="line.237"></a>
-<span class="sourceLineNo">238</span> * master.  If many masters are started, all compete.  Whichever wins goes on to<a name="line.238"></a>
-<span class="sourceLineNo">239</span> * run the cluster.  All others park themselves in their constructor until<a name="line.239"></a>
-<span class="sourceLineNo">240</span> * master or cluster shutdown or until the active master loses its lease in<a name="line.240"></a>
-<span class="sourceLineNo">241</span> * zookeeper.  Thereafter, all running master jostle to take over master role.<a name="line.241"></a>
-<span class="sourceLineNo">242</span> *<a name="line.242"></a>
-<span class="sourceLineNo">243</span> * &lt;p&gt;The Master can be asked shutdown the cluster. See {@link #shutdown()}.  In<a name="line.243"></a>
-<span class="sourceLineNo">244</span> * this case it will tell all regionservers to go down and then wait on them<a name="line.244"></a>
-<span class="sourceLineNo">245</span> * all reporting in that they are down.  This master will then shut itself down.<a name="line.245"></a>
-<span class="sourceLineNo">246</span> *<a name="line.246"></a>
-<span class="sourceLineNo">247</span> * &lt;p&gt;You can also shutdown just this master.  Call {@link #stopMaster()}.<a name="line.247"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.CompoundConfiguration;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.HBaseIOException;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.HBaseInterfaceAudience;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.HConstants;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.InvalidFamilyOperationException;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.MasterNotRunningException;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.MetaTableAccessor;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.PleaseHoldException;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.ReplicationPeerNotFoundException;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.ServerName;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.TableDescriptors;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.TableName;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.TableNotDisabledException;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.TableNotFoundException;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.UnknownRegionException;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.client.MasterSwitchType;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.client.RegionInfoBuilder;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.client.Result;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.client.TableState;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.coprocessor.CoprocessorHost;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.exceptions.MergeRegionException;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.executor.ExecutorType;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.favored.FavoredNodesManager;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.favored.FavoredNodesPromoter;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.http.InfoServer;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcUtils;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.101"></a>
+<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.ipc.ServerNotRunningYetException;<a name="line.102"></a>
+<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.log.HBaseMarkers;<a name="line.103"></a>
+<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.master.MasterRpcServices.BalanceSwitchMode;<a name="line.104"></a>
+<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.master.assignment.AssignProcedure;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.master.assignment.AssignmentManager;<a name="line.106"></a>
+<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.master.assignment.MergeTableRegionsProcedure;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.master.assignment.MoveRegionProcedure;<a name="line.108"></a>
+<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.master.assignment.RegionStateNode;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.master.assignment.RegionStates;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.master.assignment.TransitRegionStateProcedure;<a name="line.111"></a>
+<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.master.assignment.UnassignProcedure;<a name="line.112"></a>
+<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.master.balancer.BalancerChore;<a name="line.113"></a>
+<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.master.balancer.BaseLoadBalancer;<a name="line.114"></a>
+<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.master.balancer.ClusterStatusChore;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.master.balancer.LoadBalancerFactory;<a name="line.116"></a>
+<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.master.cleaner.CleanerChore;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.master.cleaner.HFileCleaner;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.master.cleaner.LogCleaner;<a name="line.119"></a>
+<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.master.cleaner.ReplicationBarrierCleaner;<a name="line.120"></a>
+<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.master.locking.LockManager;<a name="line.121"></a>
+<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.master.normalizer.NormalizationPlan;<a name="line.122"></a>
+<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.master.normalizer.NormalizationPlan.PlanType;<a name="line.123"></a>
+<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizer;<a name="line.124"></a>
+<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizerChore;<a name="line.125"></a>
+<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizerFactory;<a name="line.126"></a>
+<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.master.procedure.CreateTableProcedure;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.master.procedure.DeleteNamespaceProcedure;<a name="line.128"></a>
+<span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.master.procedure.DeleteTableProcedure;<a name="line.129"></a>
+<span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.master.procedure.DisableTableProcedure;<a name="line.130"></a>
+<span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.master.procedure.EnableTableProcedure;<a name="line.131"></a>
+<span class="sourceLineNo">132</span>import org.apache.hadoop.hbase.master.procedure.InitMetaProcedure;<a name="line.132"></a>
+<span class="sourceLineNo">133</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureConstants;<a name="line.133"></a>
+<span class="sourceLineNo">134</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureScheduler;<a name="line.135"></a>
+<span class="sourceLineNo">136</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureUtil;<a name="line.136"></a>
+<span class="sourceLineNo">137</span>import org.apache.hadoop.hbase.master.procedure.ModifyTableProcedure;<a name="line.137"></a>
+<span class="sourceLineNo">138</span>import org.apache.hadoop.hbase.master.procedure.ProcedurePrepareLatch;<a name="line.138"></a>
+<span class="sourceLineNo">139</span>import org.apache.hadoop.hbase.master.procedure.RecoverMetaProcedure;<a name="line.139"></a>
+<span class="sourceLineNo">140</span>import org.apache.hadoop.hbase.master.procedure.ServerCrashProcedure;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.master.procedure.TruncateTableProcedure;<a name="line.141"></a>
+<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.master.replication.AbstractPeerProcedure;<a name="line.142"></a>
+<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.master.replication.AddPeerProcedure;<a name="line.143"></a>
+<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.master.replication.DisablePeerProcedure;<a name="line.144"></a>
+<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.master.replication.EnablePeerProcedure;<a name="line.145"></a>
+<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.master.replication.RemovePeerProcedure;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.master.replication.ReplicationPeerManager;<a name="line.147"></a>
+<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.master.replication.SyncReplicationReplayWALManager;<a name="line.148"></a>
+<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.master.replication.TransitPeerSyncReplicationStateProcedure;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.master.replication.UpdatePeerConfigProcedure;<a name="line.150"></a>
+<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.master.snapshot.SnapshotManager;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.master.zksyncer.MasterAddressSyncer;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.master.zksyncer.MetaLocationSyncer;<a name="line.153"></a>
+<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.mob.MobConstants;<a name="line.154"></a>
+<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.monitoring.MemoryBoundedLogMessageBuffer;<a name="line.155"></a>
+<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.156"></a>
+<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.157"></a>
+<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.procedure.MasterProcedureManagerHost;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.procedure.flush.MasterFlushTableProcedureManager;<a name="line.159"></a>
+<span class="sourceLineNo">160</span>import org.apache.hadoop.hbase.procedure2.LockedResource;<a name="line.160"></a>
+<span class="sourceLineNo">161</span>import org.apache.hadoop.hbase.procedure2.Procedure;<a name="line.161"></a>
+<span class="sourceLineNo">162</span>import org.apache.hadoop.hbase.procedure2.ProcedureEvent;<a name="line.162"></a>
+<span class="sourceLineNo">163</span>import org.apache.hadoop.hbase.procedure2.ProcedureExecutor;<a name="line.163"></a>
+<span class="sourceLineNo">164</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureDispatcher.RemoteProcedure;<a name="line.164"></a>
+<span class="sourceLineNo">165</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureException;<a name="line.165"></a>
+<span class="sourceLineNo">166</span>import org.apache.hadoop.hbase.procedure2.store.wal.WALProcedureStore;<a name="line.166"></a>
+<span class="sourceLineNo">167</span>import org.apache.hadoop.hbase.quotas.MasterQuotaManager;<a name="line.167"></a>
+<span class="sourceLineNo">168</span>import org.apache.hadoop.hbase.quotas.MasterQuotasObserver;<a name="line.168"></a>
+<span class="sourceLineNo">169</span>import org.apache.hadoop.hbase.quotas.QuotaObserverChore;<a name="line.169"></a>
+<span class="sourceLineNo">170</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.170"></a>
+<span class="sourceLineNo">171</span>import org.apache.hadoop.hbase.quotas.SnapshotQuotaObserverChore;<a name="line.171"></a>
+<span class="sourceLineNo">172</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifier;<a name="line.172"></a>
+<span class="sourceLineNo">173</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifierFactory;<a name="line.173"></a>
+<span class="sourceLineNo">174</span>import org.apache.hadoop.hbase.regionserver.DefaultStoreEngine;<a name="line.174"></a>
+<span class="sourceLineNo">175</span>import org.apache.hadoop.hbase.regionserver.HRegionServer;<a name="line.175"></a>
+<span class="sourceLineNo">176</span>import org.apache.hadoop.hbase.regionserver.HStore;<a name="line.176"></a>
+<span class="sourceLineNo">177</span>import org.apache.hadoop.hbase.regionserver.RSRpcServices;<a name="line.177"></a>
+<span class="sourceLineNo">178</span>import org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost;<a name="line.178"></a>
+<span class="sourceLineNo">179</span>import org.apache.hadoop.hbase.regionserver.RegionSplitPolicy;<a name="line.179"></a>
+<span class="sourceLineNo">180</span>import org.apache.hadoop.hbase.regionserver.compactions.ExploringCompactionPolicy;<a name="line.180"></a>
+<span class="sourceLineNo">181</span>import org.apache.hadoop.hbase.regionserver.compactions.FIFOCompactionPolicy;<a name="line.181"></a>
+<span class="sourceLineNo">182</span>import org.apache.hadoop.hbase.replication.ReplicationException;<a name="line.182"></a>
+<span class="sourceLineNo">183</span>import org.apache.hadoop.hbase.replication.ReplicationLoadSource;<a name="line.183"></a>
+<span class="sourceLineNo">184</span>import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;<a name="line.184"></a>
+<span class="sourceLineNo">185</span>import org.apache.hadoop.hbase.replication.ReplicationPeerDescription;<a name="line.185"></a>
+<span class="sourceLineNo">186</span>import org.apache.hadoop.hbase.replication.ReplicationUtils;<a name="line.186"></a>
+<span class="sourceLineNo">187</span>import org.apache.hadoop.hbase.replication.SyncReplicationState;<a name="line.187"></a>
+<span class="sourceLineNo">188</span>import org.apache.hadoop.hbase.replication.master.ReplicationHFileCleaner;<a name="line.188"></a>
+<span class="sourceLineNo">189</span>import org.apache.hadoop.hbase.replication.master.ReplicationLogCleaner;<a name="line.189"></a>
+<span class="sourceLineNo">190</span>import org.apache.hadoop.hbase.replication.master.ReplicationPeerConfigUpgrader;<a name="line.190"></a>
+<span class="sourceLineNo">191</span>import org.apache.hadoop.hbase.security.AccessDeniedException;<a name="line.191"></a>
+<span class="sourceLineNo">192</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.192"></a>
+<span class="sourceLineNo">193</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.193"></a>
+<span class="sourceLineNo">194</span>import org.apache.hadoop.hbase.util.Addressing;<a name="line.194"></a>
+<span class="sourceLineNo">195</span>import org.apache.hadoop.hbase.util.BloomFilterUtil;<a name="line.195"></a>
+<span class="sourceLineNo">196</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.196"></a>
+<span class="sourceLineNo">197</span>import org.apache.hadoop.hbase.util.CompressionTest;<a name="line.197"></a>
+<span class="sourceLineNo">198</span>import org.apache.hadoop.hbase.util.EncryptionTest;<a name="line.198"></a>
+<span class="sourceLineNo">199</span>import org.apache.hadoop.hbase.util.HBaseFsck;<a name="line.199"></a>
+<span class="sourceLineNo">200</span>import org.apache.hadoop.hbase.util.HFileArchiveUtil;<a name="line.200"></a>
+<span class="sourceLineNo">201</span>import org.apache.hadoop.hbase.util.HasThread;<a name="line.201"></a>
+<span class="sourceLineNo">202</span>import org.apache.hadoop.hbase.util.IdLock;<a name="line.202"></a>
+<span class="sourceLineNo">203</span>import org.apache.hadoop.hbase.util.ModifyRegionUtils;<a name="line.203"></a>
+<span class="sourceLineNo">204</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.204"></a>
+<span class="sourceLineNo">205</span>import org.apache.hadoop.hbase.util.RetryCounter;<a name="line.205"></a>
+<span class="sourceLineNo">206</span>import org.apache.hadoop.hbase.util.RetryCounterFactory;<a name="line.206"></a>
+<span class="sourceLineNo">207</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.207"></a>
+<span class="sourceLineNo">208</span>import org.apache.hadoop.hbase.util.VersionInfo;<a name="line.208"></a>
+<span class="sourceLineNo">209</span>import org.apache.hadoop.hbase.zookeeper.LoadBalancerTracker;<a name="line.209"></a>
+<span class="sourceLineNo">210</span>import org.apache.hadoop.hbase.zookeeper.MasterAddressTracker;<a name="line.210"></a>
+<span class="sourceLineNo">211</span>import org.apache.hadoop.hbase.zookeeper.MasterMaintenanceModeTracker;<a name="line.211"></a>
+<span class="sourceLineNo">212</span>import org.apache.hadoop.hbase.zookeeper.RegionNormalizerTracker;<a name="line.212"></a>
+<span class="sourceLineNo">213</span>import org.apache.hadoop.hbase.zookeeper.ZKClusterId;<a name="line.213"></a>
+<span class="sourceLineNo">214</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.214"></a>
+<span class="sourceLineNo">215</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.215"></a>
+<span class="sourceLineNo">216</span>import org.apache.hadoop.hbase.zookeeper.ZNodePaths;<a name="line.216"></a>
+<span class="sourceLineNo">217</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.217"></a>
+<span class="sourceLineNo">218</span>import org.apache.zookeeper.KeeperException;<a name="line.218"></a>
+<span class="sourceLineNo">219</span>import org.eclipse.jetty.server.Server;<a name="line.219"></a>
+<span class="sourceLineNo">220</span>import org.eclipse.jetty.server.ServerConnector;<a name="line.220"></a>
+<span class="sourceLineNo">221</span>import org.eclipse.jetty.servlet.ServletHolder;<a name="line.221"></a>
+<span class="sourceLineNo">222</span>import org.eclipse.jetty.webapp.WebAppContext;<a name="line.222"></a>
+<span class="sourceLineNo">223</span>import org.slf4j.Logger;<a name="line.223"></a>
+<span class="sourceLineNo">224</span>import org.slf4j.LoggerFactory;<a name="line.224"></a>
+<span class="sourceLineNo">225</span><a name="line.225"></a>
+<span class="sourceLineNo">226</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.226"></a>
+<span class="sourceLineNo">227</span>import org.apache.hbase.thirdparty.com.google.common.collect.ImmutableSet;<a name="line.227"></a>
+<span class="sourceLineNo">228</span>import org.apache.hbase.thirdparty.com.google.common.collect.Lists;<a name="line.228"></a>
+<span class="sourceLineNo">229</span>import org.apache.hbase.thirdparty.com.google.common.collect.Maps;<a name="line.229"></a>
+<span class="sourceLineNo">230</span><a name="line.230"></a>
+<span class="sourceLineNo">231</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.231"></a>
+<span class="sourceLineNo">232</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoResponse.CompactionState;<a name="line.232"></a>
+<span class="sourceLineNo">233</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.Quotas;<a name="line.233"></a>
+<span class="sourceLineNo">234</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.SpaceViolationPolicy;<a name="line.234"></a>
+<span class="sourceLineNo">235</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;<a name="line.235"></a>
+<span class="sourceLineNo">236</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos;<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> * HMaster is the "master server" for HBase. An HBase cluster has one active<a name="line.239"></a>
+<span class="sourceLineNo">240</span> * master.  If many masters are started, all compete.  Whichever wins goes on to<a name="line.240"></a>
+<span class="sourceLineNo">241</span> * run the cluster.  All others park themselves in their constructor until<a name="line.241"></a>
+<span class="sourceLineNo">242</span> * master or cluster shutdown or until the active master loses its lease in<a name="line.242"></a>
+<span class="sourceLineNo">243</span> * zookeeper.  Thereafter, all running master jostle to take over master role.<a name="line.243"></a>
+<span class="sourceLineNo">244</span> *<a name="line.244"></a>
+<span class="sourceLineNo">245</span> * &lt;p&gt;The Master can be asked shutdown the cluster. See {@link #shutdown()}.  In<a name="line.245"></a>
+<span class="sourceLineNo">246</span> * this case it will tell all regionservers to go down and then wait on them<a name="line.246"></a>
+<span class="sourceLineNo">247</span> * all reporting in that they are down.  This master will then shut itself down.<a name="line.247"></a>
 <span class="sourceLineNo">248</span> *<a name="line.248"></a>
-<span class="sourceLineNo">249</span> * @see org.apache.zookeeper.Watcher<a name="line.249"></a>
-<span class="sourceLineNo">250</span> */<a name="line.250"></a>
-<span class="sourceLineNo">251</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS)<a name="line.251"></a>
-<span class="sourceLineNo">252</span>@SuppressWarnings("deprecation")<a name="line.252"></a>
-<span class="sourceLineNo">253</span>public class HMaster extends HRegionServer implements MasterServices {<a name="line.253"></a>
-<span class="sourceLineNo">254</span>  private static Logger LOG = LoggerFactory.getLogger(HMaster.class);<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>   * Protection against zombie master. Started once Master accepts active responsibility and<a name="line.257"></a>
-<span class="sourceLineNo">258</span>   * starts taking over responsibilities. Allows a finite time window before giving up ownership.<a name="line.258"></a>
-<span class="sourceLineNo">259</span>   */<a name="line.259"></a>
-<span class="sourceLineNo">260</span>  private static class InitializationMonitor extends HasThread {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    /** The amount of time in milliseconds to sleep before checking initialization status. */<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    public static final String TIMEOUT_KEY = "hbase.master.initializationmonitor.timeout";<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    public static final long TIMEOUT_DEFAULT = TimeUnit.MILLISECONDS.convert(15, TimeUnit.MINUTES);<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">266</span>     * When timeout expired and initialization has not complete, call {@link System#exit(int)} when<a name="line.266"></a>
-<span class="sourceLineNo">267</span>     * true, do nothing otherwise.<a name="line.267"></a>
-<span class="sourceLineNo">268</span>     */<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    public static final String HALT_KEY = "hbase.master.initializationmonitor.haltontimeout";<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    public static final boolean HALT_DEFAULT = false;<a name="line.270"></a>
-<span class="sourceLineNo">271</span><a name="line.271"></a>
-<span class="sourceLineNo">272</span>    private final HMaster master;<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    private final long timeout;<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    private final boolean haltOnTimeout;<a name="line.274"></a>
-<span class="sourceLineNo">275</span><a name="line.275"></a>
-<span class="sourceLineNo">276</span>    /** Creates a Thread that monitors the {@link #isInitialized()} state. */<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    InitializationMonitor(HMaster master) {<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      super("MasterInitializationMonitor");<a name="line.278"></a>
-<span class="sourceLineNo">279</span>      this.master = master;<a name="line.279"></a>
-<span class="sourceLineNo">280</span>      this.timeout = master.getConfiguration().getLong(TIMEOUT_KEY, TIMEOUT_DEFAULT);<a name="line.280"></a>
-<span class="sourceLineNo">281</span>      this.haltOnTimeout = master.getConfiguration().getBoolean(HALT_KEY, HALT_DEFAULT);<a name="line.281"></a>
-<span class="sourceLineNo">282</span>      this.setDaemon(true);<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>    @Override<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    public void run() {<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      try {<a name="line.287"></a>
-<span class="sourceLineNo">288</span>        while (!master.isStopped() &amp;&amp; master.isActiveMaster()) {<a name="line.288"></a>
-<span class="sourceLineNo">289</span>          Thread.sleep(timeout);<a name="line.289"></a>
-<span class="sourceLineNo">290</span>          if (master.isInitialized()) {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>            LOG.debug("Initialization completed within allotted tolerance. Monitor exiting.");<a name="line.291"></a>
-<span class="sourceLineNo">292</span>          } else {<a name="line.292"></a>
-<span class="sourceLineNo">293</span>            LOG.error("Master failed to complete initialization after " + timeout + "ms. Please"<a name="line.293"></a>
-<span class="sourceLineNo">294</span>                + " consider submitting a bug report including a thread dump of this process.");<a name="line.294"></a>
-<span class="sourceLineNo">295</span>            if (haltOnTimeout) {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>              LOG.error("Zombie Master exiting. Thread dump to stdout");<a name="line.296"></a>
-<span class="sourceLineNo">297</span>              Threads.printThreadInfo(System.out, "Zombie HMaster");<a name="line.297"></a>
-<span class="sourceLineNo">298</span>              System.exit(-1);<a name="line.298"></a>
-<span class="sourceLineNo">299</span>            }<a name="line.299"></a>
-<span class="sourceLineNo">300</span>          }<a name="line.300"></a>
-<span class="sourceLineNo">301</span>        }<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      } catch (InterruptedException ie) {<a name="line.302"></a>
-<span class="sourceLineNo">303</span>        LOG.trace("InitMonitor thread interrupted. Existing.");<a name="line.303"></a>
-<span class="sourceLineNo">304</span>      }<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><a name="line.307"></a>
-<span class="sourceLineNo">308</span>  // MASTER is name of the webapp and the attribute name used stuffing this<a name="line.308"></a>
-<span class="sourceLineNo">309</span>  //instance into web context.<a name="line.309"></a>
-<span class="sourceLineNo">310</span>  public static final String MASTER = "master";<a name="line.310"></a>
-<span class="sourceLineNo">311</span><a name="line.311"></a>
-<span class="sourceLineNo">312</span>  // Manager and zk listener for master election<a name="line.312"></a>
-<span class="sourceLineNo">313</span>  private final ActiveMasterManager activeMasterManager;<a name="line.313"></a>
-<span class="sourceLineNo">314</span>  // Region server tracker<a name="line.314"></a>
-<span class="sourceLineNo">315</span>  private RegionServerTracker regionServerTracker;<a name="line.315"></a>
-<span class="sourceLineNo">316</span>  // Draining region server tracker<a name="line.316"></a>
-<span class="sourceLineNo">317</span>  private DrainingServerTracker drainingServerTracker;<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  // Tracker for load balancer state<a name="line.318"></a>
-<span class="sourceLineNo">319</span>  LoadBalancerTracker loadBalancerTracker;<a name="line.319"></a>
-<span class="sourceLineNo">320</span>  // Tracker for meta location, if any client ZK quorum specified<a name="line.320"></a>
-<span class="sourceLineNo">321</span>  MetaLocationSyncer metaLocationSyncer;<a name="line.321"></a>
-<span class="sourceLineNo">322</span>  // Tracker for active master location, if any client ZK quorum specified<a name="line.322"></a>
-<span class="sourceLineNo">323</span>  MasterAddressSyncer masterAddressSyncer;<a name="line.323"></a>
-<span class="sourceLineNo">324</span><a name="line.324"></a>
-<span class="sourceLineNo">325</span>  // Tracker for split and merge state<a name="line.325"></a>
-<span class="sourceLineNo">326</span>  private SplitOrMergeTracker splitOrMergeTracker;<a name="line.326"></a>
-<span class="sourceLineNo">327</span><a name="line.327"></a>
-<span class="sourceLineNo">328</span>  // Tracker for region normalizer state<a name="line.328"></a>
-<span class="sourceLineNo">329</span>  private RegionNormalizerTracker regionNormalizerTracker;<a name="line.329"></a>
-<span class="sourceLineNo">330</span><a name="line.330"></a>
-<span class="sourceLineNo">331</span>  //Tracker for master maintenance mode setting<a name="line.331"></a>
-<span class="sourceLineNo">332</span>  private MasterMaintenanceModeTracker maintenanceModeTracker;<a name="line.332"></a>
-<span class="sourceLineNo">333</span><a name="line.333"></a>
-<span class="sourceLineNo">334</span>  private ClusterSchemaService clusterSchemaService;<a name="line.334"></a>
+<span class="sourceLineNo">249</span> * &lt;p&gt;You can also shutdown just this master.  Call {@link #stopMaster()}.<a name="line.249"></a>
+<span class="sourceLineNo">250</span> *<a name="line.250"></a>
+<span class="sourceLineNo">251</span> * @see org.apache.zookeeper.Watcher<a name="line.251"></a>
+<span class="sourceLineNo">252</span> */<a name="line.252"></a>
+<span class="sourceLineNo">253</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS)<a name="line.253"></a>
+<span class="sourceLineNo">254</span>@SuppressWarnings("deprecation")<a name="line.254"></a>
+<span class="sourceLineNo">255</span>public class HMaster extends HRegionServer implements MasterServices {<a name="line.255"></a>
+<span class="sourceLineNo">256</span>  private static Logger LOG = LoggerFactory.getLogger(HMaster.class);<a name="line.256"></a>
+<span class="sourceLineNo">257</span><a name="line.257"></a>
+<span class="sourceLineNo">258</span>  /**<a name="line.258"></a>
+<span class="sourceLineNo">259</span>   * Protection against zombie master. Started once Master accepts active responsibility and<a name="line.259"></a>
+<span class="sourceLineNo">260</span>   * starts taking over responsibilities. Allows a finite time window before giving up ownership.<a name="line.260"></a>
+<span class="sourceLineNo">261</span>   */<a name="line.261"></a>
+<span class="sourceLineNo">262</span>  private static class InitializationMonitor extends HasThread {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    /** The amount of time in milliseconds to sleep before checking initialization status. */<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    public static final String TIMEOUT_KEY = "hbase.master.initializationmonitor.timeout";<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    public static final long TIMEOUT_DEFAULT = TimeUnit.MILLISECONDS.convert(15, TimeUnit.MINUTES);<a name="line.265"></a>
+<span class="sourceLineNo">266</span><a name="line.266"></a>
+<span class="sourceLineNo">267</span>    /**<a name="line.267"></a>
+<span class="sourceLineNo">268</span>     * When timeout expired and initialization has not complete, call {@link System#exit(int)} when<a name="line.268"></a>
+<span class="sourceLineNo">269</span>     * true, do nothing otherwise.<a name="line.269"></a>
+<span class="sourceLineNo">270</span>     */<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    public static final String HALT_KEY = "hbase.master.initializationmonitor.haltontimeout";<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    public static final boolean HALT_DEFAULT = false;<a name="line.272"></a>
+<span class="sourceLineNo">273</span><a name="line.273"></a>
+<span class="sourceLineNo">274</span>    private final HMaster master;<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    private final long timeout;<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    private final boolean haltOnTimeout;<a name="line.276"></a>
+<span class="sourceLineNo">277</span><a name="line.277"></a>
+<span class="sourceLineNo">278</span>    /** Creates a Thread that monitors the {@link #isInitialized()} state. */<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    InitializationMonitor(HMaster master) {<a name="line.279"></a>
+<span class="sourceLineNo">280</span>      super("MasterInitializationMonitor");<a name="line.280"></a>
+<span class="sourceLineNo">281</span>      this.master = master;<a name="line.281"></a>
+<span class="sourceLineNo">282</span>      this.timeout = master.getConfiguration().getLong(TIMEOUT_KEY, TIMEOUT_DEFAULT);<a name="line.282"></a>
+<span class="sourceLineNo">283</span>      this.haltOnTimeout = master.getConfiguration().getBoolean(HALT_KEY, HALT_DEFAULT);<a name="line.283"></a>
+<span class="sourceLineNo">284</span>      this.setDaemon(true);<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    }<a name="line.285"></a>
+<span class="sourceLineNo">286</span><a name="line.286"></a>
+<span class="sourceLineNo">287</span>    @Override<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    public void run() {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>      try {<a name="line.289"></a>
+<span class="sourceLineNo">290</span>        while (!master.isStopped() &amp;&amp; master.isActiveMaster()) {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>          Thread.sleep(timeout);<a name="line.291"></a>
+<span class="sourceLineNo">292</span>          if (master.isInitialized()) {<a name="line.292"></a>
+<span class="sourceLineNo">293</span>            LOG.debug("Initialization completed within allotted tolerance. Monitor exiting.");<a name="line.293"></a>
+<span class="sourceLineNo">294</span>          } else {<a name="line.294"></a>
+<span class="sourceLineNo">295</span>            LOG.error("Master failed to complete initialization after " + timeout + "ms. Please"<a name="line.295"></a>
+<span class="sourceLineNo">296</span>                + " consider submitting a bug report including a thread dump of this process.");<a name="line.296"></a>
+<span class="sourceLineNo">297</span>            if (haltOnTimeout) {<a name="line.297"></a>
+<span class="sourceLineNo">298</span>              LOG.error("Zombie Master exiting. Thread dump to stdout");<a name="line.298"></a>
+<span class="sourceLineNo">299</span>              Threads.printThreadInfo(System.out, "Zombie HMaster");<a name="line.299"></a>
+<span class="sourceLineNo">300</span>              System.exit(-1);<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>      } catch (InterruptedException ie) {<a name="line.304"></a>
+<span class="sourceLineNo">305</span>        LOG.trace("InitMonitor thread interrupted. Existing.");<a name="line.305"></a>
+<span class="sourceLineNo">306</span>      }<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    }<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>  // MASTER is name of the webapp and the attribute name used stuffing this<a name="line.310"></a>
+<span class="sourceLineNo">311</span>  //instance into web context.<a name="line.311"></a>
+<span class="sourceLineNo">312</span>  public static final String MASTER = "master";<a name="line.312"></a>
+<span class="sourceLineNo">313</span><a name="line.313"></a>
+<span class="sourceLineNo">314</span>  // Manager and zk listener for master election<a name="line.314"></a>
+<span class="sourceLineNo">315</span>  private final ActiveMasterManager activeMasterManager;<a name="line.315"></a>
+<span class="sourceLineNo">316</span>  // Region server tracker<a name="line.316"></a>
+<span class="sourceLineNo">317</span>  private RegionServerTracker regionServerTracker;<a name="line.317"></a>
+<span class="sourceLineNo">318</span>  // Draining region server tracker<a name="line.318"></a>
+<span class="sourceLineNo">319</span>  private DrainingServerTracker drainingServerTracker;<a name="line.319"></a>
+<span class="sourceLineNo">320</span>  // Tracker for load balancer state<a name="line.320"></a>
+<span class="sourceLineNo">321</span>  LoadBalancerTracker loadBalancerTracker;<a name="line.321"></a>
+<span class="sourceLineNo">322</span>  // Tracker for meta location, if any client ZK quorum specified<a name="line.322"></a>
+<span class="sourceLineNo">323</span>  MetaLocationSyncer metaLocationSyncer;<a name="line.323"></a>
+<span class="sourceLineNo">324</span>  // Tracker for active master location, if any client ZK quorum specified<a name="line.324"></a>
+<span class="sourceLineNo">325</span>  MasterAddressSyncer masterAddressSyncer;<a name="line.325"></a>
+<span class="sourceLineNo">326</span><a name="line.326"></a>
+<span class="sourceLineNo">327</span>  // Tracker for split and merge state<a name="line.327"></a>
+<span class="sourceLineNo">328</span>  private SplitOrMergeTracker splitOrMergeTracker;<a name="line.328"></a>
+<span class="sourceLineNo">329</span><a name="line.329"></a>
+<span class="sourceLineNo">330</span>  // Tracker for region normalizer state<a name="line.330"></a>
+<span class="sourceLineNo">331</span>  private RegionNormalizerTracker regionNormalizerTracker;<a name="line.331"></a>
+<span class="sourceLineNo">332</span><a name="line.332"></a>
+<span class="sourceLineNo">333</span>  //Tracker for master maintenance mode setting<a name="line.333"></a>
+<span class="sourceLineNo">334</span>  private MasterMaintenanceModeTracker maintenanceModeTracker;<a name="line.334"></a>
 <span class="sourceLineNo">335</span><a name="line.335"></a>
-<span class="sourceLineNo">336</span>  public static final String HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS =<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    "hbase.master.wait.on.service.seconds";<a name="line.337"></a>
-<span class="sourceLineNo">338</span>  public static final int DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS = 5 * 60;<a name="line.338"></a>
-<span class="sourceLineNo">339</span><a name="line.339"></a>
-<span class="sourceLineNo">340</span>  // Metrics for the HMaster<a name="line.340"></a>
-<span class="sourceLineNo">341</span>  final MetricsMaster metricsMaster;<a name="line.341"></a>
-<span class="sourceLineNo">342</span>  // file system manager for the master FS operations<a name="line.342"></a>
-<span class="sourceLineNo">343</span>  private MasterFileSystem fileSystemManager;<a name="line.343"></a>
-<span class="sourceLineNo">344</span>  private MasterWalManager walManager;<a name="line.344"></a>
-<span class="sourceLineNo">345</span><a name="line.345"></a>
-<span class="sourceLineNo">346</span>  // server manager to deal with region server info<a name="line.346"></a>
-<span class="sourceLineNo">347</span>  private volatile ServerManager serverManager;<a name="line.347"></a>
-<span class="sourceLineNo">348</span><a name="line.348"></a>
-<span class="sourceLineNo">349</span>  // manager of assignment nodes in zookeeper<a name="line.349"></a>
-<span class="sourceLineNo">350</span>  private AssignmentManager assignmentManager;<a name="line.350"></a>
-<span class="sourceLineNo">351</span><a name="line.351"></a>
-<span class="sourceLineNo">352</span>  // manager of replication<a name="line.352"></a>
-<span class="sourceLineNo">353</span>  private ReplicationPeerManager replicationPeerManager;<a name="line.353"></a>
-<span class="sourceLineNo">354</span><a name="line.354"></a>
-<span class="sourceLineNo">355</span>  private SyncReplicationReplayWALManager syncReplicationReplayWALManager;<a name="line.355"></a>
+<span class="sourceLineNo">336</span>  private ClusterSchemaService clusterSchemaService;<a name="line.336"></a>
+<span class="sourceLineNo">337</span><a name="line.337"></a>
+<span class="sourceLineNo">338</span>  public static final String HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS =<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    "hbase.master.wait.on.service.seconds";<a name="line.339"></a>
+<span class="sourceLineNo">340</span>  public static final int DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS = 5 * 60;<a name="line.340"></a>
+<span class="sourceLineNo">341</span><a name="line.341"></a>
+<span class="sourceLineNo">342</span>  // Metrics for the HMaster<a name="line.342"></a>
+<span class="sourceLineNo">343</span>  final MetricsMaster metricsMaster;<a name="line.343"></a>
+<span class="sourceLineNo">344</span>  // file system manager for the master FS operations<a name="line.344"></a>
+<span class="sourceLineNo">345</span>  private MasterFileSystem fileSystemManager;<a name="line.345"></a>
+<span class="sourceLineNo">346</span>  private MasterWalManager walManager;<a name="line.346"></a>
+<span class="sourceLineNo">347</span><a name="line.347"></a>
+<span class="sourceLineNo">348</span>  // server manager to deal with region server info<a name="line.348"></a>
+<span class="sourceLineNo">349</span>  private volatile ServerManager serverManager;<a name="line.349"></a>
+<span class="sourceLineNo">350</span><a name="line.350"></a>
+<span class="sourceLineNo">351</span>  // manager of assignment nodes in zookeeper<a name="line.351"></a>
+<span class="sourceLineNo">352</span>  private AssignmentManager assignmentManager;<a name="line.352"></a>
+<span class="sourceLineNo">353</span><a name="line.353"></a>
+<span class="sourceLineNo">354</span>  // manager of replication<a name="line.354"></a>
+<span class="sourceLineNo">355</span>  private ReplicationPeerManager replicationPeerManager;<a name="line.355"></a>
 <span class="sourceLineNo">356</span><a name="line.356"></a>
-<span class="sourceLineNo">357</span>  // buffer for "fatal error" notices from region servers<a name="line.357"></a>
-<span class="sourceLineNo">358</span>  // in the cluster. This is only used for assisting<a name="line.358"></a>
-<span class="sourceLineNo">359</span>  // operations/debugging.<a name="line.359"></a>
-<span class="sourceLineNo">360</span>  MemoryBoundedLogMessageBuffer rsFatals;<a name="line.360"></a>
-<span class="sourceLineNo">361</span><a name="line.361"></a>
-<span class="sourceLineNo">362</span>  // flag set after we become the active master (used for testing)<a name="line.362"></a>
-<span class="sourceLineNo">363</span>  private volatile boolean activeMaster = false;<a name="line.363"></a>
-<span class="sourceLineNo">364</span><a name="line.364"></a>
-<span class="sourceLineNo">365</span>  // flag set after we complete initialization once active<a name="line.365"></a>
-<span class="sourceLineNo">366</span>  private final ProcedureEvent&lt;?&gt; initialized = new ProcedureEvent&lt;&gt;("master initialized");<a name="line.366"></a>
-<span class="sourceLineNo">367</span><a name="line.367"></a>
-<span class="sourceLineNo">368</span>  // flag set after master services are started,<a name="line.368"></a>
-<span class="sourceLineNo">369</span>  // initialization may have not completed yet.<a name="line.369"></a>
-<span class="sourceLineNo">370</span>  volatile boolean serviceStarted = false;<a name="line.370"></a>
-<span class="sourceLineNo">371</span><a name="line.371"></a>
-<span class="sourceLineNo">372</span>  // Maximum time we should run balancer for<a name="line.372"></a>
-<span class="sourceLineNo">373</span>  private final int maxBlancingTime;<a name="line.373"></a>
-<span class="sourceLineNo">374</span>  // Maximum percent of regions in transition when balancing<a name="line.374"></a>
-<span class="sourceLineNo">375</span>  private final double maxRitPercent;<a name="line.375"></a>
-<span class="sourceLineNo">376</span><a name="line.376"></a>
-<span class="sourceLineNo">377</span>  private final LockManager lockManager = new LockManager(this);<a name="line.377"></a>
+<span class="sourceLineNo">357</span>  private SyncReplicationReplayWALManager syncReplicationReplayWALManager;<a name="line.357"></a>
+<span class="sourceLineNo">358</span><a name="line.358"></a>
+<span class="sourceLineNo">359</span>  // buffer for "fatal error" notices from region servers<a name="line.359"></a>
+<span class="sourceLineNo">360</span>  // in the cluster. This is only used for assisting<a name="line.360"></a>
+<span class="sourceLineNo">361</span>  // operations/debugging.<a name="line.361"></a>
+<span class="sourceLineNo">362</span>  MemoryBoundedLogMessageBuffer rsFatals;<a name="line.362"></a>
+<span class="sourceLineNo">363</span><a name="line.363"></a>
+<span class="sourceLineNo">364</span>  // flag set after we become the active master (used for testing)<a name="line.364"></a>
+<span class="sourceLineNo">365</span>  private volatile boolean activeMaster = false;<a name="line.365"></a>
+<span class="sourceLineNo">366</span><a name="line.366"></a>
+<span class="sourceLineNo">367</span>  // flag set after we complete initialization once active<a name="line.367"></a>
+<span class="sourceLineNo">368</span>  private final ProcedureEvent&lt;?&gt; initialized = new ProcedureEvent&lt;&gt;("master initialized");<a name="line.368"></a>
+<span class="sourceLineNo">369</span><a name="line.369"></a>
+<span class="sourceLineNo">370</span>  // flag set after master services are started,<a name="line.370"></a>
+<span class="sourceLineNo">371</span>  // initialization may have not completed yet.<a name="line.371"></a>
+<span class="sourceLineNo">372</span>  volatile boolean serviceStarted = false;<a name="line.372"></a>
+<span class="sourceLineNo">373</span><a name="line.373"></a>
+<span class="sourceLineNo">374</span>  // Maximum time we should run balancer for<a name="line.374"></a>
+<span class="sourceLineNo">375</span>  private final int maxBlancingTime;<a name="line.375"></a>
+<span class="sourceLineNo">376</span>  // Maximum percent of regions in transition when balancing<a name="line.376"></a>
+<span class="sourceLineNo">377</span>  private final double maxRitPercent;<a name="line.377"></a>
 <span class="sourceLineNo">378</span><a name="line.378"></a>
-<span class="sourceLineNo">379</span>  private LoadBalancer balancer;<a name="line.379"></a>
-<span class="sourceLineNo">380</span>  private RegionNormalizer normalizer;<a name="line.380"></a>
-<span class="sourceLineNo">381</span>  private BalancerChore balancerChore;<a name="line.381"></a>
-<span class="sourceLineNo">382</span>  private RegionNormalizerChore normalizerChore;<a name="line.382"></a>
-<span class="sourceLineNo">383</span>  private ClusterStatusChore clusterStatusChore;<a name="line.383"></a>
-<span class="sourceLineNo">384</span>  private ClusterStatusPublisher clusterStatusPublisherChore = null;<a name="line.384"></a>
-<span class="sourceLineNo">385</span><a name="line.385"></a>
-<span class="sourceLineNo">386</span>  CatalogJanitor catalogJanitorChore;<a name="line.386"></a>
-<span class="sourceLineNo">387</span>  private LogCleaner logCleaner;<a name="line.387"></a>
-<span class="sourceLineNo">388</span>  private HFileCleaner hfileCleaner;<a name="line.388"></a>
-<span class="sourceLineNo">389</span>  private ReplicationBarrierCleaner replicationBarrierCleaner;<a name="line.389"></a>
-<span class="sourceLineNo">390</span>  private ExpiredMobFileCleanerChore expiredMobFileCleanerChore;<a name="line.390"></a>
-<span class="sourceLineNo">391</span>  private MobCompactionChore mobCompactChore;<a name="line.391"></a>
-<span class="sourceLineNo">392</span>  private MasterMobCompactionThread mobCompactThread;<a name="line.392"></a>
-<span class="sourceLineNo">393</span>  // used to synchronize the mobCompactionStates<a name="line.393"></a>
-<span class="sourceLineNo">394</span>  private final IdLock mobCompactionLock = new IdLock();<a name="line.394"></a>
-<span class="sourceLineNo">395</span>  // save the information of mob compactions in tables.<a name="line.395"></a>
-<span class="sourceLineNo">396</span>  // the key is table name, the value is the number of compactions in that table.<a name="line.396"></a>
-<span class="sourceLineNo">397</span>  private Map&lt;TableName, AtomicInteger&gt; mobCompactionStates = Maps.newConcurrentMap();<a name="line.397"></a>
-<span class="sourceLineNo">398</span><a name="line.398"></a>
-<span class="sourceLineNo">399</span>  MasterCoprocessorHost cpHost;<a name="line.399"></a>
+<span class="sourceLineNo">379</span>  private final LockManager lockManager = new LockManager(this);<a name="line.379"></a>
+<span class="sourceLineNo">380</span><a name="line.380"></a>
+<span class="sourceLineNo">381</span>  private LoadBalancer balancer;<a name="line.381"></a>
+<span class="sourceLineNo">382</span>  private RegionNormalizer normalizer;<a name="line.382"></a>
+<span class="sourceLineNo">383</span>  private BalancerChore balancerChore;<a name="line.383"></a>
+<span class="sourceLineNo">384</span>  private RegionNormalizerChore normalizerChore;<a name="line.384"></a>
+<span class="sourceLineNo">385</span>  private ClusterStatusChore clusterStatusChore;<a name="line.385"></a>
+<span class="sourceLineNo">386</span>  private ClusterStatusPublisher clusterStatusPublisherChore = null;<a name="line.386"></a>
+<span class="sourceLineNo">387</span><a name="line.387"></a>
+<span class="sourceLineNo">388</span>  CatalogJanitor catalogJanitorChore;<a name="line.388"></a>
+<span class="sourceLineNo">389</span>  private LogCleaner logCleaner;<a name="line.389"></a>
+<span class="sourceLineNo">390</span>  private HFileCleaner hfileCleaner;<a name="line.390"></a>
+<span class="sourceLineNo">391</span>  private ReplicationBarrierCleaner replicationBarrierCleaner;<a name="line.391"></a>
+<span class="sourceLineNo">392</span>  private ExpiredMobFileCleanerChore expiredMobFileCleanerChore;<a name="line.392"></a>
+<span class="sourceLineNo">393</span>  private MobCompactionChore mobCompactChore;<a name="line.393"></a>
+<span class="sourceLineNo">394</span>  private MasterMobCompactionThread mobCompactThread;<a name="line.394"></a>
+<span class="sourceLineNo">395</span>  // used to synchronize the mobCompactionStates<a name="line.395"></a>
+<span class="sourceLineNo">396</span>  private final IdLock mobCompactionLock = new IdLock();<a name="line.396"></a>
+<span class="sourceLineNo">397</span>  // save the information of mob compactions in tables.<a name="line.397"></a>
+<span class="sourceLineNo">398</span>  // the key is table name, the value is the number of compactions in that table.<a name="line.398"></a>
+<span class="sourceLineNo">399</span>  private Map&lt;TableName, AtomicInteger&gt; mobCompactionStates = Maps.newConcurrentMap();<a name="line.399"></a>
 <span class="sourceLineNo">400</span><a name="line.400"></a>
-<span class="sourceLineNo">401</span>  private final boolean preLoadTableDescriptors;<a name="line.401"></a>
+<span class="sourceLineNo">401</span>  MasterCoprocessorHost cpHost;<a name="line.401"></a>
 <span class="sourceLineNo">402</span><a name="line.402"></a>
-<span class="sourceLineNo">403</span>  // Time stamps for when a hmaster became active<a name="line.403"></a>
-<span class="sourceLineNo">404</span>  private long masterActiveTime;<a name="line.404"></a>
-<span class="sourceLineNo">405</span><a name="line.405"></a>
-<span class="sourceLineNo">406</span>  // Time stamp for when HMaster finishes becoming Active Master<a name="line.406"></a>
-<span class="sourceLineNo">407</span>  private long masterFinishedInitializationTime;<a name="line.407"></a>
-<span class="sourceLineNo">408</span><a name="line.408"></a>
-<span class="sourceLineNo">409</span>  //should we check the compression codec type at master side, default true, HBASE-6370<a name="line.409"></a>
-<span class="sourceLineNo">410</span>  private final boolean masterCheckCompression;<a name="line.410"></a>
-<span class="sourceLineNo">411</span><a name="line.411"></a>
-<span class="sourceLineNo">412</span>  //should we check encryption settings at master side, default true<a name="line.412"></a>
-<span class="sourceLineNo">413</span>  private final boolean masterCheckEncryption;<a name="line.413"></a>
-<span class="sourceLineNo">414</span><a name="line.414"></a>
-<span class="sourceLineNo">415</span>  Map&lt;String, Service&gt; coprocessorServiceHandlers = Maps.newHashMap();<a name="line.415"></a>
+<span class="sourceLineNo">403</span>  private final boolean preLoadTableDescriptors;<a name="line.403"></a>
+<span class="sourceLineNo">404</span><a name="line.404"></a>
+<span class="sourceLineNo">405</span>  // Time stamps for when a hmaster became active<a name="line.405"></a>
+<span class="sourceLineNo">406</span>  private long masterActiveTime;<a name="line.406"></a>
+<span class="sourceLineNo">407</span><a name="line.407"></a>
+<span class="sourceLineNo">408</span>  // Time stamp for when HMaster finishes becoming Active Master<a name="line.408"></a>
+<span class="sourceLineNo">409</span>  private long masterFinishedInitializationTime;<a name="line.409"></a>
+<span class="sourceLineNo">410</span><a name="line.410"></a>
+<span class="sourceLineNo">411</span>  //should we check the compression codec type at master side, default true, HBASE-6370<a name="line.411"></a>
+<span class="sourceLineNo">412</span>  private final boolean masterCheckCompression;<a name="line.412"></a>
+<span class="sourceLineNo">413</span><a name="line.413"></a>
+<span class="sourceLineNo">414</span>  //should we check encryption settings at master side, default true<a name="line.414"></a>
+<span class="sourceLineNo">415</span>  private final boolean masterCheckEncryption;<a name="line.415"></a>
 <span class="sourceLineNo">416</span><a name="line.416"></a>
-<span class="sourceLineNo">417</span>  // monitor for snapshot of hbase tables<a name="line.417"></a>
-<span class="sourceLineNo">418</span>  SnapshotManager snapshotManager;<a name="line.418"></a>
-<span class="sourceLineNo">419</span>  // monitor for distributed procedures<a name="line.419"></a>
-<span class="sourceLineNo">420</span>  private MasterProcedureManagerHost mpmHost;<a name="line.420"></a>
-<span class="sourceLineNo">421</span><a name="line.421"></a>
-<span class="sourceLineNo">422</span>  // it is assigned after 'initialized' guard set to true, so should be volatile<a name="line.422"></a>
-<span class="sourceLineNo">423</span>  private volatile MasterQuotaManager quotaManager;<a name="line.423"></a>
-<span class="sourceLineNo">424</span>  private SpaceQuotaSnapshotNotifier spaceQuotaSnapshotNotifier;<a name="line.424"></a>
-<span class="sourceLineNo">425</span>  private QuotaObserverChore quotaObserverChore;<a name="line.425"></a>
-<span class="sourceLineNo">426</span>  private SnapshotQuotaObserverChore snapshotQuotaChore;<a name="line.426"></a>
-<span class="sourceLineNo">427</span><a name="line.427"></a>
-<span class="sourceLineNo">428</span>  private ProcedureExecutor&lt;MasterProcedureEnv&gt; procedureExecutor;<a name="line.428"></a>
-<span class="sourceLineNo">429</span>  private WALProcedureStore procedureStore;<a name="line.429"></a>
-<span class="sourceLineNo">430</span><a name="line.430"></a>
-<span class="sourceLineNo">431</span>  // handle table states<a name="line.431"></a>
-<span class="sourceLineNo">432</span>  private TableStateManager tableStateManager;<a name="line.432"></a>
-<span class="sourceLineNo">433</span><a name="line.433"></a>
-<span class="sourceLineNo">434</span>  private long splitPlanCount;<a name="line.434"></a>
-<span class="sourceLineNo">435</span>  private long mergePlanCount;<a name="line.435"></a>
-<span class="sourceLineNo">436</span><a name="line.436"></a>
-<span class="sourceLineNo">437</span>  /* Handle favored nodes information */<a name="line.437"></a>
-<span class="sourceLineNo">438</span>  private FavoredNodesManager favoredNodesManager;<a name="line.438"></a>
-<span class="sourceLineNo">439</span><a name="line.439"></a>
-<span class="sourceLineNo">440</span>  /** jetty server for master to redirect requests to regionserver infoServer */<a name="line.440"></a>
-<span class="sourceLineNo">441</span>  private Server masterJettyServer;<a name="line.441"></a>
-<span class="sourceLineNo">442</span><a name="line.442"></a>
-<span class="sourceLineNo">443</span>  public static class RedirectServlet extends HttpServlet {<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    private static final long serialVersionUID = 2894774810058302473L;<a name="line.444"></a>
-<span class="sourceLineNo">445</span>    private final int regionServerInfoPort;<a name="line.445"></a>
-<span class="sourceLineNo">446</span>    private final String regionServerHostname;<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>     * @param infoServer that we're trying to send all requests to<a name="line.449"></a>
-<span class="sourceLineNo">450</span>     * @param hostname may be null. if given, will be used for redirects instead of host from client.<a name="line.450"></a>
-<span class="sourceLineNo">451</span>     */<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    public RedirectServlet(InfoServer infoServer, String hostname) {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>       regionServerInfoPort = infoServer.getPort();<a name="line.453"></a>
-<span class="sourceLineNo">454</span>       regionServerHostname = hostname;<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 void doGet(HttpServletRequest request,<a name="line.458"></a>
-<span class="sourceLineNo">459</span>        HttpServletResponse response) throws ServletException, IOException {<a name="line.459"></a>
-<span class="sourceLineNo">460</span>      String redirectHost = regionServerHostname;<a name="line.460"></a>
-<span class="sourceLineNo">461</span>      if(redirectHost == null) {<a name="line.461"></a>
-<span class="sourceLineNo">462</span>        redirectHost = request.getServerName();<a name="line.462"></a>
-<span class="sourceLineNo">463</span>        if(!Addressing.isLocalAddress(InetAddress.getByName(redirectHost))) {<a name="line.463"></a>
-<span class="sourceLineNo">464</span>          LOG.warn("Couldn't resolve '" + redirectHost + "' as an address local to this node and '" +<a name="line.464"></a>
-<span class="sourceLineNo">465</span>              MASTER_HOSTNAME_KEY + "' is not set; client will get a HTTP 400 response. If " +<a name="line.465"></a>
-<span class="sourceLineNo">466</span>              "your HBase deployment relies on client accessible names that the region server process " +<a name="line.466"></a>
-<span class="sourceLineNo">467</span>              "can't resolve locally, then you should set the previously mentioned configuration variable " +<a name="line.467"></a>
-<span class="sourceLineNo">468</span>              "to an appropriate hostname.");<a name="line.468"></a>
-<span class="sourceLineNo">469</span>          // no sending client provided input back to the client, so the goal host is just in the logs.<a name="line.469"></a>
-<span class="sourceLineNo">470</span>          response.sendError(400, "Request was to a host that I can't resolve for any of the network interfaces on " +<a name="line.470"></a>
-<span class="sourceLineNo">471</span>              "this node. If this is due to an intermediary such as an HTTP load balancer or other proxy, your HBase " +<a name="line.471"></a>
-<span class="sourceLineNo">472</span>              "administrator can set '" + MASTER_HOSTNAME_KEY + "' to point to the correct hostname.");<a name="line.472"></a>
-<span class="sourceLineNo">473</span>          return;<a name="line.473"></a>
-<span class="sourceLineNo">474</span>        }<a name="line.474"></a>
-<span class="sourceLineNo">475</span>      }<a name="line.475"></a>
-<span class="sourceLineNo">476</span>      // TODO this scheme should come from looking at the scheme registered in the infoserver's http server for the<a name="line.476"></a>
-<span class="sourceLineNo">477</span>      // host and port we're using, but it's buried way too deep to do that ATM.<a name="line.477"></a>
-<span class="sourceLineNo">478</span>      String redirectUrl = request.getScheme() + "://"<a name="line.478"></a>
-<span class="sourceLineNo">479</span>        + redirectHost + ":" + regionServerInfoPort<a name="line.479"></a>
-<span class="sourceLineNo">480</span>        + request.getRequestURI();<a name="line.480"></a>
-<span class="sourceLineNo">481</span>      response.sendRedirect(redirectUrl);<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>  /**<a name="line.485"></a>
-<span class="sourceLineNo">486</span>   * Initializes the HMaster. The steps are as follows:<a name="line.486"></a>
-<span class="sourceLineNo">487</span>   * &lt;p&gt;<a name="line.487"></a>
-<span class="sourceLineNo">488</span>   * &lt;ol&gt;<a name="line.488"></a>
-<span class="sourceLineNo">489</span>   * &lt;li&gt;Initialize the local HRegionServer<a name="line.489"></a>
-<span class="sourceLineNo">490</span>   * &lt;li&gt;Start the ActiveMasterManager.<a name="line.490"></a>
-<span class="sourceLineNo">491</span>   * &lt;/ol&gt;<a name="line.491"></a>
-<span class="sourceLineNo">492</span>   * &lt;p&gt;<a name="line.492"></a>
-<span class="sourceLineNo">493</span>   * Remaining steps of initialization occur in<a name="line.493"></a>
-<span class="sourceLineNo">494</span>   * #finishActiveMasterInitialization(MonitoredTask) after<a name="line.494"></a>
-<span class="sourceLineNo">495</span>   * the master becomes the active one.<a name="line.495"></a>
-<span class="sourceLineNo">496</span>   */<a name="line.496"></a>
-<span class="sourceLineNo">497</span>  public HMaster(final Configuration conf)<a name="line.497"></a>
-<span class="sourceLineNo">498</span>      throws IOException, KeeperException {<a name="line.498"></a>
-<span class="sourceLineNo">499</span>    super(conf);<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    TraceUtil.initTracer(conf);<a name="line.500"></a>
-<span class="sourceLineNo">501</span>    try {<a name="line.501"></a>
-<span class="sourceLineNo">502</span>      this.rsFatals = new MemoryBoundedLogMessageBuffer(<a name="line.502"></a>
-<span class="sourceLineNo">503</span>          conf.getLong("hbase.master.buffer.for.rs.fatals", 1 * 1024 * 1024));<a name="line.503"></a>
-<span class="sourceLineNo">504</span>      LOG.info("hbase.rootdir=" + getRootDir() +<a name="line.504"></a>
-<span class="sourceLineNo">505</span>          ", hbase.cluster.distributed=" + this.conf.getBoolean(HConstants.CLUSTER_DISTRIBUTED, false));<a name="line.505"></a>
-<span class="sourceLineNo">506</span><a name="line.506"></a>
-<span class="sourceLineNo">507</span>      // Disable usage of meta replicas in the master<a name="line.507"></a>
-<span class="sourceLineNo">508</span>      this.conf.setBoolean(HConstants.USE_META_REPLICAS, false);<a name="line.508"></a>
-<span class="sourceLineNo">509</span><a name="line.509"></a>
-<span class="sourceLineNo">510</span>      decorateMasterConfiguration(this.conf);<a name="line.510"></a>
+<span class="sourceLineNo">417</span>  Map&lt;String, Service&gt; coprocessorServiceHandlers = Maps.newHashMap();<a name="line.417"></a>
+<span class="sourceLineNo">418</span><a name="line.418"></a>
+<span class="sourceLineNo">419</span>  // monitor for snapshot of hbase tables<a name="line.419"></a>
+<span class="sourceLineNo">420</span>  SnapshotManager snapshotManager;<a name="line.420"></a>
+<span class="sourceLineNo">421</span>  // monitor for distributed procedures<a name="line.421"></a>
+<span class="sourceLineNo">422</span>  private MasterProcedureManagerHost mpmHost;<a name="line.422"></a>
+<span class="sourceLineNo">423</span><a name="lin

<TRUNCATED>

[36/43] hbase-site git commit: Published site at 7ab77518a2569e2416a50020393aa386e7734501.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/devapidocs/org/apache/hadoop/hbase/master/HMaster.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/HMaster.html b/devapidocs/org/apache/hadoop/hbase/master/HMaster.html
index e39c24f..62ced18 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/HMaster.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/HMaster.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":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":9,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":10,"i32":10,"i33":10,"i34":9,"i35":10,"i36":10,"i37":10,"i38":10,"i39":10,"i40":10,"i41":10,"i42":10,"i43":9,"i44":10,"i45":10,"i46":10,"i47":10,"i48":10,"i49":10,"i50":10,"i51":10,"i52":10,"i53":10,"i54":10,"i55":10,"i56":10,"i57":10,"i58":10,"i59":10,"i60":10,"i61":10,"i62":10,"i63":9,"i64":10,"i65":10,"i66":10,"i67":10,"i68":10,"i69":10,"i70":10,"i71":10,"i72":10,"i73":10,"i74":10,"i75":10,"i76":10,"i77":10,"i78":10,"i79":10,"i80":10,"i81":10,"i82":10,"i83":10,"i84":10,"i85":10,"i86":10,"i87":10,"i88":10,"i89":10,"i90":10,"i91":10,"i92":10,"i93":10,"i94":10,"i95":10,"i96":10,"i97":10,"i98":10,"i99":10,"i100":10,"i101":10,"i102":10,"i103":10,"i104":10,"i105":10,"i106":10,"i107":10,"i108":10,"i109"
 :10,"i110":10,"i111":10,"i112":10,"i113":10,"i114":10,"i115":10,"i116":10,"i117":10,"i118":10,"i119":10,"i120":10,"i121":10,"i122":9,"i123":10,"i124":10,"i125":10,"i126":10,"i127":10,"i128":10,"i129":10,"i130":10,"i131":10,"i132":10,"i133":10,"i134":10,"i135":10,"i136":9,"i137":10,"i138":10,"i139":10,"i140":10,"i141":10,"i142":10,"i143":10,"i144":10,"i145":10,"i146":10,"i147":10,"i148":10,"i149":10,"i150":10,"i151":10,"i152":10,"i153":10,"i154":10,"i155":10,"i156":10,"i157":10,"i158":10,"i159":10,"i160":10,"i161":10,"i162":10,"i163":10,"i164":10,"i165":10,"i166":10,"i167":10,"i168":10,"i169":10,"i170":10,"i171":10,"i172":10,"i173":10,"i174":10,"i175":10,"i176":9};
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":9,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":9,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":10,"i32":10,"i33":10,"i34":10,"i35":9,"i36":10,"i37":10,"i38":10,"i39":10,"i40":10,"i41":10,"i42":10,"i43":10,"i44":9,"i45":10,"i46":10,"i47":10,"i48":10,"i49":10,"i50":10,"i51":10,"i52":10,"i53":10,"i54":10,"i55":10,"i56":10,"i57":10,"i58":10,"i59":10,"i60":10,"i61":10,"i62":10,"i63":10,"i64":9,"i65":10,"i66":10,"i67":10,"i68":10,"i69":10,"i70":10,"i71":10,"i72":10,"i73":10,"i74":10,"i75":10,"i76":10,"i77":10,"i78":10,"i79":10,"i80":10,"i81":10,"i82":10,"i83":10,"i84":10,"i85":10,"i86":10,"i87":10,"i88":10,"i89":10,"i90":10,"i91":10,"i92":10,"i93":10,"i94":10,"i95":10,"i96":10,"i97":10,"i98":10,"i99":10,"i100":10,"i101":10,"i102":10,"i103":10,"i104":10,"i105":10,"i106":10,"i107":10,"i108":10,"i109":
 10,"i110":10,"i111":10,"i112":10,"i113":10,"i114":10,"i115":10,"i116":10,"i117":10,"i118":10,"i119":10,"i120":10,"i121":10,"i122":10,"i123":9,"i124":10,"i125":10,"i126":10,"i127":10,"i128":10,"i129":10,"i130":10,"i131":10,"i132":10,"i133":10,"i134":10,"i135":10,"i136":10,"i137":9,"i138":10,"i139":10,"i140":10,"i141":10,"i142":10,"i143":10,"i144":10,"i145":10,"i146":10,"i147":10,"i148":10,"i149":10,"i150":10,"i151":10,"i152":10,"i153":10,"i154":10,"i155":10,"i156":10,"i157":10,"i158":10,"i159":10,"i160":10,"i161":10,"i162":10,"i163":10,"i164":10,"i165":10,"i166":10,"i167":10,"i168":10,"i169":10,"i170":10,"i171":10,"i172":10,"i173":10,"i174":10,"i175":10,"i176":10,"i177":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";
@@ -128,7 +128,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.LimitedPrivate(value="Tools")
-public class <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.253">HMaster</a>
+public class <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.255">HMaster</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a>
 implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices.html" title="interface in org.apache.hadoop.hbase.master">MasterServices</a></pre>
 <div class="block">HMaster is the "master server" for HBase. An HBase cluster has one active
@@ -573,87 +573,91 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#canUpdateTableDescriptor--">canUpdateTableDescriptor</a></span>()</code>&nbsp;</td>
 </tr>
 <tr id="i10" class="altColor">
+<td class="colFirst"><code>private static void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#checkBloomFilterType-org.apache.hadoop.hbase.client.ColumnFamilyDescriptor-">checkBloomFilterType</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>&nbsp;cfd)</code>&nbsp;</td>
+</tr>
+<tr id="i11" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#checkClassLoading-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.client.TableDescriptor-">checkClassLoading</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                  <a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;htd)</code>&nbsp;</td>
 </tr>
-<tr id="i11" class="rowColor">
+<tr id="i12" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#checkCompactionPolicy-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.client.TableDescriptor-">checkCompactionPolicy</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                      <a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;htd)</code>&nbsp;</td>
 </tr>
-<tr id="i12" class="altColor">
+<tr id="i13" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#checkCompression-org.apache.hadoop.hbase.client.ColumnFamilyDescriptor-">checkCompression</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>&nbsp;hcd)</code>&nbsp;</td>
 </tr>
-<tr id="i13" class="rowColor">
+<tr id="i14" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#checkCompression-org.apache.hadoop.hbase.client.TableDescriptor-">checkCompression</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;htd)</code>&nbsp;</td>
 </tr>
-<tr id="i14" class="altColor">
+<tr id="i15" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#checkEncryption-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.client.ColumnFamilyDescriptor-">checkEncryption</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                <a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>&nbsp;hcd)</code>&nbsp;</td>
 </tr>
-<tr id="i15" class="rowColor">
+<tr id="i16" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#checkEncryption-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.client.TableDescriptor-">checkEncryption</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                <a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;htd)</code>&nbsp;</td>
 </tr>
-<tr id="i16" class="altColor">
+<tr id="i17" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#checkIfShouldMoveSystemRegionAsync--">checkIfShouldMoveSystemRegionAsync</a></span>()</code>
 <div class="block">Called when a new RegionServer is added to the cluster.</div>
 </td>
 </tr>
-<tr id="i17" class="rowColor">
+<tr id="i18" class="altColor">
 <td class="colFirst"><code>(package private) void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#checkInitialized--">checkInitialized</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i18" class="altColor">
+<tr id="i19" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#checkReplicationScope-org.apache.hadoop.hbase.client.ColumnFamilyDescriptor-">checkReplicationScope</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>&nbsp;hcd)</code>&nbsp;</td>
 </tr>
-<tr id="i19" class="rowColor">
+<tr id="i20" class="altColor">
 <td class="colFirst"><code>(package private) void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#checkServiceStarted--">checkServiceStarted</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i20" class="altColor">
+<tr id="i21" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#checkTableExists-org.apache.hadoop.hbase.TableName-">checkTableExists</a></span>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</code>&nbsp;</td>
 </tr>
-<tr id="i21" class="rowColor">
+<tr id="i22" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#checkTableModifiable-org.apache.hadoop.hbase.TableName-">checkTableModifiable</a></span>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</code>
 <div class="block">Check table is modifiable; i.e.</div>
 </td>
 </tr>
-<tr id="i22" class="altColor">
+<tr id="i23" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#checkUnsupportedProcedure-java.util.Map-">checkUnsupportedProcedure</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&gt;,<a href="https://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/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/master/procedure/MasterPr
 ocedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&gt;&gt;&gt;&nbsp;procsByType)</code>
 <div class="block">In HBASE-20811, we have introduced a new TRSP to assign/unassign/move regions, and it is
  incompatible with the old AssignProcedure/UnassignProcedure/MoveRegionProcedure.</div>
 </td>
 </tr>
-<tr id="i23" class="rowColor">
+<tr id="i24" class="altColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#configureInfoServer--">configureInfoServer</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i24" class="altColor">
+<tr id="i25" class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#constructMaster-java.lang.Class-org.apache.hadoop.conf.Configuration-">constructMaster</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a>&gt;&nbsp;masterClass,
                org.apache.hadoop.conf.Configuration&nbsp;conf)</code>
 <div class="block">Utility for constructing an instance of the passed HMaster class.</div>
 </td>
 </tr>
-<tr id="i25" class="rowColor">
+<tr id="i26" class="altColor">
 <td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/master/MasterMetaBootstrap.html" title="class in org.apache.hadoop.hbase.master">MasterMetaBootstrap</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#createMetaBootstrap--">createMetaBootstrap</a></span>()</code>
 <div class="block">
  Create a <a href="../../../../../org/apache/hadoop/hbase/master/MasterMetaBootstrap.html" title="class in org.apache.hadoop.hbase.master"><code>MasterMetaBootstrap</code></a> instance.</div>
 </td>
 </tr>
-<tr id="i26" class="altColor">
+<tr id="i27" class="rowColor">
 <td class="colFirst"><code>(package private) long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#createNamespace-org.apache.hadoop.hbase.NamespaceDescriptor-long-long-">createNamespace</a></span>(<a href="../../../../../org/apache/hadoop/hbase/NamespaceDescriptor.html" title="class in org.apache.hadoop.hbase">NamespaceDescriptor</a>&nbsp;namespaceDescriptor,
                long&nbsp;nonceGroup,
@@ -661,32 +665,32 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <div class="block">Create a new Namespace.</div>
 </td>
 </tr>
-<tr id="i27" class="rowColor">
+<tr id="i28" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#createProcedureExecutor--">createProcedureExecutor</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i28" class="altColor">
+<tr id="i29" class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/quotas/SpaceQuotaSnapshotNotifier.html" title="interface in org.apache.hadoop.hbase.quotas">SpaceQuotaSnapshotNotifier</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#createQuotaSnapshotNotifier--">createQuotaSnapshotNotifier</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i29" class="rowColor">
+<tr id="i30" class="altColor">
 <td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/regionserver/RSRpcServices.html" title="class in org.apache.hadoop.hbase.regionserver">RSRpcServices</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#createRpcServices--">createRpcServices</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i30" class="altColor">
+<tr id="i31" class="rowColor">
 <td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#createServerManager-org.apache.hadoop.hbase.master.MasterServices-">createServerManager</a></span>(<a href="../../../../../org/apache/hadoop/hbase/master/MasterServices.html" title="interface in org.apache.hadoop.hbase.master">MasterServices</a>&nbsp;master)</code>
 <div class="block">
  Create a <a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master"><code>ServerManager</code></a> instance.</div>
 </td>
 </tr>
-<tr id="i31" class="rowColor">
+<tr id="i32" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#createSystemTable-org.apache.hadoop.hbase.client.TableDescriptor-">createSystemTable</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;tableDescriptor)</code>
 <div class="block">Create a system table using the given table definition.</div>
 </td>
 </tr>
-<tr id="i32" class="altColor">
+<tr id="i33" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#createTable-org.apache.hadoop.hbase.client.TableDescriptor-byte:A:A-long-long-">createTable</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;tableDescriptor,
            byte[][]&nbsp;splitKeys,
@@ -695,7 +699,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <div class="block">Create a table using the given table definition.</div>
 </td>
 </tr>
-<tr id="i33" class="rowColor">
+<tr id="i34" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#decommissionRegionServers-java.util.List-boolean-">decommissionRegionServers</a></span>(<a href="https://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/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;servers,
                          boolean&nbsp;offload)</code>
@@ -703,13 +707,13 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
  regions from getting assigned to them.</div>
 </td>
 </tr>
-<tr id="i34" class="altColor">
+<tr id="i35" class="rowColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#decorateMasterConfiguration-org.apache.hadoop.conf.Configuration-">decorateMasterConfiguration</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf)</code>
 <div class="block">This method modifies the master's configuration in order to inject replication-related features</div>
 </td>
 </tr>
-<tr id="i35" class="rowColor">
+<tr id="i36" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#deleteColumn-org.apache.hadoop.hbase.TableName-byte:A-long-long-">deleteColumn</a></span>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
             byte[]&nbsp;columnName,
@@ -718,7 +722,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <div class="block">Delete a column from an existing table</div>
 </td>
 </tr>
-<tr id="i36" class="altColor">
+<tr id="i37" class="rowColor">
 <td class="colFirst"><code>(package private) long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#deleteNamespace-java.lang.String-long-long-">deleteNamespace</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
                long&nbsp;nonceGroup,
@@ -726,7 +730,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <div class="block">Delete an existing Namespace.</div>
 </td>
 </tr>
-<tr id="i37" class="rowColor">
+<tr id="i38" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#deleteTable-org.apache.hadoop.hbase.TableName-long-long-">deleteTable</a></span>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
            long&nbsp;nonceGroup,
@@ -734,13 +738,13 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <div class="block">Delete a table</div>
 </td>
 </tr>
-<tr id="i38" class="altColor">
+<tr id="i39" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#disableReplicationPeer-java.lang.String-">disableReplicationPeer</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)</code>
 <div class="block">Stop the replication stream to the specified peer</div>
 </td>
 </tr>
-<tr id="i39" class="rowColor">
+<tr id="i40" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#disableTable-org.apache.hadoop.hbase.TableName-long-long-">disableTable</a></span>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
             long&nbsp;nonceGroup,
@@ -748,13 +752,13 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <div class="block">Disable an existing table</div>
 </td>
 </tr>
-<tr id="i40" class="altColor">
+<tr id="i41" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#enableReplicationPeer-java.lang.String-">enableReplicationPeer</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)</code>
 <div class="block">Restart the replication stream to the specified peer</div>
 </td>
 </tr>
-<tr id="i41" class="rowColor">
+<tr id="i42" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#enableTable-org.apache.hadoop.hbase.TableName-long-long-">enableTable</a></span>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
            long&nbsp;nonceGroup,
@@ -762,303 +766,303 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <div class="block">Enable an existing table</div>
 </td>
 </tr>
-<tr id="i42" class="altColor">
+<tr id="i43" class="rowColor">
 <td class="colFirst"><code>private long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#executePeerProcedure-org.apache.hadoop.hbase.master.replication.AbstractPeerProcedure-">executePeerProcedure</a></span>(<a href="../../../../../org/apache/hadoop/hbase/master/replication/AbstractPeerProcedure.html" title="class in org.apache.hadoop.hbase.master.replication">AbstractPeerProcedure</a>&lt;?&gt;&nbsp;procedure)</code>&nbsp;</td>
 </tr>
-<tr id="i43" class="rowColor">
+<tr id="i44" class="altColor">
 <td class="colFirst"><code>private static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#filterTablesByRegex-java.util.Collection-java.util.regex.Pattern-">filterTablesByRegex</a></span>(<a href="https://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/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&gt;&nbsp;descriptors,
                    <a href="https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html?is-external=true" title="class or interface in java.util.regex">Pattern</a>&nbsp;pattern)</code>
 <div class="block">Removes the table descriptors that don't match the pattern.</div>
 </td>
 </tr>
-<tr id="i44" class="altColor">
+<tr id="i45" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#finishActiveMasterInitialization-org.apache.hadoop.hbase.monitoring.MonitoredTask-">finishActiveMasterInitialization</a></span>(<a href="../../../../../org/apache/hadoop/hbase/monitoring/MonitoredTask.html" title="interface in org.apache.hadoop.hbase.monitoring">MonitoredTask</a>&nbsp;status)</code>
 <div class="block">Finish initialization of HMaster after becoming the primary master.</div>
 </td>
 </tr>
-<tr id="i45" class="rowColor">
+<tr id="i46" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignmentManager</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getAssignmentManager--">getAssignmentManager</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i46" class="altColor">
+<tr id="i47" class="rowColor">
 <td class="colFirst"><code>double</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getAverageLoad--">getAverageLoad</a></span>()</code>
 <div class="block">Compute the average load across all region servers.</div>
 </td>
 </tr>
-<tr id="i47" class="rowColor">
+<tr id="i48" class="altColor">
 <td class="colFirst"><code>private <a href="https://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/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/master/HMaster.html#getBackupMasters--">getBackupMasters</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i48" class="altColor">
+<tr id="i49" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/master/CatalogJanitor.html" title="class in org.apache.hadoop.hbase.master">CatalogJanitor</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getCatalogJanitor--">getCatalogJanitor</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i49" class="rowColor">
+<tr id="i50" class="altColor">
 <td class="colFirst"><code><a href="https://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/master/HMaster.html#getClientIdAuditPrefix--">getClientIdAuditPrefix</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i50" class="altColor">
+<tr id="i51" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/ClusterMetrics.html" title="interface in org.apache.hadoop.hbase">ClusterMetrics</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getClusterMetrics--">getClusterMetrics</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i51" class="rowColor">
+<tr id="i52" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/ClusterMetrics.html" title="interface in org.apache.hadoop.hbase">ClusterMetrics</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getClusterMetrics-java.util.EnumSet-">getClusterMetrics</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/EnumSet.html?is-external=true" title="class or interface in java.util">EnumSet</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ClusterMetrics.Option.html" title="enum in org.apache.hadoop.hbase">ClusterMetrics.Option</a>&gt;&nbsp;options)</code>&nbsp;</td>
 </tr>
-<tr id="i52" class="altColor">
+<tr id="i53" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/ClusterMetrics.html" title="interface in org.apache.hadoop.hbase">ClusterMetrics</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getClusterMetricsWithoutCoprocessor--">getClusterMetricsWithoutCoprocessor</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i53" class="rowColor">
+<tr id="i54" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/ClusterMetrics.html" title="interface in org.apache.hadoop.hbase">ClusterMetrics</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getClusterMetricsWithoutCoprocessor-java.util.EnumSet-">getClusterMetricsWithoutCoprocessor</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/EnumSet.html?is-external=true" title="class or interface in java.util">EnumSet</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ClusterMetrics.Option.html" title="enum in org.apache.hadoop.hbase">ClusterMetrics.Option</a>&gt;&nbsp;options)</code>&nbsp;</td>
 </tr>
-<tr id="i54" class="altColor">
+<tr id="i55" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/master/ClusterSchema.html" title="interface in org.apache.hadoop.hbase.master">ClusterSchema</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getClusterSchema--">getClusterSchema</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i55" class="rowColor">
+<tr id="i56" class="altColor">
 <td class="colFirst"><code>protected <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;? extends javax.servlet.http.HttpServlet&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getDumpServlet--">getDumpServlet</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i56" class="altColor">
+<tr id="i57" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/favored/FavoredNodesManager.html" title="class in org.apache.hadoop.hbase.favored">FavoredNodesManager</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getFavoredNodesManager--">getFavoredNodesManager</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i57" class="rowColor">
+<tr id="i58" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/master/cleaner/HFileCleaner.html" title="class in org.apache.hadoop.hbase.master.cleaner">HFileCleaner</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getHFileCleaner--">getHFileCleaner</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i58" class="altColor">
+<tr id="i59" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureEvent.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureEvent</a>&lt;?&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getInitializedEvent--">getInitializedEvent</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i59" class="rowColor">
+<tr id="i60" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getLastMajorCompactionTimestamp-org.apache.hadoop.hbase.TableName-">getLastMajorCompactionTimestamp</a></span>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;table)</code>&nbsp;</td>
 </tr>
-<tr id="i60" class="altColor">
+<tr id="i61" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getLastMajorCompactionTimestampForRegion-byte:A-">getLastMajorCompactionTimestampForRegion</a></span>(byte[]&nbsp;regionName)</code>&nbsp;</td>
 </tr>
-<tr id="i61" class="rowColor">
+<tr id="i62" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/master/LoadBalancer.html" title="interface in org.apache.hadoop.hbase.master">LoadBalancer</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getLoadBalancer--">getLoadBalancer</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i62" class="altColor">
+<tr id="i63" class="rowColor">
 <td class="colFirst"><code><a href="https://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/master/HMaster.html#getLoadBalancerClassName--">getLoadBalancerClassName</a></span>()</code>
 <div class="block">Fetch the configured <a href="../../../../../org/apache/hadoop/hbase/master/LoadBalancer.html" title="interface in org.apache.hadoop.hbase.master"><code>LoadBalancer</code></a> class name.</div>
 </td>
 </tr>
-<tr id="i63" class="rowColor">
+<tr id="i64" class="altColor">
 <td class="colFirst"><code>static <a href="https://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/master/HMaster.html#getLoadedCoprocessors--">getLoadedCoprocessors</a></span>()</code>
 <div class="block">The set of loaded coprocessors is stored in a static set.</div>
 </td>
 </tr>
-<tr id="i64" class="altColor">
+<tr id="i65" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/master/locking/LockManager.html" title="class in org.apache.hadoop.hbase.master.locking">LockManager</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getLockManager--">getLockManager</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i65" class="rowColor">
+<tr id="i66" class="altColor">
 <td class="colFirst"><code><a href="https://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/procedure2/LockedResource.html" title="class in org.apache.hadoop.hbase.procedure2">LockedResource</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getLocks--">getLocks</a></span>()</code>
 <div class="block">Get locks</div>
 </td>
 </tr>
-<tr id="i66" class="altColor">
+<tr id="i67" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/master/cleaner/LogCleaner.html" title="class in org.apache.hadoop.hbase.master.cleaner">LogCleaner</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getLogCleaner--">getLogCleaner</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i67" class="rowColor">
+<tr id="i68" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterActiveTime--">getMasterActiveTime</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i68" class="altColor">
+<tr id="i69" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/master/MasterCoprocessorHost.html" title="class in org.apache.hadoop.hbase.master">MasterCoprocessorHost</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterCoprocessorHost--">getMasterCoprocessorHost</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i69" class="rowColor">
+<tr id="i70" class="altColor">
 <td class="colFirst"><code><a href="https://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/master/HMaster.html#getMasterCoprocessors--">getMasterCoprocessors</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i70" class="altColor">
+<tr id="i71" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/master/MasterFileSystem.html" title="class in org.apache.hadoop.hbase.master">MasterFileSystem</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterFileSystem--">getMasterFileSystem</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i71" class="rowColor">
+<tr id="i72" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterFinishedInitializationTime--">getMasterFinishedInitializationTime</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i72" class="altColor">
+<tr id="i73" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/master/MetricsMaster.html" title="class in org.apache.hadoop.hbase.master">MetricsMaster</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterMetrics--">getMasterMetrics</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i73" class="rowColor">
+<tr id="i74" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureExecutor</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterProcedureExecutor--">getMasterProcedureExecutor</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i74" class="altColor">
+<tr id="i75" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/procedure/MasterProcedureManagerHost.html" title="class in org.apache.hadoop.hbase.procedure">MasterProcedureManagerHost</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterProcedureManagerHost--">getMasterProcedureManagerHost</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i75" class="rowColor">
+<tr id="i76" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/quotas/MasterQuotaManager.html" title="class in org.apache.hadoop.hbase.quotas">MasterQuotaManager</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterQuotaManager--">getMasterQuotaManager</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i76" class="altColor">
+<tr id="i77" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/master/MasterRpcServices.html" title="class in org.apache.hadoop.hbase.master">MasterRpcServices</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterRpcServices--">getMasterRpcServices</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i77" class="rowColor">
+<tr id="i78" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterStartTime--">getMasterStartTime</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i78" class="altColor">
+<tr id="i79" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/master/MasterWalManager.html" title="class in org.apache.hadoop.hbase.master">MasterWalManager</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterWalManager--">getMasterWalManager</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i79" class="rowColor">
+<tr id="i80" class="altColor">
 <td class="colFirst"><code>private int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMaxBalancingTime--">getMaxBalancingTime</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i80" class="altColor">
+<tr id="i81" class="rowColor">
 <td class="colFirst"><code>private int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMaxRegionsInTransition--">getMaxRegionsInTransition</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i81" class="rowColor">
+<tr id="i82" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMergePlanCount--">getMergePlanCount</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i82" class="altColor">
+<tr id="i83" class="rowColor">
 <td class="colFirst"><code>protected <a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/Function.html?is-external=true" title="class or interface in java.util.function">Function</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>,<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMetaTableObserver--">getMetaTableObserver</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i83" class="rowColor">
+<tr id="i84" class="altColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoResponse.CompactionState</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMobCompactionState-org.apache.hadoop.hbase.TableName-">getMobCompactionState</a></span>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</code>
 <div class="block">Gets the mob file compaction state for a specific table.</div>
 </td>
 </tr>
-<tr id="i84" class="altColor">
+<tr id="i85" class="rowColor">
 <td class="colFirst"><code>(package private) <a href="../../../../../org/apache/hadoop/hbase/NamespaceDescriptor.html" title="class in org.apache.hadoop.hbase">NamespaceDescriptor</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getNamespace-java.lang.String-">getNamespace</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</code>
 <div class="block">Get a Namespace</div>
 </td>
 </tr>
-<tr id="i85" class="rowColor">
+<tr id="i86" class="altColor">
 <td class="colFirst"><code>(package private) <a href="https://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/NamespaceDescriptor.html" title="class in org.apache.hadoop.hbase">NamespaceDescriptor</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getNamespaces--">getNamespaces</a></span>()</code>
 <div class="block">Get all Namespaces</div>
 </td>
 </tr>
-<tr id="i86" class="altColor">
+<tr id="i87" class="rowColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getNumWALFiles--">getNumWALFiles</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i87" class="rowColor">
+<tr id="i88" class="altColor">
 <td class="colFirst"><code><a href="https://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/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;?&gt;&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getProcedures--">getProcedures</a></span>()</code>
 <div class="block">Get procedures</div>
 </td>
 </tr>
-<tr id="i88" class="altColor">
+<tr id="i89" class="rowColor">
 <td class="colFirst"><code>protected <a href="https://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/master/HMaster.html#getProcessName--">getProcessName</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i89" class="rowColor">
+<tr id="i90" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/quotas/QuotaObserverChore.html" title="class in org.apache.hadoop.hbase.quotas">QuotaObserverChore</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getQuotaObserverChore--">getQuotaObserverChore</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i90" class="altColor">
+<tr id="i91" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/master/normalizer/RegionNormalizer.html" title="interface in org.apache.hadoop.hbase.master.normalizer">RegionNormalizer</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getRegionNormalizer--">getRegionNormalizer</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i91" class="rowColor">
+<tr id="i92" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/zookeeper/RegionNormalizerTracker.html" title="class in org.apache.hadoop.hbase.zookeeper">RegionNormalizerTracker</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getRegionNormalizerTracker--">getRegionNormalizerTracker</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i92" class="altColor">
+<tr id="i93" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/monitoring/MemoryBoundedLogMessageBuffer.html" title="class in org.apache.hadoop.hbase.monitoring">MemoryBoundedLogMessageBuffer</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getRegionServerFatalLogBuffer--">getRegionServerFatalLogBuffer</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i93" class="rowColor">
+<tr id="i94" class="altColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getRegionServerInfoPort-org.apache.hadoop.hbase.ServerName-">getRegionServerInfoPort</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;sn)</code>&nbsp;</td>
 </tr>
-<tr id="i94" class="altColor">
+<tr id="i95" class="rowColor">
 <td class="colFirst"><code><a href="https://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/master/HMaster.html#getRegionServerVersion-org.apache.hadoop.hbase.ServerName-">getRegionServerVersion</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;sn)</code>&nbsp;</td>
 </tr>
-<tr id="i95" class="rowColor">
+<tr id="i96" class="altColor">
 <td class="colFirst"><code>(package private) <a href="https://docs.oracle.com/javase/8/docs/api/java/net/InetAddress.html?is-external=true" title="class or interface in java.net">InetAddress</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getRemoteInetAddress-int-long-">getRemoteInetAddress</a></span>(int&nbsp;port,
                     long&nbsp;serverStartCode)</code>&nbsp;</td>
 </tr>
-<tr id="i96" class="altColor">
+<tr id="i97" class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/procedure2/RemoteProcedureDispatcher.RemoteProcedure.html" title="interface in org.apache.hadoop.hbase.procedure2">RemoteProcedureDispatcher.RemoteProcedure</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>,?&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getRemoteProcedure-long-">getRemoteProcedure</a></span>(long&nbsp;procId)</code>&nbsp;</td>
 </tr>
-<tr id="i97" class="rowColor">
+<tr id="i98" class="altColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html?is-external=true" title="class or interface in java.util">HashMap</a>&lt;<a href="https://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="https://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/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>,<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationLoadSource.html" title="class in org.apache.hadoop.hbase.replication">ReplicationLoadSource</a>&gt;&gt;&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getReplicationLoad-org.apache.hadoop.hbase.ServerName:A-">getReplicationLoad</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>[]&nbsp;serverNames)</code>&nbsp;</td>
 </tr>
-<tr id="i98" class="altColor">
+<tr id="i99" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getReplicationPeerConfig-java.lang.String-">getReplicationPeerConfig</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)</code>
 <div class="block">Returns the configured ReplicationPeerConfig for the specified peer</div>
 </td>
 </tr>
-<tr id="i99" class="rowColor">
+<tr id="i100" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/master/replication/ReplicationPeerManager.html" title="class in org.apache.hadoop.hbase.master.replication">ReplicationPeerManager</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getReplicationPeerManager--">getReplicationPeerManager</a></span>()</code>
 <div class="block">Returns the <a href="../../../../../org/apache/hadoop/hbase/master/replication/ReplicationPeerManager.html" title="class in org.apache.hadoop.hbase.master.replication"><code>ReplicationPeerManager</code></a>.</div>
 </td>
 </tr>
-<tr id="i100" class="altColor">
+<tr id="i101" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getServerManager--">getServerManager</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i101" class="rowColor">
+<tr id="i102" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getServerName--">getServerName</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i102" class="altColor">
+<tr id="i103" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/master/snapshot/SnapshotManager.html" title="class in org.apache.hadoop.hbase.master.snapshot">SnapshotManager</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getSnapshotManager--">getSnapshotManager</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i103" class="rowColor">
+<tr id="i104" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/quotas/SnapshotQuotaObserverChore.html" title="class in org.apache.hadoop.hbase.quotas">SnapshotQuotaObserverChore</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getSnapshotQuotaObserverChore--">getSnapshotQuotaObserverChore</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i104" class="altColor">
+<tr id="i105" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/quotas/SpaceQuotaSnapshotNotifier.html" title="interface in org.apache.hadoop.hbase.quotas">SpaceQuotaSnapshotNotifier</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getSpaceQuotaSnapshotNotifier--">getSpaceQuotaSnapshotNotifier</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i105" class="rowColor">
+<tr id="i106" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/master/SplitOrMergeTracker.html" title="class in org.apache.hadoop.hbase.master">SplitOrMergeTracker</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getSplitOrMergeTracker--">getSplitOrMergeTracker</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i106" class="altColor">
+<tr id="i107" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getSplitPlanCount--">getSplitPlanCount</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i107" class="rowColor">
+<tr id="i108" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/master/replication/SyncReplicationReplayWALManager.html" title="class in org.apache.hadoop.hbase.master.replication">SyncReplicationReplayWALManager</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getSyncReplicationReplayWALManager--">getSyncReplicationReplayWALManager</a></span>()</code>
 <div class="block">Returns the <a href="../../../../../org/apache/hadoop/hbase/master/replication/SyncReplicationReplayWALManager.html" title="class in org.apache.hadoop.hbase.master.replication"><code>SyncReplicationReplayWALManager</code></a>.</div>
 </td>
 </tr>
-<tr id="i108" class="altColor">
+<tr id="i109" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/TableDescriptors.html" title="interface in org.apache.hadoop.hbase">TableDescriptors</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getTableDescriptors--">getTableDescriptors</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i109" class="rowColor">
+<tr id="i110" class="altColor">
 <td class="colFirst"><code>private <a href="https://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/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getTableDescriptors-java.util.List-java.lang.String-java.lang.String-java.util.List-boolean-">getTableDescriptors</a></span>(<a href="https://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/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&gt;&nbsp;htds,
                    <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;namespace,
@@ -1066,7 +1070,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
                    <a href="https://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/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&gt;&nbsp;tableNameList,
                    boolean&nbsp;includeSysTables)</code>&nbsp;</td>
 </tr>
-<tr id="i110" class="altColor">
+<tr id="i111" class="rowColor">
 <td class="colFirst"><code>(package 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/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</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/master/HMaster.html#getTableRegionForRow-org.apache.hadoop.hbase.TableName-byte:A-">getTableRegionForRow</a></span>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
                     byte[]&nbsp;rowKey)</code>
@@ -1074,110 +1078,110 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
  the given row.</div>
 </td>
 </tr>
-<tr id="i111" class="rowColor">
+<tr id="i112" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/master/TableStateManager.html" title="class in org.apache.hadoop.hbase.master">TableStateManager</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getTableStateManager--">getTableStateManager</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i112" class="altColor">
+<tr id="i113" class="rowColor">
 <td class="colFirst"><code>protected <a href="https://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/master/HMaster.html#getUseThisHostnameInstead-org.apache.hadoop.conf.Configuration-">getUseThisHostnameInstead</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf)</code>&nbsp;</td>
 </tr>
-<tr id="i113" class="rowColor">
+<tr id="i114" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html" title="class in org.apache.hadoop.hbase.procedure2.store.wal">WALProcedureStore</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getWalProcedureStore--">getWalProcedureStore</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i114" class="altColor">
+<tr id="i115" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getZooKeeper--">getZooKeeper</a></span>()</code>
 <div class="block">Gets the ZooKeeper instance for this server.</div>
 </td>
 </tr>
-<tr id="i115" class="rowColor">
+<tr id="i116" class="altColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#initClusterSchemaService--">initClusterSchemaService</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i116" class="altColor">
+<tr id="i117" class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#initializeZKBasedSystemTrackers--">initializeZKBasedSystemTrackers</a></span>()</code>
 <div class="block">
  Initialize all ZK based system trackers.</div>
 </td>
 </tr>
-<tr id="i117" class="rowColor">
+<tr id="i118" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#initMobCleaner--">initMobCleaner</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i118" class="altColor">
+<tr id="i119" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#initQuotaManager--">initQuotaManager</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i119" class="rowColor">
+<tr id="i120" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isActiveMaster--">isActiveMaster</a></span>()</code>
 <div class="block">Report whether this master is currently the active master or not.</div>
 </td>
 </tr>
-<tr id="i120" class="altColor">
+<tr id="i121" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isBalancerOn--">isBalancerOn</a></span>()</code>
 <div class="block">Queries the state of the <a href="../../../../../org/apache/hadoop/hbase/zookeeper/LoadBalancerTracker.html" title="class in org.apache.hadoop.hbase.zookeeper"><code>LoadBalancerTracker</code></a>.</div>
 </td>
 </tr>
-<tr id="i121" class="rowColor">
+<tr id="i122" class="altColor">
 <td class="colFirst"><code>(package private) boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isCatalogJanitorEnabled--">isCatalogJanitorEnabled</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i122" class="altColor">
+<tr id="i123" class="rowColor">
 <td class="colFirst"><code>private static boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isCatalogTable-org.apache.hadoop.hbase.TableName-">isCatalogTable</a></span>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</code>&nbsp;</td>
 </tr>
-<tr id="i123" class="rowColor">
+<tr id="i124" class="altColor">
 <td class="colFirst"><code>(package private) boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isCleanerChoreEnabled--">isCleanerChoreEnabled</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i124" class="altColor">
+<tr id="i125" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isInitialized--">isInitialized</a></span>()</code>
 <div class="block">Report whether this master has completed with its initialization and is
  ready.</div>
 </td>
 </tr>
-<tr id="i125" class="rowColor">
+<tr id="i126" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isInMaintenanceMode--">isInMaintenanceMode</a></span>()</code>
 <div class="block">Report whether this master is in maintenance mode.</div>
 </td>
 </tr>
-<tr id="i126" class="altColor">
+<tr id="i127" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isNormalizerOn--">isNormalizerOn</a></span>()</code>
 <div class="block">Queries the state of the <a href="../../../../../org/apache/hadoop/hbase/zookeeper/RegionNormalizerTracker.html" title="class in org.apache.hadoop.hbase.zookeeper"><code>RegionNormalizerTracker</code></a>.</div>
 </td>
 </tr>
-<tr id="i127" class="rowColor">
+<tr id="i128" class="altColor">
 <td class="colFirst"><code>private boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isRegionOnline-org.apache.hadoop.hbase.client.RegionInfo-">isRegionOnline</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;ri)</code>&nbsp;</td>
 </tr>
-<tr id="i128" class="altColor">
+<tr id="i129" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isSplitOrMergeEnabled-org.apache.hadoop.hbase.client.MasterSwitchType-">isSplitOrMergeEnabled</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/MasterSwitchType.html" title="enum in org.apache.hadoop.hbase.client">MasterSwitchType</a>&nbsp;switchType)</code>
 <div class="block">Queries the state of the <a href="../../../../../org/apache/hadoop/hbase/master/SplitOrMergeTracker.html" title="class in org.apache.hadoop.hbase.master"><code>SplitOrMergeTracker</code></a>.</div>
 </td>
 </tr>
-<tr id="i129" class="rowColor">
+<tr id="i130" class="altColor">
 <td class="colFirst"><code><a href="https://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/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/master/HMaster.html#listDecommissionedRegionServers--">listDecommissionedRegionServers</a></span>()</code>
 <div class="block">List region servers marked as decommissioned (previously called 'draining') to not get regions
  assigned to them.</div>
 </td>
 </tr>
-<tr id="i130" class="altColor">
+<tr id="i131" class="rowColor">
 <td class="colFirst"><code><a href="https://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/replication/ReplicationPeerDescription.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerDescription</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#listReplicationPeers-java.lang.String-">listReplicationPeers</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;regex)</code>
 <div class="block">Return a list of replication peers.</div>
 </td>
 </tr>
-<tr id="i131" class="rowColor">
+<tr id="i132" class="altColor">
 <td class="colFirst"><code><a href="https://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/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#listTableDescriptors-java.lang.String-java.lang.String-java.util.List-boolean-">listTableDescriptors</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;namespace,
                     <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;regex,
@@ -1186,13 +1190,13 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <div class="block">Returns the list of table descriptors that match the specified request</div>
 </td>
 </tr>
-<tr id="i132" class="altColor">
+<tr id="i133" class="rowColor">
 <td class="colFirst"><code><a href="https://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/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#listTableDescriptorsByNamespace-java.lang.String-">listTableDescriptorsByNamespace</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</code>
 <div class="block">Get list of table descriptors by namespace</div>
 </td>
 </tr>
-<tr id="i133" class="rowColor">
+<tr id="i134" class="altColor">
 <td class="colFirst"><code><a href="https://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/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#listTableNames-java.lang.String-java.lang.String-boolean-">listTableNames</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;namespace,
               <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;regex,
@@ -1200,24 +1204,24 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <div class="block">Returns the list of table names that match the specified request</div>
 </td>
 </tr>
-<tr id="i134" class="altColor">
+<tr id="i135" class="rowColor">
 <td class="colFirst"><code><a href="https://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/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#listTableNamesByNamespace-java.lang.String-">listTableNamesByNamespace</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</code>
 <div class="block">Get list of table names by namespace</div>
 </td>
 </tr>
-<tr id="i135" class="rowColor">
+<tr id="i136" class="altColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#login-org.apache.hadoop.hbase.security.UserProvider-java.lang.String-">login</a></span>(<a href="../../../../../org/apache/hadoop/hbase/security/UserProvider.html" title="class in org.apache.hadoop.hbase.security">UserProvider</a>&nbsp;user,
      <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;host)</code>
 <div class="block">For compatibility, if failed with regionserver credentials, try the master one</div>
 </td>
 </tr>
-<tr id="i136" class="altColor">
+<tr id="i137" class="rowColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#main-java.lang.String:A-">main</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;args)</code>&nbsp;</td>
 </tr>
-<tr id="i137" class="rowColor">
+<tr id="i138" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#mergeRegions-org.apache.hadoop.hbase.client.RegionInfo:A-boolean-long-long-">mergeRegions</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>[]&nbsp;regionsToMerge,
             boolean&nbsp;forcible,
@@ -1226,7 +1230,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <div class="block">Merge regions in a table.</div>
 </td>
 </tr>
-<tr id="i138" class="altColor">
+<tr id="i139" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#modifyColumn-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.client.ColumnFamilyDescriptor-long-long-">modifyColumn</a></span>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
             <a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>&nbsp;descriptor,
@@ -1235,7 +1239,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <div class="block">Modify the column descriptor of an existing column in an existing table</div>
 </td>
 </tr>
-<tr id="i139" class="rowColor">
+<tr id="i140" class="altColor">
 <td class="colFirst"><code>(package private) long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#modifyNamespace-org.apache.hadoop.hbase.NamespaceDescriptor-long-long-">modifyNamespace</a></span>(<a href="../../../../../org/apache/hadoop/hbase/NamespaceDescriptor.html" title="class in org.apache.hadoop.hbase">NamespaceDescriptor</a>&nbsp;newNsDescriptor,
                long&nbsp;nonceGroup,
@@ -1243,14 +1247,14 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <div class="block">Modify an existing Namespace.</div>
 </td>
 </tr>
-<tr id="i140" class="altColor">
+<tr id="i141" class="rowColor">
 <td class="colFirst"><code>private long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#modifyTable-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.master.HMaster.TableDescriptorGetter-long-long-">modifyTable</a></span>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
            <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.TableDescriptorGetter.html" title="interface in org.apache.hadoop.hbase.master">HMaster.TableDescriptorGetter</a>&nbsp;newDescriptorGetter,
            long&nbsp;nonceGroup,
            long&nbsp;nonce)</code>&nbsp;</td>
 </tr>
-<tr id="i141" class="rowColor">
+<tr id="i142" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#modifyTable-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.client.TableDescriptor-long-long-">modifyTable</a></span>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
            <a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;newDescriptor,
@@ -1259,22 +1263,22 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <div class="block">Modify the descriptor of an existing table</div>
 </td>
 </tr>
-<tr id="i142" class="altColor">
+<tr id="i143" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#move-byte:A-byte:A-">move</a></span>(byte[]&nbsp;encodedRegionName,
     byte[]&nbsp;destServerName)</code>&nbsp;</td>
 </tr>
-<tr id="i143" class="rowColor">
+<tr id="i144" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#normalizeRegions--">normalizeRegions</a></span>()</code>
 <div class="block">Perform normalization of cluster (invoked by <a href="../../../../../org/apache/hadoop/hbase/master/normalizer/RegionNormalizerChore.html" title="class in org.apache.hadoop.hbase.master.normalizer"><code>RegionNormalizerChore</code></a>).</div>
 </td>
 </tr>
-<tr id="i144" class="altColor">
+<tr id="i145" class="rowColor">
 <td class="colFirst"><code>private int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#putUpJettyServer--">putUpJettyServer</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i145" class="rowColor">
+<tr id="i146" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#recommissionRegionServer-org.apache.hadoop.hbase.ServerName-java.util.List-">recommissionRegionServer</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;server,
                         <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;byte[]&gt;&nbsp;encodedRegionNames)</code>
@@ -1282,37 +1286,37 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
  assignments.</div>
 </td>
 </tr>
-<tr id="i146" class="altColor">
+<tr id="i147" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#registerService-com.google.protobuf.Service-">registerService</a></span>(com.google.protobuf.Service&nbsp;instance)</code>
 <div class="block">Registers a new protocol buffer <code>Service</code> subclass as a coprocessor endpoint to be
  available for handling</div>
 </td>
 </tr>
-<tr id="i147" class="rowColor">
+<tr id="i148" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#remoteProcedureCompleted-long-">remoteProcedureCompleted</a></span>(long&nbsp;procId)</code>&nbsp;</td>
 </tr>
-<tr id="i148" class="altColor">
+<tr id="i149" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#remoteProcedureFailed-long-org.apache.hadoop.hbase.procedure2.RemoteProcedureException-">remoteProcedureFailed</a></span>(long&nbsp;procId,
                      <a href="../../../../../org/apache/hadoop/hbase/procedure2/RemoteProcedureException.html" title="class in org.apache.hadoop.hbase.procedure2">RemoteProcedureException</a>&nbsp;error)</code>&nbsp;</td>
 </tr>
-<tr id="i149" class="rowColor">
+<tr id="i150" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#removeReplicationPeer-java.lang.String-">removeReplicationPeer</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)</code>
 <div class="block">Removes a peer and stops the replication</div>
 </td>
 </tr>
-<tr id="i150" class="altColor">
+<tr id="i151" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#reportMobCompactionEnd-org.apache.hadoop.hbase.TableName-">reportMobCompactionEnd</a></span>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</code>&nbsp;</td>
 </tr>
-<tr id="i151" class="rowColor">
+<tr id="i152" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#reportMobCompactionStart-org.apache.hadoop.hbase.TableName-">reportMobCompactionStart</a></span>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</code>&nbsp;</td>
 </tr>
-<tr id="i152" class="altColor">
+<tr id="i153" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#requestMobCompaction-org.apache.hadoop.hbase.TableName-java.util.List-boolean-">requestMobCompaction</a></span>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
                     <a href="https://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/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>&gt;&nbsp;columns,
@@ -1320,43 +1324,43 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <div class="block">Requests mob compaction.</div>
 </td>
 </tr>
-<tr id="i153" class="rowColor">
+<tr id="i154" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#restoreSnapshot-org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription-long-long-boolean-">restoreSnapshot</a></span>(org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription&nbsp;snapshotDesc,
                long&nbsp;nonceGroup,
                long&nbsp;nonce,
                boolean&nbsp;restoreAcl)</code>&nbsp;</td>
 </tr>
-<tr id="i154" class="altColor">
+<tr id="i155" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#run--">run</a></span>()</code>
 <div class="block">The HRegionServer sticks in this loop until closed.</div>
 </td>
 </tr>
-<tr id="i155" class="rowColor">
+<tr id="i156" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><

<TRUNCATED>

[38/43] hbase-site git commit: Published site at 7ab77518a2569e2416a50020393aa386e7734501.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/devapidocs/org/apache/hadoop/hbase/io/HalfStoreFileReader.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/io/HalfStoreFileReader.html b/devapidocs/org/apache/hadoop/hbase/io/HalfStoreFileReader.html
index 2fcd8c9..c5e5444 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/HalfStoreFileReader.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/HalfStoreFileReader.html
@@ -292,7 +292,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileRe
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a></h3>
-<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#close-boolean-">close</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getBloomFilterType--">getBloomFilterType</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getComparator--">getComparator</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getDeleteFamilyCnt--">getDeleteFamilyCnt</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getHFileMinorVersion--">getHFileMinorVersion</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getHFileReader--">getHFileReader</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getHFileVersion--">getHFileVersion</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getLastRowKey--">getLastRowKey</a>, <a href="../../.
 ./../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getMaxTimestamp--">getMaxTimestamp</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getScanner-boolean-boolean-">getScanner</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getSequenceID--">getSequenceID</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getStoreFileScanner-boolean-boolean-boolean-long-long-boolean-">getStoreFileScanner</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getTotalBloomSize--">getTotalBloomSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getTotalUncompressedBytes--">getTotalUncompressedBytes</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#indexSize--">indexSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#isBulkLoaded--"
 >isBulkLoaded</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#isPrimaryReplicaReader--">isPrimaryReplicaReader</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#length--">length</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#loadBloomfilter--">loadBloomfilter</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#loadBloomfilter-org.apache.hadoop.hbase.io.hfile.BlockType-">loadBloomfilter</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#loadFileInfo--">loadFileInfo</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#passesDeleteFamilyBloomFilter-byte:A-int-int-">passesDeleteFamilyBloomFilter</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#passesGeneralRowBloomFilter-byte:A-int-int-">passesGeneralRowBloomFilter</a>, <a href="../
 ../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#passesGeneralRowColBloomFilter-org.apache.hadoop.hbase.Cell-">passesGeneralRowColBloomFilter</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#setBulkLoaded-boolean-">setBulkLoaded</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#setDeleteFamilyBloomFilterFaulty--">setDeleteFamilyBloomFilterFaulty</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#setGeneralBloomFilterFaulty--">setGeneralBloomFilterFaulty</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#setListener-org.apache.hadoop.hbase.regionserver.StoreFileReader.Listener-">setListener</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#setSequenceID-long-">setSequenceID</a></code></li>
+<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#close-boolean-">close</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getBloomFilterType--">getBloomFilterType</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getComparator--">getComparator</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getDeleteFamilyCnt--">getDeleteFamilyCnt</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getDelimiter--">getDelimiter</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getHFileMinorVersion--">getHFileMinorVersion</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getHFileReader--">getHFileReader</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getHFileVersion--">getHFileVersion</a>, <a href="../../../
 ../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getLastRowKey--">getLastRowKey</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getMaxTimestamp--">getMaxTimestamp</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getPrefixLength--">getPrefixLength</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getScanner-boolean-boolean-">getScanner</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getSequenceID--">getSequenceID</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getStoreFileScanner-boolean-boolean-boolean-long-long-boolean-">getStoreFileScanner</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getTotalBloomSize--">getTotalBloomSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getTotalUncompressedBytes--">
 getTotalUncompressedBytes</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#indexSize--">indexSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#isBulkLoaded--">isBulkLoaded</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#isPrimaryReplicaReader--">isPrimaryReplicaReader</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#length--">length</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#loadBloomfilter--">loadBloomfilter</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#loadBloomfilter-org.apache.hadoop.hbase.io.hfile.BlockType-">loadBloomfilter</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#loadFileInfo--">loadFileInfo</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#passesDeleteFami
 lyBloomFilter-byte:A-int-int-">passesDeleteFamilyBloomFilter</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#passesGeneralRowColBloomFilter-org.apache.hadoop.hbase.Cell-">passesGeneralRowColBloomFilter</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#setBulkLoaded-boolean-">setBulkLoaded</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#setDeleteFamilyBloomFilterFaulty--">setDeleteFamilyBloomFilterFaulty</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#setGeneralBloomFilterFaulty--">setGeneralBloomFilterFaulty</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#setListener-org.apache.hadoop.hbase.regionserver.StoreFileReader.Listener-">setListener</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#setSequenceID-long-">setSequenceID</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/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 3685fbb..febd7f6 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
@@ -274,12 +274,12 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.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/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/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.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/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/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/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/Cacheable.MemoryType.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">Cacheable.MemoryType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/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 91a2ed4..427b9f5 100644
--- a/devapidocs/org/apache/hadoop/hbase/ipc/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/ipc/package-tree.html
@@ -354,8 +354,8 @@
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
 <li type="circle">org.apache.hadoop.hbase.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>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/devapidocs/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.TableInfo.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.TableInfo.html b/devapidocs/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.TableInfo.html
index 3adb296..6c87393 100644
--- a/devapidocs/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.TableInfo.html
+++ b/devapidocs/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.TableInfo.html
@@ -113,7 +113,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>static class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.110">HFileOutputFormat2.TableInfo</a>
+<pre>static class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.111">HFileOutputFormat2.TableInfo</a>
 extends <a href="https://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>
@@ -218,7 +218,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>tableDesctiptor</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.TableInfo.html#line.111">tableDesctiptor</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.TableInfo.html#line.112">tableDesctiptor</a></pre>
 </li>
 </ul>
 <a name="regionLocator">
@@ -227,7 +227,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>regionLocator</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/RegionLocator.html" title="interface in org.apache.hadoop.hbase.client">RegionLocator</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.TableInfo.html#line.112">regionLocator</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/RegionLocator.html" title="interface in org.apache.hadoop.hbase.client">RegionLocator</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.TableInfo.html#line.113">regionLocator</a></pre>
 </li>
 </ul>
 </li>
@@ -244,7 +244,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TableInfo</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.TableInfo.html#line.114">TableInfo</a>(<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;tableDesctiptor,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.TableInfo.html#line.115">TableInfo</a>(<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;tableDesctiptor,
                  <a href="../../../../../org/apache/hadoop/hbase/client/RegionLocator.html" title="interface in org.apache.hadoop.hbase.client">RegionLocator</a>&nbsp;regionLocator)</pre>
 </li>
 </ul>
@@ -263,7 +263,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <li class="blockList">
 <h4>getHTableDescriptor</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HTableDescriptor.html" title="class in org.apache.hadoop.hbase">HTableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.TableInfo.html#line.125">getHTableDescriptor</a>()</pre>
+public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HTableDescriptor.html" title="class in org.apache.hadoop.hbase">HTableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.TableInfo.html#line.126">getHTableDescriptor</a>()</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">use <a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.TableInfo.html#getTableDescriptor--"><code>getTableDescriptor()</code></a></span></div>
 <div class="block">The modification for the returned HTD doesn't affect the inner TD.</div>
 <dl>
@@ -278,7 +278,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HTableDescriptor.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>getTableDescriptor</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.TableInfo.html#line.129">getTableDescriptor</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.TableInfo.html#line.130">getTableDescriptor</a>()</pre>
 </li>
 </ul>
 <a name="getRegionLocator--">
@@ -287,7 +287,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HTableDescriptor.htm
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getRegionLocator</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/RegionLocator.html" title="interface in org.apache.hadoop.hbase.client">RegionLocator</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.TableInfo.html#line.133">getRegionLocator</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/RegionLocator.html" title="interface in org.apache.hadoop.hbase.client">RegionLocator</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.TableInfo.html#line.134">getRegionLocator</a>()</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/devapidocs/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.WriterLength.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.WriterLength.html b/devapidocs/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.WriterLength.html
index 7d66d1c..58757b6 100644
--- a/devapidocs/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.WriterLength.html
+++ b/devapidocs/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.WriterLength.html
@@ -107,7 +107,7 @@
 </dl>
 <hr>
 <br>
-<pre>static class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.481">HFileOutputFormat2.WriterLength</a>
+<pre>static class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.491">HFileOutputFormat2.WriterLength</a>
 extends <a href="https://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>
@@ -188,7 +188,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>written</h4>
-<pre>long <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.WriterLength.html#line.482">written</a></pre>
+<pre>long <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.WriterLength.html#line.492">written</a></pre>
 </li>
 </ul>
 <a name="writer">
@@ -197,7 +197,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>writer</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileWriter.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileWriter</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.WriterLength.html#line.483">writer</a></pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileWriter.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileWriter</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.WriterLength.html#line.493">writer</a></pre>
 </li>
 </ul>
 </li>
@@ -214,7 +214,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>WriterLength</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.WriterLength.html#line.481">WriterLength</a>()</pre>
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.WriterLength.html#line.491">WriterLength</a>()</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/devapidocs/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html b/devapidocs/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html
index d234a60..60a9095 100644
--- a/devapidocs/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html
+++ b/devapidocs/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":9,"i5":9,"i6":9,"i7":9,"i8":9,"i9":9,"i10":9,"i11":9,"i12":9,"i13":10,"i14":9,"i15":9,"i16":9,"i17":9};
+var methods = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":9,"i5":9,"i6":9,"i7":9,"i8":9,"i9":9,"i10":9,"i11":9,"i12":9,"i13":9,"i14":10,"i15":9,"i16":9,"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";
@@ -124,7 +124,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Public
-public class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.107">HFileOutputFormat2</a>
+public class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.108">HFileOutputFormat2</a>
 extends org.apache.hadoop.mapreduce.lib.output.FileOutputFormat&lt;<a href="../../../../../org/apache/hadoop/hbase/io/ImmutableBytesWritable.html" title="class in org.apache.hadoop.hbase.io">ImmutableBytesWritable</a>,<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;</pre>
 <div class="block">Writes HFiles. Passed Cells must arrive in order.
  Writes current time as the sequence id for the file. Sets the major compacted
@@ -193,8 +193,18 @@ extends org.apache.hadoop.mapreduce.lib.output.FileOutputFormat&lt;<a href="../.
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>(package private) static <a href="https://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/mapreduce/HFileOutputFormat2.html#BLOOM_PARAM_FAMILIES_CONF_KEY">BLOOM_PARAM_FAMILIES_CONF_KEY</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>(package private) static <a href="https://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/mapreduce/HFileOutputFormat2.html#BLOOM_TYPE_FAMILIES_CONF_KEY">BLOOM_TYPE_FAMILIES_CONF_KEY</a></span></code>&nbsp;</td>
 </tr>
+<tr class="altColor">
+<td class="colFirst"><code>(package private) static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/Function.html?is-external=true" title="class or interface in java.util.function">Function</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>,<a href="https://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>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#bloomParamDetails">bloomParamDetails</a></span></code>
+<div class="block">Serialize column family to bloom param map to configuration.</div>
+</td>
+</tr>
 <tr class="rowColor">
 <td class="colFirst"><code>(package private) static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/Function.html?is-external=true" title="class or interface in java.util.function">Function</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>,<a href="https://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>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#bloomTypeDetails">bloomTypeDetails</a></span></code>
@@ -358,43 +368,50 @@ extends org.apache.hadoop.mapreduce.lib.output.FileOutputFormat&lt;<a href="../.
 </td>
 </tr>
 <tr id="i8" class="altColor">
+<td class="colFirst"><code>(package private) static <a href="https://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="https://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>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#createFamilyBloomParamMap-org.apache.hadoop.conf.Configuration-">createFamilyBloomParamMap</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf)</code>
+<div class="block">Runs inside the task to deserialize column family to bloom filter param
+ map from the configuration.</div>
+</td>
+</tr>
+<tr id="i9" class="rowColor">
 <td class="colFirst"><code>(package private) static <a href="https://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="../../../../../org/apache/hadoop/hbase/regionserver/BloomType.html" title="enum in org.apache.hadoop.hbase.regionserver">BloomType</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#createFamilyBloomTypeMap-org.apache.hadoop.conf.Configuration-">createFamilyBloomTypeMap</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf)</code>
 <div class="block">Runs inside the task to deserialize column family to bloom filter type
  map from the configuration.</div>
 </td>
 </tr>
-<tr id="i9" class="rowColor">
+<tr id="i10" class="altColor">
 <td class="colFirst"><code>(package private) static <a href="https://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="../../../../../org/apache/hadoop/hbase/io/compress/Compression.Algorithm.html" title="enum in org.apache.hadoop.hbase.io.compress">Compression.Algorithm</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#createFamilyCompressionMap-org.apache.hadoop.conf.Configuration-">createFamilyCompressionMap</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf)</code>
 <div class="block">Runs inside the task to deserialize column family to compression algorithm
  map from the configuration.</div>
 </td>
 </tr>
-<tr id="i10" class="altColor">
+<tr id="i11" class="rowColor">
 <td class="colFirst"><code>private static <a href="https://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="https://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>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#createFamilyConfValueMap-org.apache.hadoop.conf.Configuration-java.lang.String-">createFamilyConfValueMap</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                         <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;confName)</code>
 <div class="block">Run inside the task to deserialize column family to given conf value map.</div>
 </td>
 </tr>
-<tr id="i11" class="rowColor">
+<tr id="i12" class="altColor">
 <td class="colFirst"><code>(package private) static <a href="https://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="../../../../../org/apache/hadoop/hbase/io/encoding/DataBlockEncoding.html" title="enum in org.apache.hadoop.hbase.io.encoding">DataBlockEncoding</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#createFamilyDataBlockEncodingMap-org.apache.hadoop.conf.Configuration-">createFamilyDataBlockEncodingMap</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf)</code>
 <div class="block">Runs inside the task to deserialize column family to data block encoding
  type map from the configuration.</div>
 </td>
 </tr>
-<tr id="i12" class="altColor">
+<tr id="i13" class="rowColor">
 <td class="colFirst"><code>(package private) static &lt;V extends <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;<br>org.apache.hadoop.mapreduce.RecordWriter&lt;<a href="../../../../../org/apache/hadoop/hbase/io/ImmutableBytesWritable.html" title="class in org.apache.hadoop.hbase.io">ImmutableBytesWritable</a>,V&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#createRecordWriter-org.apache.hadoop.mapreduce.TaskAttemptContext-org.apache.hadoop.mapreduce.OutputCommitter-">createRecordWriter</a></span>(org.apache.hadoop.mapreduce.TaskAttemptContext&nbsp;context,
                   org.apache.hadoop.mapreduce.OutputCommitter&nbsp;committer)</code>&nbsp;</td>
 </tr>
-<tr id="i13" class="rowColor">
+<tr id="i14" class="altColor">
 <td class="colFirst"><code>org.apache.hadoop.mapreduce.RecordWriter&lt;<a href="../../../../../org/apache/hadoop/hbase/io/ImmutableBytesWritable.html" title="class in org.apache.hadoop.hbase.io">ImmutableBytesWritable</a>,<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#getRecordWriter-org.apache.hadoop.mapreduce.TaskAttemptContext-">getRecordWriter</a></span>(org.apache.hadoop.mapreduce.TaskAttemptContext&nbsp;context)</code>&nbsp;</td>
 </tr>
-<tr id="i14" class="altColor">
+<tr id="i15" class="rowColor">
 <td class="colFirst"><code>private static <a href="https://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/io/ImmutableBytesWritable.html" title="class in org.apache.hadoop.hbase.io">ImmutableBytesWritable</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#getRegionStartKeys-java.util.List-boolean-">getRegionStartKeys</a></span>(<a href="https://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/client/RegionLocator.html" title="interface in org.apache.hadoop.hbase.client">RegionLocator</a>&gt;&nbsp;regionLocators,
                   boolean&nbsp;writeMultipleTables)</code>
@@ -402,17 +419,17 @@ extends org.apache.hadoop.mapreduce.lib.output.FileOutputFormat&lt;<a href="../.
  as a list of ImmutableBytesWritable.</div>
 </td>
 </tr>
-<tr id="i15" class="rowColor">
+<tr id="i16" class="altColor">
 <td class="colFirst"><code>protected static byte[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#getTableNameSuffixedWithFamily-byte:A-byte:A-">getTableNameSuffixedWithFamily</a></span>(byte[]&nbsp;tableName,
                               byte[]&nbsp;family)</code>&nbsp;</td>
 </tr>
-<tr id="i16" class="altColor">
+<tr id="i17" class="rowColor">
 <td class="colFirst"><code>(package private) static <a href="https://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/mapreduce/HFileOutputFormat2.html#serializeColumnFamilyAttribute-java.util.function.Function-java.util.List-">serializeColumnFamilyAttribute</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/Function.html?is-external=true" title="class or interface in java.util.function">Function</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>,<a href="https://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;fn,
                               <a href="https://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/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&gt;&nbsp;allTables)</code>&nbsp;</td>
 </tr>
-<tr id="i17" class="rowColor">
+<tr id="i18" class="altColor">
 <td class="colFirst"><code>private static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#writePartitions-org.apache.hadoop.conf.Configuration-org.apache.hadoop.fs.Path-java.util.List-boolean-">writePartitions</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                org.apache.hadoop.fs.Path&nbsp;partitionsPath,
@@ -457,7 +474,7 @@ extends org.apache.hadoop.mapreduce.lib.output.FileOutputFormat&lt;<a href="../.
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.109">LOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.110">LOG</a></pre>
 </li>
 </ul>
 <a name="tableSeparator">
@@ -466,7 +483,7 @@ extends org.apache.hadoop.mapreduce.lib.output.FileOutputFormat&lt;<a href="../.
 <ul class="blockList">
 <li class="blockList">
 <h4>tableSeparator</h4>
-<pre>protected static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.138">tableSeparator</a></pre>
+<pre>protected static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.139">tableSeparator</a></pre>
 </li>
 </ul>
 <a name="COMPRESSION_FAMILIES_CONF_KEY">
@@ -475,7 +492,7 @@ extends org.apache.hadoop.mapreduce.lib.output.FileOutputFormat&lt;<a href="../.
 <ul class="blockList">
 <li class="blockList">
 <h4>COMPRESSION_FAMILIES_CONF_KEY</h4>
-<pre>static final&nbsp;<a href="https://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/mapreduce/HFileOutputFormat2.html#line.148">COMPRESSION_FAMILIES_CONF_KEY</a></pre>
+<pre>static final&nbsp;<a href="https://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/mapreduce/HFileOutputFormat2.html#line.149">COMPRESSION_FAMILIES_CONF_KEY</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.mapreduce.HFileOutputFormat2.COMPRESSION_FAMILIES_CONF_KEY">Constant Field Values</a></dd>
@@ -488,20 +505,33 @@ extends org.apache.hadoop.mapreduce.lib.output.FileOutputFormat&lt;<a href="../.
 <ul class="blockList">
 <li class="blockList">
 <h4>BLOOM_TYPE_FAMILIES_CONF_KEY</h4>
-<pre>static final&nbsp;<a href="https://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/mapreduce/HFileOutputFormat2.html#line.150">BLOOM_TYPE_FAMILIES_CONF_KEY</a></pre>
+<pre>static final&nbsp;<a href="https://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/mapreduce/HFileOutputFormat2.html#line.151">BLOOM_TYPE_FAMILIES_CONF_KEY</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.mapreduce.HFileOutputFormat2.BLOOM_TYPE_FAMILIES_CONF_KEY">Constant Field Values</a></dd>
 </dl>
 </li>
 </ul>
+<a name="BLOOM_PARAM_FAMILIES_CONF_KEY">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>BLOOM_PARAM_FAMILIES_CONF_KEY</h4>
+<pre>static final&nbsp;<a href="https://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/mapreduce/HFileOutputFormat2.html#line.153">BLOOM_PARAM_FAMILIES_CONF_KEY</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.mapreduce.HFileOutputFormat2.BLOOM_PARAM_FAMILIES_CONF_KEY">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
 <a name="BLOCK_SIZE_FAMILIES_CONF_KEY">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>BLOCK_SIZE_FAMILIES_CONF_KEY</h4>
-<pre>static final&nbsp;<a href="https://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/mapreduce/HFileOutputFormat2.html#line.152">BLOCK_SIZE_FAMILIES_CONF_KEY</a></pre>
+<pre>static final&nbsp;<a href="https://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/mapreduce/HFileOutputFormat2.html#line.155">BLOCK_SIZE_FAMILIES_CONF_KEY</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.mapreduce.HFileOutputFormat2.BLOCK_SIZE_FAMILIES_CONF_KEY">Constant Field Values</a></dd>
@@ -514,7 +544,7 @@ extends org.apache.hadoop.mapreduce.lib.output.FileOutputFormat&lt;<a href="../.
 <ul class="blockList">
 <li class="blockList">
 <h4>DATABLOCK_ENCODING_FAMILIES_CONF_KEY</h4>
-<pre>static final&nbsp;<a href="https://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/mapreduce/HFileOutputFormat2.html#line.154">DATABLOCK_ENCODING_FAMILIES_CONF_KEY</a></pre>
+<pre>static final&nbsp;<a href="https://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/mapreduce/HFileOutputFormat2.html#line.157">DATABLOCK_ENCODING_FAMILIES_CONF_KEY</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.mapreduce.HFileOutputFormat2.DATABLOCK_ENCODING_FAMILIES_CONF_KEY">Constant Field Values</a></dd>
@@ -527,7 +557,7 @@ extends org.apache.hadoop.mapreduce.lib.output.FileOutputFormat&lt;<a href="../.
 <ul class="blockList">
 <li class="blockList">
 <h4>DATABLOCK_ENCODING_OVERRIDE_CONF_KEY</h4>
-<pre>public static final&nbsp;<a href="https://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/mapreduce/HFileOutputFormat2.html#line.161">DATABLOCK_ENCODING_OVERRIDE_CONF_KEY</a></pre>
+<pre>public static final&nbsp;<a href="https://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/mapreduce/HFileOutputFormat2.html#line.164">DATABLOCK_ENCODING_OVERRIDE_CONF_KEY</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.mapreduce.HFileOutputFormat2.DATABLOCK_ENCODING_OVERRIDE_CONF_KEY">Constant Field Values</a></dd>
@@ -540,7 +570,7 @@ extends org.apache.hadoop.mapreduce.lib.output.FileOutputFormat&lt;<a href="../.
 <ul class="blockList">
 <li class="blockList">
 <h4>LOCALITY_SENSITIVE_CONF_KEY</h4>
-<pre>public static final&nbsp;<a href="https://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/mapreduce/HFileOutputFormat2.html#line.167">LOCALITY_SENSITIVE_CONF_KEY</a></pre>
+<pre>public static final&nbsp;<a href="https://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/mapreduce/HFileOutputFormat2.html#line.170">LOCALITY_SENSITIVE_CONF_KEY</a></pre>
 <div class="block">Keep locality while generating HFiles for bulkload. See HBASE-12596</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -554,7 +584,7 @@ extends org.apache.hadoop.mapreduce.lib.output.FileOutputFormat&lt;<a href="../.
 <ul class="blockList">
 <li class="blockList">
 <h4>DEFAULT_LOCALITY_SENSITIVE</h4>
-<pre>private static final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.169">DEFAULT_LOCALITY_SENSITIVE</a></pre>
+<pre>private static final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.172">DEFAULT_LOCALITY_SENSITIVE</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.mapreduce.HFileOutputFormat2.DEFAULT_LOCALITY_SENSITIVE">Constant Field Values</a></dd>
@@ -567,7 +597,7 @@ extends org.apache.hadoop.mapreduce.lib.output.FileOutputFormat&lt;<a href="../.
 <ul class="blockList">
 <li class="blockList">
 <h4>OUTPUT_TABLE_NAME_CONF_KEY</h4>
-<pre>static final&nbsp;<a href="https://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/mapreduce/HFileOutputFormat2.html#line.170">OUTPUT_TABLE_NAME_CONF_KEY</a></pre>
+<pre>static final&nbsp;<a href="https://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/mapreduce/HFileOutputFormat2.html#line.173">OUTPUT_TABLE_NAME_CONF_KEY</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.mapreduce.HFileOutputFormat2.OUTPUT_TABLE_NAME_CONF_KEY">Constant Field Values</a></dd>
@@ -580,7 +610,7 @@ extends org.apache.hadoop.mapreduce.lib.output.FileOutputFormat&lt;<a href="../.
 <ul class="blockList">
 <li class="blockList">
 <h4>MULTI_TABLE_HFILEOUTPUTFORMAT_CONF_KEY</h4>
-<pre>static final&nbsp;<a href="https://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/mapreduce/HFileOutputFormat2.html#line.172">MULTI_TABLE_HFILEOUTPUTFORMAT_CONF_KEY</a></pre>
+<pre>static final&nbsp;<a href="https://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/mapreduce/HFileOutputFormat2.html#line.175">MULTI_TABLE_HFILEOUTPUTFORMAT_CONF_KEY</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.mapreduce.HFileOutputFormat2.MULTI_TABLE_HFILEOUTPUTFORMAT_CONF_KEY">Constant Field Values</a></dd>
@@ -593,7 +623,7 @@ extends org.apache.hadoop.mapreduce.lib.output.FileOutputFormat&lt;<a href="../.
 <ul class="blockList">
 <li class="blockList">
 <h4>STORAGE_POLICY_PROPERTY</h4>
-<pre>public static final&nbsp;<a href="https://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/mapreduce/HFileOutputFormat2.html#line.175">STORAGE_POLICY_PROPERTY</a></pre>
+<pre>public static final&nbsp;<a href="https://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/mapreduce/HFileOutputFormat2.html#line.178">STORAGE_POLICY_PROPERTY</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.mapreduce.HFileOutputFormat2.STORAGE_POLICY_PROPERTY">Constant Field Values</a></dd>
@@ -606,7 +636,7 @@ extends org.apache.hadoop.mapreduce.lib.output.FileOutputFormat&lt;<a href="../.
 <ul class="blockList">
 <li class="blockList">
 <h4>STORAGE_POLICY_PROPERTY_CF_PREFIX</h4>
-<pre>public static final&nbsp;<a href="https://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/mapreduce/HFileOutputFormat2.html#line.176">STORAGE_POLICY_PROPERTY_CF_PREFIX</a></pre>
+<pre>public static final&nbsp;<a href="https://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/mapreduce/HFileOutputFormat2.html#line.179">STORAGE_POLICY_PROPERTY_CF_PREFIX</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.mapreduce.HFileOutputFormat2.STORAGE_POLICY_PROPERTY_CF_PREFIX">Constant Field Values</a></dd>
@@ -619,7 +649,7 @@ extends org.apache.hadoop.mapreduce.lib.output.FileOutputFormat&lt;<a href="../.
 <ul class="blockList">
 <li class="blockList">
 <h4>compressionDetails</h4>
-<pre>static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/Function.html?is-external=true" title="class or interface in java.util.function">Function</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.871">compressionDetails</a></pre>
+<pre>static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/Function.html?is-external=true" title="class or interface in java.util.function">Function</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.898">compressionDetails</a></pre>
 <div class="block">Serialize column family to compression algorithm map to configuration.
  Invoked while configuring the MR job for incremental load.</div>
 </li>
@@ -630,7 +660,7 @@ extends org.apache.hadoop.mapreduce.lib.output.FileOutputFormat&lt;<a href="../.
 <ul class="blockList">
 <li class="blockList">
 <h4>blockSizeDetails</h4>
-<pre>static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/Function.html?is-external=true" title="class or interface in java.util.function">Function</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.887">blockSizeDetails</a></pre>
+<pre>static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/Function.html?is-external=true" title="class or interface in java.util.function">Function</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.914">blockSizeDetails</a></pre>
 <div class="block">Serialize column family to block size map to configuration. Invoked while
  configuring the MR job for incremental load.</div>
 </li>
@@ -641,18 +671,29 @@ extends org.apache.hadoop.mapreduce.lib.output.FileOutputFormat&lt;<a href="../.
 <ul class="blockList">
 <li class="blockList">
 <h4>bloomTypeDetails</h4>
-<pre>static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/Function.html?is-external=true" title="class or interface in java.util.function">Function</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.903">bloomTypeDetails</a></pre>
+<pre>static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/Function.html?is-external=true" title="class or interface in java.util.function">Function</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.930">bloomTypeDetails</a></pre>
 <div class="block">Serialize column family to bloom type map to configuration. Invoked while
  configuring the MR job for incremental load.</div>
 </li>
 </ul>
+<a name="bloomParamDetails">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>bloomParamDetails</h4>
+<pre>static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/Function.html?is-external=true" title="class or interface in java.util.function">Function</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.951">bloomParamDetails</a></pre>
+<div class="block">Serialize column family to bloom param map to configuration. Invoked while
+ configuring the MR job for incremental load.</div>
+</li>
+</ul>
 <a name="dataBlockEncodingDetails">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>dataBlockEncodingDetails</h4>
-<pre>static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/Function.html?is-external=true" title="class or interface in java.util.function">Function</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.923">dataBlockEncodingDetails</a></pre>
+<pre>static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/Function.html?is-external=true" title="class or interface in java.util.function">Function</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.974">dataBlockEncodingDetails</a></pre>
 <div class="block">Serialize column family to data block encoding map to configuration.
  Invoked while configuring the MR job for incremental load.</div>
 </li>
@@ -671,7 +712,7 @@ extends org.apache.hadoop.mapreduce.lib.output.FileOutputFormat&lt;<a href="../.
 <ul class="blockListLast">
 <li class="blockList">
 <h4>HFileOutputFormat2</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.107">HFileOutputFormat2</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.108">HFileOutputFormat2</a>()</pre>
 </li>
 </ul>
 </li>
@@ -688,7 +729,7 @@ extends org.apache.hadoop.mapreduce.lib.output.FileOutputFormat&lt;<a href="../.
 <ul class="blockList">
 <li class="blockList">
 <h4>combineTableNameSuffix</h4>
-<pre>protected static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.140">combineTableNameSuffix</a>(byte[]&nbsp;tableName,
+<pre>protected static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.141">combineTableNameSuffix</a>(byte[]&nbsp;tableName,
                                                byte[]&nbsp;suffix)</pre>
 </li>
 </ul>
@@ -698,7 +739,7 @@ extends org.apache.hadoop.mapreduce.lib.output.FileOutputFormat&lt;<a href="../.
 <ul class="blockList">
 <li class="blockList">
 <h4>getRecordWriter</h4>
-<pre>public&nbsp;org.apache.hadoop.mapreduce.RecordWriter&lt;<a href="../../../../../org/apache/hadoop/hbase/io/ImmutableBytesWritable.html" title="class in org.apache.hadoop.hbase.io">ImmutableBytesWritable</a>,<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.179">getRecordWriter</a>(org.apache.hadoop.mapreduce.TaskAttemptContext&nbsp;context)
+<pre>public&nbsp;org.apache.hadoop.mapreduce.RecordWriter&lt;<a href="../../../../../org/apache/hadoop/hbase/io/ImmutableBytesWritable.html" title="class in org.apache.hadoop.hbase.io">ImmutableBytesWritable</a>,<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.182">getRecordWriter</a>(org.apache.hadoop.mapreduce.TaskAttemptContext&nbsp;context)
                                                                                       throws <a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <dl>
@@ -716,7 +757,7 @@ extends org.apache.hadoop.mapreduce.lib.output.FileOutputFormat&lt;<a href="../.
 <ul class="blockList">
 <li class="blockList">
 <h4>getTableNameSuffixedWithFamily</h4>
-<pre>protected static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.184">getTableNameSuffixedWithFamily</a>(byte[]&nbsp;tableName,
+<pre>protected static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.187">getTableNameSuffixedWithFamily</a>(byte[]&nbsp;tableName,
                                                        byte[]&nbsp;family)</pre>
 </li>
 </ul>
@@ -726,7 +767,7 @@ extends org.apache.hadoop.mapreduce.lib.output.FileOutputFormat&lt;<a href="../.
 <ul class="blockList">
 <li class="blockList">
 <h4>createRecordWriter</h4>
-<pre>static&nbsp;&lt;V extends <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;org.apache.hadoop.mapreduce.RecordWriter&lt;<a href="../../../../../org/apache/hadoop/hbase/io/ImmutableBytesWritable.html" title="class in org.apache.hadoop.hbase.io">ImmutableBytesWritable</a>,V&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.189">createRecordWriter</a>(org.apache.hadoop.mapreduce.TaskAttemptContext&nbsp;context,
+<pre>static&nbsp;&lt;V extends <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;org.apache.hadoop.mapreduce.RecordWriter&lt;<a href="../../../../../org/apache/hadoop/hbase/io/ImmutableBytesWritable.html" title="class in org.apache.hadoop.hbase.io">ImmutableBytesWritable</a>,V&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.192">createRecordWriter</a>(org.apache.hadoop.mapreduce.TaskAttemptContext&nbsp;context,
                                                                                                               org.apache.hadoop.mapreduce.OutputCommitter&nbsp;committer)
                                                                                                        throws <a href="https://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>
@@ -741,7 +782,7 @@ extends org.apache.hadoop.mapreduce.lib.output.FileOutputFormat&lt;<a href="../.
 <ul class="blockList">
 <li class="blockList">
 <h4>configureStoragePolicy</h4>
-<pre>static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.466">configureStoragePolicy</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.476">configureStoragePolicy</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                                    org.apache.hadoop.fs.FileSystem&nbsp;fs,
                                    byte[]&nbsp;tableAndFamily,
                                    org.apache.hadoop.fs.Path&nbsp;cfPath)</pre>
@@ -754,7 +795,7 @@ extends org.apache.hadoop.mapreduce.lib.output.FileOutputFormat&lt;<a href="../.
 <ul class="blockList">
 <li class="blockList">
 <h4>getRegionStartKeys</h4>
-<pre>private static&nbsp;<a href="https://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/io/ImmutableBytesWritable.html" title="class in org.apache.hadoop.hbase.io">ImmutableBytesWritable</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.490">getRegionStartKeys</a>(<a href="https://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/client/RegionLocator.html" title="interface in org.apache.hadoop.hbase.client">RegionLocator</a>&gt;&nbsp;regionLocators,
+<pre>private static&nbsp;<a href="https://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/io/ImmutableBytesWritable.html" title="class in org.apache.hadoop.hbase.io">ImmutableBytesWritable</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.500">getRegionStartKeys</a>(<a href="https://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/client/RegionLocator.html" title="interface in org.apache.hadoop.hbase.client">RegionLocator</a>&gt;&nbsp;regionLocators,
                                                                boolean&nbsp;writeMultipleTables)
                                                         throws <a href="https://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">Return the start keys of all of the regions in this table,
@@ -771,7 +812,7 @@ extends org.apache.hadoop.mapreduce.lib.output.FileOutputFormat&lt;<a href="../.
 <ul class="blockList">
 <li class="blockList">
 <h4>writePartitions</h4>
-<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.522">writePartitions</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.532">writePartitions</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                                     org.apache.hadoop.fs.Path&nbsp;partitionsPath,
                                     <a href="https://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/io/ImmutableBytesWritable.html" title="class in org.apache.hadoop.hbase.io">ImmutableBytesWritable</a>&gt;&nbsp;startKeys,
                                     boolean&nbsp;writeMultipleTables)
@@ -790,7 +831,7 @@ extends org.apache.hadoop.mapreduce.lib.output.FileOutputFormat&lt;<a href="../.
 <ul class="blockList">
 <li class="blockList">
 <h4>configureIncrementalLoad</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.575">configureIncrementalLoad</a>(org.apache.hadoop.mapreduce.Job&nbsp;job,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.585">configureIncrementalLoad</a>(org.apache.hadoop.mapreduce.Job&nbsp;job,
                                             <a href="../../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;table,
                                             <a href="../../../../../org/apache/hadoop/hbase/client/RegionLocator.html" title="interface in org.apache.hadoop.hbase.client">RegionLocator</a>&nbsp;regionLocator)
                                      throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -818,7 +859,7 @@ extends org.apache.hadoop.mapreduce.lib.output.FileOutputFormat&lt;<a href="../.
 <ul class="blockList">
 <li class="blockList">
 <h4>configureIncrementalLoad</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.594">configureIncrementalLoad</a>(org.apache.hadoop.mapreduce.Job&nbsp;job,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.604">configureIncrementalLoad</a>(org.apache.hadoop.mapreduce.Job&nbsp;job,
                                             <a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;tableDescriptor,
                                             <a href="../../../../../org/apache/hadoop/hbase/client/RegionLocator.html" title="interface in org.apache.hadoop.hbase.client">RegionLocator</a>&nbsp;regionLocator)
                                      throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -846,7 +887,7 @@ extends org.apache.hadoop.mapreduce.lib.output.FileOutputFormat&lt;<a href="../.
 <ul class="blockList">
 <li class="blockList">
 <h4>configureIncrementalLoad</h4>
-<pre>static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.601">configureIncrementalLoad</a>(org.apache.hadoop.mapreduce.Job&nbsp;job,
+<pre>static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.611">configureIncrementalLoad</a>(org.apache.hadoop.mapreduce.Job&nbsp;job,
                                      <a href="https://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/mapreduce/HFileOutputFormat2.TableInfo.html" title="class in org.apache.hadoop.hbase.mapreduce">HFileOutputFormat2.TableInfo</a>&gt;&nbsp;multiTableInfo,
                                      <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;? extends org.apache.hadoop.mapreduce.OutputFormat&lt;?,?&gt;&gt;&nbsp;cls)
                               throws <a href="https://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 +903,7 @@ extends org.apache.hadoop.mapreduce.lib.output.FileOutputFormat&lt;<a href="../.
 <ul class="blockList">
 <li class="blockList">
 <h4>configureIncrementalLoadMap</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.678">configureIncrementalLoadMap</a>(org.apache.hadoop.mapreduce.Job&nbsp;job,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.690">configureIncrementalLoadMap</a>(org.apache.hadoop.mapreduce.Job&nbsp;job,
                                                <a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;tableDescriptor)
                                         throws <a href="https://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>
@@ -877,7 +918,7 @@ extends org.apache.hadoop.mapreduce.lib.output.FileOutputFormat&lt;<a href="../.
 <ul class="blockList">
 <li class="blockList">
 <h4>createFamilyCompressionMap</h4>
-<pre>static&nbsp;<a href="https://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="../../../../../org/apache/hadoop/hbase/io/compress/Compression.Algorithm.html" title="enum in org.apache.hadoop.hbase.io.compress">Compression.Algorithm</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.713">createFamilyCompressionMap</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
+<pre>static&nbsp;<a href="https://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="../../../../../org/apache/hadoop/hbase/io/compress/Compression.Algorithm.html" title="enum in org.apache.hadoop.hbase.io.compress">Compression.Algorithm</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.727">createFamilyCompressionMap</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
 <div class="block">Runs inside the task to deserialize column family to compression algorithm
  map from the configuration.</div>
 <dl>
@@ -894,7 +935,7 @@ extends org.apache.hadoop.mapreduce.lib.output.FileOutputFormat&lt;<a href="../.
 <ul class="blockList">
 <li class="blockList">
 <h4>createFamilyBloomTypeMap</h4>
-<pre>static&nbsp;<a href="https://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="../../../../../org/apache/hadoop/hbase/regionserver/BloomType.html" title="enum in org.apache.hadoop.hbase.regionserver">BloomType</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.733">createFamilyBloomTypeMap</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
+<pre>static&nbsp;<a href="https://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="../../../../../org/apache/hadoop/hbase/regionserver/BloomType.html" title="enum in org.apache.hadoop.hbase.regionserver">BloomType</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.747">createFamilyBloomTypeMap</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
 <div class="block">Runs inside the task to deserialize column family to bloom filter type
  map from the configuration.</div>
 <dl>
@@ -905,13 +946,30 @@ extends org.apache.hadoop.mapreduce.lib.output.FileOutputFormat&lt;<a href="../.
 </dl>
 </li>
 </ul>
+<a name="createFamilyBloomParamMap-org.apache.hadoop.conf.Configuration-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>createFamilyBloomParamMap</h4>
+<pre>static&nbsp;<a href="https://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="https://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/mapreduce/HFileOutputFormat2.html#line.766">createFamilyBloomParamMap</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
+<div class="block">Runs inside the task to deserialize column family to bloom filter param
+ map from the configuration.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>conf</code> - to read the serialized values from</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>a map from column family to the the configured bloom filter param</dd>
+</dl>
+</li>
+</ul>
 <a name="createFamilyBlockSizeMap-org.apache.hadoop.conf.Configuration-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>createFamilyBlockSizeMap</h4>
-<pre>static&nbsp;<a href="https://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="https://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/mapreduce/HFileOutputFormat2.html#line.752">createFamilyBlockSizeMap</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
+<pre>static&nbsp;<a href="https://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="https://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/mapreduce/HFileOutputFormat2.html#line.779">createFamilyBlockSizeMap</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
 <div class="block">Runs inside the task to deserialize column family to block size
  map from the configuration.</div>
 <dl>
@@ -928,7 +986,7 @@ extends org.apache.hadoop.mapreduce.lib.output.FileOutputFormat&lt;<a href="../.
 <ul class="blockList">
 <li class="blockList">
 <h4>createFamilyDataBlockEncodingMap</h4>
-<pre>static&nbsp;<a href="https://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="../../../../../org/apache/hadoop/hbase/io/encoding/DataBlockEncoding.html" title="enum in org.apache.hadoop.hbase.io.encoding">DataBlockEncoding</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.772">createFamilyDataBlockEncodingMap</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
+<pre>static&nbsp;<a href="https://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="../../../../../org/apache/hadoop/hbase/io/encoding/DataBlockEncoding.html" title="enum in org.apache.hadoop.hbase.io.encoding">DataBlockEncoding</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.799">createFamilyDataBlockEncodingMap</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
 <div class="block">Runs inside the task to deserialize column family to data block encoding
  type map from the configuration.</div>
 <dl>
@@ -946,7 +1004,7 @@ extends org.apache.hadoop.mapreduce.lib.output.FileOutputFormat&lt;<a href="../.
 <ul class="blockList">
 <li class="blockList">
 <h4>createFamilyConfValueMap</h4>
-<pre>private static&nbsp;<a href="https://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="https://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/mapreduce/HFileOutputFormat2.html#line.791">createFamilyConfValueMap</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>private static&nbsp;<a href="https://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="https://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/mapreduce/HFileOutputFormat2.html#line.818">createFamilyConfValueMap</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                                                            <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;confName)</pre>
 <div class="block">Run inside the task to deserialize column family to given conf value map.</div>
 <dl>
@@ -964,7 +1022,7 @@ extends org.apache.hadoop.mapreduce.lib.output.FileOutputFormat&lt;<a href="../.
 <ul class="blockList">
 <li class="blockList">
 <h4>configurePartitioner</h4>
-<pre>static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.815">configurePartitioner</a>(org.apache.hadoop.mapreduce.Job&nbsp;job,
+<pre>static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.842">configurePartitioner</a>(org.apache.hadoop.mapreduce.Job&nbsp;job,
                                  <a href="https://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/io/ImmutableBytesWritable.html" title="class in org.apache.hadoop.hbase.io">ImmutableBytesWritable</a>&gt;&nbsp;splitPoints,
                                  boolean&nbsp;writeMultipleTables)
                           throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -982,7 +1040,7 @@ extends org.apache.hadoop.mapreduce.lib.output.FileOutputFormat&lt;<a href="../.
 <ul class="blockListLast">
 <li class="blockList">
 <h4>serializeColumnFamilyAttribute</h4>
-<pre>static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.836">serializeColumnFamilyAttribute</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/Function.html?is-external=true" title="class or interface in java.util.function">Function</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>,<a href="https://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;fn,
+<pre>static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.863">serializeColumnFamilyAttribute</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/Function.html?is-external=true" title="class or interface in java.util.function">Function</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>,<a href="https://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;fn,
                                              <a href="https://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/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&gt;&nbsp;allTables)
                                       throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/UnsupportedEncodingException.html?is-external=true" title="class or interface in java.io">UnsupportedEncodingException</a></pre>
 <dl>


[16/43] hbase-site git commit: Published site at 7ab77518a2569e2416a50020393aa386e7734501.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html
index f335eb6..e421e5f 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StoreFileWriter.html
@@ -25,467 +25,488 @@
 <span class="sourceLineNo">017</span> */<a name="line.17"></a>
 <span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.regionserver;<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.regionserver.HStoreFile.BLOOM_FILTER_TYPE_KEY;<a name="line.20"></a>
-<span class="sourceLineNo">021</span>import static org.apache.hadoop.hbase.regionserver.HStoreFile.DELETE_FAMILY_COUNT;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import static org.apache.hadoop.hbase.regionserver.HStoreFile.EARLIEST_PUT_TS;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import static org.apache.hadoop.hbase.regionserver.HStoreFile.MAJOR_COMPACTION_KEY;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import static org.apache.hadoop.hbase.regionserver.HStoreFile.MAX_SEQ_ID_KEY;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import static org.apache.hadoop.hbase.regionserver.HStoreFile.MOB_CELLS_COUNT;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import static org.apache.hadoop.hbase.regionserver.HStoreFile.TIMERANGE_KEY;<a name="line.26"></a>
-<span class="sourceLineNo">027</span><a name="line.27"></a>
-<span class="sourceLineNo">028</span>import java.io.IOException;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import java.net.InetSocketAddress;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import java.util.UUID;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import java.util.regex.Pattern;<a name="line.31"></a>
-<span class="sourceLineNo">032</span><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.fs.FileSystem;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hadoop.fs.Path;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.Cell;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.HConstants;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.PrivateCellUtil;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.io.hfile.CacheConfig;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.io.hfile.HFileContext;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.util.BloomContext;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.util.BloomFilterFactory;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.util.BloomFilterWriter;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.util.RowBloomContext;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.util.RowColBloomContext;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.slf4j.Logger;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.slf4j.LoggerFactory;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hbase.thirdparty.com.google.common.base.Preconditions;<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> * A StoreFile writer.  Use this to read/write HBase Store Files. It is package<a name="line.58"></a>
-<span class="sourceLineNo">059</span> * local because it is an implementation detail of the HBase regionserver.<a name="line.59"></a>
-<span class="sourceLineNo">060</span> */<a name="line.60"></a>
-<span class="sourceLineNo">061</span>@InterfaceAudience.Private<a name="line.61"></a>
-<span class="sourceLineNo">062</span>public class StoreFileWriter implements CellSink, ShipperListener {<a name="line.62"></a>
-<span class="sourceLineNo">063</span>  private static final Logger LOG = LoggerFactory.getLogger(StoreFileWriter.class.getName());<a name="line.63"></a>
-<span class="sourceLineNo">064</span>  private static final Pattern dash = Pattern.compile("-");<a name="line.64"></a>
-<span class="sourceLineNo">065</span>  private final BloomFilterWriter generalBloomFilterWriter;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>  private final BloomFilterWriter deleteFamilyBloomFilterWriter;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>  private final BloomType bloomType;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>  private long earliestPutTs = HConstants.LATEST_TIMESTAMP;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>  private long deleteFamilyCnt = 0;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>  private BloomContext bloomContext = null;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>  private BloomContext deleteFamilyBloomContext = null;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>  private final TimeRangeTracker timeRangeTracker;<a name="line.72"></a>
-<span class="sourceLineNo">073</span><a name="line.73"></a>
-<span class="sourceLineNo">074</span>  protected HFile.Writer writer;<a name="line.74"></a>
-<span class="sourceLineNo">075</span><a name="line.75"></a>
-<span class="sourceLineNo">076</span>    /**<a name="line.76"></a>
-<span class="sourceLineNo">077</span>     * Creates an HFile.Writer that also write helpful meta data.<a name="line.77"></a>
-<span class="sourceLineNo">078</span>     * @param fs file system to write to<a name="line.78"></a>
-<span class="sourceLineNo">079</span>     * @param path file name to create<a name="line.79"></a>
-<span class="sourceLineNo">080</span>     * @param conf user configuration<a name="line.80"></a>
-<span class="sourceLineNo">081</span>     * @param comparator key comparator<a name="line.81"></a>
-<span class="sourceLineNo">082</span>     * @param bloomType bloom filter setting<a name="line.82"></a>
-<span class="sourceLineNo">083</span>     * @param maxKeys the expected maximum number of keys to be added. Was used<a name="line.83"></a>
-<span class="sourceLineNo">084</span>     *        for Bloom filter size in {@link HFile} format version 1.<a name="line.84"></a>
-<span class="sourceLineNo">085</span>     * @param favoredNodes<a name="line.85"></a>
-<span class="sourceLineNo">086</span>     * @param fileContext - The HFile context<a name="line.86"></a>
-<span class="sourceLineNo">087</span>     * @param shouldDropCacheBehind Drop pages written to page cache after writing the store file.<a name="line.87"></a>
-<span class="sourceLineNo">088</span>     * @throws IOException problem writing to FS<a name="line.88"></a>
-<span class="sourceLineNo">089</span>     */<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    private StoreFileWriter(FileSystem fs, Path path,<a name="line.90"></a>
-<span class="sourceLineNo">091</span>        final Configuration conf,<a name="line.91"></a>
-<span class="sourceLineNo">092</span>        CacheConfig cacheConf,<a name="line.92"></a>
-<span class="sourceLineNo">093</span>        final CellComparator comparator, BloomType bloomType, long maxKeys,<a name="line.93"></a>
-<span class="sourceLineNo">094</span>        InetSocketAddress[] favoredNodes, HFileContext fileContext,<a name="line.94"></a>
-<span class="sourceLineNo">095</span>        boolean shouldDropCacheBehind)<a name="line.95"></a>
-<span class="sourceLineNo">096</span>            throws IOException {<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    this.timeRangeTracker = TimeRangeTracker.create(TimeRangeTracker.Type.NON_SYNC);<a name="line.97"></a>
-<span class="sourceLineNo">098</span>    // TODO : Change all writers to be specifically created for compaction context<a name="line.98"></a>
-<span class="sourceLineNo">099</span>    writer = HFile.getWriterFactory(conf, cacheConf)<a name="line.99"></a>
-<span class="sourceLineNo">100</span>        .withPath(fs, path)<a name="line.100"></a>
-<span class="sourceLineNo">101</span>        .withComparator(comparator)<a name="line.101"></a>
-<span class="sourceLineNo">102</span>        .withFavoredNodes(favoredNodes)<a name="line.102"></a>
-<span class="sourceLineNo">103</span>        .withFileContext(fileContext)<a name="line.103"></a>
-<span class="sourceLineNo">104</span>        .withShouldDropCacheBehind(shouldDropCacheBehind)<a name="line.104"></a>
-<span class="sourceLineNo">105</span>        .create();<a name="line.105"></a>
-<span class="sourceLineNo">106</span><a name="line.106"></a>
-<span class="sourceLineNo">107</span>    generalBloomFilterWriter = BloomFilterFactory.createGeneralBloomAtWrite(<a name="line.107"></a>
-<span class="sourceLineNo">108</span>        conf, cacheConf, bloomType,<a name="line.108"></a>
-<span class="sourceLineNo">109</span>        (int) Math.min(maxKeys, Integer.MAX_VALUE), writer);<a name="line.109"></a>
-<span class="sourceLineNo">110</span><a name="line.110"></a>
-<span class="sourceLineNo">111</span>    if (generalBloomFilterWriter != null) {<a name="line.111"></a>
-<span class="sourceLineNo">112</span>      this.bloomType = bloomType;<a name="line.112"></a>
-<span class="sourceLineNo">113</span>      if (LOG.isTraceEnabled()) {<a name="line.113"></a>
-<span class="sourceLineNo">114</span>        LOG.trace("Bloom filter type for " + path + ": " + this.bloomType + ", " +<a name="line.114"></a>
-<span class="sourceLineNo">115</span>            generalBloomFilterWriter.getClass().getSimpleName());<a name="line.115"></a>
-<span class="sourceLineNo">116</span>      }<a name="line.116"></a>
-<span class="sourceLineNo">117</span>      // init bloom context<a name="line.117"></a>
-<span class="sourceLineNo">118</span>      switch (bloomType) {<a name="line.118"></a>
-<span class="sourceLineNo">119</span>      case ROW:<a name="line.119"></a>
-<span class="sourceLineNo">120</span>        bloomContext = new RowBloomContext(generalBloomFilterWriter, comparator);<a name="line.120"></a>
-<span class="sourceLineNo">121</span>        break;<a name="line.121"></a>
-<span class="sourceLineNo">122</span>      case ROWCOL:<a name="line.122"></a>
-<span class="sourceLineNo">123</span>        bloomContext = new RowColBloomContext(generalBloomFilterWriter, comparator);<a name="line.123"></a>
-<span class="sourceLineNo">124</span>        break;<a name="line.124"></a>
-<span class="sourceLineNo">125</span>      default:<a name="line.125"></a>
-<span class="sourceLineNo">126</span>        throw new IOException(<a name="line.126"></a>
-<span class="sourceLineNo">127</span>            "Invalid Bloom filter type: " + bloomType + " (ROW or ROWCOL expected)");<a name="line.127"></a>
-<span class="sourceLineNo">128</span>      }<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    } else {<a name="line.129"></a>
-<span class="sourceLineNo">130</span>      // Not using Bloom filters.<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      this.bloomType = BloomType.NONE;<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    }<a name="line.132"></a>
-<span class="sourceLineNo">133</span><a name="line.133"></a>
-<span class="sourceLineNo">134</span>    // initialize delete family Bloom filter when there is NO RowCol Bloom<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    // filter<a name="line.135"></a>
-<span class="sourceLineNo">136</span>    if (this.bloomType != BloomType.ROWCOL) {<a name="line.136"></a>
-<span class="sourceLineNo">137</span>      this.deleteFamilyBloomFilterWriter = BloomFilterFactory<a name="line.137"></a>
-<span class="sourceLineNo">138</span>          .createDeleteBloomAtWrite(conf, cacheConf,<a name="line.138"></a>
-<span class="sourceLineNo">139</span>              (int) Math.min(maxKeys, Integer.MAX_VALUE), writer);<a name="line.139"></a>
-<span class="sourceLineNo">140</span>      deleteFamilyBloomContext = new RowBloomContext(deleteFamilyBloomFilterWriter, comparator);<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    } else {<a name="line.141"></a>
-<span class="sourceLineNo">142</span>      deleteFamilyBloomFilterWriter = null;<a name="line.142"></a>
-<span class="sourceLineNo">143</span>    }<a name="line.143"></a>
-<span class="sourceLineNo">144</span>    if (deleteFamilyBloomFilterWriter != null &amp;&amp; LOG.isTraceEnabled()) {<a name="line.144"></a>
-<span class="sourceLineNo">145</span>      LOG.trace("Delete Family Bloom filter type for " + path + ": " +<a name="line.145"></a>
-<span class="sourceLineNo">146</span>          deleteFamilyBloomFilterWriter.getClass().getSimpleName());<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    }<a name="line.147"></a>
-<span class="sourceLineNo">148</span>  }<a name="line.148"></a>
+<span class="sourceLineNo">020</span>import static org.apache.hadoop.hbase.regionserver.HStoreFile.BLOOM_FILTER_PARAM_KEY;<a name="line.20"></a>
+<span class="sourceLineNo">021</span>import static org.apache.hadoop.hbase.regionserver.HStoreFile.BLOOM_FILTER_TYPE_KEY;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import static org.apache.hadoop.hbase.regionserver.HStoreFile.DELETE_FAMILY_COUNT;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import static org.apache.hadoop.hbase.regionserver.HStoreFile.EARLIEST_PUT_TS;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import static org.apache.hadoop.hbase.regionserver.HStoreFile.MAJOR_COMPACTION_KEY;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import static org.apache.hadoop.hbase.regionserver.HStoreFile.MAX_SEQ_ID_KEY;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import static org.apache.hadoop.hbase.regionserver.HStoreFile.MOB_CELLS_COUNT;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import static org.apache.hadoop.hbase.regionserver.HStoreFile.TIMERANGE_KEY;<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.net.InetSocketAddress;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import java.util.UUID;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import java.util.regex.Pattern;<a name="line.32"></a>
+<span class="sourceLineNo">033</span><a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.conf.Configuration;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.fs.FileSystem;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.fs.Path;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.Cell;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.HConstants;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.PrivateCellUtil;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.io.hfile.CacheConfig;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.io.hfile.HFileContext;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.util.BloomContext;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.util.BloomFilterFactory;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.util.BloomFilterUtil;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.util.BloomFilterWriter;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.util.RowBloomContext;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.util.RowColBloomContext;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.util.RowPrefixDelimiterBloomContext;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.util.RowPrefixFixedLengthBloomContext;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.slf4j.Logger;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.slf4j.LoggerFactory;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hbase.thirdparty.com.google.common.base.Preconditions;<a name="line.59"></a>
+<span class="sourceLineNo">060</span><a name="line.60"></a>
+<span class="sourceLineNo">061</span>/**<a name="line.61"></a>
+<span class="sourceLineNo">062</span> * A StoreFile writer.  Use this to read/write HBase Store Files. It is package<a name="line.62"></a>
+<span class="sourceLineNo">063</span> * local because it is an implementation detail of the HBase regionserver.<a name="line.63"></a>
+<span class="sourceLineNo">064</span> */<a name="line.64"></a>
+<span class="sourceLineNo">065</span>@InterfaceAudience.Private<a name="line.65"></a>
+<span class="sourceLineNo">066</span>public class StoreFileWriter implements CellSink, ShipperListener {<a name="line.66"></a>
+<span class="sourceLineNo">067</span>  private static final Logger LOG = LoggerFactory.getLogger(StoreFileWriter.class.getName());<a name="line.67"></a>
+<span class="sourceLineNo">068</span>  private static final Pattern dash = Pattern.compile("-");<a name="line.68"></a>
+<span class="sourceLineNo">069</span>  private final BloomFilterWriter generalBloomFilterWriter;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>  private final BloomFilterWriter deleteFamilyBloomFilterWriter;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>  private final BloomType bloomType;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>  private byte[] bloomParam = null;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>  private long earliestPutTs = HConstants.LATEST_TIMESTAMP;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>  private long deleteFamilyCnt = 0;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>  private BloomContext bloomContext = null;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>  private BloomContext deleteFamilyBloomContext = null;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>  private final TimeRangeTracker timeRangeTracker;<a name="line.77"></a>
+<span class="sourceLineNo">078</span><a name="line.78"></a>
+<span class="sourceLineNo">079</span>  protected HFile.Writer writer;<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>     * Creates an HFile.Writer that also write helpful meta data.<a name="line.82"></a>
+<span class="sourceLineNo">083</span>     * @param fs file system to write to<a name="line.83"></a>
+<span class="sourceLineNo">084</span>     * @param path file name to create<a name="line.84"></a>
+<span class="sourceLineNo">085</span>     * @param conf user configuration<a name="line.85"></a>
+<span class="sourceLineNo">086</span>     * @param comparator key comparator<a name="line.86"></a>
+<span class="sourceLineNo">087</span>     * @param bloomType bloom filter setting<a name="line.87"></a>
+<span class="sourceLineNo">088</span>     * @param maxKeys the expected maximum number of keys to be added. Was used<a name="line.88"></a>
+<span class="sourceLineNo">089</span>     *        for Bloom filter size in {@link HFile} format version 1.<a name="line.89"></a>
+<span class="sourceLineNo">090</span>     * @param favoredNodes<a name="line.90"></a>
+<span class="sourceLineNo">091</span>     * @param fileContext - The HFile context<a name="line.91"></a>
+<span class="sourceLineNo">092</span>     * @param shouldDropCacheBehind Drop pages written to page cache after writing the store file.<a name="line.92"></a>
+<span class="sourceLineNo">093</span>     * @throws IOException problem writing to FS<a name="line.93"></a>
+<span class="sourceLineNo">094</span>     */<a name="line.94"></a>
+<span class="sourceLineNo">095</span>    private StoreFileWriter(FileSystem fs, Path path,<a name="line.95"></a>
+<span class="sourceLineNo">096</span>        final Configuration conf,<a name="line.96"></a>
+<span class="sourceLineNo">097</span>        CacheConfig cacheConf,<a name="line.97"></a>
+<span class="sourceLineNo">098</span>        final CellComparator comparator, BloomType bloomType, long maxKeys,<a name="line.98"></a>
+<span class="sourceLineNo">099</span>        InetSocketAddress[] favoredNodes, HFileContext fileContext,<a name="line.99"></a>
+<span class="sourceLineNo">100</span>        boolean shouldDropCacheBehind)<a name="line.100"></a>
+<span class="sourceLineNo">101</span>            throws IOException {<a name="line.101"></a>
+<span class="sourceLineNo">102</span>    this.timeRangeTracker = TimeRangeTracker.create(TimeRangeTracker.Type.NON_SYNC);<a name="line.102"></a>
+<span class="sourceLineNo">103</span>    // TODO : Change all writers to be specifically created for compaction context<a name="line.103"></a>
+<span class="sourceLineNo">104</span>    writer = HFile.getWriterFactory(conf, cacheConf)<a name="line.104"></a>
+<span class="sourceLineNo">105</span>        .withPath(fs, path)<a name="line.105"></a>
+<span class="sourceLineNo">106</span>        .withComparator(comparator)<a name="line.106"></a>
+<span class="sourceLineNo">107</span>        .withFavoredNodes(favoredNodes)<a name="line.107"></a>
+<span class="sourceLineNo">108</span>        .withFileContext(fileContext)<a name="line.108"></a>
+<span class="sourceLineNo">109</span>        .withShouldDropCacheBehind(shouldDropCacheBehind)<a name="line.109"></a>
+<span class="sourceLineNo">110</span>        .create();<a name="line.110"></a>
+<span class="sourceLineNo">111</span><a name="line.111"></a>
+<span class="sourceLineNo">112</span>    generalBloomFilterWriter = BloomFilterFactory.createGeneralBloomAtWrite(<a name="line.112"></a>
+<span class="sourceLineNo">113</span>        conf, cacheConf, bloomType,<a name="line.113"></a>
+<span class="sourceLineNo">114</span>        (int) Math.min(maxKeys, Integer.MAX_VALUE), writer);<a name="line.114"></a>
+<span class="sourceLineNo">115</span><a name="line.115"></a>
+<span class="sourceLineNo">116</span>    if (generalBloomFilterWriter != null) {<a name="line.116"></a>
+<span class="sourceLineNo">117</span>      this.bloomType = bloomType;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>      this.bloomParam = BloomFilterUtil.getBloomFilterParam(bloomType, conf);<a name="line.118"></a>
+<span class="sourceLineNo">119</span>      if (LOG.isTraceEnabled()) {<a name="line.119"></a>
+<span class="sourceLineNo">120</span>        LOG.trace("Bloom filter type for " + path + ": " + this.bloomType + ", param: "<a name="line.120"></a>
+<span class="sourceLineNo">121</span>            + (bloomType == BloomType.ROWPREFIX_FIXED_LENGTH?<a name="line.121"></a>
+<span class="sourceLineNo">122</span>               Bytes.toInt(bloomParam):Bytes.toStringBinary(bloomParam))<a name="line.122"></a>
+<span class="sourceLineNo">123</span>            + ", " + generalBloomFilterWriter.getClass().getSimpleName());<a name="line.123"></a>
+<span class="sourceLineNo">124</span>      }<a name="line.124"></a>
+<span class="sourceLineNo">125</span>      // init bloom context<a name="line.125"></a>
+<span class="sourceLineNo">126</span>      switch (bloomType) {<a name="line.126"></a>
+<span class="sourceLineNo">127</span>        case ROW:<a name="line.127"></a>
+<span class="sourceLineNo">128</span>          bloomContext = new RowBloomContext(generalBloomFilterWriter, comparator);<a name="line.128"></a>
+<span class="sourceLineNo">129</span>          break;<a name="line.129"></a>
+<span class="sourceLineNo">130</span>        case ROWCOL:<a name="line.130"></a>
+<span class="sourceLineNo">131</span>          bloomContext = new RowColBloomContext(generalBloomFilterWriter, comparator);<a name="line.131"></a>
+<span class="sourceLineNo">132</span>          break;<a name="line.132"></a>
+<span class="sourceLineNo">133</span>        case ROWPREFIX_FIXED_LENGTH:<a name="line.133"></a>
+<span class="sourceLineNo">134</span>          bloomContext = new RowPrefixFixedLengthBloomContext(generalBloomFilterWriter, comparator,<a name="line.134"></a>
+<span class="sourceLineNo">135</span>              Bytes.toInt(bloomParam));<a name="line.135"></a>
+<span class="sourceLineNo">136</span>          break;<a name="line.136"></a>
+<span class="sourceLineNo">137</span>        case ROWPREFIX_DELIMITED:<a name="line.137"></a>
+<span class="sourceLineNo">138</span>          bloomContext = new RowPrefixDelimiterBloomContext(generalBloomFilterWriter, comparator,<a name="line.138"></a>
+<span class="sourceLineNo">139</span>              bloomParam);<a name="line.139"></a>
+<span class="sourceLineNo">140</span>          break;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>        default:<a name="line.141"></a>
+<span class="sourceLineNo">142</span>          throw new IOException("Invalid Bloom filter type: "<a name="line.142"></a>
+<span class="sourceLineNo">143</span>              + bloomType + " (ROW or ROWCOL or ROWPREFIX or ROWPREFIX_DELIMITED expected)");<a name="line.143"></a>
+<span class="sourceLineNo">144</span>      }<a name="line.144"></a>
+<span class="sourceLineNo">145</span>    } else {<a name="line.145"></a>
+<span class="sourceLineNo">146</span>      // Not using Bloom filters.<a name="line.146"></a>
+<span class="sourceLineNo">147</span>      this.bloomType = BloomType.NONE;<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    }<a name="line.148"></a>
 <span class="sourceLineNo">149</span><a name="line.149"></a>
-<span class="sourceLineNo">150</span>  /**<a name="line.150"></a>
-<span class="sourceLineNo">151</span>   * Writes meta data.<a name="line.151"></a>
-<span class="sourceLineNo">152</span>   * Call before {@link #close()} since its written as meta data to this file.<a name="line.152"></a>
-<span class="sourceLineNo">153</span>   * @param maxSequenceId Maximum sequence id.<a name="line.153"></a>
-<span class="sourceLineNo">154</span>   * @param majorCompaction True if this file is product of a major compaction<a name="line.154"></a>
-<span class="sourceLineNo">155</span>   * @throws IOException problem writing to FS<a name="line.155"></a>
-<span class="sourceLineNo">156</span>   */<a name="line.156"></a>
-<span class="sourceLineNo">157</span>  public void appendMetadata(final long maxSequenceId, final boolean majorCompaction)<a name="line.157"></a>
-<span class="sourceLineNo">158</span>      throws IOException {<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    writer.appendFileInfo(MAX_SEQ_ID_KEY, Bytes.toBytes(maxSequenceId));<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    writer.appendFileInfo(MAJOR_COMPACTION_KEY, Bytes.toBytes(majorCompaction));<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    appendTrackedTimestampsToMetadata();<a name="line.161"></a>
-<span class="sourceLineNo">162</span>  }<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>   * Writes meta data.<a name="line.165"></a>
-<span class="sourceLineNo">166</span>   * Call before {@link #close()} since its written as meta data to this file.<a name="line.166"></a>
-<span class="sourceLineNo">167</span>   * @param maxSequenceId Maximum sequence id.<a name="line.167"></a>
-<span class="sourceLineNo">168</span>   * @param majorCompaction True if this file is product of a major compaction<a name="line.168"></a>
-<span class="sourceLineNo">169</span>   * @param mobCellsCount The number of mob cells.<a name="line.169"></a>
-<span class="sourceLineNo">170</span>   * @throws IOException problem writing to FS<a name="line.170"></a>
-<span class="sourceLineNo">171</span>   */<a name="line.171"></a>
-<span class="sourceLineNo">172</span>  public void appendMetadata(final long maxSequenceId, final boolean majorCompaction,<a name="line.172"></a>
-<span class="sourceLineNo">173</span>      final long mobCellsCount) throws IOException {<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    writer.appendFileInfo(MAX_SEQ_ID_KEY, Bytes.toBytes(maxSequenceId));<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    writer.appendFileInfo(MAJOR_COMPACTION_KEY, Bytes.toBytes(majorCompaction));<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    writer.appendFileInfo(MOB_CELLS_COUNT, Bytes.toBytes(mobCellsCount));<a name="line.176"></a>
+<span class="sourceLineNo">150</span>    // initialize delete family Bloom filter when there is NO RowCol Bloom<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    // filter<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    if (this.bloomType != BloomType.ROWCOL) {<a name="line.152"></a>
+<span class="sourceLineNo">153</span>      this.deleteFamilyBloomFilterWriter = BloomFilterFactory<a name="line.153"></a>
+<span class="sourceLineNo">154</span>          .createDeleteBloomAtWrite(conf, cacheConf,<a name="line.154"></a>
+<span class="sourceLineNo">155</span>              (int) Math.min(maxKeys, Integer.MAX_VALUE), writer);<a name="line.155"></a>
+<span class="sourceLineNo">156</span>      deleteFamilyBloomContext = new RowBloomContext(deleteFamilyBloomFilterWriter, comparator);<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    } else {<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      deleteFamilyBloomFilterWriter = null;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    }<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    if (deleteFamilyBloomFilterWriter != null &amp;&amp; LOG.isTraceEnabled()) {<a name="line.160"></a>
+<span class="sourceLineNo">161</span>      LOG.trace("Delete Family Bloom filter type for " + path + ": " +<a name="line.161"></a>
+<span class="sourceLineNo">162</span>          deleteFamilyBloomFilterWriter.getClass().getSimpleName());<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><a name="line.165"></a>
+<span class="sourceLineNo">166</span>  /**<a name="line.166"></a>
+<span class="sourceLineNo">167</span>   * Writes meta data.<a name="line.167"></a>
+<span class="sourceLineNo">168</span>   * Call before {@link #close()} since its written as meta data to this file.<a name="line.168"></a>
+<span class="sourceLineNo">169</span>   * @param maxSequenceId Maximum sequence id.<a name="line.169"></a>
+<span class="sourceLineNo">170</span>   * @param majorCompaction True if this file is product of a major compaction<a name="line.170"></a>
+<span class="sourceLineNo">171</span>   * @throws IOException problem writing to FS<a name="line.171"></a>
+<span class="sourceLineNo">172</span>   */<a name="line.172"></a>
+<span class="sourceLineNo">173</span>  public void appendMetadata(final long maxSequenceId, final boolean majorCompaction)<a name="line.173"></a>
+<span class="sourceLineNo">174</span>      throws IOException {<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    writer.appendFileInfo(MAX_SEQ_ID_KEY, Bytes.toBytes(maxSequenceId));<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    writer.appendFileInfo(MAJOR_COMPACTION_KEY, Bytes.toBytes(majorCompaction));<a name="line.176"></a>
 <span class="sourceLineNo">177</span>    appendTrackedTimestampsToMetadata();<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>  /**<a name="line.180"></a>
-<span class="sourceLineNo">181</span>   * Add TimestampRange and earliest put timestamp to Metadata<a name="line.181"></a>
-<span class="sourceLineNo">182</span>   */<a name="line.182"></a>
-<span class="sourceLineNo">183</span>  public void appendTrackedTimestampsToMetadata() throws IOException {<a name="line.183"></a>
-<span class="sourceLineNo">184</span>    // TODO: The StoreFileReader always converts the byte[] to TimeRange<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    // via TimeRangeTracker, so we should write the serialization data of TimeRange directly.<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    appendFileInfo(TIMERANGE_KEY, TimeRangeTracker.toByteArray(timeRangeTracker));<a name="line.186"></a>
-<span class="sourceLineNo">187</span>    appendFileInfo(EARLIEST_PUT_TS, Bytes.toBytes(earliestPutTs));<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>  /**<a name="line.190"></a>
-<span class="sourceLineNo">191</span>   * Record the earlest Put timestamp.<a name="line.191"></a>
-<span class="sourceLineNo">192</span>   *<a name="line.192"></a>
-<span class="sourceLineNo">193</span>   * If the timeRangeTracker is not set,<a name="line.193"></a>
-<span class="sourceLineNo">194</span>   * update TimeRangeTracker to include the timestamp of this key<a name="line.194"></a>
-<span class="sourceLineNo">195</span>   */<a name="line.195"></a>
-<span class="sourceLineNo">196</span>  public void trackTimestamps(final Cell cell) {<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    if (KeyValue.Type.Put.getCode() == cell.getTypeByte()) {<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      earliestPutTs = Math.min(earliestPutTs, cell.getTimestamp());<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    }<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    timeRangeTracker.includeTimestamp(cell);<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>  private void appendGeneralBloomfilter(final Cell cell) throws IOException {<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    if (this.generalBloomFilterWriter != null) {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      /*<a name="line.205"></a>
-<span class="sourceLineNo">206</span>       * http://2.bp.blogspot.com/_Cib_A77V54U/StZMrzaKufI/AAAAAAAAADo/ZhK7bGoJdMQ/s400/KeyValue.png<a name="line.206"></a>
-<span class="sourceLineNo">207</span>       * Key = RowLen + Row + FamilyLen + Column [Family + Qualifier] + Timestamp<a name="line.207"></a>
-<span class="sourceLineNo">208</span>       *<a name="line.208"></a>
-<span class="sourceLineNo">209</span>       * 2 Types of Filtering:<a name="line.209"></a>
-<span class="sourceLineNo">210</span>       *  1. Row = Row<a name="line.210"></a>
-<span class="sourceLineNo">211</span>       *  2. RowCol = Row + Qualifier<a name="line.211"></a>
-<span class="sourceLineNo">212</span>       */<a name="line.212"></a>
-<span class="sourceLineNo">213</span>      bloomContext.writeBloom(cell);<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    }<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>  private void appendDeleteFamilyBloomFilter(final Cell cell)<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      throws IOException {<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    if (!PrivateCellUtil.isDeleteFamily(cell) &amp;&amp; !PrivateCellUtil.isDeleteFamilyVersion(cell)) {<a name="line.219"></a>
-<span class="sourceLineNo">220</span>      return;<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    }<a name="line.221"></a>
-<span class="sourceLineNo">222</span><a name="line.222"></a>
-<span class="sourceLineNo">223</span>    // increase the number of delete family in the store file<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    deleteFamilyCnt++;<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    if (this.deleteFamilyBloomFilterWriter != null) {<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      deleteFamilyBloomContext.writeBloom(cell);<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    }<a name="line.227"></a>
-<span class="sourceLineNo">228</span>  }<a name="line.228"></a>
-<span class="sourceLineNo">229</span><a name="line.229"></a>
-<span class="sourceLineNo">230</span>  @Override<a name="line.230"></a>
-<span class="sourceLineNo">231</span>  public void append(final Cell cell) throws IOException {<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    appendGeneralBloomfilter(cell);<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    appendDeleteFamilyBloomFilter(cell);<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    writer.append(cell);<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    trackTimestamps(cell);<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>  @Override<a name="line.238"></a>
-<span class="sourceLineNo">239</span>  public void beforeShipped() throws IOException {<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    // For now these writer will always be of type ShipperListener true.<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    // TODO : Change all writers to be specifically created for compaction context<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    writer.beforeShipped();<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    if (generalBloomFilterWriter != null) {<a name="line.243"></a>
-<span class="sourceLineNo">244</span>      generalBloomFilterWriter.beforeShipped();<a name="line.244"></a>
+<span class="sourceLineNo">181</span>   * Writes meta data.<a name="line.181"></a>
+<span class="sourceLineNo">182</span>   * Call before {@link #close()} since its written as meta data to this file.<a name="line.182"></a>
+<span class="sourceLineNo">183</span>   * @param maxSequenceId Maximum sequence id.<a name="line.183"></a>
+<span class="sourceLineNo">184</span>   * @param majorCompaction True if this file is product of a major compaction<a name="line.184"></a>
+<span class="sourceLineNo">185</span>   * @param mobCellsCount The number of mob cells.<a name="line.185"></a>
+<span class="sourceLineNo">186</span>   * @throws IOException problem writing to FS<a name="line.186"></a>
+<span class="sourceLineNo">187</span>   */<a name="line.187"></a>
+<span class="sourceLineNo">188</span>  public void appendMetadata(final long maxSequenceId, final boolean majorCompaction,<a name="line.188"></a>
+<span class="sourceLineNo">189</span>      final long mobCellsCount) throws IOException {<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    writer.appendFileInfo(MAX_SEQ_ID_KEY, Bytes.toBytes(maxSequenceId));<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    writer.appendFileInfo(MAJOR_COMPACTION_KEY, Bytes.toBytes(majorCompaction));<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    writer.appendFileInfo(MOB_CELLS_COUNT, Bytes.toBytes(mobCellsCount));<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    appendTrackedTimestampsToMetadata();<a name="line.193"></a>
+<span class="sourceLineNo">194</span>  }<a name="line.194"></a>
+<span class="sourceLineNo">195</span><a name="line.195"></a>
+<span class="sourceLineNo">196</span>  /**<a name="line.196"></a>
+<span class="sourceLineNo">197</span>   * Add TimestampRange and earliest put timestamp to Metadata<a name="line.197"></a>
+<span class="sourceLineNo">198</span>   */<a name="line.198"></a>
+<span class="sourceLineNo">199</span>  public void appendTrackedTimestampsToMetadata() throws IOException {<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    // TODO: The StoreFileReader always converts the byte[] to TimeRange<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    // via TimeRangeTracker, so we should write the serialization data of TimeRange directly.<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    appendFileInfo(TIMERANGE_KEY, TimeRangeTracker.toByteArray(timeRangeTracker));<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    appendFileInfo(EARLIEST_PUT_TS, Bytes.toBytes(earliestPutTs));<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>  /**<a name="line.206"></a>
+<span class="sourceLineNo">207</span>   * Record the earlest Put timestamp.<a name="line.207"></a>
+<span class="sourceLineNo">208</span>   *<a name="line.208"></a>
+<span class="sourceLineNo">209</span>   * If the timeRangeTracker is not set,<a name="line.209"></a>
+<span class="sourceLineNo">210</span>   * update TimeRangeTracker to include the timestamp of this key<a name="line.210"></a>
+<span class="sourceLineNo">211</span>   */<a name="line.211"></a>
+<span class="sourceLineNo">212</span>  public void trackTimestamps(final Cell cell) {<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    if (KeyValue.Type.Put.getCode() == cell.getTypeByte()) {<a name="line.213"></a>
+<span class="sourceLineNo">214</span>      earliestPutTs = Math.min(earliestPutTs, cell.getTimestamp());<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    }<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    timeRangeTracker.includeTimestamp(cell);<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>  private void appendGeneralBloomfilter(final Cell cell) throws IOException {<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    if (this.generalBloomFilterWriter != null) {<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      /*<a name="line.221"></a>
+<span class="sourceLineNo">222</span>       * http://2.bp.blogspot.com/_Cib_A77V54U/StZMrzaKufI/AAAAAAAAADo/ZhK7bGoJdMQ/s400/KeyValue.png<a name="line.222"></a>
+<span class="sourceLineNo">223</span>       * Key = RowLen + Row + FamilyLen + Column [Family + Qualifier] + Timestamp<a name="line.223"></a>
+<span class="sourceLineNo">224</span>       *<a name="line.224"></a>
+<span class="sourceLineNo">225</span>       * 4 Types of Filtering:<a name="line.225"></a>
+<span class="sourceLineNo">226</span>       *  1. Row = Row<a name="line.226"></a>
+<span class="sourceLineNo">227</span>       *  2. RowCol = Row + Qualifier<a name="line.227"></a>
+<span class="sourceLineNo">228</span>       *  3. RowPrefixFixedLength  = Fixed Length Row Prefix<a name="line.228"></a>
+<span class="sourceLineNo">229</span>       *  4. RowPrefixDelimiter = Delimited Row Prefix<a name="line.229"></a>
+<span class="sourceLineNo">230</span>       */<a name="line.230"></a>
+<span class="sourceLineNo">231</span>      bloomContext.writeBloom(cell);<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    }<a name="line.232"></a>
+<span class="sourceLineNo">233</span>  }<a name="line.233"></a>
+<span class="sourceLineNo">234</span><a name="line.234"></a>
+<span class="sourceLineNo">235</span>  private void appendDeleteFamilyBloomFilter(final Cell cell)<a name="line.235"></a>
+<span class="sourceLineNo">236</span>      throws IOException {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    if (!PrivateCellUtil.isDeleteFamily(cell) &amp;&amp; !PrivateCellUtil.isDeleteFamilyVersion(cell)) {<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      return;<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    }<a name="line.239"></a>
+<span class="sourceLineNo">240</span><a name="line.240"></a>
+<span class="sourceLineNo">241</span>    // increase the number of delete family in the store file<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    deleteFamilyCnt++;<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    if (this.deleteFamilyBloomFilterWriter != null) {<a name="line.243"></a>
+<span class="sourceLineNo">244</span>      deleteFamilyBloomContext.writeBloom(cell);<a name="line.244"></a>
 <span class="sourceLineNo">245</span>    }<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    if (deleteFamilyBloomFilterWriter != null) {<a name="line.246"></a>
-<span class="sourceLineNo">247</span>      deleteFamilyBloomFilterWriter.beforeShipped();<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    }<a name="line.248"></a>
-<span class="sourceLineNo">249</span>  }<a name="line.249"></a>
-<span class="sourceLineNo">250</span><a name="line.250"></a>
-<span class="sourceLineNo">251</span>  public Path getPath() {<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    return this.writer.getPath();<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>  public boolean hasGeneralBloom() {<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    return this.generalBloomFilterWriter != null;<a name="line.256"></a>
-<span class="sourceLineNo">257</span>  }<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>   * For unit testing only.<a name="line.260"></a>
-<span class="sourceLineNo">261</span>   *<a name="line.261"></a>
-<span class="sourceLineNo">262</span>   * @return the Bloom filter used by this writer.<a name="line.262"></a>
-<span class="sourceLineNo">263</span>   */<a name="line.263"></a>
-<span class="sourceLineNo">264</span>  BloomFilterWriter getGeneralBloomWriter() {<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    return generalBloomFilterWriter;<a name="line.265"></a>
-<span class="sourceLineNo">266</span>  }<a name="line.266"></a>
-<span class="sourceLineNo">267</span><a name="line.267"></a>
-<span class="sourceLineNo">268</span>  private boolean closeBloomFilter(BloomFilterWriter bfw) throws IOException {<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    boolean haveBloom = (bfw != null &amp;&amp; bfw.getKeyCount() &gt; 0);<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    if (haveBloom) {<a name="line.270"></a>
-<span class="sourceLineNo">271</span>      bfw.compactBloom();<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    }<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    return haveBloom;<a name="line.273"></a>
-<span class="sourceLineNo">274</span>  }<a name="line.274"></a>
-<span class="sourceLineNo">275</span><a name="line.275"></a>
-<span class="sourceLineNo">276</span>  private boolean closeGeneralBloomFilter() throws IOException {<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    boolean hasGeneralBloom = closeBloomFilter(generalBloomFilterWriter);<a name="line.277"></a>
-<span class="sourceLineNo">278</span><a name="line.278"></a>
-<span class="sourceLineNo">279</span>    // add the general Bloom filter writer and append file info<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    if (hasGeneralBloom) {<a name="line.280"></a>
-<span class="sourceLineNo">281</span>      writer.addGeneralBloomFilter(generalBloomFilterWriter);<a name="line.281"></a>
-<span class="sourceLineNo">282</span>      writer.appendFileInfo(BLOOM_FILTER_TYPE_KEY, Bytes.toBytes(bloomType.toString()));<a name="line.282"></a>
-<span class="sourceLineNo">283</span>      bloomContext.addLastBloomKey(writer);<a name="line.283"></a>
-<span class="sourceLineNo">284</span>    }<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    return hasGeneralBloom;<a name="line.285"></a>
-<span class="sourceLineNo">286</span>  }<a name="line.286"></a>
-<span class="sourceLineNo">287</span><a name="line.287"></a>
-<span class="sourceLineNo">288</span>  private boolean closeDeleteFamilyBloomFilter() throws IOException {<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    boolean hasDeleteFamilyBloom = closeBloomFilter(deleteFamilyBloomFilterWriter);<a name="line.289"></a>
-<span class="sourceLineNo">290</span><a name="line.290"></a>
-<span class="sourceLineNo">291</span>    // add the delete family Bloom filter writer<a name="line.291"></a>
-<span class="sourceLineNo">292</span>    if (hasDeleteFamilyBloom) {<a name="line.292"></a>
-<span class="sourceLineNo">293</span>      writer.addDeleteFamilyBloomFilter(deleteFamilyBloomFilterWriter);<a name="line.293"></a>
-<span class="sourceLineNo">294</span>    }<a name="line.294"></a>
-<span class="sourceLineNo">295</span><a name="line.295"></a>
-<span class="sourceLineNo">296</span>    // append file info about the number of delete family kvs<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    // even if there is no delete family Bloom.<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    writer.appendFileInfo(DELETE_FAMILY_COUNT, Bytes.toBytes(this.deleteFamilyCnt));<a name="line.298"></a>
-<span class="sourceLineNo">299</span><a name="line.299"></a>
-<span class="sourceLineNo">300</span>    return hasDeleteFamilyBloom;<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>  public void close() throws IOException {<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    boolean hasGeneralBloom = this.closeGeneralBloomFilter();<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    boolean hasDeleteFamilyBloom = this.closeDeleteFamilyBloomFilter();<a name="line.305"></a>
-<span class="sourceLineNo">306</span><a name="line.306"></a>
-<span class="sourceLineNo">307</span>    writer.close();<a name="line.307"></a>
+<span class="sourceLineNo">246</span>  }<a name="line.246"></a>
+<span class="sourceLineNo">247</span><a name="line.247"></a>
+<span class="sourceLineNo">248</span>  @Override<a name="line.248"></a>
+<span class="sourceLineNo">249</span>  public void append(final Cell cell) throws IOException {<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    appendGeneralBloomfilter(cell);<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    appendDeleteFamilyBloomFilter(cell);<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    writer.append(cell);<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    trackTimestamps(cell);<a name="line.253"></a>
+<span class="sourceLineNo">254</span>  }<a name="line.254"></a>
+<span class="sourceLineNo">255</span><a name="line.255"></a>
+<span class="sourceLineNo">256</span>  @Override<a name="line.256"></a>
+<span class="sourceLineNo">257</span>  public void beforeShipped() throws IOException {<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    // For now these writer will always be of type ShipperListener true.<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    // TODO : Change all writers to be specifically created for compaction context<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    writer.beforeShipped();<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    if (generalBloomFilterWriter != null) {<a name="line.261"></a>
+<span class="sourceLineNo">262</span>      generalBloomFilterWriter.beforeShipped();<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    }<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    if (deleteFamilyBloomFilterWriter != null) {<a name="line.264"></a>
+<span class="sourceLineNo">265</span>      deleteFamilyBloomFilterWriter.beforeShipped();<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    }<a name="line.266"></a>
+<span class="sourceLineNo">267</span>  }<a name="line.267"></a>
+<span class="sourceLineNo">268</span><a name="line.268"></a>
+<span class="sourceLineNo">269</span>  public Path getPath() {<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    return this.writer.getPath();<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>  public boolean hasGeneralBloom() {<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    return this.generalBloomFilterWriter != null;<a name="line.274"></a>
+<span class="sourceLineNo">275</span>  }<a name="line.275"></a>
+<span class="sourceLineNo">276</span><a name="line.276"></a>
+<span class="sourceLineNo">277</span>  /**<a name="line.277"></a>
+<span class="sourceLineNo">278</span>   * For unit testing only.<a name="line.278"></a>
+<span class="sourceLineNo">279</span>   *<a name="line.279"></a>
+<span class="sourceLineNo">280</span>   * @return the Bloom filter used by this writer.<a name="line.280"></a>
+<span class="sourceLineNo">281</span>   */<a name="line.281"></a>
+<span class="sourceLineNo">282</span>  BloomFilterWriter getGeneralBloomWriter() {<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    return generalBloomFilterWriter;<a name="line.283"></a>
+<span class="sourceLineNo">284</span>  }<a name="line.284"></a>
+<span class="sourceLineNo">285</span><a name="line.285"></a>
+<span class="sourceLineNo">286</span>  private boolean closeBloomFilter(BloomFilterWriter bfw) throws IOException {<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    boolean haveBloom = (bfw != null &amp;&amp; bfw.getKeyCount() &gt; 0);<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    if (haveBloom) {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>      bfw.compactBloom();<a name="line.289"></a>
+<span class="sourceLineNo">290</span>    }<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    return haveBloom;<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 boolean closeGeneralBloomFilter() throws IOException {<a name="line.294"></a>
+<span class="sourceLineNo">295</span>    boolean hasGeneralBloom = closeBloomFilter(generalBloomFilterWriter);<a name="line.295"></a>
+<span class="sourceLineNo">296</span><a name="line.296"></a>
+<span class="sourceLineNo">297</span>    // add the general Bloom filter writer and append file info<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    if (hasGeneralBloom) {<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      writer.addGeneralBloomFilter(generalBloomFilterWriter);<a name="line.299"></a>
+<span class="sourceLineNo">300</span>      writer.appendFileInfo(BLOOM_FILTER_TYPE_KEY, Bytes.toBytes(bloomType.toString()));<a name="line.300"></a>
+<span class="sourceLineNo">301</span>      if (bloomParam != null) {<a name="line.301"></a>
+<span class="sourceLineNo">302</span>        writer.appendFileInfo(BLOOM_FILTER_PARAM_KEY, bloomParam);<a name="line.302"></a>
+<span class="sourceLineNo">303</span>      }<a name="line.303"></a>
+<span class="sourceLineNo">304</span>      bloomContext.addLastBloomKey(writer);<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    }<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    return hasGeneralBloom;<a name="line.306"></a>
+<span class="sourceLineNo">307</span>  }<a name="line.307"></a>
 <span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>    // Log final Bloom filter statistics. This needs to be done after close()<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    // because compound Bloom filters might be finalized as part of closing.<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    if (LOG.isTraceEnabled()) {<a name="line.311"></a>
-<span class="sourceLineNo">312</span>      LOG.trace((hasGeneralBloom ? "" : "NO ") + "General Bloom and " +<a name="line.312"></a>
-<span class="sourceLineNo">313</span>        (hasDeleteFamilyBloom ? "" : "NO ") + "DeleteFamily" + " was added to HFile " +<a name="line.313"></a>
-<span class="sourceLineNo">314</span>        getPath());<a name="line.314"></a>
+<span class="sourceLineNo">309</span>  private boolean closeDeleteFamilyBloomFilter() throws IOException {<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    boolean hasDeleteFamilyBloom = closeBloomFilter(deleteFamilyBloomFilterWriter);<a name="line.310"></a>
+<span class="sourceLineNo">311</span><a name="line.311"></a>
+<span class="sourceLineNo">312</span>    // add the delete family Bloom filter writer<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    if (hasDeleteFamilyBloom) {<a name="line.313"></a>
+<span class="sourceLineNo">314</span>      writer.addDeleteFamilyBloomFilter(deleteFamilyBloomFilterWriter);<a name="line.314"></a>
 <span class="sourceLineNo">315</span>    }<a name="line.315"></a>
 <span class="sourceLineNo">316</span><a name="line.316"></a>
-<span class="sourceLineNo">317</span>  }<a name="line.317"></a>
-<span class="sourceLineNo">318</span><a name="line.318"></a>
-<span class="sourceLineNo">319</span>  public void appendFileInfo(byte[] key, byte[] value) throws IOException {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    writer.appendFileInfo(key, value);<a name="line.320"></a>
-<span class="sourceLineNo">321</span>  }<a name="line.321"></a>
-<span class="sourceLineNo">322</span><a name="line.322"></a>
-<span class="sourceLineNo">323</span>  /** For use in testing.<a name="line.323"></a>
-<span class="sourceLineNo">324</span>   */<a name="line.324"></a>
-<span class="sourceLineNo">325</span>  HFile.Writer getHFileWriter() {<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    return writer;<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>   * @param fs<a name="line.330"></a>
-<span class="sourceLineNo">331</span>   * @param dir Directory to create file in.<a name="line.331"></a>
-<span class="sourceLineNo">332</span>   * @return random filename inside passed &lt;code&gt;dir&lt;/code&gt;<a name="line.332"></a>
-<span class="sourceLineNo">333</span>   */<a name="line.333"></a>
-<span class="sourceLineNo">334</span>  static Path getUniqueFile(final FileSystem fs, final Path dir) throws IOException {<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    if (!fs.getFileStatus(dir).isDirectory()) {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>      throw new IOException("Expecting " + dir.toString() + " to be a directory");<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    }<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    return new Path(dir, dash.matcher(UUID.randomUUID().toString()).replaceAll(""));<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>  @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="ICAST_INTEGER_MULTIPLY_CAST_TO_LONG",<a name="line.341"></a>
-<span class="sourceLineNo">342</span>      justification="Will not overflow")<a name="line.342"></a>
-<span class="sourceLineNo">343</span>  public static class Builder {<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    private final Configuration conf;<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    private final CacheConfig cacheConf;<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    private final FileSystem fs;<a name="line.346"></a>
-<span class="sourceLineNo">347</span><a name="line.347"></a>
-<span class="sourceLineNo">348</span>    private CellComparator comparator = CellComparator.getInstance();<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    private BloomType bloomType = BloomType.NONE;<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    private long maxKeyCount = 0;<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    private Path dir;<a name="line.351"></a>
-<span class="sourceLineNo">352</span>    private Path filePath;<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    private InetSocketAddress[] favoredNodes;<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    private HFileContext fileContext;<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    private boolean shouldDropCacheBehind;<a name="line.355"></a>
-<span class="sourceLineNo">356</span><a name="line.356"></a>
-<span class="sourceLineNo">357</span>    public Builder(Configuration conf, CacheConfig cacheConf,<a name="line.357"></a>
-<span class="sourceLineNo">358</span>        FileSystem fs) {<a name="line.358"></a>
-<span class="sourceLineNo">359</span>      this.conf = conf;<a name="line.359"></a>
-<span class="sourceLineNo">360</span>      this.cacheConf = cacheConf;<a name="line.360"></a>
-<span class="sourceLineNo">361</span>      this.fs = fs;<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    }<a name="line.362"></a>
-<span class="sourceLineNo">363</span><a name="line.363"></a>
-<span class="sourceLineNo">364</span>    /**<a name="line.364"></a>
-<span class="sourceLineNo">365</span>     * Creates Builder with cache configuration disabled<a name="line.365"></a>
-<span class="sourceLineNo">366</span>     */<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    public Builder(Configuration conf, FileSystem fs) {<a name="line.367"></a>
-<span class="sourceLineNo">368</span>      this.conf = conf;<a name="line.368"></a>
-<span class="sourceLineNo">369</span>      this.cacheConf = CacheConfig.DISABLED;<a name="line.369"></a>
-<span class="sourceLineNo">370</span>      this.fs = fs;<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>    /**<a name="line.373"></a>
-<span class="sourceLineNo">374</span>     * Use either this method or {@link #withFilePath}, but not both.<a name="line.374"></a>
-<span class="sourceLineNo">375</span>     * @param dir Path to column family directory. The directory is created if<a name="line.375"></a>
-<span class="sourceLineNo">376</span>     *          does not exist. The file is given a unique name within this<a name="line.376"></a>
-<span class="sourceLineNo">377</span>     *          directory.<a name="line.377"></a>
-<span class="sourceLineNo">378</span>     * @return this (for chained invocation)<a name="line.378"></a>
-<span class="sourceLineNo">379</span>     */<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    public Builder withOutputDir(Path dir) {<a name="line.380"></a>
-<span class="sourceLineNo">381</span>      Preconditions.checkNotNull(dir);<a name="line.381"></a>
-<span class="sourceLineNo">382</span>      this.dir = dir;<a name="line.382"></a>
-<span class="sourceLineNo">383</span>      return this;<a name="line.383"></a>
-<span class="sourceLineNo">384</span>    }<a name="line.384"></a>
-<span class="sourceLineNo">385</span><a name="line.385"></a>
-<span class="sourceLineNo">386</span>    /**<a name="line.386"></a>
-<span class="sourceLineNo">387</span>     * Use either this method or {@link #withOutputDir}, but not both.<a name="line.387"></a>
-<span class="sourceLineNo">388</span>     * @param filePath the StoreFile path to write<a name="line.388"></a>
-<span class="sourceLineNo">389</span>     * @return this (for chained invocation)<a name="line.389"></a>
-<span class="sourceLineNo">390</span>     */<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    public Builder withFilePath(Path filePath) {<a name="line.391"></a>
-<span class="sourceLineNo">392</span>      Preconditions.checkNotNull(filePath);<a name="line.392"></a>
-<span class="sourceLineNo">393</span>      this.filePath = filePath;<a name="line.393"></a>
-<span class="sourceLineNo">394</span>      return this;<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    }<a name="line.395"></a>
-<span class="sourceLineNo">396</span><a name="line.396"></a>
-<span class="sourceLineNo">397</span>    /**<a name="line.397"></a>
-<span class="sourceLineNo">398</span>     * @param favoredNodes an array of favored nodes or possibly null<a name="line.398"></a>
+<span class="sourceLineNo">317</span>    // append file info about the number of delete family kvs<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    // even if there is no delete family Bloom.<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    writer.appendFileInfo(DELETE_FAMILY_COUNT, Bytes.toBytes(this.deleteFamilyCnt));<a name="line.319"></a>
+<span class="sourceLineNo">320</span><a name="line.320"></a>
+<span class="sourceLineNo">321</span>    return hasDeleteFamilyBloom;<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>  public void close() throws IOException {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    boolean hasGeneralBloom = this.closeGeneralBloomFilter();<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    boolean hasDeleteFamilyBloom = this.closeDeleteFamilyBloomFilter();<a name="line.326"></a>
+<span class="sourceLineNo">327</span><a name="line.327"></a>
+<span class="sourceLineNo">328</span>    writer.close();<a name="line.328"></a>
+<span class="sourceLineNo">329</span><a name="line.329"></a>
+<span class="sourceLineNo">330</span>    // Log final Bloom filter statistics. This needs to be done after close()<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    // because compound Bloom filters might be finalized as part of closing.<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    if (LOG.isTraceEnabled()) {<a name="line.332"></a>
+<span class="sourceLineNo">333</span>      LOG.trace((hasGeneralBloom ? "" : "NO ") + "General Bloom and " +<a name="line.333"></a>
+<span class="sourceLineNo">334</span>        (hasDeleteFamilyBloom ? "" : "NO ") + "DeleteFamily" + " was added to HFile " +<a name="line.334"></a>
+<span class="sourceLineNo">335</span>        getPath());<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>  }<a name="line.338"></a>
+<span class="sourceLineNo">339</span><a name="line.339"></a>
+<span class="sourceLineNo">340</span>  public void appendFileInfo(byte[] key, byte[] value) throws IOException {<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    writer.appendFileInfo(key, value);<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>  /** For use in testing.<a name="line.344"></a>
+<span class="sourceLineNo">345</span>   */<a name="line.345"></a>
+<span class="sourceLineNo">346</span>  HFile.Writer getHFileWriter() {<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    return writer;<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>   * @param fs<a name="line.351"></a>
+<span class="sourceLineNo">352</span>   * @param dir Directory to create file in.<a name="line.352"></a>
+<span class="sourceLineNo">353</span>   * @return random filename inside passed &lt;code&gt;dir&lt;/code&gt;<a name="line.353"></a>
+<span class="sourceLineNo">354</span>   */<a name="line.354"></a>
+<span class="sourceLineNo">355</span>  static Path getUniqueFile(final FileSystem fs, final Path dir) throws IOException {<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    if (!fs.getFileStatus(dir).isDirectory()) {<a name="line.356"></a>
+<span class="sourceLineNo">357</span>      throw new IOException("Expecting " + dir.toString() + " to be a directory");<a name="line.357"></a>
+<span class="sourceLineNo">358</span>    }<a name="line.358"></a>
+<span class="sourceLineNo">359</span>    return new Path(dir, dash.matcher(UUID.randomUUID().toString()).replaceAll(""));<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>  @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="ICAST_INTEGER_MULTIPLY_CAST_TO_LONG",<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      justification="Will not overflow")<a name="line.363"></a>
+<span class="sourceLineNo">364</span>  public static class Builder {<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    private final Configuration conf;<a name="line.365"></a>
+<span class="sourceLineNo">366</span>    private final CacheConfig cacheConf;<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    private final FileSystem fs;<a name="line.367"></a>
+<span class="sourceLineNo">368</span><a name="line.368"></a>
+<span class="sourceLineNo">369</span>    private CellComparator comparator = CellComparator.getInstance();<a name="line.369"></a>
+<span class="sourceLineNo">370</span>    private BloomType bloomType = BloomType.NONE;<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    private long maxKeyCount = 0;<a name="line.371"></a>
+<span class="sourceLineNo">372</span>    private Path dir;<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    private Path filePath;<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    private InetSocketAddress[] favoredNodes;<a name="line.374"></a>
+<span class="sourceLineNo">375</span>    private HFileContext fileContext;<a name="line.375"></a>
+<span class="sourceLineNo">376</span>    private boolean shouldDropCacheBehind;<a name="line.376"></a>
+<span class="sourceLineNo">377</span><a name="line.377"></a>
+<span class="sourceLineNo">378</span>    public Builder(Configuration conf, CacheConfig cacheConf,<a name="line.378"></a>
+<span class="sourceLineNo">379</span>        FileSystem fs) {<a name="line.379"></a>
+<span class="sourceLineNo">380</span>      this.conf = conf;<a name="line.380"></a>
+<span class="sourceLineNo">381</span>      this.cacheConf = cacheConf;<a name="line.381"></a>
+<span class="sourceLineNo">382</span>      this.fs = fs;<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    }<a name="line.383"></a>
+<span class="sourceLineNo">384</span><a name="line.384"></a>
+<span class="sourceLineNo">385</span>    /**<a name="line.385"></a>
+<span class="sourceLineNo">386</span>     * Creates Builder with cache configuration disabled<a name="line.386"></a>
+<span class="sourceLineNo">387</span>     */<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    public Builder(Configuration conf, FileSystem fs) {<a name="line.388"></a>
+<span class="sourceLineNo">389</span>      this.conf = conf;<a name="line.389"></a>
+<span class="sourceLineNo">390</span>      this.cacheConf = CacheConfig.DISABLED;<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      this.fs = fs;<a name="line.391"></a>
+<span class="sourceLineNo">392</span>    }<a name="line.392"></a>
+<span class="sourceLineNo">393</span><a name="line.393"></a>
+<span class="sourceLineNo">394</span>    /**<a name="line.394"></a>
+<span class="sourceLineNo">395</span>     * Use either this method or {@link #withFilePath}, but not both.<a name="line.395"></a>
+<span class="sourceLineNo">396</span>     * @param dir Path to column family directory. The directory is created if<a name="line.396"></a>
+<span class="sourceLineNo">397</span>     *          does not exist. The file is given a unique name within this<a name="line.397"></a>
+<span class="sourceLineNo">398</span>     *          directory.<a name="line.398"></a>
 <span class="sourceLineNo">399</span>     * @return this (for chained invocation)<a name="line.399"></a>
 <span class="sourceLineNo">400</span>     */<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    public Builder withFavoredNodes(InetSocketAddress[] favoredNodes) {<a name="line.401"></a>
-<span class="sourceLineNo">402</span>      this.favoredNodes = favoredNodes;<a name="line.402"></a>
-<span class="sourceLineNo">403</span>      return this;<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    }<a name="line.404"></a>
-<span class="sourceLineNo">405</span><a name="line.405"></a>
-<span class="sourceLineNo">406</span>    public Builder withComparator(CellComparator comparator) {<a name="line.406"></a>
-<span class="sourceLineNo">407</span>      Preconditions.checkNotNull(comparator);<a name="line.407"></a>
-<span class="sourceLineNo">408</span>      this.comparator = comparator;<a name="line.408"></a>
-<span class="sourceLineNo">409</span>      return this;<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    }<a name="line.410"></a>
-<span class="sourceLineNo">411</span><a name="line.411"></a>
-<span class="sourceLineNo">412</span>    public Builder withBloomType(BloomType bloomType) {<a name="line.412"></a>
-<span class="sourceLineNo">413</span>      Preconditions.checkNotNull(bloomType);<a name="line.413"></a>
-<span class="sourceLineNo">414</span>      this.bloomType = bloomType;<a name="line.414"></a>
+<span class="sourceLineNo">401</span>    public Builder withOutputDir(Path dir) {<a name="line.401"></a>
+<span class="sourceLineNo">402</span>      Preconditions.checkNotNull(dir);<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      this.dir = dir;<a name="line.403"></a>
+<span class="sourceLineNo">404</span>      return this;<a name="line.404"></a>
+<span class="sourceLineNo">405</span>    }<a name="line.405"></a>
+<span class="sourceLineNo">406</span><a name="line.406"></a>
+<span class="sourceLineNo">407</span>    /**<a name="line.407"></a>
+<span class="sourceLineNo">408</span>     * Use either this method or {@link #withOutputDir}, but not both.<a name="line.408"></a>
+<span class="sourceLineNo">409</span>     * @param filePath the StoreFile path to write<a name="line.409"></a>
+<span class="sourceLineNo">410</span>     * @return this (for chained invocation)<a name="line.410"></a>
+<span class="sourceLineNo">411</span>     */<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    public Builder withFilePath(Path filePath) {<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      Preconditions.checkNotNull(filePath);<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      this.filePath = filePath;<a name="line.414"></a>
 <span class="sourceLineNo">415</span>      return this;<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>    /**<a name="line.418"></a>
-<span class="sourceLineNo">419</span>     * @param maxKeyCount estimated maximum number of keys we expect to add<a name="line.419"></a>
+<span class="sourceLineNo">419</span>     * @param favoredNodes an array of favored nodes or possibly null<a name="line.419"></a>
 <span class="sourceLineNo">420</span>     * @return this (for chained invocation)<a name="line.420"></a>
 <span class="sourceLineNo">421</span>     */<a name="line.421"></a>
-<span class="sourceLineNo">422</span>    public Builder withMaxKeyCount(long maxKeyCount) {<a name="line.422"></a>
-<span class="sourceLineNo">423</span>      this.maxKeyCount = maxKeyCount;<a name="line.423"></a>
+<span class="sourceLineNo">422</span>    public Builder withFavoredNodes(InetSocketAddress[] favoredNodes) {<a name="line.422"></a>
+<span class="sourceLineNo">423</span>      this.favoredNodes = favoredNodes;<a name="line.423"></a>
 <span class="sourceLineNo">424</span>      return this;<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>    public Builder withFileContext(HFileContext fileContext) {<a name="line.427"></a>
-<span class="sourceLineNo">428</span>      this.fileContext = fileContext;<a name="line.428"></a>
-<span class="sourceLineNo">429</span>      return this;<a name="line.429"></a>
-<span class="sourceLineNo">430</span>    }<a name="line.430"></a>
-<span class="sourceLineNo">431</span><a name="line.431"></a>
-<span class="sourceLineNo">432</span>    public Builder withShouldDropCacheBehind(boolean shouldDropCacheBehind) {<a name="line.432"></a>
-<span class="sourceLineNo">433</span>      this.shouldDropCacheBehind = shouldDropCacheBehind;<a name="line.433"></a>
-<span class="sourceLineNo">434</span>      return this;<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>    /**<a name="line.437"></a>
-<span class="sourceLineNo">438</span>     * Create a store file writer. Client is responsible for closing file when<a name="line.438"></a>
-<span class="sourceLineNo">439</span>     * done. If metadata, add BEFORE closing using<a name="line.439"></a>
-<span class="sourceLineNo">440</span>     * {@link StoreFileWriter#appendMetadata}.<a name="line.440"></a>
-<span class="sourceLineNo">441</span>     */<a name="line.441"></a>
-<span class="sourceLineNo">442</span>    public StoreFileWriter build() throws IOException {<a name="line.442"></a>
-<span class="sourceLineNo">443</span>      if ((dir == null ? 0 : 1) + (filePath == null ? 0 : 1) != 1) {<a name="line.443"></a>
-<span class="sourceLineNo">444</span>        throw new IllegalArgumentException("Either specify parent directory " +<a name="line.444"></a>
-<span class="sourceLineNo">445</span>            "or file path");<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      }<a name="line.446"></a>
+<span class="sourceLineNo">427</span>    public Builder withComparator(CellComparator comparator) {<a name="line.427"></a>
+<span class="sourceLineNo">428</span>      Preconditions.checkNotNull(comparator);<a name="line.428"></a>
+<span class="sourceLineNo">429</span>      this.comparator = comparator;<a name="line.429"></a>
+<span class="sourceLineNo">430</span>      return this;<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>    public Builder withBloomType(BloomType bloomType) {<a name="line.433"></a>
+<span class="sourceLineNo">434</span>      Preconditions.checkNotNull(bloomType);<a name="line.434"></a>
+<span class="sourceLineNo">435</span>      this.bloomType = bloomType;<a name="line.435"></a>
+<span class="sourceLineNo">436</span>      return this;<a name="line.436"></a>
+<span class="sourceLineNo">437</span>    }<a name="line.437"></a>
+<span class="sourceLineNo">438</span><a name="line.438"></a>
+<span class="sourceLineNo">439</span>    /**<a name="line.439"></a>
+<span class="sourceLineNo">440</span>     * @param maxKeyCount estimated maximum number of keys we expect to add<a name="line.440"></a>
+<span class="sourceLineNo">441</span>     * @return this (for chained invocation)<a name="line.441"></a>
+<span class="sourceLineNo">442</span>     */<a name="line.442"></a>
+<span class="sourceLineNo">443</span>    public Builder withMaxKeyCount(long maxKeyCount) {<a name="line.443"></a>
+<span class="sourceLineNo">444</span>      this.maxKeyCount = maxKeyCount;<a name="line.444"></a>
+<span class="sourceLineNo">445</span>      return this;<a name="line.445"></a>
+<span class="sourceLineNo">446</span>    }<a name="line.446"></a>
 <span class="sourceLineNo">447</span><a name="line.447"></a>
-<span class="sourceLineNo">448</span>      if (dir == null) {<a name="line.448"></a>
-<span class="sourceLineNo">449</span>        dir = filePath.getParent();<a name="line.449"></a>
-<span class="sourceLineNo">450</span>      }<a name="line.450"></a>
-<span class="sourceLineNo">451</span><a name="line.451"></a>
-<span class="sourceLineNo">452</span>      if (!fs.exists(dir)) {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>        // Handle permission for non-HDFS filesystem properly<a name="line.453"></a>
-<span class="sourceLineNo">454</span>        // See HBASE-17710<a name="line.454"></a>
-<span class="sourceLineNo">455</span>        HRegionFileSystem.mkdirs(fs, conf, dir);<a name="line.455"></a>
-<span class="sourceLineNo">456</span>      }<a name="line.456"></a>
+<span class="sourceLineNo">448</span>    public Builder withFileContext(HFileContext fileContext) {<a name="line.448"></a>
+<span class="sourceLineNo">449</span>      this.fileContext = fileContext;<a name="line.449"></a>
+<span class="sourceLineNo">450</span>      return this;<a name="line.450"></a>
+<span class="sourceLineNo">451</span>    }<a name="line.451"></a>
+<span class="sourceLineNo">452</span><a name="line.452"></a>
+<span class="sourceLineNo">453</span>    public Builder withShouldDropCacheBehind(boolean shouldDropCacheBehind) {<a name="line.453"></a>
+<span class="sourceLineNo">454</span>      this.shouldDropCacheBehind = shouldDropCacheBehind;<a name="line.454"></a>
+<span class="sourceLineNo">455</span>      return this;<a name="line.455"></a>
+<span class="sourceLineNo">456</span>    }<a name="line.456"></a>
 <span class="sourceLineNo">457</span><a name="line.457"></a>
-<span class="sourceLineNo">458</span>      // set block storage policy for temp path<a name="line.458"></a>
-<span class="sourceLineNo">459</span>      String policyName = this.conf.get(ColumnFamilyDescriptorBuilder.STORAGE_POLICY);<a name="line.459"></a>
-<span class="sourceLineNo">460</span>      if (null == policyName) {<a name="line.460"></a>
-<span class="sourceLineNo">461</span>        policyName = this.conf.get(HStore.BLOCK_STORAGE_POLICY_KEY);<a name="line.461"></a>
-<span class="sourceLineNo">462</span>      }<a name="line.462"></a>
-<span class="sourceLineNo">463</span>      FSUtils.setStoragePolicy(this.fs, dir, policyName);<a name="line.463"></a>
-<span class="sourceLineNo">464</span><a name="line.464"></a>
-<span class="sourceLineNo">465</span>      if (filePath == null) {<a name="line.465"></a>
-<span class="sourceLineNo">466</span>        filePath = getUniqueFile(fs, dir);<a name="line.466"></a>
-<span class="sourceLineNo">467</span>        if (!BloomFilterFactory.isGeneralBloomEnabled(conf)) {<a name="line.467"></a>
-<span class="sourceLineNo">468</span>          bloomType = BloomType.NONE;<a name="line.468"></a>
-<span class="sourceLineNo">469</span>        }<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>      if (comparator == null) {<a name="line.472"></a>
-<span class="sourceLineNo">473</span>        comparator = CellComparator.getInstance();<a name="line.473"></a>
-<span class="sourceLineNo">474</span>      }<a name="line.474"></a>
-<span class="sourceLineNo">475</span>      return new StoreFileWriter(fs, filePath,<a name="line.475"></a>
-<span class="sourceLineNo">476</span>          conf, cacheConf, comparator, bloomType, maxKeyCount, favoredNodes, fileContext,<a name="line.476"></a>
-<span class="sourceLineNo">477</span>          shouldDropCacheBehind);<a name="line.477"></a>
-<span class="sourceLineNo">478</span>    }<a name="line.478"></a>
-<span class="sourceLineNo">479</span>  }<a name="line.479"></a>
-<span class="sourceLineNo">480</span>}<a name="line.480"></a>
+<span class="sourceLineNo">458</span>    /**<a name="line.458"></a>
+<span class="sourceLineNo">459</span>     * Create a store file writer. Client is responsible for closing file when<a name="line.459"></a>
+<span class="sourceLineNo">460</span>     * done. If metadata, add BEFORE closing using<a name="line.460"></a>
+<span class="sourceLineNo">461</span>     * {@link StoreFileWriter#appendMetadata}.<a name="line.461"></a>
+<span class="sourceLineNo">462</span>     */<a name="line.462"></a>
+<span class="sourceLineNo">463</span>    public StoreFileWriter build() throws IOException {<a name="line.463"></a>
+<span class="sourceLineNo">464</span>      if ((dir == null ? 0 : 1) + (filePath == null ? 0 : 1) != 1) {<a name="line.464"></a>
+<span class="sourceLineNo">465</span>        throw new IllegalArgumentException("Either specify parent directory " +<a name="line.465"></a>
+<span class="sourceLineNo">466</span>            "or file path");<a name="line.466"></a>
+<span class="sourceLineNo">467</span>      }<a name="line.467"></a>
+<span class="sourceLineNo">468</span><a name="line.468"></a>
+<span class="sourceLineNo">469</span>      if (dir == null) {<a name="line.469"></a>
+<span class="sourceLineNo">470</span>        dir = filePath.getParent();<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>      if (!fs.exists(dir)) {<a name="line.473"></a>
+<span class="sourceLineNo">474</span>        // Handle permission for non-HDFS filesystem properly<a name="line.474"></a>
+<span class="sourceLineNo">475</span>        // See HBASE-17710<a name="line.475"></a>
+<span class="sourceLineNo">476</span>        HRegionFileSystem.mkdirs(fs, conf, dir);<a name="line.476"></a>
+<span class="sourceLineNo">477</span>      }<a name="line.477"></a>
+<span class="sourceLineNo">478</span><a name="line.478"></a>
+<span class="sourceLineNo">479</span>      // set block storage policy for temp path<a name="line.479"></a>
+<span class="sourceLineNo">480</span>      String policyName = this.conf.get(ColumnFamilyDescriptorBuilder.STORAGE_POLICY);<a name="line.480"></a>
+<span class="sourceLineNo">481</span>      if (null == policyName) {<a name="line.481"></a>
+<span class="sourceLineNo

<TRUNCATED>

[39/43] hbase-site git commit: Published site at 7ab77518a2569e2416a50020393aa386e7734501.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/checkstyle.rss
----------------------------------------------------------------------
diff --git a/checkstyle.rss b/checkstyle.rss
index 8435fbc..0d4cfec 100644
--- a/checkstyle.rss
+++ b/checkstyle.rss
@@ -25,8 +25,8 @@ under the License.
     <language>en-us</language>
     <copyright>&#169;2007 - 2018 The Apache Software Foundation</copyright>
     <item>
-      <title>File: 3740,
-             Errors: 15223,
+      <title>File: 3743,
+             Errors: 15216,
              Warnings: 0,
              Infos: 0
       </title>
@@ -11890,6 +11890,20 @@ under the License.
               </tr>
                           <tr>
                 <td>
+                  <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.util.RowPrefixFixedLengthBloomContext.java">org/apache/hadoop/hbase/util/RowPrefixFixedLengthBloomContext.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.TestAsyncBufferMutator.java">org/apache/hadoop/hbase/client/TestAsyncBufferMutator.java</a>
                 </td>
                 <td>
@@ -20439,7 +20453,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  12
+                  13
                 </td>
               </tr>
                           <tr>
@@ -28648,6 +28662,20 @@ under the License.
               </tr>
                           <tr>
                 <td>
+                  <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.util.RowPrefixDelimiterBloomContext.java">org/apache/hadoop/hbase/util/RowPrefixDelimiterBloomContext.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.io.TestMetricsIO.java">org/apache/hadoop/hbase/io/TestMetricsIO.java</a>
                 </td>
                 <td>
@@ -46675,7 +46703,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  13
+                  5
                 </td>
               </tr>
                           <tr>
@@ -48206,6 +48234,20 @@ under the License.
               </tr>
                           <tr>
                 <td>
+                  <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestRowPrefixBloomFilter.java">org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.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.types.TestTerminatedWrapper.java">org/apache/hadoop/hbase/types/TestTerminatedWrapper.java</a>
                 </td>
                 <td>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/coc.html
----------------------------------------------------------------------
diff --git a/coc.html b/coc.html
index 89850d1..b3a3990 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="20180921" />
+    <meta name="Date-Revision-yyyymmdd" content="20180922" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Code of Conduct Policy
@@ -375,7 +375,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: 2018-09-21</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-22</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/dependencies.html
----------------------------------------------------------------------
diff --git a/dependencies.html b/dependencies.html
index 3f78a00..5419660 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="20180921" />
+    <meta name="Date-Revision-yyyymmdd" content="20180922" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Dependencies</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -440,7 +440,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-09-21</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-22</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/dependency-convergence.html b/dependency-convergence.html
index eb7a7d3..fbe9976 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="20180921" />
+    <meta name="Date-Revision-yyyymmdd" content="20180922" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Reactor Dependency Convergence</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -879,7 +879,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-09-21</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-22</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/dependency-info.html
----------------------------------------------------------------------
diff --git a/dependency-info.html b/dependency-info.html
index aebfa49..f178255 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="20180921" />
+    <meta name="Date-Revision-yyyymmdd" content="20180922" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Dependency Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -313,7 +313,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-09-21</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-22</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/dependency-management.html
----------------------------------------------------------------------
diff --git a/dependency-management.html b/dependency-management.html
index ed2429a..422e0de 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="20180921" />
+    <meta name="Date-Revision-yyyymmdd" content="20180922" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Dependency Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -1005,7 +1005,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-09-21</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-22</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/devapidocs/allclasses-frame.html
----------------------------------------------------------------------
diff --git a/devapidocs/allclasses-frame.html b/devapidocs/allclasses-frame.html
index 010ddcb..2c8131d 100644
--- a/devapidocs/allclasses-frame.html
+++ b/devapidocs/allclasses-frame.html
@@ -2296,6 +2296,8 @@
 <li><a href="org/apache/hadoop/hbase/io/encoding/RowIndexSeekerV1.html" title="class in org.apache.hadoop.hbase.io.encoding" target="classFrame">RowIndexSeekerV1</a></li>
 <li><a href="org/apache/hadoop/hbase/rest/model/RowModel.html" title="class in org.apache.hadoop.hbase.rest.model" target="classFrame">RowModel</a></li>
 <li><a href="org/apache/hadoop/hbase/client/RowMutations.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">RowMutations</a></li>
+<li><a href="org/apache/hadoop/hbase/util/RowPrefixDelimiterBloomContext.html" title="class in org.apache.hadoop.hbase.util" target="classFrame">RowPrefixDelimiterBloomContext</a></li>
+<li><a href="org/apache/hadoop/hbase/util/RowPrefixFixedLengthBloomContext.html" title="class in org.apache.hadoop.hbase.util" target="classFrame">RowPrefixFixedLengthBloomContext</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/RowProcessor.html" title="interface in org.apache.hadoop.hbase.regionserver" target="classFrame"><span class="interfaceName">RowProcessor</span></a></li>
 <li><a href="org/apache/hadoop/hbase/client/coprocessor/RowProcessorClient.html" title="class in org.apache.hadoop.hbase.client.coprocessor" target="classFrame">RowProcessorClient</a></li>
 <li><a href="org/apache/hadoop/hbase/rest/RowResource.html" title="class in org.apache.hadoop.hbase.rest" target="classFrame">RowResource</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/devapidocs/allclasses-noframe.html
----------------------------------------------------------------------
diff --git a/devapidocs/allclasses-noframe.html b/devapidocs/allclasses-noframe.html
index 344d525..972060d 100644
--- a/devapidocs/allclasses-noframe.html
+++ b/devapidocs/allclasses-noframe.html
@@ -2296,6 +2296,8 @@
 <li><a href="org/apache/hadoop/hbase/io/encoding/RowIndexSeekerV1.html" title="class in org.apache.hadoop.hbase.io.encoding">RowIndexSeekerV1</a></li>
 <li><a href="org/apache/hadoop/hbase/rest/model/RowModel.html" title="class in org.apache.hadoop.hbase.rest.model">RowModel</a></li>
 <li><a href="org/apache/hadoop/hbase/client/RowMutations.html" title="class in org.apache.hadoop.hbase.client">RowMutations</a></li>
+<li><a href="org/apache/hadoop/hbase/util/RowPrefixDelimiterBloomContext.html" title="class in org.apache.hadoop.hbase.util">RowPrefixDelimiterBloomContext</a></li>
+<li><a href="org/apache/hadoop/hbase/util/RowPrefixFixedLengthBloomContext.html" title="class in org.apache.hadoop.hbase.util">RowPrefixFixedLengthBloomContext</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/RowProcessor.html" title="interface in org.apache.hadoop.hbase.regionserver"><span class="interfaceName">RowProcessor</span></a></li>
 <li><a href="org/apache/hadoop/hbase/client/coprocessor/RowProcessorClient.html" title="class in org.apache.hadoop.hbase.client.coprocessor">RowProcessorClient</a></li>
 <li><a href="org/apache/hadoop/hbase/rest/RowResource.html" title="class in org.apache.hadoop.hbase.rest">RowResource</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/devapidocs/constant-values.html
----------------------------------------------------------------------
diff --git a/devapidocs/constant-values.html b/devapidocs/constant-values.html
index 12aaffa..ee03c3a 100644
--- a/devapidocs/constant-values.html
+++ b/devapidocs/constant-values.html
@@ -3824,21 +3824,21 @@
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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>"Fri Sep 21 14:44:27 UTC 2018"</code></td>
+<td class="colLast"><code>"Sat Sep 22 14:42:20 UTC 2018"</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="https://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>"ddd30a2241ce625e178571bb7fc8984846b5432b"</code></td>
+<td class="colLast"><code>"7ab77518a2569e2416a50020393aa386e7734501"</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="https://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>"7f7a5aabd917d013e4527cc35a966c99"</code></td>
+<td class="colLast"><code>"40cfe40c509b5c9b75784418a7a88604"</code></td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.Version.url">
@@ -11970,69 +11970,76 @@
 <td class="colLast"><code>"hbase.mapreduce.hfileoutputformat.blocksize"</code></td>
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.mapreduce.HFileOutputFormat2.BLOOM_PARAM_FAMILIES_CONF_KEY">
+<!--   -->
+</a><code>static&nbsp;final&nbsp;<a href="https://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/mapreduce/HFileOutputFormat2.html#BLOOM_PARAM_FAMILIES_CONF_KEY">BLOOM_PARAM_FAMILIES_CONF_KEY</a></code></td>
+<td class="colLast"><code>"hbase.hfileoutputformat.families.bloomparam"</code></td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.mapreduce.HFileOutputFormat2.BLOOM_TYPE_FAMILIES_CONF_KEY">
 <!--   -->
 </a><code>static&nbsp;final&nbsp;<a href="https://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/mapreduce/HFileOutputFormat2.html#BLOOM_TYPE_FAMILIES_CONF_KEY">BLOOM_TYPE_FAMILIES_CONF_KEY</a></code></td>
 <td class="colLast"><code>"hbase.hfileoutputformat.families.bloomtype"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.mapreduce.HFileOutputFormat2.COMPRESSION_FAMILIES_CONF_KEY">
 <!--   -->
 </a><code>static&nbsp;final&nbsp;<a href="https://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/mapreduce/HFileOutputFormat2.html#COMPRESSION_FAMILIES_CONF_KEY">COMPRESSION_FAMILIES_CONF_KEY</a></code></td>
 <td class="colLast"><code>"hbase.hfileoutputformat.families.compression"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.mapreduce.HFileOutputFormat2.DATABLOCK_ENCODING_FAMILIES_CONF_KEY">
 <!--   -->
 </a><code>static&nbsp;final&nbsp;<a href="https://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/mapreduce/HFileOutputFormat2.html#DATABLOCK_ENCODING_FAMILIES_CONF_KEY">DATABLOCK_ENCODING_FAMILIES_CONF_KEY</a></code></td>
 <td class="colLast"><code>"hbase.mapreduce.hfileoutputformat.families.datablock.encoding"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.mapreduce.HFileOutputFormat2.DATABLOCK_ENCODING_OVERRIDE_CONF_KEY">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/mapreduce/HFileOutputFormat2.html#DATABLOCK_ENCODING_OVERRIDE_CONF_KEY">DATABLOCK_ENCODING_OVERRIDE_CONF_KEY</a></code></td>
 <td class="colLast"><code>"hbase.mapreduce.hfileoutputformat.datablock.encoding"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.mapreduce.HFileOutputFormat2.DEFAULT_LOCALITY_SENSITIVE">
 <!--   -->
 </a><code>private&nbsp;static&nbsp;final&nbsp;boolean</code></td>
 <td><code><a href="org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#DEFAULT_LOCALITY_SENSITIVE">DEFAULT_LOCALITY_SENSITIVE</a></code></td>
 <td class="colLast"><code>true</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.mapreduce.HFileOutputFormat2.LOCALITY_SENSITIVE_CONF_KEY">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/mapreduce/HFileOutputFormat2.html#LOCALITY_SENSITIVE_CONF_KEY">LOCALITY_SENSITIVE_CONF_KEY</a></code></td>
 <td class="colLast"><code>"hbase.bulkload.locality.sensitive.enabled"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.mapreduce.HFileOutputFormat2.MULTI_TABLE_HFILEOUTPUTFORMAT_CONF_KEY">
 <!--   -->
 </a><code>static&nbsp;final&nbsp;<a href="https://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/mapreduce/HFileOutputFormat2.html#MULTI_TABLE_HFILEOUTPUTFORMAT_CONF_KEY">MULTI_TABLE_HFILEOUTPUTFORMAT_CONF_KEY</a></code></td>
 <td class="colLast"><code>"hbase.mapreduce.use.multi.table.hfileoutputformat"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.mapreduce.HFileOutputFormat2.OUTPUT_TABLE_NAME_CONF_KEY">
 <!--   -->
 </a><code>static&nbsp;final&nbsp;<a href="https://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/mapreduce/HFileOutputFormat2.html#OUTPUT_TABLE_NAME_CONF_KEY">OUTPUT_TABLE_NAME_CONF_KEY</a></code></td>
 <td class="colLast"><code>"hbase.mapreduce.hfileoutputformat.table.name"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.mapreduce.HFileOutputFormat2.STORAGE_POLICY_PROPERTY">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/mapreduce/HFileOutputFormat2.html#STORAGE_POLICY_PROPERTY">STORAGE_POLICY_PROPERTY</a></code></td>
 <td class="colLast"><code>"hbase.hstore.block.storage.policy"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.mapreduce.HFileOutputFormat2.STORAGE_POLICY_PROPERTY_CF_PREFIX">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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>
@@ -27447,6 +27454,20 @@
 </tr>
 <tbody>
 <tr class="altColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.util.BloomFilterUtil.DELIMITER_KEY">
+<!--   -->
+</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/util/BloomFilterUtil.html#DELIMITER_KEY">DELIMITER_KEY</a></code></td>
+<td class="colLast"><code>"RowPrefixDelimitedBloomFilter.delimiter"</code></td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.util.BloomFilterUtil.PREFIX_LENGTH_KEY">
+<!--   -->
+</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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/util/BloomFilterUtil.html#PREFIX_LENGTH_KEY">PREFIX_LENGTH_KEY</a></code></td>
+<td class="colLast"><code>"RowPrefixBloomFilter.prefix_length"</code></td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.util.BloomFilterUtil.STATS_RECORD_SEP">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://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>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/devapidocs/index-all.html
----------------------------------------------------------------------
diff --git a/devapidocs/index-all.html b/devapidocs/index-all.html
index b2a0a04..5c2b197 100644
--- a/devapidocs/index-all.html
+++ b/devapidocs/index-all.html
@@ -6576,10 +6576,16 @@
 <dd>
 <div class="block">Meta data block name for bloom filter bits.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/HStoreFile.html#BLOOM_FILTER_PARAM_KEY">BLOOM_FILTER_PARAM_KEY</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a></dt>
+<dd>
+<div class="block">Bloom filter param in FileInfo</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/HStoreFile.html#BLOOM_FILTER_TYPE_KEY">BLOOM_FILTER_TYPE_KEY</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a></dt>
 <dd>
 <div class="block">Bloom filter Type in FileInfo</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#BLOOM_PARAM_FAMILIES_CONF_KEY">BLOOM_PARAM_FAMILIES_CONF_KEY</a></span> - Static variable in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html" title="class in org.apache.hadoop.hbase.mapreduce">HFileOutputFormat2</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#BLOOM_TYPE_FAMILIES_CONF_KEY">BLOOM_TYPE_FAMILIES_CONF_KEY</a></span> - Static variable in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html" title="class in org.apache.hadoop.hbase.mapreduce">HFileOutputFormat2</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/hfile/CompoundBloomFilterWriter.html#bloomBlockIndexWriter">bloomBlockIndexWriter</a></span> - Variable in class org.apache.hadoop.hbase.io.hfile.<a href="org/apache/hadoop/hbase/io/hfile/CompoundBloomFilterWriter.html" title="class in org.apache.hadoop.hbase.io.hfile">CompoundBloomFilterWriter</a></dt>
@@ -6661,6 +6667,12 @@
 <div class="block">Specifies methods needed to add elements to a Bloom filter and serialize the
  resulting Bloom filter as a sequence of bytes.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#bloomParam">bloomParam</a></span> - Variable 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>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#bloomParamDetails">bloomParamDetails</a></span> - Static variable in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html" title="class in org.apache.hadoop.hbase.mapreduce">HFileOutputFormat2</a></dt>
+<dd>
+<div class="block">Serialize column family to bloom param map to configuration.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/hfile/CompoundBloomFilterWriter.html#bloomType">bloomType</a></span> - Variable in class org.apache.hadoop.hbase.io.hfile.<a href="org/apache/hadoop/hbase/io/hfile/CompoundBloomFilterWriter.html" title="class in org.apache.hadoop.hbase.io.hfile">CompoundBloomFilterWriter</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/regionserver/BloomType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">BloomType</span></a> - Enum in <a href="org/apache/hadoop/hbase/regionserver/package-summary.html">org.apache.hadoop.hbase.regionserver</a></dt>
@@ -10385,6 +10397,8 @@
 <dd>
 <div class="block">At a block boundary, write all the inline blocks and opens new block.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/HMaster.html#checkBloomFilterType-org.apache.hadoop.hbase.client.ColumnFamilyDescriptor-">checkBloomFilterType(ColumnFamilyDescriptor)</a></span> - Static 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>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/http/jmx/JMXJsonServlet.html#checkCallbackName-java.lang.String-">checkCallbackName(String)</a></span> - Method in class org.apache.hadoop.hbase.http.jmx.<a href="org/apache/hadoop/hbase/http/jmx/JMXJsonServlet.html" title="class in org.apache.hadoop.hbase.http.jmx">JMXJsonServlet</a></dt>
 <dd>
 <div class="block">Verifies that the callback property, if provided, is purely alphanumeric.</div>
@@ -19763,6 +19777,11 @@
 <div class="block">Runs inside the task to deserialize column family to block size
  map from the configuration.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#createFamilyBloomParamMap-org.apache.hadoop.conf.Configuration-">createFamilyBloomParamMap(Configuration)</a></span> - Static method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html" title="class in org.apache.hadoop.hbase.mapreduce">HFileOutputFormat2</a></dt>
+<dd>
+<div class="block">Runs inside the task to deserialize column family to bloom filter param
+ map from the configuration.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#createFamilyBloomTypeMap-org.apache.hadoop.conf.Configuration-">createFamilyBloomTypeMap(Configuration)</a></span> - Static method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html" title="class in org.apache.hadoop.hbase.mapreduce">HFileOutputFormat2</a></dt>
 <dd>
 <div class="block">Runs inside the task to deserialize column family to bloom filter type
@@ -25235,8 +25254,14 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/DelimitedKeyPrefixRegionSplitPolicy.html#delimiter">delimiter</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/DelimitedKeyPrefixRegionSplitPolicy.html" title="class in org.apache.hadoop.hbase.regionserver">DelimitedKeyPrefixRegionSplitPolicy</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/StoreFileReader.html#delimiter">delimiter</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/RowPrefixDelimiterBloomContext.html#delimiter">delimiter</a></span> - Variable in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/RowPrefixDelimiterBloomContext.html" title="class in org.apache.hadoop.hbase.util">RowPrefixDelimiterBloomContext</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/DelimitedKeyPrefixRegionSplitPolicy.html#DELIMITER_KEY">DELIMITER_KEY</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/DelimitedKeyPrefixRegionSplitPolicy.html" title="class in org.apache.hadoop.hbase.regionserver">DelimitedKeyPrefixRegionSplitPolicy</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/BloomFilterUtil.html#DELIMITER_KEY">DELIMITER_KEY</a></span> - Static variable in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/BloomFilterUtil.html" title="class in org.apache.hadoop.hbase.util">BloomFilterUtil</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mob/compactions/PartitionedMobCompactor.DelPartitionComparator.html#DelPartitionComparator-boolean-">DelPartitionComparator(boolean)</a></span> - Constructor for class org.apache.hadoop.hbase.mob.compactions.<a href="org/apache/hadoop/hbase/mob/compactions/PartitionedMobCompactor.DelPartitionComparator.html" title="class in org.apache.hadoop.hbase.mob.compactions">PartitionedMobCompactor.DelPartitionComparator</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mob/compactions/PartitionedMobCompactionRequest.html#delPartitions">delPartitions</a></span> - Variable in class org.apache.hadoop.hbase.mob.compactions.<a href="org/apache/hadoop/hbase/mob/compactions/PartitionedMobCompactionRequest.html" title="class in org.apache.hadoop.hbase.mob.compactions">PartitionedMobCompactionRequest</a></dt>
@@ -35758,6 +35783,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.html#getBloomFilterMetadata-org.apache.hadoop.hbase.io.hfile.BlockType-">getBloomFilterMetadata(BlockType)</a></span> - Method in class org.apache.hadoop.hbase.io.hfile.<a href="org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.html" title="class in org.apache.hadoop.hbase.io.hfile">HFileReaderImpl</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/BloomFilterUtil.html#getBloomFilterParam-org.apache.hadoop.hbase.regionserver.BloomType-org.apache.hadoop.conf.Configuration-">getBloomFilterParam(BloomType, Configuration)</a></span> - Static method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/BloomFilterUtil.html" title="class in org.apache.hadoop.hbase.util">BloomFilterUtil</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/RegionLoad.html#getBloomFilterSize--">getBloomFilterSize()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/RegionLoad.html" title="class in org.apache.hadoop.hbase">RegionLoad</a></dt>
 <dd>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
@@ -38478,8 +38505,12 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mob/compactions/PartitionedMobCompactionRequest.CompactionDelPartition.html#getDelFileCount--">getDelFileCount()</a></span> - Method in class org.apache.hadoop.hbase.mob.compactions.<a href="org/apache/hadoop/hbase/mob/compactions/PartitionedMobCompactionRequest.CompactionDelPartition.html" title="class in org.apache.hadoop.hbase.mob.compactions">PartitionedMobCompactionRequest.CompactionDelPartition</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/RowPrefixDelimiterBloomContext.html#getDelimitedRowPrefixCell-org.apache.hadoop.hbase.Cell-">getDelimitedRowPrefixCell(Cell)</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/RowPrefixDelimiterBloomContext.html" title="class in org.apache.hadoop.hbase.util">RowPrefixDelimiterBloomContext</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/KeyValue.html#getDelimiter-byte:A-int-int-int-">getDelimiter(byte[], int, int, int)</a></span> - Static method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getDelimiter--">getDelimiter()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/KeyValue.html#getDelimiterInReverse-byte:A-int-int-int-">getDelimiterInReverse(byte[], int, int, int)</a></span> - Static method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a></dt>
 <dd>
 <div class="block">Find index of passed delimiter walking from end of buffer backwards.</div>
@@ -45800,6 +45831,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/filter/PrefixFilter.html#getPrefix--">getPrefix()</a></span> - Method in class org.apache.hadoop.hbase.filter.<a href="org/apache/hadoop/hbase/filter/PrefixFilter.html" title="class in org.apache.hadoop.hbase.filter">PrefixFilter</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getPrefixLength--">getPrefixLength()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/HRegion.html#getPrepareFlushResult--">getPrepareFlushResult()</a></span> - Method 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/throttle/StoreHotnessProtector.html#getPreparePutToStoreMap--">getPreparePutToStoreMap()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.throttle.<a href="org/apache/hadoop/hbase/regionserver/throttle/StoreHotnessProtector.html" title="class in org.apache.hadoop.hbase.regionserver.throttle">StoreHotnessProtector</a></dt>
@@ -46801,6 +46834,11 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/HStoreFile.html#getRefCount--">getRefCount()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getRefCount--">getRefCount()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a></dt>
+<dd>
+<div class="block">Return the ref count associated with the reader whenever a scanner associated with the
+ reader is opened.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/StoreFileInfo.html#getReference--">getReference()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/StoreFileInfo.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileInfo</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mob/CachedMobFile.html#getReferenceCount--">getReferenceCount()</a></span> - Method in class org.apache.hadoop.hbase.mob.<a href="org/apache/hadoop/hbase/mob/CachedMobFile.html" title="class in org.apache.hadoop.hbase.mob">CachedMobFile</a></dt>
@@ -48718,6 +48756,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/MapReduceExtendedCell.html#getRowPosition--">getRowPosition()</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/MapReduceExtendedCell.html" title="class in org.apache.hadoop.hbase.util">MapReduceExtendedCell</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/RowPrefixFixedLengthBloomContext.html#getRowPrefixCell-org.apache.hadoop.hbase.Cell-">getRowPrefixCell(Cell)</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/RowPrefixFixedLengthBloomContext.html" title="class in org.apache.hadoop.hbase.util">RowPrefixFixedLengthBloomContext</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/coprocessor/RowProcessorClient.html#getRowProcessorPB-org.apache.hadoop.hbase.regionserver.RowProcessor-">getRowProcessorPB(RowProcessor&lt;S, T&gt;)</a></span> - Static method in class org.apache.hadoop.hbase.client.coprocessor.<a href="org/apache/hadoop/hbase/client/coprocessor/RowProcessorClient.html" title="class in org.apache.hadoop.hbase.client.coprocessor">RowProcessorClient</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/filter/MultiRowRangeFilter.html#getRowRanges--">getRowRanges()</a></span> - Method in class org.apache.hadoop.hbase.filter.<a href="org/apache/hadoop/hbase/filter/MultiRowRangeFilter.html" title="class in org.apache.hadoop.hbase.filter">MultiRowRangeFilter</a></dt>
@@ -81746,6 +81786,10 @@ service.</div>
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/StoreFileReader.html#passesDeleteFamilyBloomFilter-byte:A-int-int-">passesDeleteFamilyBloomFilter(byte[], int, int)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/StoreFileReader.html#passesGeneralDelimitedRowPrefixBloomFilter-org.apache.hadoop.hbase.client.Scan-">passesGeneralDelimitedRowPrefixBloomFilter(Scan)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a></dt>
+<dd>
+<div class="block">A method for checking Bloom filters.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/StoreFileReader.html#passesGeneralRowBloomFilter-byte:A-int-int-">passesGeneralRowBloomFilter(byte[], int, int)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a></dt>
 <dd>
 <div class="block">A method for checking Bloom filters.</div>
@@ -81754,6 +81798,10 @@ service.</div>
 <dd>
 <div class="block">A method for checking Bloom filters.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/StoreFileReader.html#passesGeneralRowPrefixBloomFilter-org.apache.hadoop.hbase.client.Scan-">passesGeneralRowPrefixBloomFilter(Scan)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a></dt>
+<dd>
+<div class="block">A method for checking Bloom filters.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/HalfStoreFileReader.html#passesKeyRangeFilter-org.apache.hadoop.hbase.client.Scan-">passesKeyRangeFilter(Scan)</a></span> - Method in class org.apache.hadoop.hbase.io.<a href="org/apache/hadoop/hbase/io/HalfStoreFileReader.html" title="class in org.apache.hadoop.hbase.io">HalfStoreFileReader</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/StoreFileReader.html#passesKeyRangeFilter-org.apache.hadoop.hbase.client.Scan-">passesKeyRangeFilter(Scan)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a></dt>
@@ -84390,6 +84438,8 @@ service.</div>
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/KeyPrefixRegionSplitPolicy.html#PREFIX_LENGTH_KEY">PREFIX_LENGTH_KEY</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/KeyPrefixRegionSplitPolicy.html" title="class in org.apache.hadoop.hbase.regionserver">KeyPrefixRegionSplitPolicy</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/BloomFilterUtil.html#PREFIX_LENGTH_KEY">PREFIX_LENGTH_KEY</a></span> - Static variable in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/BloomFilterUtil.html" title="class in org.apache.hadoop.hbase.util">BloomFilterUtil</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/KeyPrefixRegionSplitPolicy.html#PREFIX_LENGTH_KEY_DEPRECATED">PREFIX_LENGTH_KEY_DEPRECATED</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/KeyPrefixRegionSplitPolicy.html" title="class in org.apache.hadoop.hbase.regionserver">KeyPrefixRegionSplitPolicy</a></dt>
 <dd>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
@@ -84411,6 +84461,10 @@ service.</div>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/KeyPrefixRegionSplitPolicy.html#prefixLength">prefixLength</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/KeyPrefixRegionSplitPolicy.html" title="class in org.apache.hadoop.hbase.regionserver">KeyPrefixRegionSplitPolicy</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/StoreFileReader.html#prefixLength">prefixLength</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/RowPrefixFixedLengthBloomContext.html#prefixLength">prefixLength</a></span> - Variable in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/RowPrefixFixedLengthBloomContext.html" title="class in org.apache.hadoop.hbase.util">RowPrefixFixedLengthBloomContext</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/wal/AbstractFSWAL.html#prefixPathStr">prefixPathStr</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>
 <dd>
 <div class="block">Prefix used when checking for wal membership.</div>
@@ -96749,8 +96803,20 @@ service.</div>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/RSRpcServices.RegionScannerHolder.html#rowOfLastPartialResult">rowOfLastPartialResult</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/RSRpcServices.RegionScannerHolder.html" title="class in org.apache.hadoop.hbase.regionserver">RSRpcServices.RegionScannerHolder</a></dt>
 <dd>&nbsp;</dd>
+<dt><a href="org/apache/hadoop/hbase/util/RowPrefixDelimiterBloomContext.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">RowPrefixDelimiterBloomContext</span></a> - Class in <a href="org/apache/hadoop/hbase/util/package-summary.html">org.apache.hadoop.hbase.util</a></dt>
+<dd>
+<div class="block">Handles ROWPREFIX_DELIMITED bloom related context.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/RowPrefixDelimiterBloomContext.html#RowPrefixDelimiterBloomContext-org.apache.hadoop.hbase.util.BloomFilterWriter-org.apache.hadoop.hbase.CellComparator-byte:A-">RowPrefixDelimiterBloomContext(BloomFilterWriter, CellComparator, byte[])</a></span> - Constructor for class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/RowPrefixDelimiterBloomContext.html" title="class in org.apache.hadoop.hbase.util">RowPrefixDelimiterBloomContext</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/replication/VerifyReplication.html#rowPrefixes">rowPrefixes</a></span> - Variable in class org.apache.hadoop.hbase.mapreduce.replication.<a href="org/apache/hadoop/hbase/mapreduce/replication/VerifyReplication.html" title="class in org.apache.hadoop.hbase.mapreduce.replication">VerifyReplication</a></dt>
 <dd>&nbsp;</dd>
+<dt><a href="org/apache/hadoop/hbase/util/RowPrefixFixedLengthBloomContext.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">RowPrefixFixedLengthBloomContext</span></a> - Class in <a href="org/apache/hadoop/hbase/util/package-summary.html">org.apache.hadoop.hbase.util</a></dt>
+<dd>
+<div class="block">Handles ROWPREFIX bloom related context.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/RowPrefixFixedLengthBloomContext.html#RowPrefixFixedLengthBloomContext-org.apache.hadoop.hbase.util.BloomFilterWriter-org.apache.hadoop.hbase.CellComparator-int-">RowPrefixFixedLengthBloomContext(BloomFilterWriter, CellComparator, int)</a></span> - Constructor for class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/RowPrefixFixedLengthBloomContext.html" title="class in org.apache.hadoop.hbase.util">RowPrefixFixedLengthBloomContext</a></dt>
+<dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/regionserver/RowProcessor.html" title="interface in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">RowProcessor</span></a>&lt;<a href="org/apache/hadoop/hbase/regionserver/RowProcessor.html" title="type parameter in RowProcessor">S</a> extends com.google.protobuf.Message,<a href="org/apache/hadoop/hbase/regionserver/RowProcessor.html" title="type parameter in RowProcessor">T</a> extends com.google.protobuf.Message&gt; - Interface in <a href="org/apache/hadoop/hbase/regionserver/package-summary.html">org.apache.hadoop.hbase.regionserver</a></dt>
 <dd>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>
@@ -123982,6 +124048,10 @@ the order they are declared.</div>
 <dd>
 <div class="block">Writes just the bloom filter to the output array</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/RowPrefixDelimiterBloomContext.html#writeBloom-org.apache.hadoop.hbase.Cell-">writeBloom(Cell)</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/RowPrefixDelimiterBloomContext.html" title="class in org.apache.hadoop.hbase.util">RowPrefixDelimiterBloomContext</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/RowPrefixFixedLengthBloomContext.html#writeBloom-org.apache.hadoop.hbase.Cell-">writeBloom(Cell)</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/RowPrefixFixedLengthBloomContext.html" title="class in org.apache.hadoop.hbase.util">RowPrefixFixedLengthBloomContext</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/wal/WALSplitter.WriterThread.html#writeBuffer-org.apache.hadoop.hbase.wal.WALSplitter.RegionEntryBuffer-">writeBuffer(WALSplitter.RegionEntryBuffer)</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/client/BufferedMutatorImpl.html#writeBufferPeriodicFlushTimeoutMs">writeBufferPeriodicFlushTimeoutMs</a></span> - Variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/BufferedMutatorImpl.html" title="class in org.apache.hadoop.hbase.client">BufferedMutatorImpl</a></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/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 c4b3203..f7aa217 100644
--- a/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html
@@ -167,10 +167,10 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.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>
-<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/BackupInfo.BackupPhase.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupInfo.BackupPhase</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/devapidocs/org/apache/hadoop/hbase/class-use/Cell.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/class-use/Cell.html b/devapidocs/org/apache/hadoop/hbase/class-use/Cell.html
index b1d8d21..e58d26e 100644
--- a/devapidocs/org/apache/hadoop/hbase/class-use/Cell.html
+++ b/devapidocs/org/apache/hadoop/hbase/class-use/Cell.html
@@ -8575,15 +8575,23 @@ service.</div>
 </tr>
 <tbody>
 <tr class="altColor">
+<td class="colFirst"><code>private <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">RowPrefixDelimiterBloomContext.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/RowPrefixDelimiterBloomContext.html#getDelimitedRowPrefixCell-org.apache.hadoop.hbase.Cell-">getDelimitedRowPrefixCell</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</code>&nbsp;</td>
+</tr>
+<tr 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"><span class="typeNameLabel">BloomContext.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/BloomContext.html#getLastCell--">getLastCell</a></span>()</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<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">BloomFilterWriter.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/BloomFilterWriter.html#getPrevCell--">getPrevCell</a></span>()</code>
 <div class="block">Returns the previous cell written by this writer</div>
 </td>
 </tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private <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">RowPrefixFixedLengthBloomContext.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/RowPrefixFixedLengthBloomContext.html#getRowPrefixCell-org.apache.hadoop.hbase.Cell-">getRowPrefixCell</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</code>&nbsp;</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">CollectionBackedScanner.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/CollectionBackedScanner.html#next--">next</a></span>()</code>&nbsp;</td>
@@ -8650,6 +8658,14 @@ service.</div>
         <a href="../../../../../org/apache/hadoop/hbase/regionserver/BloomType.html" title="enum in org.apache.hadoop.hbase.regionserver">BloomType</a>&nbsp;type)</code>&nbsp;</td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><code>private <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">RowPrefixDelimiterBloomContext.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/RowPrefixDelimiterBloomContext.html#getDelimitedRowPrefixCell-org.apache.hadoop.hbase.Cell-">getDelimitedRowPrefixCell</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private <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">RowPrefixFixedLengthBloomContext.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/RowPrefixFixedLengthBloomContext.html#getRowPrefixCell-org.apache.hadoop.hbase.Cell-">getRowPrefixCell</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</code>&nbsp;</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><code>protected boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">RowColBloomContext.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/RowColBloomContext.html#isNewKey-org.apache.hadoop.hbase.Cell-">isNewKey</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</code>&nbsp;</td>
 </tr>
@@ -8681,6 +8697,14 @@ service.</div>
 <div class="block">Bloom information from the cell is retrieved</div>
 </td>
 </tr>
+<tr class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><span class="typeNameLabel">RowPrefixDelimiterBloomContext.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/RowPrefixDelimiterBloomContext.html#writeBloom-org.apache.hadoop.hbase.Cell-">writeBloom</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><span class="typeNameLabel">RowPrefixFixedLengthBloomContext.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/RowPrefixFixedLengthBloomContext.html#writeBloom-org.apache.hadoop.hbase.Cell-">writeBloom</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</code>&nbsp;</td>
+</tr>
 </tbody>
 </table>
 <table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing methods, and an explanation">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/devapidocs/org/apache/hadoop/hbase/class-use/CellComparator.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/class-use/CellComparator.html b/devapidocs/org/apache/hadoop/hbase/class-use/CellComparator.html
index ca5a079..710c743 100644
--- a/devapidocs/org/apache/hadoop/hbase/class-use/CellComparator.html
+++ b/devapidocs/org/apache/hadoop/hbase/class-use/CellComparator.html
@@ -1236,6 +1236,16 @@
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/RowColBloomContext.html#RowColBloomContext-org.apache.hadoop.hbase.util.BloomFilterWriter-org.apache.hadoop.hbase.CellComparator-">RowColBloomContext</a></span>(<a href="../../../../../org/apache/hadoop/hbase/util/BloomFilterWriter.html" title="interface in org.apache.hadoop.hbase.util">BloomFilterWriter</a>&nbsp;generalBloomFilterWriter,
                   <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator)</code>&nbsp;</td>
 </tr>
+<tr class="altColor">
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/RowPrefixDelimiterBloomContext.html#RowPrefixDelimiterBloomContext-org.apache.hadoop.hbase.util.BloomFilterWriter-org.apache.hadoop.hbase.CellComparator-byte:A-">RowPrefixDelimiterBloomContext</a></span>(<a href="../../../../../org/apache/hadoop/hbase/util/BloomFilterWriter.html" title="interface in org.apache.hadoop.hbase.util">BloomFilterWriter</a>&nbsp;bloomFilterWriter,
+                              <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator,
+                              byte[]&nbsp;delimiter)</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/RowPrefixFixedLengthBloomContext.html#RowPrefixFixedLengthBloomContext-org.apache.hadoop.hbase.util.BloomFilterWriter-org.apache.hadoop.hbase.CellComparator-int-">RowPrefixFixedLengthBloomContext</a></span>(<a href="../../../../../org/apache/hadoop/hbase/util/BloomFilterWriter.html" title="interface in org.apache.hadoop.hbase.util">BloomFilterWriter</a>&nbsp;bloomFilterWriter,
+                                <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator,
+                                int&nbsp;prefixLength)</code>&nbsp;</td>
+</tr>
 </tbody>
 </table>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/devapidocs/org/apache/hadoop/hbase/client/class-use/ColumnFamilyDescriptor.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/client/class-use/ColumnFamilyDescriptor.html b/devapidocs/org/apache/hadoop/hbase/client/class-use/ColumnFamilyDescriptor.html
index 10538f7..5c02dc3 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/class-use/ColumnFamilyDescriptor.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/class-use/ColumnFamilyDescriptor.html
@@ -546,17 +546,23 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>(package private) static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/Function.html?is-external=true" title="class or interface in java.util.function">Function</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>,<a href="https://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>
+<td class="colLast"><span class="typeNameLabel">HFileOutputFormat2.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#bloomParamDetails">bloomParamDetails</a></span></code>
+<div class="block">Serialize column family to bloom param map to configuration.</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>(package private) static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/Function.html?is-external=true" title="class or interface in java.util.function">Function</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>,<a href="https://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>
 <td class="colLast"><span class="typeNameLabel">HFileOutputFormat2.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#bloomTypeDetails">bloomTypeDetails</a></span></code>
 <div class="block">Serialize column family to bloom type map to configuration.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>(package private) static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/Function.html?is-external=true" title="class or interface in java.util.function">Function</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>,<a href="https://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>
 <td class="colLast"><span class="typeNameLabel">HFileOutputFormat2.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#compressionDetails">compressionDetails</a></span></code>
 <div class="block">Serialize column family to compression algorithm map to configuration.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>(package private) static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/Function.html?is-external=true" title="class or interface in java.util.function">Function</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>,<a href="https://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>
 <td class="colLast"><span class="typeNameLabel">HFileOutputFormat2.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#dataBlockEncodingDetails">dataBlockEncodingDetails</a></span></code>
 <div class="block">Serialize column family to data block encoding map to configuration.</div>
@@ -620,19 +626,23 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
          long&nbsp;nonce)</code>&nbsp;</td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><code>private static void</code></td>
+<td class="colLast"><span class="typeNameLabel">HMaster.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/HMaster.html#checkBloomFilterType-org.apache.hadoop.hbase.client.ColumnFamilyDescriptor-">checkBloomFilterType</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>&nbsp;cfd)</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">HMaster.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/HMaster.html#checkCompression-org.apache.hadoop.hbase.client.ColumnFamilyDescriptor-">checkCompression</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>&nbsp;hcd)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">HMaster.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/HMaster.html#checkEncryption-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.client.ColumnFamilyDescriptor-">checkEncryption</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                <a href="../../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>&nbsp;hcd)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">HMaster.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/HMaster.html#checkReplicationScope-org.apache.hadoop.hbase.client.ColumnFamilyDescriptor-">checkReplicationScope</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>&nbsp;hcd)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterServices.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/MasterServices.html#modifyColumn-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.client.ColumnFamilyDescriptor-long-long-">modifyColumn</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
             <a href="../../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>&nbsp;descriptor,
@@ -641,7 +651,7 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 <div class="block">Modify the column descriptor of an existing column in an existing table</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><span class="typeNameLabel">HMaster.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/HMaster.html#modifyColumn-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.client.ColumnFamilyDescriptor-long-long-">modifyColumn</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
             <a href="../../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>&nbsp;descriptor,

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/devapidocs/org/apache/hadoop/hbase/client/class-use/Scan.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/client/class-use/Scan.html b/devapidocs/org/apache/hadoop/hbase/client/class-use/Scan.html
index e63d7f3..b95ff70 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/class-use/Scan.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/class-use/Scan.html
@@ -2045,6 +2045,18 @@ service.</div>
 </td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><code>private boolean</code></td>
+<td class="colLast"><span class="typeNameLabel">StoreFileReader.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#passesGeneralDelimitedRowPrefixBloomFilter-org.apache.hadoop.hbase.client.Scan-">passesGeneralDelimitedRowPrefixBloomFilter</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan)</code>
+<div class="block">A method for checking Bloom filters.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private boolean</code></td>
+<td class="colLast"><span class="typeNameLabel">StoreFileReader.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#passesGeneralRowPrefixBloomFilter-org.apache.hadoop.hbase.client.Scan-">passesGeneralRowPrefixBloomFilter</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan)</code>
+<div class="block">A method for checking Bloom filters.</div>
+</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">StoreFileReader.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#passesKeyRangeFilter-org.apache.hadoop.hbase.client.Scan-">passesKeyRangeFilter</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan)</code>
 <div class="block">Checks whether the given scan rowkey range overlaps with the current storefile's</div>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/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 a789d31..29914a4 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
@@ -555,24 +555,24 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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.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/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/RegionLocateType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">RegionLocateType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/devapidocs/org/apache/hadoop/hbase/executor/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/executor/package-tree.html b/devapidocs/org/apache/hadoop/hbase/executor/package-tree.html
index ce950b0..ae0124e 100644
--- a/devapidocs/org/apache/hadoop/hbase/executor/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/executor/package-tree.html
@@ -104,8 +104,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.executor.<a href="../../../../../org/apache/hadoop/hbase/executor/EventType.html" title="enum in org.apache.hadoop.hbase.executor"><span class="typeNameLink">EventType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.executor.<a href="../../../../../org/apache/hadoop/hbase/executor/ExecutorType.html" title="enum in org.apache.hadoop.hbase.executor"><span class="typeNameLink">ExecutorType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.executor.<a href="../../../../../org/apache/hadoop/hbase/executor/EventType.html" title="enum in org.apache.hadoop.hbase.executor"><span class="typeNameLink">EventType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/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 1bedd9d..f710979 100644
--- a/devapidocs/org/apache/hadoop/hbase/filter/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/filter/package-tree.html
@@ -183,14 +183,14 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.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>
 <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/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/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/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/CompareFilter.CompareOp.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">CompareFilter.CompareOp</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/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/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/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/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/Filter.ReturnCode.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">Filter.ReturnCode</span></a></li>
 </ul>
 </li>
 </ul>


[29/43] hbase-site git commit: Published site at 7ab77518a2569e2416a50020393aa386e7734501.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.TableInfo.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.TableInfo.html b/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.TableInfo.html
index ab76d10..5ee521a 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.TableInfo.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.TableInfo.html
@@ -81,862 +81,913 @@
 <span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.regionserver.BloomType;<a name="line.73"></a>
 <span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.regionserver.HStore;<a name="line.74"></a>
 <span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.regionserver.StoreFileWriter;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.util.MapReduceExtendedCell;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.io.NullWritable;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.io.SequenceFile;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.io.Text;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.mapreduce.Job;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.mapreduce.OutputCommitter;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.mapreduce.OutputFormat;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.mapreduce.RecordWriter;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.hadoop.mapreduce.TaskAttemptContext;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.apache.hadoop.mapreduce.lib.output.FileOutputCommitter;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.mapreduce.lib.partition.TotalOrderPartitioner;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.slf4j.Logger;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.slf4j.LoggerFactory;<a name="line.93"></a>
-<span class="sourceLineNo">094</span><a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<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> * Writes HFiles. Passed Cells must arrive in order.<a name="line.98"></a>
-<span class="sourceLineNo">099</span> * Writes current time as the sequence id for the file. Sets the major compacted<a name="line.99"></a>
-<span class="sourceLineNo">100</span> * attribute on created @{link {@link HFile}s. Calling write(null,null) will forcibly roll<a name="line.100"></a>
-<span class="sourceLineNo">101</span> * all HFiles being written.<a name="line.101"></a>
-<span class="sourceLineNo">102</span> * &lt;p&gt;<a name="line.102"></a>
-<span class="sourceLineNo">103</span> * Using this class as part of a MapReduce job is best done<a name="line.103"></a>
-<span class="sourceLineNo">104</span> * using {@link #configureIncrementalLoad(Job, TableDescriptor, RegionLocator)}.<a name="line.104"></a>
-<span class="sourceLineNo">105</span> */<a name="line.105"></a>
-<span class="sourceLineNo">106</span>@InterfaceAudience.Public<a name="line.106"></a>
-<span class="sourceLineNo">107</span>public class HFileOutputFormat2<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    extends FileOutputFormat&lt;ImmutableBytesWritable, Cell&gt; {<a name="line.108"></a>
-<span class="sourceLineNo">109</span>  private static final Logger LOG = LoggerFactory.getLogger(HFileOutputFormat2.class);<a name="line.109"></a>
-<span class="sourceLineNo">110</span>  static class TableInfo {<a name="line.110"></a>
-<span class="sourceLineNo">111</span>    private TableDescriptor tableDesctiptor;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>    private RegionLocator regionLocator;<a name="line.112"></a>
-<span class="sourceLineNo">113</span><a name="line.113"></a>
-<span class="sourceLineNo">114</span>    public TableInfo(TableDescriptor tableDesctiptor, RegionLocator regionLocator) {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      this.tableDesctiptor = tableDesctiptor;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>      this.regionLocator = regionLocator;<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    }<a name="line.117"></a>
-<span class="sourceLineNo">118</span><a name="line.118"></a>
-<span class="sourceLineNo">119</span>    /**<a name="line.119"></a>
-<span class="sourceLineNo">120</span>     * The modification for the returned HTD doesn't affect the inner TD.<a name="line.120"></a>
-<span class="sourceLineNo">121</span>     * @return A clone of inner table descriptor<a name="line.121"></a>
-<span class="sourceLineNo">122</span>     * @deprecated use {@link #getTableDescriptor}<a name="line.122"></a>
-<span class="sourceLineNo">123</span>     */<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    @Deprecated<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    public HTableDescriptor getHTableDescriptor() {<a name="line.125"></a>
-<span class="sourceLineNo">126</span>      return new HTableDescriptor(tableDesctiptor);<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    }<a name="line.127"></a>
-<span class="sourceLineNo">128</span><a name="line.128"></a>
-<span class="sourceLineNo">129</span>    public TableDescriptor getTableDescriptor() {<a name="line.129"></a>
-<span class="sourceLineNo">130</span>      return tableDesctiptor;<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    }<a name="line.131"></a>
-<span class="sourceLineNo">132</span><a name="line.132"></a>
-<span class="sourceLineNo">133</span>    public RegionLocator getRegionLocator() {<a name="line.133"></a>
-<span class="sourceLineNo">134</span>      return regionLocator;<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>  protected static final byte[] tableSeparator = Bytes.toBytes(";");<a name="line.138"></a>
-<span class="sourceLineNo">139</span><a name="line.139"></a>
-<span class="sourceLineNo">140</span>  protected static byte[] combineTableNameSuffix(byte[] tableName, byte[] suffix) {<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    return Bytes.add(tableName, tableSeparator, suffix);<a name="line.141"></a>
-<span class="sourceLineNo">142</span>  }<a name="line.142"></a>
-<span class="sourceLineNo">143</span><a name="line.143"></a>
-<span class="sourceLineNo">144</span>  // The following constants are private since these are used by<a name="line.144"></a>
-<span class="sourceLineNo">145</span>  // HFileOutputFormat2 to internally transfer data between job setup and<a name="line.145"></a>
-<span class="sourceLineNo">146</span>  // reducer run using conf.<a name="line.146"></a>
-<span class="sourceLineNo">147</span>  // These should not be changed by the client.<a name="line.147"></a>
-<span class="sourceLineNo">148</span>  static final String COMPRESSION_FAMILIES_CONF_KEY =<a name="line.148"></a>
-<span class="sourceLineNo">149</span>      "hbase.hfileoutputformat.families.compression";<a name="line.149"></a>
-<span class="sourceLineNo">150</span>  static final String BLOOM_TYPE_FAMILIES_CONF_KEY =<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      "hbase.hfileoutputformat.families.bloomtype";<a name="line.151"></a>
-<span class="sourceLineNo">152</span>  static final String BLOCK_SIZE_FAMILIES_CONF_KEY =<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      "hbase.mapreduce.hfileoutputformat.blocksize";<a name="line.153"></a>
-<span class="sourceLineNo">154</span>  static final String DATABLOCK_ENCODING_FAMILIES_CONF_KEY =<a name="line.154"></a>
-<span class="sourceLineNo">155</span>      "hbase.mapreduce.hfileoutputformat.families.datablock.encoding";<a name="line.155"></a>
-<span class="sourceLineNo">156</span><a name="line.156"></a>
-<span class="sourceLineNo">157</span>  // This constant is public since the client can modify this when setting<a name="line.157"></a>
-<span class="sourceLineNo">158</span>  // up their conf object and thus refer to this symbol.<a name="line.158"></a>
-<span class="sourceLineNo">159</span>  // It is present for backwards compatibility reasons. Use it only to<a name="line.159"></a>
-<span class="sourceLineNo">160</span>  // override the auto-detection of datablock encoding.<a name="line.160"></a>
-<span class="sourceLineNo">161</span>  public static final String DATABLOCK_ENCODING_OVERRIDE_CONF_KEY =<a name="line.161"></a>
-<span class="sourceLineNo">162</span>      "hbase.mapreduce.hfileoutputformat.datablock.encoding";<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>   * Keep locality while generating HFiles for bulkload. See HBASE-12596<a name="line.165"></a>
-<span class="sourceLineNo">166</span>   */<a name="line.166"></a>
-<span class="sourceLineNo">167</span>  public static final String LOCALITY_SENSITIVE_CONF_KEY =<a name="line.167"></a>
-<span class="sourceLineNo">168</span>      "hbase.bulkload.locality.sensitive.enabled";<a name="line.168"></a>
-<span class="sourceLineNo">169</span>  private static final boolean DEFAULT_LOCALITY_SENSITIVE = true;<a name="line.169"></a>
-<span class="sourceLineNo">170</span>  static final String OUTPUT_TABLE_NAME_CONF_KEY =<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      "hbase.mapreduce.hfileoutputformat.table.name";<a name="line.171"></a>
-<span class="sourceLineNo">172</span>  static final String MULTI_TABLE_HFILEOUTPUTFORMAT_CONF_KEY =<a name="line.172"></a>
-<span class="sourceLineNo">173</span>          "hbase.mapreduce.use.multi.table.hfileoutputformat";<a name="line.173"></a>
-<span class="sourceLineNo">174</span><a name="line.174"></a>
-<span class="sourceLineNo">175</span>  public static final String STORAGE_POLICY_PROPERTY = HStore.BLOCK_STORAGE_POLICY_KEY;<a name="line.175"></a>
-<span class="sourceLineNo">176</span>  public static final String STORAGE_POLICY_PROPERTY_CF_PREFIX = STORAGE_POLICY_PROPERTY + ".";<a name="line.176"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.util.BloomFilterUtil;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.util.MapReduceExtendedCell;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hadoop.io.NullWritable;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hadoop.io.SequenceFile;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hadoop.io.Text;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hadoop.mapreduce.Job;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hadoop.mapreduce.OutputCommitter;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hadoop.mapreduce.OutputFormat;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.hadoop.mapreduce.RecordWriter;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.hadoop.mapreduce.TaskAttemptContext;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.hadoop.mapreduce.lib.output.FileOutputCommitter;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import org.apache.hadoop.mapreduce.lib.partition.TotalOrderPartitioner;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import org.slf4j.Logger;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import org.slf4j.LoggerFactory;<a name="line.94"></a>
+<span class="sourceLineNo">095</span><a name="line.95"></a>
+<span class="sourceLineNo">096</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<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> * Writes HFiles. Passed Cells must arrive in order.<a name="line.99"></a>
+<span class="sourceLineNo">100</span> * Writes current time as the sequence id for the file. Sets the major compacted<a name="line.100"></a>
+<span class="sourceLineNo">101</span> * attribute on created @{link {@link HFile}s. Calling write(null,null) will forcibly roll<a name="line.101"></a>
+<span class="sourceLineNo">102</span> * all HFiles being written.<a name="line.102"></a>
+<span class="sourceLineNo">103</span> * &lt;p&gt;<a name="line.103"></a>
+<span class="sourceLineNo">104</span> * Using this class as part of a MapReduce job is best done<a name="line.104"></a>
+<span class="sourceLineNo">105</span> * using {@link #configureIncrementalLoad(Job, TableDescriptor, RegionLocator)}.<a name="line.105"></a>
+<span class="sourceLineNo">106</span> */<a name="line.106"></a>
+<span class="sourceLineNo">107</span>@InterfaceAudience.Public<a name="line.107"></a>
+<span class="sourceLineNo">108</span>public class HFileOutputFormat2<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    extends FileOutputFormat&lt;ImmutableBytesWritable, Cell&gt; {<a name="line.109"></a>
+<span class="sourceLineNo">110</span>  private static final Logger LOG = LoggerFactory.getLogger(HFileOutputFormat2.class);<a name="line.110"></a>
+<span class="sourceLineNo">111</span>  static class TableInfo {<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    private TableDescriptor tableDesctiptor;<a name="line.112"></a>
+<span class="sourceLineNo">113</span>    private RegionLocator regionLocator;<a name="line.113"></a>
+<span class="sourceLineNo">114</span><a name="line.114"></a>
+<span class="sourceLineNo">115</span>    public TableInfo(TableDescriptor tableDesctiptor, RegionLocator regionLocator) {<a name="line.115"></a>
+<span class="sourceLineNo">116</span>      this.tableDesctiptor = tableDesctiptor;<a name="line.116"></a>
+<span class="sourceLineNo">117</span>      this.regionLocator = regionLocator;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    }<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>     * The modification for the returned HTD doesn't affect the inner TD.<a name="line.121"></a>
+<span class="sourceLineNo">122</span>     * @return A clone of inner table descriptor<a name="line.122"></a>
+<span class="sourceLineNo">123</span>     * @deprecated use {@link #getTableDescriptor}<a name="line.123"></a>
+<span class="sourceLineNo">124</span>     */<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    @Deprecated<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    public HTableDescriptor getHTableDescriptor() {<a name="line.126"></a>
+<span class="sourceLineNo">127</span>      return new HTableDescriptor(tableDesctiptor);<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    }<a name="line.128"></a>
+<span class="sourceLineNo">129</span><a name="line.129"></a>
+<span class="sourceLineNo">130</span>    public TableDescriptor getTableDescriptor() {<a name="line.130"></a>
+<span class="sourceLineNo">131</span>      return tableDesctiptor;<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    }<a name="line.132"></a>
+<span class="sourceLineNo">133</span><a name="line.133"></a>
+<span class="sourceLineNo">134</span>    public RegionLocator getRegionLocator() {<a name="line.134"></a>
+<span class="sourceLineNo">135</span>      return regionLocator;<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>  protected static final byte[] tableSeparator = Bytes.toBytes(";");<a name="line.139"></a>
+<span class="sourceLineNo">140</span><a name="line.140"></a>
+<span class="sourceLineNo">141</span>  protected static byte[] combineTableNameSuffix(byte[] tableName, byte[] suffix) {<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    return Bytes.add(tableName, tableSeparator, suffix);<a name="line.142"></a>
+<span class="sourceLineNo">143</span>  }<a name="line.143"></a>
+<span class="sourceLineNo">144</span><a name="line.144"></a>
+<span class="sourceLineNo">145</span>  // The following constants are private since these are used by<a name="line.145"></a>
+<span class="sourceLineNo">146</span>  // HFileOutputFormat2 to internally transfer data between job setup and<a name="line.146"></a>
+<span class="sourceLineNo">147</span>  // reducer run using conf.<a name="line.147"></a>
+<span class="sourceLineNo">148</span>  // These should not be changed by the client.<a name="line.148"></a>
+<span class="sourceLineNo">149</span>  static final String COMPRESSION_FAMILIES_CONF_KEY =<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      "hbase.hfileoutputformat.families.compression";<a name="line.150"></a>
+<span class="sourceLineNo">151</span>  static final String BLOOM_TYPE_FAMILIES_CONF_KEY =<a name="line.151"></a>
+<span class="sourceLineNo">152</span>      "hbase.hfileoutputformat.families.bloomtype";<a name="line.152"></a>
+<span class="sourceLineNo">153</span>  static final String BLOOM_PARAM_FAMILIES_CONF_KEY =<a name="line.153"></a>
+<span class="sourceLineNo">154</span>      "hbase.hfileoutputformat.families.bloomparam";<a name="line.154"></a>
+<span class="sourceLineNo">155</span>  static final String BLOCK_SIZE_FAMILIES_CONF_KEY =<a name="line.155"></a>
+<span class="sourceLineNo">156</span>      "hbase.mapreduce.hfileoutputformat.blocksize";<a name="line.156"></a>
+<span class="sourceLineNo">157</span>  static final String DATABLOCK_ENCODING_FAMILIES_CONF_KEY =<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      "hbase.mapreduce.hfileoutputformat.families.datablock.encoding";<a name="line.158"></a>
+<span class="sourceLineNo">159</span><a name="line.159"></a>
+<span class="sourceLineNo">160</span>  // This constant is public since the client can modify this when setting<a name="line.160"></a>
+<span class="sourceLineNo">161</span>  // up their conf object and thus refer to this symbol.<a name="line.161"></a>
+<span class="sourceLineNo">162</span>  // It is present for backwards compatibility reasons. Use it only to<a name="line.162"></a>
+<span class="sourceLineNo">163</span>  // override the auto-detection of datablock encoding.<a name="line.163"></a>
+<span class="sourceLineNo">164</span>  public static final String DATABLOCK_ENCODING_OVERRIDE_CONF_KEY =<a name="line.164"></a>
+<span class="sourceLineNo">165</span>      "hbase.mapreduce.hfileoutputformat.datablock.encoding";<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>   * Keep locality while generating HFiles for bulkload. See HBASE-12596<a name="line.168"></a>
+<span class="sourceLineNo">169</span>   */<a name="line.169"></a>
+<span class="sourceLineNo">170</span>  public static final String LOCALITY_SENSITIVE_CONF_KEY =<a name="line.170"></a>
+<span class="sourceLineNo">171</span>      "hbase.bulkload.locality.sensitive.enabled";<a name="line.171"></a>
+<span class="sourceLineNo">172</span>  private static final boolean DEFAULT_LOCALITY_SENSITIVE = true;<a name="line.172"></a>
+<span class="sourceLineNo">173</span>  static final String OUTPUT_TABLE_NAME_CONF_KEY =<a name="line.173"></a>
+<span class="sourceLineNo">174</span>      "hbase.mapreduce.hfileoutputformat.table.name";<a name="line.174"></a>
+<span class="sourceLineNo">175</span>  static final String MULTI_TABLE_HFILEOUTPUTFORMAT_CONF_KEY =<a name="line.175"></a>
+<span class="sourceLineNo">176</span>          "hbase.mapreduce.use.multi.table.hfileoutputformat";<a name="line.176"></a>
 <span class="sourceLineNo">177</span><a name="line.177"></a>
-<span class="sourceLineNo">178</span>  @Override<a name="line.178"></a>
-<span class="sourceLineNo">179</span>  public RecordWriter&lt;ImmutableBytesWritable, Cell&gt; getRecordWriter(<a name="line.179"></a>
-<span class="sourceLineNo">180</span>      final TaskAttemptContext context) throws IOException, InterruptedException {<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    return createRecordWriter(context, this.getOutputCommitter(context));<a name="line.181"></a>
-<span class="sourceLineNo">182</span>  }<a name="line.182"></a>
-<span class="sourceLineNo">183</span><a name="line.183"></a>
-<span class="sourceLineNo">184</span>  protected static byte[] getTableNameSuffixedWithFamily(byte[] tableName, byte[] family) {<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    return combineTableNameSuffix(tableName, family);<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>  static &lt;V extends Cell&gt; RecordWriter&lt;ImmutableBytesWritable, V&gt;<a name="line.188"></a>
-<span class="sourceLineNo">189</span>      createRecordWriter(final TaskAttemptContext context, final OutputCommitter committer)<a name="line.189"></a>
-<span class="sourceLineNo">190</span>          throws IOException {<a name="line.190"></a>
-<span class="sourceLineNo">191</span><a name="line.191"></a>
-<span class="sourceLineNo">192</span>    // Get the path of the temporary output file<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    final Path outputDir = ((FileOutputCommitter)committer).getWorkPath();<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    final Configuration conf = context.getConfiguration();<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    final boolean writeMultipleTables = conf.getBoolean(MULTI_TABLE_HFILEOUTPUTFORMAT_CONF_KEY, false) ;<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    final String writeTableNames = conf.get(OUTPUT_TABLE_NAME_CONF_KEY);<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    if (writeTableNames==null || writeTableNames.isEmpty()) {<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      throw new IllegalArgumentException("Configuration parameter " + OUTPUT_TABLE_NAME_CONF_KEY<a name="line.198"></a>
-<span class="sourceLineNo">199</span>              + " cannot be empty");<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    }<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    final FileSystem fs = outputDir.getFileSystem(conf);<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    // These configs. are from hbase-*.xml<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    final long maxsize = conf.getLong(HConstants.HREGION_MAX_FILESIZE,<a name="line.203"></a>
-<span class="sourceLineNo">204</span>        HConstants.DEFAULT_MAX_FILE_SIZE);<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    // Invented config.  Add to hbase-*.xml if other than default compression.<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    final String defaultCompressionStr = conf.get("hfile.compression",<a name="line.206"></a>
-<span class="sourceLineNo">207</span>        Compression.Algorithm.NONE.getName());<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    final Algorithm defaultCompression = HFileWriterImpl<a name="line.208"></a>
-<span class="sourceLineNo">209</span>        .compressionByName(defaultCompressionStr);<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    final boolean compactionExclude = conf.getBoolean(<a name="line.210"></a>
-<span class="sourceLineNo">211</span>        "hbase.mapreduce.hfileoutputformat.compaction.exclude", false);<a name="line.211"></a>
-<span class="sourceLineNo">212</span><a name="line.212"></a>
-<span class="sourceLineNo">213</span>    final Set&lt;String&gt; allTableNames = Arrays.stream(writeTableNames.split(<a name="line.213"></a>
-<span class="sourceLineNo">214</span>            Bytes.toString(tableSeparator))).collect(Collectors.toSet());<a name="line.214"></a>
+<span class="sourceLineNo">178</span>  public static final String STORAGE_POLICY_PROPERTY = HStore.BLOCK_STORAGE_POLICY_KEY;<a name="line.178"></a>
+<span class="sourceLineNo">179</span>  public static final String STORAGE_POLICY_PROPERTY_CF_PREFIX = STORAGE_POLICY_PROPERTY + ".";<a name="line.179"></a>
+<span class="sourceLineNo">180</span><a name="line.180"></a>
+<span class="sourceLineNo">181</span>  @Override<a name="line.181"></a>
+<span class="sourceLineNo">182</span>  public RecordWriter&lt;ImmutableBytesWritable, Cell&gt; getRecordWriter(<a name="line.182"></a>
+<span class="sourceLineNo">183</span>      final TaskAttemptContext context) throws IOException, InterruptedException {<a name="line.183"></a>
+<span class="sourceLineNo">184</span>    return createRecordWriter(context, this.getOutputCommitter(context));<a name="line.184"></a>
+<span class="sourceLineNo">185</span>  }<a name="line.185"></a>
+<span class="sourceLineNo">186</span><a name="line.186"></a>
+<span class="sourceLineNo">187</span>  protected static byte[] getTableNameSuffixedWithFamily(byte[] tableName, byte[] family) {<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    return combineTableNameSuffix(tableName, family);<a name="line.188"></a>
+<span class="sourceLineNo">189</span>  }<a name="line.189"></a>
+<span class="sourceLineNo">190</span><a name="line.190"></a>
+<span class="sourceLineNo">191</span>  static &lt;V extends Cell&gt; RecordWriter&lt;ImmutableBytesWritable, V&gt;<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      createRecordWriter(final TaskAttemptContext context, final OutputCommitter committer)<a name="line.192"></a>
+<span class="sourceLineNo">193</span>          throws IOException {<a name="line.193"></a>
+<span class="sourceLineNo">194</span><a name="line.194"></a>
+<span class="sourceLineNo">195</span>    // Get the path of the temporary output file<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    final Path outputDir = ((FileOutputCommitter)committer).getWorkPath();<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    final Configuration conf = context.getConfiguration();<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    final boolean writeMultipleTables = conf.getBoolean(MULTI_TABLE_HFILEOUTPUTFORMAT_CONF_KEY, false) ;<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    final String writeTableNames = conf.get(OUTPUT_TABLE_NAME_CONF_KEY);<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    if (writeTableNames==null || writeTableNames.isEmpty()) {<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      throw new IllegalArgumentException("Configuration parameter " + OUTPUT_TABLE_NAME_CONF_KEY<a name="line.201"></a>
+<span class="sourceLineNo">202</span>              + " cannot be empty");<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    }<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    final FileSystem fs = outputDir.getFileSystem(conf);<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    // These configs. are from hbase-*.xml<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    final long maxsize = conf.getLong(HConstants.HREGION_MAX_FILESIZE,<a name="line.206"></a>
+<span class="sourceLineNo">207</span>        HConstants.DEFAULT_MAX_FILE_SIZE);<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    // Invented config.  Add to hbase-*.xml if other than default compression.<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    final String defaultCompressionStr = conf.get("hfile.compression",<a name="line.209"></a>
+<span class="sourceLineNo">210</span>        Compression.Algorithm.NONE.getName());<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    final Algorithm defaultCompression = HFileWriterImpl<a name="line.211"></a>
+<span class="sourceLineNo">212</span>        .compressionByName(defaultCompressionStr);<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    final boolean compactionExclude = conf.getBoolean(<a name="line.213"></a>
+<span class="sourceLineNo">214</span>        "hbase.mapreduce.hfileoutputformat.compaction.exclude", false);<a name="line.214"></a>
 <span class="sourceLineNo">215</span><a name="line.215"></a>
-<span class="sourceLineNo">216</span>    // create a map from column family to the compression algorithm<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    final Map&lt;byte[], Algorithm&gt; compressionMap = createFamilyCompressionMap(conf);<a name="line.217"></a>
-<span class="sourceLineNo">218</span>    final Map&lt;byte[], BloomType&gt; bloomTypeMap = createFamilyBloomTypeMap(conf);<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    final Map&lt;byte[], Integer&gt; blockSizeMap = createFamilyBlockSizeMap(conf);<a name="line.219"></a>
-<span class="sourceLineNo">220</span><a name="line.220"></a>
-<span class="sourceLineNo">221</span>    String dataBlockEncodingStr = conf.get(DATABLOCK_ENCODING_OVERRIDE_CONF_KEY);<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    final Map&lt;byte[], DataBlockEncoding&gt; datablockEncodingMap<a name="line.222"></a>
-<span class="sourceLineNo">223</span>        = createFamilyDataBlockEncodingMap(conf);<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    final DataBlockEncoding overriddenEncoding;<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    if (dataBlockEncodingStr != null) {<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      overriddenEncoding = DataBlockEncoding.valueOf(dataBlockEncodingStr);<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    } else {<a name="line.227"></a>
-<span class="sourceLineNo">228</span>      overriddenEncoding = null;<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>    return new RecordWriter&lt;ImmutableBytesWritable, V&gt;() {<a name="line.231"></a>
-<span class="sourceLineNo">232</span>      // Map of families to writers and how much has been output on the writer.<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      private final Map&lt;byte[], WriterLength&gt; writers =<a name="line.233"></a>
-<span class="sourceLineNo">234</span>              new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      private byte[] previousRow = HConstants.EMPTY_BYTE_ARRAY;<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      private final long now = EnvironmentEdgeManager.currentTime();<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      private boolean rollRequested = false;<a name="line.237"></a>
-<span class="sourceLineNo">238</span><a name="line.238"></a>
-<span class="sourceLineNo">239</span>      @Override<a name="line.239"></a>
-<span class="sourceLineNo">240</span>      public void write(ImmutableBytesWritable row, V cell)<a name="line.240"></a>
-<span class="sourceLineNo">241</span>          throws IOException {<a name="line.241"></a>
-<span class="sourceLineNo">242</span>        Cell kv = cell;<a name="line.242"></a>
-<span class="sourceLineNo">243</span>        // null input == user explicitly wants to flush<a name="line.243"></a>
-<span class="sourceLineNo">244</span>        if (row == null &amp;&amp; kv == null) {<a name="line.244"></a>
-<span class="sourceLineNo">245</span>          rollWriters(null);<a name="line.245"></a>
-<span class="sourceLineNo">246</span>          return;<a name="line.246"></a>
-<span class="sourceLineNo">247</span>        }<a name="line.247"></a>
-<span class="sourceLineNo">248</span><a name="line.248"></a>
-<span class="sourceLineNo">249</span>        byte[] rowKey = CellUtil.cloneRow(kv);<a name="line.249"></a>
-<span class="sourceLineNo">250</span>        int length = (PrivateCellUtil.estimatedSerializedSizeOf(kv)) - Bytes.SIZEOF_INT;<a name="line.250"></a>
-<span class="sourceLineNo">251</span>        byte[] family = CellUtil.cloneFamily(kv);<a name="line.251"></a>
-<span class="sourceLineNo">252</span>        byte[] tableNameBytes = null;<a name="line.252"></a>
-<span class="sourceLineNo">253</span>        if (writeMultipleTables) {<a name="line.253"></a>
-<span class="sourceLineNo">254</span>          tableNameBytes = MultiTableHFileOutputFormat.getTableName(row.get());<a name="line.254"></a>
-<span class="sourceLineNo">255</span>          tableNameBytes =<a name="line.255"></a>
-<span class="sourceLineNo">256</span>              TableName.valueOf(tableNameBytes).getNameWithNamespaceInclAsString()<a name="line.256"></a>
-<span class="sourceLineNo">257</span>              .getBytes(Charset.defaultCharset());<a name="line.257"></a>
-<span class="sourceLineNo">258</span>          if (!allTableNames.contains(Bytes.toString(tableNameBytes))) {<a name="line.258"></a>
-<span class="sourceLineNo">259</span>            throw new IllegalArgumentException("TableName '" + Bytes.toString(tableNameBytes) +<a name="line.259"></a>
-<span class="sourceLineNo">260</span>                    "' not" + " expected");<a name="line.260"></a>
-<span class="sourceLineNo">261</span>          }<a name="line.261"></a>
-<span class="sourceLineNo">262</span>        } else {<a name="line.262"></a>
-<span class="sourceLineNo">263</span>          tableNameBytes = Bytes.toBytes(writeTableNames);<a name="line.263"></a>
-<span class="sourceLineNo">264</span>        }<a name="line.264"></a>
-<span class="sourceLineNo">265</span>        String tableName = Bytes.toString(tableNameBytes);<a name="line.265"></a>
-<span class="sourceLineNo">266</span>        Path tableRelPath = getTableRelativePath(tableNameBytes);<a name="line.266"></a>
-<span class="sourceLineNo">267</span>        byte[] tableAndFamily = getTableNameSuffixedWithFamily(tableNameBytes, family);<a name="line.267"></a>
-<span class="sourceLineNo">268</span><a name="line.268"></a>
-<span class="sourceLineNo">269</span>        WriterLength wl = this.writers.get(tableAndFamily);<a name="line.269"></a>
-<span class="sourceLineNo">270</span><a name="line.270"></a>
-<span class="sourceLineNo">271</span>        // If this is a new column family, verify that the directory exists<a name="line.271"></a>
-<span class="sourceLineNo">272</span>        if (wl == null) {<a name="line.272"></a>
-<span class="sourceLineNo">273</span>          Path writerPath = null;<a name="line.273"></a>
-<span class="sourceLineNo">274</span>          if (writeMultipleTables) {<a name="line.274"></a>
-<span class="sourceLineNo">275</span>            writerPath = new Path(outputDir,new Path(tableRelPath, Bytes<a name="line.275"></a>
-<span class="sourceLineNo">276</span>                    .toString(family)));<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>          else {<a name="line.279"></a>
-<span class="sourceLineNo">280</span>            writerPath = new Path(outputDir, Bytes.toString(family));<a name="line.280"></a>
-<span class="sourceLineNo">281</span>          }<a name="line.281"></a>
-<span class="sourceLineNo">282</span>          fs.mkdirs(writerPath);<a name="line.282"></a>
-<span class="sourceLineNo">283</span>          configureStoragePolicy(conf, fs, tableAndFamily, writerPath);<a name="line.283"></a>
-<span class="sourceLineNo">284</span>        }<a name="line.284"></a>
-<span class="sourceLineNo">285</span><a name="line.285"></a>
-<span class="sourceLineNo">286</span>        if (wl != null &amp;&amp; wl.written + length &gt;= maxsize) {<a name="line.286"></a>
-<span class="sourceLineNo">287</span>          this.rollRequested = true;<a name="line.287"></a>
+<span class="sourceLineNo">216</span>    final Set&lt;String&gt; allTableNames = Arrays.stream(writeTableNames.split(<a name="line.216"></a>
+<span class="sourceLineNo">217</span>            Bytes.toString(tableSeparator))).collect(Collectors.toSet());<a name="line.217"></a>
+<span class="sourceLineNo">218</span><a name="line.218"></a>
+<span class="sourceLineNo">219</span>    // create a map from column family to the compression algorithm<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    final Map&lt;byte[], Algorithm&gt; compressionMap = createFamilyCompressionMap(conf);<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    final Map&lt;byte[], BloomType&gt; bloomTypeMap = createFamilyBloomTypeMap(conf);<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    final Map&lt;byte[], String&gt; bloomParamMap = createFamilyBloomParamMap(conf);<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    final Map&lt;byte[], Integer&gt; blockSizeMap = createFamilyBlockSizeMap(conf);<a name="line.223"></a>
+<span class="sourceLineNo">224</span><a name="line.224"></a>
+<span class="sourceLineNo">225</span>    String dataBlockEncodingStr = conf.get(DATABLOCK_ENCODING_OVERRIDE_CONF_KEY);<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    final Map&lt;byte[], DataBlockEncoding&gt; datablockEncodingMap<a name="line.226"></a>
+<span class="sourceLineNo">227</span>        = createFamilyDataBlockEncodingMap(conf);<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    final DataBlockEncoding overriddenEncoding;<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    if (dataBlockEncodingStr != null) {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>      overriddenEncoding = DataBlockEncoding.valueOf(dataBlockEncodingStr);<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    } else {<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      overriddenEncoding = null;<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    }<a name="line.233"></a>
+<span class="sourceLineNo">234</span><a name="line.234"></a>
+<span class="sourceLineNo">235</span>    return new RecordWriter&lt;ImmutableBytesWritable, V&gt;() {<a name="line.235"></a>
+<span class="sourceLineNo">236</span>      // Map of families to writers and how much has been output on the writer.<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      private final Map&lt;byte[], WriterLength&gt; writers =<a name="line.237"></a>
+<span class="sourceLineNo">238</span>              new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.238"></a>
+<span class="sourceLineNo">239</span>      private byte[] previousRow = HConstants.EMPTY_BYTE_ARRAY;<a name="line.239"></a>
+<span class="sourceLineNo">240</span>      private final long now = EnvironmentEdgeManager.currentTime();<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      private boolean rollRequested = false;<a name="line.241"></a>
+<span class="sourceLineNo">242</span><a name="line.242"></a>
+<span class="sourceLineNo">243</span>      @Override<a name="line.243"></a>
+<span class="sourceLineNo">244</span>      public void write(ImmutableBytesWritable row, V cell)<a name="line.244"></a>
+<span class="sourceLineNo">245</span>          throws IOException {<a name="line.245"></a>
+<span class="sourceLineNo">246</span>        Cell kv = cell;<a name="line.246"></a>
+<span class="sourceLineNo">247</span>        // null input == user explicitly wants to flush<a name="line.247"></a>
+<span class="sourceLineNo">248</span>        if (row == null &amp;&amp; kv == null) {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>          rollWriters(null);<a name="line.249"></a>
+<span class="sourceLineNo">250</span>          return;<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>
+<span class="sourceLineNo">253</span>        byte[] rowKey = CellUtil.cloneRow(kv);<a name="line.253"></a>
+<span class="sourceLineNo">254</span>        int length = (PrivateCellUtil.estimatedSerializedSizeOf(kv)) - Bytes.SIZEOF_INT;<a name="line.254"></a>
+<span class="sourceLineNo">255</span>        byte[] family = CellUtil.cloneFamily(kv);<a name="line.255"></a>
+<span class="sourceLineNo">256</span>        byte[] tableNameBytes = null;<a name="line.256"></a>
+<span class="sourceLineNo">257</span>        if (writeMultipleTables) {<a name="line.257"></a>
+<span class="sourceLineNo">258</span>          tableNameBytes = MultiTableHFileOutputFormat.getTableName(row.get());<a name="line.258"></a>
+<span class="sourceLineNo">259</span>          tableNameBytes =<a name="line.259"></a>
+<span class="sourceLineNo">260</span>              TableName.valueOf(tableNameBytes).getNameWithNamespaceInclAsString()<a name="line.260"></a>
+<span class="sourceLineNo">261</span>              .getBytes(Charset.defaultCharset());<a name="line.261"></a>
+<span class="sourceLineNo">262</span>          if (!allTableNames.contains(Bytes.toString(tableNameBytes))) {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>            throw new IllegalArgumentException("TableName '" + Bytes.toString(tableNameBytes) +<a name="line.263"></a>
+<span class="sourceLineNo">264</span>                    "' not" + " expected");<a name="line.264"></a>
+<span class="sourceLineNo">265</span>          }<a name="line.265"></a>
+<span class="sourceLineNo">266</span>        } else {<a name="line.266"></a>
+<span class="sourceLineNo">267</span>          tableNameBytes = Bytes.toBytes(writeTableNames);<a name="line.267"></a>
+<span class="sourceLineNo">268</span>        }<a name="line.268"></a>
+<span class="sourceLineNo">269</span>        String tableName = Bytes.toString(tableNameBytes);<a name="line.269"></a>
+<span class="sourceLineNo">270</span>        Path tableRelPath = getTableRelativePath(tableNameBytes);<a name="line.270"></a>
+<span class="sourceLineNo">271</span>        byte[] tableAndFamily = getTableNameSuffixedWithFamily(tableNameBytes, family);<a name="line.271"></a>
+<span class="sourceLineNo">272</span><a name="line.272"></a>
+<span class="sourceLineNo">273</span>        WriterLength wl = this.writers.get(tableAndFamily);<a name="line.273"></a>
+<span class="sourceLineNo">274</span><a name="line.274"></a>
+<span class="sourceLineNo">275</span>        // If this is a new column family, verify that the directory exists<a name="line.275"></a>
+<span class="sourceLineNo">276</span>        if (wl == null) {<a name="line.276"></a>
+<span class="sourceLineNo">277</span>          Path writerPath = null;<a name="line.277"></a>
+<span class="sourceLineNo">278</span>          if (writeMultipleTables) {<a name="line.278"></a>
+<span class="sourceLineNo">279</span>            writerPath = new Path(outputDir,new Path(tableRelPath, Bytes<a name="line.279"></a>
+<span class="sourceLineNo">280</span>                    .toString(family)));<a name="line.280"></a>
+<span class="sourceLineNo">281</span><a name="line.281"></a>
+<span class="sourceLineNo">282</span>          }<a name="line.282"></a>
+<span class="sourceLineNo">283</span>          else {<a name="line.283"></a>
+<span class="sourceLineNo">284</span>            writerPath = new Path(outputDir, Bytes.toString(family));<a name="line.284"></a>
+<span class="sourceLineNo">285</span>          }<a name="line.285"></a>
+<span class="sourceLineNo">286</span>          fs.mkdirs(writerPath);<a name="line.286"></a>
+<span class="sourceLineNo">287</span>          configureStoragePolicy(conf, fs, tableAndFamily, writerPath);<a name="line.287"></a>
 <span class="sourceLineNo">288</span>        }<a name="line.288"></a>
 <span class="sourceLineNo">289</span><a name="line.289"></a>
-<span class="sourceLineNo">290</span>        // This can only happen once a row is finished though<a name="line.290"></a>
-<span class="sourceLineNo">291</span>        if (rollRequested &amp;&amp; Bytes.compareTo(this.previousRow, rowKey) != 0) {<a name="line.291"></a>
-<span class="sourceLineNo">292</span>          rollWriters(wl);<a name="line.292"></a>
-<span class="sourceLineNo">293</span>        }<a name="line.293"></a>
-<span class="sourceLineNo">294</span><a name="line.294"></a>
-<span class="sourceLineNo">295</span>        // create a new WAL writer, if necessary<a name="line.295"></a>
-<span class="sourceLineNo">296</span>        if (wl == null || wl.writer == null) {<a name="line.296"></a>
-<span class="sourceLineNo">297</span>          if (conf.getBoolean(LOCALITY_SENSITIVE_CONF_KEY, DEFAULT_LOCALITY_SENSITIVE)) {<a name="line.297"></a>
-<span class="sourceLineNo">298</span>            HRegionLocation loc = null;<a name="line.298"></a>
-<span class="sourceLineNo">299</span><a name="line.299"></a>
-<span class="sourceLineNo">300</span>            if (tableName != null) {<a name="line.300"></a>
-<span class="sourceLineNo">301</span>              try (Connection connection = ConnectionFactory.createConnection(conf);<a name="line.301"></a>
-<span class="sourceLineNo">302</span>                     RegionLocator locator =<a name="line.302"></a>
-<span class="sourceLineNo">303</span>                       connection.getRegionLocator(TableName.valueOf(tableName))) {<a name="line.303"></a>
-<span class="sourceLineNo">304</span>                loc = locator.getRegionLocation(rowKey);<a name="line.304"></a>
-<span class="sourceLineNo">305</span>              } catch (Throwable e) {<a name="line.305"></a>
-<span class="sourceLineNo">306</span>                LOG.warn("There's something wrong when locating rowkey: " +<a name="line.306"></a>
-<span class="sourceLineNo">307</span>                  Bytes.toString(rowKey) + " for tablename: " + tableName, e);<a name="line.307"></a>
-<span class="sourceLineNo">308</span>                loc = null;<a name="line.308"></a>
-<span class="sourceLineNo">309</span>              } }<a name="line.309"></a>
-<span class="sourceLineNo">310</span><a name="line.310"></a>
-<span class="sourceLineNo">311</span>            if (null == loc) {<a name="line.311"></a>
-<span class="sourceLineNo">312</span>              if (LOG.isTraceEnabled()) {<a name="line.312"></a>
-<span class="sourceLineNo">313</span>                LOG.trace("failed to get region location, so use default writer for rowkey: " +<a name="line.313"></a>
-<span class="sourceLineNo">314</span>                  Bytes.toString(rowKey));<a name="line.314"></a>
-<span class="sourceLineNo">315</span>              }<a name="line.315"></a>
-<span class="sourceLineNo">316</span>              wl = getNewWriter(tableNameBytes, family, conf, null);<a name="line.316"></a>
-<span class="sourceLineNo">317</span>            } else {<a name="line.317"></a>
-<span class="sourceLineNo">318</span>              if (LOG.isDebugEnabled()) {<a name="line.318"></a>
-<span class="sourceLineNo">319</span>                LOG.debug("first rowkey: [" + Bytes.toString(rowKey) + "]");<a name="line.319"></a>
-<span class="sourceLineNo">320</span>              }<a name="line.320"></a>
-<span class="sourceLineNo">321</span>              InetSocketAddress initialIsa =<a name="line.321"></a>
-<span class="sourceLineNo">322</span>                  new InetSocketAddress(loc.getHostname(), loc.getPort());<a name="line.322"></a>
-<span class="sourceLineNo">323</span>              if (initialIsa.isUnresolved()) {<a name="line.323"></a>
-<span class="sourceLineNo">324</span>                if (LOG.isTraceEnabled()) {<a name="line.324"></a>
-<span class="sourceLineNo">325</span>                  LOG.trace("failed to resolve bind address: " + loc.getHostname() + ":"<a name="line.325"></a>
-<span class="sourceLineNo">326</span>                      + loc.getPort() + ", so use default writer");<a name="line.326"></a>
-<span class="sourceLineNo">327</span>                }<a name="line.327"></a>
-<span class="sourceLineNo">328</span>                wl = getNewWriter(tableNameBytes, family, conf, null);<a name="line.328"></a>
-<span class="sourceLineNo">329</span>              } else {<a name="line.329"></a>
-<span class="sourceLineNo">330</span>                if (LOG.isDebugEnabled()) {<a name="line.330"></a>
-<span class="sourceLineNo">331</span>                  LOG.debug("use favored nodes writer: " + initialIsa.getHostString());<a name="line.331"></a>
-<span class="sourceLineNo">332</span>                }<a name="line.332"></a>
-<span class="sourceLineNo">333</span>                wl = getNewWriter(tableNameBytes, family, conf, new InetSocketAddress[] { initialIsa<a name="line.333"></a>
-<span class="sourceLineNo">334</span>                });<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>          } else {<a name="line.337"></a>
-<span class="sourceLineNo">338</span>            wl = getNewWriter(tableNameBytes, family, conf, null);<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>        // we now have the proper WAL writer. full steam ahead<a name="line.342"></a>
-<span class="sourceLineNo">343</span>        PrivateCellUtil.updateLatestStamp(cell, this.now);<a name="line.343"></a>
-<span class="sourceLineNo">344</span>        wl.writer.append(kv);<a name="line.344"></a>
-<span class="sourceLineNo">345</span>        wl.written += length;<a name="line.345"></a>
-<span class="sourceLineNo">346</span><a name="line.346"></a>
-<span class="sourceLineNo">347</span>        // Copy the row so we know when a row transition.<a name="line.347"></a>
-<span class="sourceLineNo">348</span>        this.previousRow = rowKey;<a name="line.348"></a>
-<span class="sourceLineNo">349</span>      }<a name="line.349"></a>
+<span class="sourceLineNo">290</span>        if (wl != null &amp;&amp; wl.written + length &gt;= maxsize) {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>          this.rollRequested = true;<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>        // This can only happen once a row is finished though<a name="line.294"></a>
+<span class="sourceLineNo">295</span>        if (rollRequested &amp;&amp; Bytes.compareTo(this.previousRow, rowKey) != 0) {<a name="line.295"></a>
+<span class="sourceLineNo">296</span>          rollWriters(wl);<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>        // create a new WAL writer, if necessary<a name="line.299"></a>
+<span class="sourceLineNo">300</span>        if (wl == null || wl.writer == null) {<a name="line.300"></a>
+<span class="sourceLineNo">301</span>          if (conf.getBoolean(LOCALITY_SENSITIVE_CONF_KEY, DEFAULT_LOCALITY_SENSITIVE)) {<a name="line.301"></a>
+<span class="sourceLineNo">302</span>            HRegionLocation loc = null;<a name="line.302"></a>
+<span class="sourceLineNo">303</span><a name="line.303"></a>
+<span class="sourceLineNo">304</span>            if (tableName != null) {<a name="line.304"></a>
+<span class="sourceLineNo">305</span>              try (Connection connection = ConnectionFactory.createConnection(conf);<a name="line.305"></a>
+<span class="sourceLineNo">306</span>                     RegionLocator locator =<a name="line.306"></a>
+<span class="sourceLineNo">307</span>                       connection.getRegionLocator(TableName.valueOf(tableName))) {<a name="line.307"></a>
+<span class="sourceLineNo">308</span>                loc = locator.getRegionLocation(rowKey);<a name="line.308"></a>
+<span class="sourceLineNo">309</span>              } catch (Throwable e) {<a name="line.309"></a>
+<span class="sourceLineNo">310</span>                LOG.warn("There's something wrong when locating rowkey: " +<a name="line.310"></a>
+<span class="sourceLineNo">311</span>                  Bytes.toString(rowKey) + " for tablename: " + tableName, e);<a name="line.311"></a>
+<span class="sourceLineNo">312</span>                loc = null;<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>            if (null == loc) {<a name="line.315"></a>
+<span class="sourceLineNo">316</span>              if (LOG.isTraceEnabled()) {<a name="line.316"></a>
+<span class="sourceLineNo">317</span>                LOG.trace("failed to get region location, so use default writer for rowkey: " +<a name="line.317"></a>
+<span class="sourceLineNo">318</span>                  Bytes.toString(rowKey));<a name="line.318"></a>
+<span class="sourceLineNo">319</span>              }<a name="line.319"></a>
+<span class="sourceLineNo">320</span>              wl = getNewWriter(tableNameBytes, family, conf, null);<a name="line.320"></a>
+<span class="sourceLineNo">321</span>            } else {<a name="line.321"></a>
+<span class="sourceLineNo">322</span>              if (LOG.isDebugEnabled()) {<a name="line.322"></a>
+<span class="sourceLineNo">323</span>                LOG.debug("first rowkey: [" + Bytes.toString(rowKey) + "]");<a name="line.323"></a>
+<span class="sourceLineNo">324</span>              }<a name="line.324"></a>
+<span class="sourceLineNo">325</span>              InetSocketAddress initialIsa =<a name="line.325"></a>
+<span class="sourceLineNo">326</span>                  new InetSocketAddress(loc.getHostname(), loc.getPort());<a name="line.326"></a>
+<span class="sourceLineNo">327</span>              if (initialIsa.isUnresolved()) {<a name="line.327"></a>
+<span class="sourceLineNo">328</span>                if (LOG.isTraceEnabled()) {<a name="line.328"></a>
+<span class="sourceLineNo">329</span>                  LOG.trace("failed to resolve bind address: " + loc.getHostname() + ":"<a name="line.329"></a>
+<span class="sourceLineNo">330</span>                      + loc.getPort() + ", so use default writer");<a name="line.330"></a>
+<span class="sourceLineNo">331</span>                }<a name="line.331"></a>
+<span class="sourceLineNo">332</span>                wl = getNewWriter(tableNameBytes, family, conf, null);<a name="line.332"></a>
+<span class="sourceLineNo">333</span>              } else {<a name="line.333"></a>
+<span class="sourceLineNo">334</span>                if (LOG.isDebugEnabled()) {<a name="line.334"></a>
+<span class="sourceLineNo">335</span>                  LOG.debug("use favored nodes writer: " + initialIsa.getHostString());<a name="line.335"></a>
+<span class="sourceLineNo">336</span>                }<a name="line.336"></a>
+<span class="sourceLineNo">337</span>                wl = getNewWriter(tableNameBytes, family, conf, new InetSocketAddress[] { initialIsa<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>          } else {<a name="line.341"></a>
+<span class="sourceLineNo">342</span>            wl = getNewWriter(tableNameBytes, family, conf, null);<a name="line.342"></a>
+<span class="sourceLineNo">343</span>          }<a name="line.343"></a>
+<span class="sourceLineNo">344</span>        }<a name="line.344"></a>
+<span class="sourceLineNo">345</span><a name="line.345"></a>
+<span class="sourceLineNo">346</span>        // we now have the proper WAL writer. full steam ahead<a name="line.346"></a>
+<span class="sourceLineNo">347</span>        PrivateCellUtil.updateLatestStamp(cell, this.now);<a name="line.347"></a>
+<span class="sourceLineNo">348</span>        wl.writer.append(kv);<a name="line.348"></a>
+<span class="sourceLineNo">349</span>        wl.written += length;<a name="line.349"></a>
 <span class="sourceLineNo">350</span><a name="line.350"></a>
-<span class="sourceLineNo">351</span>      private Path getTableRelativePath(byte[] tableNameBytes) {<a name="line.351"></a>
-<span class="sourceLineNo">352</span>        String tableName = Bytes.toString(tableNameBytes);<a name="line.352"></a>
-<span class="sourceLineNo">353</span>        String[] tableNameParts = tableName.split(":");<a name="line.353"></a>
-<span class="sourceLineNo">354</span>        Path tableRelPath = new Path(tableName.split(":")[0]);<a name="line.354"></a>
-<span class="sourceLineNo">355</span>        if (tableNameParts.length &gt; 1) {<a name="line.355"></a>
-<span class="sourceLineNo">356</span>          tableRelPath = new Path(tableRelPath, tableName.split(":")[1]);<a name="line.356"></a>
-<span class="sourceLineNo">357</span>        }<a name="line.357"></a>
-<span class="sourceLineNo">358</span>        return tableRelPath;<a name="line.358"></a>
-<span class="sourceLineNo">359</span>      }<a name="line.359"></a>
-<span class="sourceLineNo">360</span>      private void rollWriters(WriterLength writerLength) throws IOException {<a name="line.360"></a>
-<span class="sourceLineNo">361</span>        if (writerLength != null) {<a name="line.361"></a>
-<span class="sourceLineNo">362</span>          closeWriter(writerLength);<a name="line.362"></a>
-<span class="sourceLineNo">363</span>        } else {<a name="line.363"></a>
-<span class="sourceLineNo">364</span>          for (WriterLength wl : this.writers.values()) {<a name="line.364"></a>
-<span class="sourceLineNo">365</span>            closeWriter(wl);<a name="line.365"></a>
-<span class="sourceLineNo">366</span>          }<a name="line.366"></a>
-<span class="sourceLineNo">367</span>        }<a name="line.367"></a>
-<span class="sourceLineNo">368</span>        this.rollRequested = false;<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>      private void closeWriter(WriterLength wl) throws IOException {<a name="line.371"></a>
-<span class="sourceLineNo">372</span>        if (wl.writer != null) {<a name="line.372"></a>
-<span class="sourceLineNo">373</span>          LOG.info(<a name="line.373"></a>
-<span class="sourceLineNo">374</span>              "Writer=" + wl.writer.getPath() + ((wl.written == 0)? "": ", wrote=" + wl.written));<a name="line.374"></a>
-<span class="sourceLineNo">375</span>          close(wl.writer);<a name="line.375"></a>
-<span class="sourceLineNo">376</span>        }<a name="line.376"></a>
-<span class="sourceLineNo">377</span>        wl.writer = null;<a name="line.377"></a>
-<span class="sourceLineNo">378</span>        wl.written = 0;<a name="line.378"></a>
-<span class="sourceLineNo">379</span>      }<a name="line.379"></a>
-<span class="sourceLineNo">380</span><a name="line.380"></a>
-<span class="sourceLineNo">381</span>      /*<a name="line.381"></a>
-<span class="sourceLineNo">382</span>       * Create a new StoreFile.Writer.<a name="line.382"></a>
-<span class="sourceLineNo">383</span>       * @param family<a name="line.383"></a>
-<span class="sourceLineNo">384</span>       * @return A WriterLength, containing a new StoreFile.Writer.<a name="line.384"></a>
-<span class="sourceLineNo">385</span>       * @throws IOException<a name="line.385"></a>
-<span class="sourceLineNo">386</span>       */<a name="line.386"></a>
-<span class="sourceLineNo">387</span>      @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="BX_UNBOXING_IMMEDIATELY_REBOXED",<a name="line.387"></a>
-<span class="sourceLineNo">388</span>          justification="Not important")<a name="line.388"></a>
-<span class="sourceLineNo">389</span>      private WriterLength getNewWriter(byte[] tableName, byte[] family, Configuration<a name="line.389"></a>
-<span class="sourceLineNo">390</span>              conf, InetSocketAddress[] favoredNodes) throws IOException {<a name="line.390"></a>
-<span class="sourceLineNo">391</span>        byte[] tableAndFamily = getTableNameSuffixedWithFamily(tableName, family);<a name="line.391"></a>
-<span class="sourceLineNo">392</span>        Path familydir = new Path(outputDir, Bytes.toString(family));<a name="line.392"></a>
-<span class="sourceLineNo">393</span>        if (writeMultipleTables) {<a name="line.393"></a>
-<span class="sourceLineNo">394</span>          familydir = new Path(outputDir,<a name="line.394"></a>
-<span class="sourceLineNo">395</span>                  new Path(getTableRelativePath(tableName), Bytes.toString(family)));<a name="line.395"></a>
-<span class="sourceLineNo">396</span>        }<a name="line.396"></a>
-<span class="sourceLineNo">397</span>        WriterLength wl = new WriterLength();<a name="line.397"></a>
-<span class="sourceLineNo">398</span>        Algorithm compression = compressionMap.get(tableAndFamily);<a name="line.398"></a>
-<span class="sourceLineNo">399</span>        compression = compression == null ? defaultCompression : compression;<a name="line.399"></a>
-<span class="sourceLineNo">400</span>        BloomType bloomType = bloomTypeMap.get(tableAndFamily);<a name="line.400"></a>
-<span class="sourceLineNo">401</span>        bloomType = bloomType == null ? BloomType.NONE : bloomType;<a name="line.401"></a>
-<span class="sourceLineNo">402</span>        Integer blockSize = blockSizeMap.get(tableAndFamily);<a name="line.402"></a>
-<span class="sourceLineNo">403</span>        blockSize = blockSize == null ? HConstants.DEFAULT_BLOCKSIZE : blockSize;<a name="line.403"></a>
-<span class="sourceLineNo">404</span>        DataBlockEncoding encoding = overriddenEncoding;<a name="line.404"></a>
-<span class="sourceLineNo">405</span>        encoding = encoding == null ? datablockEncodingMap.get(tableAndFamily) : encoding;<a name="line.405"></a>
-<span class="sourceLineNo">406</span>        encoding = encoding == null ? DataBlockEncoding.NONE : encoding;<a name="line.406"></a>
-<span class="sourceLineNo">407</span>        Configuration tempConf = new Configuration(conf);<a name="line.407"></a>
-<span class="sourceLineNo">408</span>        tempConf.setFloat(HConstants.HFILE_BLOCK_CACHE_SIZE_KEY, 0.0f);<a name="line.408"></a>
-<span class="sourceLineNo">409</span>        HFileContextBuilder contextBuilder = new HFileContextBuilder()<a name="line.409"></a>
-<span class="sourceLineNo">410</span>                                    .withCompression(compression)<a name="line.410"></a>
-<span class="sourceLineNo">411</span>                                    .withChecksumType(HStore.getChecksumType(conf))<a name="line.411"></a>
-<span class="sourceLineNo">412</span>                                    .withBytesPerCheckSum(HStore.getBytesPerChecksum(conf))<a name="line.412"></a>
-<span class="sourceLineNo">413</span>                                    .withBlockSize(blockSize);<a name="line.413"></a>
-<span class="sourceLineNo">414</span><a name="line.414"></a>
-<span class="sourceLineNo">415</span>        if (HFile.getFormatVersion(conf) &gt;= HFile.MIN_FORMAT_VERSION_WITH_TAGS) {<a name="line.415"></a>
-<span class="sourceLineNo">416</span>          contextBuilder.withIncludesTags(true);<a name="line.416"></a>
-<span class="sourceLineNo">417</span>        }<a name="line.417"></a>
-<span class="sourceLineNo">418</span><a name="line.418"></a>
-<span class="sourceLineNo">419</span>        contextBuilder.withDataBlockEncoding(encoding);<a name="line.419"></a>
-<span class="sourceLineNo">420</span>        HFileContext hFileContext = contextBuilder.build();<a name="line.420"></a>
-<span class="sourceLineNo">421</span>        if (null == favoredNodes) {<a name="line.421"></a>
-<span class="sourceLineNo">422</span>          wl.writer =<a name="line.422"></a>
-<span class="sourceLineNo">423</span>              new StoreFileWriter.Builder(conf, new CacheConfig(tempConf), fs)<a name="line.423"></a>
-<span class="sourceLineNo">424</span>                  .withOutputDir(familydir).withBloomType(bloomType)<a name="line.424"></a>
-<span class="sourceLineNo">425</span>                  .withComparator(CellComparator.getInstance()).withFileContext(hFileContext).build();<a name="line.425"></a>
-<span class="sourceLineNo">426</span>        } else {<a name="line.426"></a>
-<span class="sourceLineNo">427</span>          wl.writer =<a name="line.427"></a>
-<span class="sourceLineNo">428</span>              new StoreFileWriter.Builder(conf, new CacheConfig(tempConf), new HFileSystem(fs))<a name="line.428"></a>
-<span class="sourceLineNo">429</span>                  .withOutputDir(familydir).withBloomType(bloomType)<a name="line.429"></a>
-<span class="sourceLineNo">430</span>                  .withComparator(CellComparator.getInstance()).withFileContext(hFileContext)<a name="line.430"></a>
-<span class="sourceLineNo">431</span>                  .withFavoredNodes(favoredNodes).build();<a name="line.431"></a>
-<span class="sourceLineNo">432</span>        }<a name="line.432"></a>
-<span class="sourceLineNo">433</span><a name="line.433"></a>
-<span class="sourceLineNo">434</span>        this.writers.put(tableAndFamily, wl);<a name="line.434"></a>
-<span class="sourceLineNo">435</span>        return wl;<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>      private void close(final StoreFileWriter w) throws IOException {<a name="line.438"></a>
-<span class="sourceLineNo">439</span>        if (w != null) {<a name="line.439"></a>
-<span class="sourceLineNo">440</span>          w.appendFileInfo(BULKLOAD_TIME_KEY,<a name="line.440"></a>
-<span class="sourceLineNo">441</span>              Bytes.toBytes(System.currentTimeMillis()));<a name="line.441"></a>
-<span class="sourceLineNo">442</span>          w.appendFileInfo(BULKLOAD_TASK_KEY,<a name="line.442"></a>
-<span class="sourceLineNo">443</span>              Bytes.toBytes(context.getTaskAttemptID().toString()));<a name="line.443"></a>
-<span class="sourceLineNo">444</span>          w.appendFileInfo(MAJOR_COMPACTION_KEY,<a name="line.444"></a>
-<span class="sourceLineNo">445</span>              Bytes.toBytes(true));<a name="line.445"></a>
-<span class="sourceLineNo">446</span>          w.appendFileInfo(EXCLUDE_FROM_MINOR_COMPACTION_KEY,<a name="line.446"></a>
-<span class="sourceLineNo">447</span>              Bytes.toBytes(compactionExclude));<a name="line.447"></a>
-<span class="sourceLineNo">448</span>          w.appendTrackedTimestampsToMetadata();<a name="line.448"></a>
-<span class="sourceLineNo">449</span>          w.close();<a name="line.449"></a>
-<span class="sourceLineNo">450</span>        }<a name="line.450"></a>
-<span class="sourceLineNo">451</span>      }<a name="line.451"></a>
-<span class="sourceLineNo">452</span><a name="line.452"></a>
-<span class="sourceLineNo">453</span>      @Override<a name="line.453"></a>
-<span class="sourceLineNo">454</span>      public void close(TaskAttemptContext c)<a name="line.454"></a>
-<span class="sourceLineNo">455</span>      throws IOException, InterruptedException {<a name="line.455"></a>
-<span class="sourceLineNo">456</span>        for (WriterLength wl: this.writers.values()) {<a name="line.456"></a>
-<span class="sourceLineNo">457</span>          close(wl.writer);<a name="line.457"></a>
-<span class="sourceLineNo">458</span>        }<a name="line.458"></a>
-<span class="sourceLineNo">459</span>      }<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">351</span>        // Copy the row so we know when a row transition.<a name="line.351"></a>
+<span class="sourceLineNo">352</span>        this.previousRow = rowKey;<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 Path getTableRelativePath(byte[] tableNameBytes) {<a name="line.355"></a>
+<span class="sourceLineNo">356</span>        String tableName = Bytes.toString(tableNameBytes);<a name="line.356"></a>
+<span class="sourceLineNo">357</span>        String[] tableNameParts = tableName.split(":");<a name="line.357"></a>
+<span class="sourceLineNo">358</span>        Path tableRelPath = new Path(tableName.split(":")[0]);<a name="line.358"></a>
+<span class="sourceLineNo">359</span>        if (tableNameParts.length &gt; 1) {<a name="line.359"></a>
+<span class="sourceLineNo">360</span>          tableRelPath = new Path(tableRelPath, tableName.split(":")[1]);<a name="line.360"></a>
+<span class="sourceLineNo">361</span>        }<a name="line.361"></a>
+<span class="sourceLineNo">362</span>        return tableRelPath;<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      }<a name="line.363"></a>
+<span class="sourceLineNo">364</span>      private void rollWriters(WriterLength writerLength) throws IOException {<a name="line.364"></a>
+<span class="sourceLineNo">365</span>        if (writerLength != null) {<a name="line.365"></a>
+<span class="sourceLineNo">366</span>          closeWriter(writerLength);<a name="line.366"></a>
+<span class="sourceLineNo">367</span>        } else {<a name="line.367"></a>
+<span class="sourceLineNo">368</span>          for (WriterLength wl : this.writers.values()) {<a name="line.368"></a>
+<span class="sourceLineNo">369</span>            closeWriter(wl);<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>        this.rollRequested = false;<a name="line.372"></a>
+<span class="sourceLineNo">373</span>      }<a name="line.373"></a>
+<span class="sourceLineNo">374</span><a name="line.374"></a>
+<span class="sourceLineNo">375</span>      private void closeWriter(WriterLength wl) throws IOException {<a name="line.375"></a>
+<span class="sourceLineNo">376</span>        if (wl.writer != null) {<a name="line.376"></a>
+<span class="sourceLineNo">377</span>          LOG.info(<a name="line.377"></a>
+<span class="sourceLineNo">378</span>              "Writer=" + wl.writer.getPath() + ((wl.written == 0)? "": ", wrote=" + wl.written));<a name="line.378"></a>
+<span class="sourceLineNo">379</span>          close(wl.writer);<a name="line.379"></a>
+<span class="sourceLineNo">380</span>        }<a name="line.380"></a>
+<span class="sourceLineNo">381</span>        wl.writer = null;<a name="line.381"></a>
+<span class="sourceLineNo">382</span>        wl.written = 0;<a name="line.382"></a>
+<span class="sourceLineNo">383</span>      }<a name="line.383"></a>
+<span class="sourceLineNo">384</span><a name="line.384"></a>
+<span class="sourceLineNo">385</span>      /*<a name="line.385"></a>
+<span class="sourceLineNo">386</span>       * Create a new StoreFile.Writer.<a name="line.386"></a>
+<span class="sourceLineNo">387</span>       * @param family<a name="line.387"></a>
+<span class="sourceLineNo">388</span>       * @return A WriterLength, containing a new StoreFile.Writer.<a name="line.388"></a>
+<span class="sourceLineNo">389</span>       * @throws IOException<a name="line.389"></a>
+<span class="sourceLineNo">390</span>       */<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="BX_UNBOXING_IMMEDIATELY_REBOXED",<a name="line.391"></a>
+<span class="sourceLineNo">392</span>          justification="Not important")<a name="line.392"></a>
+<span class="sourceLineNo">393</span>      private WriterLength getNewWriter(byte[] tableName, byte[] family, Configuration<a name="line.393"></a>
+<span class="sourceLineNo">394</span>              conf, InetSocketAddress[] favoredNodes) throws IOException {<a name="line.394"></a>
+<span class="sourceLineNo">395</span>        byte[] tableAndFamily = getTableNameSuffixedWithFamily(tableName, family);<a name="line.395"></a>
+<span class="sourceLineNo">396</span>        Path familydir = new Path(outputDir, Bytes.toString(family));<a name="line.396"></a>
+<span class="sourceLineNo">397</span>        if (writeMultipleTables) {<a name="line.397"></a>
+<span class="sourceLineNo">398</span>          familydir = new Path(outputDir,<a name="line.398"></a>
+<span class="sourceLineNo">399</span>                  new Path(getTableRelativePath(tableName), Bytes.toString(family)));<a name="line.399"></a>
+<span class="sourceLineNo">400</span>        }<a name="line.400"></a>
+<span class="sourceLineNo">401</span>        WriterLength wl = new WriterLength();<a name="line.401"></a>
+<span class="sourceLineNo">402</span>        Algorithm compression = compressionMap.get(tableAndFamily);<a name="line.402"></a>
+<span class="sourceLineNo">403</span>        compression = compression == null ? defaultCompression : compression;<a name="line.403"></a>
+<span class="sourceLineNo">404</span>        BloomType bloomType = bloomTypeMap.get(tableAndFamily);<a name="line.404"></a>
+<span class="sourceLineNo">405</span>        bloomType = bloomType == null ? BloomType.NONE : bloomType;<a name="line.405"></a>
+<span class="sourceLineNo">406</span>        String bloomParam = bloomParamMap.get(tableAndFamily);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>        if (bloomType == BloomType.ROWPREFIX_FIXED_LENGTH) {<a name="line.407"></a>
+<span class="sourceLineNo">408</span>          conf.set(BloomFilterUtil.PREFIX_LENGTH_KEY, bloomParam);<a name="line.408"></a>
+<span class="sourceLineNo">409</span>        } else if (bloomType == BloomType.ROWPREFIX_DELIMITED) {<a name="line.409"></a>
+<span class="sourceLineNo">410</span>          conf.set(BloomFilterUtil.DELIMITER_KEY, bloomParam);<a name="line.410"></a>
+<span class="sourceLineNo">411</span>        }<a name="line.411"></a>
+<span class="sourceLineNo">412</span>        Integer blockSize = blockSizeMap.get(tableAndFamily);<a name="line.412"></a>
+<span class="sourceLineNo">413</span>        blockSize = blockSize == null ? HConstants.DEFAULT_BLOCKSIZE : blockSize;<a name="line.413"></a>
+<span class="sourceLineNo">414</span>        DataBlockEncoding encoding = overriddenEncoding;<a name="line.414"></a>
+<span class="sourceLineNo">415</span>        encoding = encoding == null ? datablockEncodingMap.get(tableAndFamily) : encoding;<a name="line.415"></a>
+<span class="sourceLineNo">416</span>        encoding = encoding == null ? DataBlockEncoding.NONE : encoding;<a name="line.416"></a>
+<span class="sourceLineNo">417</span>        Configuration tempConf = new Configuration(conf);<a name="line.417"></a>
+<span class="sourceLineNo">418</span>        tempConf.setFloat(HConstants.HFILE_BLOCK_CACHE_SIZE_KEY, 0.0f);<a name="line.418"></a>
+<span class="sourceLineNo">419</span>        HFileContextBuilder contextBuilder = new HFileContextBuilder()<a name="line.419"></a>
+<span class="sourceLineNo">420</span>                                    .withCompression(compression)<a name="line.420"></a>
+<span class="sourceLineNo">421</span>                                    .withChecksumType(HStore.getChecksumType(conf))<a name="line.421"></a>
+<span class="sourceLineNo">422</span>                                    .withBytesPerCheckSum(HStore.getBytesPerChecksum(conf))<a name="line.422"></a>
+<span class="sourceLineNo">423</span>                                    .withBlockSize(blockSize);<a name="line.423"></a>
+<span class="sourceLineNo">424</span><a name="line.424"></a>
+<span class="sourceLineNo">425</span>        if (HFile.getFormatVersion(conf) &gt;= HFile.MIN_FORMAT_VERSION_WITH_TAGS) {<a name="line.425"></a>
+<span class="sourceLineNo">426</span>          contextBuilder.withIncludesTags(true);<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>        contextBuilder.withDataBlockEncoding(encoding);<a name="line.429"></a>
+<span class="sourceLineNo">430</span>        HFileContext hFileContext = contextBuilder.build();<a name="line.430"></a>
+<span class="sourceLineNo">431</span>        if (null == favoredNodes) {<a name="line.431"></a>
+<span class="sourceLineNo">432</span>          wl.writer =<a name="line.432"></a>
+<span class="sourceLineNo">433</span>              new StoreFileWriter.Builder(conf, new CacheConfig(tempConf), fs)<a name="line.433"></a>
+<span class="sourceLineNo">434</span>                  .withOutputDir(familydir).withBloomType(bloomType)<a name="line.434"></a>
+<span class="sourceLineNo">435</span>                  .withComparator(CellComparator.getInstance()).withFileContext(hFileContext).build();<a name="line.435"></a>
+<span class="sourceLineNo">436</span>        } else {<a name="line.436"></a>
+<span class="sourceLineNo">437</span>          wl.writer =<a name="line.437"></a>
+<span class="sourceLineNo">438</span>              new StoreFileWriter.Builder(conf, new CacheConfig(tempConf), new HFileSystem(fs))<a name="line.438"></a>
+<span class="sourceLineNo">439</span>                  .withOutputDir(familydir).withBloomType(bloomType)<a name="line.439"></a>
+<span class="sourceLineNo">440</span>                  .withComparator(CellComparator.getInstance()).withFileContext(hFileContext)<a name="line.440"></a>
+<span class="sourceLineNo">441</span>                  .withFavoredNodes(favoredNodes).build();<a name="line.441"></a>
+<span class="sourceLineNo">442</span>        }<a name="line.442"></a>
+<span class="sourceLineNo">443</span><a name="line.443"></a>
+<span class="sourceLineNo">444</span>        this.writers.put(tableAndFamily, wl);<a name="line.444"></a>
+<span class="sourceLineNo">445</span>        return wl;<a name="line.445"></a>
+<span class="sourceLineNo">446</span>      }<a name="line.446"></a>
+<span class="sourceLineNo">447</span><a name="line.447"></a>
+<span class="sourceLineNo">448</span>      private void close(final StoreFileWriter w) throws IOException {<a name="line.448"></a>
+<span class="sourceLineNo">449</span>        if (w != null) {<a name="line.449"></a>
+<span class="sourceLineNo">450</span>          w.appendFileInfo(BULKLOAD_TIME_KEY,<a name="line.450"></a>
+<span class="sourceLineNo">451</span>              Bytes.toBytes(System.currentTimeMillis()));<a name="line.451"></a>
+<span class="sourceLineNo">452</span>          w.appendFileInfo(BULKLOAD_TASK_KEY,<a name="line.452"></a>
+<span class="sourceLineNo">453</span>              Bytes.toBytes(context.getTaskAttemptID().toString()));<a name="line.453"></a>
+<span class="sourceLineNo">454</span>          w.appendFileInfo(MAJOR_COMPACTION_KEY,<a name="line.454"></a>
+<span class="sourceLineNo">455</span>              Bytes.toBytes(true));<a name="line.455"></a>
+<span class="sourceLineNo">456</span>          w.appendFileInfo(EXCLUDE_FROM_MINOR_COMPACTION_KEY,<a name="line.456"></a>
+<span class="sourceLineNo">457</span>              Bytes.toBytes(compactionExclude));<a name="line.457"></a>
+<span class="sourceLineNo">458</span>          w.appendTrackedTimestampsToMetadata();<a name="line.458"></a>
+<span class="sourceLineNo">459</span>          w.close();<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><a name="line.462"></a>
-<span class="sourceLineNo">463</span>  /**<a name="line.463"></a>
-<span class="sourceLineNo">464</span>   * Configure block storage policy for CF after the directory is created.<a name="line.464"></a>
-<span class="sourceLineNo">465</span>   */<a name="line.465"></a>
-<span class="sourceLineNo">466</span>  static void configureStoragePolicy(final Configuration conf, final FileSystem fs,<a name="line.466"></a>
-<span class="sourceLineNo">467</span>      byte[] tableAndFamily, Path cfPath) {<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    if (null == conf || null == fs || null == tableAndFamily || null == cfPath) {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>      return;<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>    String policy =<a name="line.472"></a>
-<span class="sourceLineNo">473</span>        conf.get(STORAGE_POLICY_PROPERTY_CF_PREFIX + Bytes.toString(tableAndFamily),<a name="line.473"></a>
-<span class="sourceLineNo">474</span>          conf.get(STORAGE_POLICY_PROPERTY));<a name="line.474"></a>
-<span class="sourceLineNo">475</span>    FSUtils.setStoragePolicy(fs, cfPath, policy);<a name="line.475"></a>
-<span class="sourceLineNo">476</span>  }<a name="line.476"></a>
-<span class="sourceLineNo">477</span><a name="line.477"></a>
-<span class="sourceLineNo">478</span>  /*<a name="line.478"></a>
-<span class="sourceLineNo">479</span>   * Data structure to hold a Writer and amount of data written on it.<a name="line.479"></a>
-<span class="sourceLineNo">480</span>   */<a name="line.480"></a>
-<span class="sourceLineNo">481</span>  static class WriterLength {<a name="line.481"></a>
-<span class="sourceLineNo">482</span>    long written = 0;<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    StoreFileWriter writer = null;<a name="line.483"></a>
-<span class="sourceLineNo">484</span>  }<a name="line.484"></a>
-<span class="sourceLineNo">485</span><a name="line.485"></a>
-<span class="sourceLineNo">486</span>  /**<a name="line.486"></a>
-<span class="sourceLineNo">487</span>   * Return the start keys of all of the regions in this table,<a name="line.487"></a>
-<span class="sourceLineNo">488</span>   * as a list of ImmutableBytesWritable.<a name="line.488"></a>
-<span class="sourceLineNo">489</span>   */<a name="line.489"></a>
-<span class="sourceLineNo">490</span>  private static List&lt;ImmutableBytesWritable&gt; getRegionStartKeys(List&lt;RegionLocator&gt; regionLocators,<a name="line.490"></a>
-<span class="sourceLineNo">491</span>                                                                 boolean writeMultipleTables)<a name="line.491"></a>
-<span class="sourceLineNo">492</span>          throws IOException {<a name="line.492"></a>
-<span class="sourceLineNo">493</span><a name="line.493"></a>
-<span class="sourceLineNo">494</span>    ArrayList&lt;ImmutableBytesWritable&gt; ret = new ArrayList&lt;&gt;();<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    for(RegionLocator regionLocator : regionLocators)<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    {<a name="line.496"></a>
-<span class="sourceLineNo">497</span>      TableName tableName = regionLocator.getName();<a name="line.497"></a>
-<span class="sourceLineNo">498</span>      LOG.info("Looking up current regions for table " + tableName);<a name="line.498"></a>
-<span class="sourceLineNo">499</span>      byte[][] byteKeys = regionLocator.getStartKeys();<a name="line.499"></a>
-<span class="sourceLineNo">500</span>      for (byte[] byteKey : byteKeys) {<a name="line.500"></a>
-<span class="sourceLineNo">501</span>        byte[] fullKey = byteKey; //HFileOutputFormat2 use case<a name="line.501"></a>
-<span class="sourceLineNo">502</span>        if (writeMultipleTables)<a name="line.502"></a>
-<span class="sourceLineNo">503</span>        {<a name="line.503"></a>
-<span class="sourceLineNo">504</span>          //MultiTableHFileOutputFormat use case<a name="line.504"></a>
-<span class="sourceLineNo">505</span>          fullKey = combineTableNameSuffix(tableName.getName(), byteKey);<a name="line.505"></a>
-<span class="sourceLineNo">506</span>        }<a name="line.506"></a>
-<span class="sourceLineNo">507</span>        if (LOG.isDebugEnabled()) {<a name="line.507"></a>
-<span class="sourceLineNo">508</span>          LOG.debug("SplitPoint startkey for table [" + tableName + "]: [" + Bytes.toStringBinary<a name="line.508"></a>
-<span class="sourceLineNo">509</span>                  (fullKey) + "]");<a name="line.509"></a>
-<span class="sourceLineNo">510</span>        }<a name="line.510"></a>
-<span class="sourceLineNo">511</span>        ret.add(new ImmutableBytesWritable(fullKey));<a name="line.511"></a>
-<span class="sourceLineNo">512</span>      }<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    }<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    return ret;<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 out a {@link SequenceFile} that can be read by<a name="line.518"></a>
-<span class="sourceLineNo">519</span>   * {@link TotalOrderPartitioner} that contains the split points in startKeys.<a name="line.519"></a>
-<span class="sourceLineNo">520</span>   */<a name="line.520"></a>
-<span class="sourceLineNo">521</span>  @SuppressWarnings("deprecation")<a name="line.521"></a>
-<span class="sourceLineNo">522</span>  private static void writePartitions(Configuration conf, Path partitionsPath,<a name="line.522"></a>
-<span class="sourceLineNo">523</span>      List&lt;ImmutableBytesWritable&gt; startKeys, boolean writeMultipleTables) throws IOException {<a name="line.523"></a>
-<span class="sourceLineNo">524</span>    LOG.info("Writing partition information to " + partitionsPath);<a name="line.524"></a>
-<span class="sourceLineNo">525</span>    if (startKeys.isEmpty()) {<a name="line.525"></a>
-<span class="sourceLineNo">526</span>      throw new IllegalArgumentException("No regions passed");<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>    // We're generating a list of split points, and we don't ever<a name="line.529"></a>
-<span class="sourceLineNo">530</span>    // have keys &lt; the first region (which has an empty start key)<a name="line.530"></a>
-<span class="sourceLineNo">531</span>    // so we need to remove it. Otherwise we would end up with an<a name="line.531"></a>
-<span class="sourceLineNo">532</span>    // empty reducer with index 0<a name="line.532"></a>
-<span class="sourceLineNo">533</span>    TreeSet&lt;ImmutableBytesWritable&gt; sorted = new TreeSet&lt;&gt;(startKeys);<a name="line.533"></a>
-<span class="sourceLineNo">534</span>    ImmutableBytesWritable first = sorted.first();<a name="line.534"></a>
-<span class="sourceLineNo">535</span>    if (writeMultipleTables) {<a name="line.535"></a>
-<span class="sourceLineNo">536</span>      first = new ImmutableBytesWritable(MultiT

<TRUNCATED>

[37/43] hbase-site git commit: Published site at 7ab77518a2569e2416a50020393aa386e7734501.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/devapidocs/org/apache/hadoop/hbase/mapreduce/MultiTableHFileOutputFormat.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/mapreduce/MultiTableHFileOutputFormat.html b/devapidocs/org/apache/hadoop/hbase/mapreduce/MultiTableHFileOutputFormat.html
index 821a558..ddfb903 100644
--- a/devapidocs/org/apache/hadoop/hbase/mapreduce/MultiTableHFileOutputFormat.html
+++ b/devapidocs/org/apache/hadoop/hbase/mapreduce/MultiTableHFileOutputFormat.html
@@ -188,7 +188,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFor
 <!--   -->
 </a>
 <h3>Fields inherited from class&nbsp;org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html" title="class in org.apache.hadoop.hbase.mapreduce">HFileOutputFormat2</a></h3>
-<code><a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#BLOCK_SIZE_FAMILIES_CONF_KEY">BLOCK_SIZE_FAMILIES_CONF_KEY</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#blockSizeDetails">blockSizeDetails</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#BLOOM_TYPE_FAMILIES_CONF_KEY">BLOOM_TYPE_FAMILIES_CONF_KEY</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#bloomTypeDetails">bloomTypeDetails</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#COMPRESSION_FAMILIES_CONF_KEY">COMPRESSION_FAMILIES_CONF_KEY</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#compressionDetails">compressionDetails</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#DATABLOCK_ENCODING_FAMILIES_CONF_KEY">DATABLOCK_ENCODING_FAMILIES_CONF_KEY</a>, <a href="../../../.
 ./../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#DATABLOCK_ENCODING_OVERRIDE_CONF_KEY">DATABLOCK_ENCODING_OVERRIDE_CONF_KEY</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#dataBlockEncodingDetails">dataBlockEncodingDetails</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#LOCALITY_SENSITIVE_CONF_KEY">LOCALITY_SENSITIVE_CONF_KEY</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#MULTI_TABLE_HFILEOUTPUTFORMAT_CONF_KEY">MULTI_TABLE_HFILEOUTPUTFORMAT_CONF_KEY</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#OUTPUT_TABLE_NAME_CONF_KEY">OUTPUT_TABLE_NAME_CONF_KEY</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#STORAGE_POLICY_PROPERTY">STORAGE_POLICY_PROPERTY</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#STORAGE_POLICY_PROPERTY_CF_PREFIX">STORAGE_POL
 ICY_PROPERTY_CF_PREFIX</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#tableSeparator">tableSeparator</a></code></li>
+<code><a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#BLOCK_SIZE_FAMILIES_CONF_KEY">BLOCK_SIZE_FAMILIES_CONF_KEY</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#blockSizeDetails">blockSizeDetails</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#BLOOM_PARAM_FAMILIES_CONF_KEY">BLOOM_PARAM_FAMILIES_CONF_KEY</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#BLOOM_TYPE_FAMILIES_CONF_KEY">BLOOM_TYPE_FAMILIES_CONF_KEY</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#bloomParamDetails">bloomParamDetails</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#bloomTypeDetails">bloomTypeDetails</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#COMPRESSION_FAMILIES_CONF_KEY">COMPRESSION_FAMILIES_CONF_KEY</a>, <a href="../../../../../org/apache/
 hadoop/hbase/mapreduce/HFileOutputFormat2.html#compressionDetails">compressionDetails</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#DATABLOCK_ENCODING_FAMILIES_CONF_KEY">DATABLOCK_ENCODING_FAMILIES_CONF_KEY</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#DATABLOCK_ENCODING_OVERRIDE_CONF_KEY">DATABLOCK_ENCODING_OVERRIDE_CONF_KEY</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#dataBlockEncodingDetails">dataBlockEncodingDetails</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#LOCALITY_SENSITIVE_CONF_KEY">LOCALITY_SENSITIVE_CONF_KEY</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#MULTI_TABLE_HFILEOUTPUTFORMAT_CONF_KEY">MULTI_TABLE_HFILEOUTPUTFORMAT_CONF_KEY</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#OUTPUT_TABLE_NAME_CONF_KEY">OUTPUT_TABLE_NAME_CONF_K
 EY</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#STORAGE_POLICY_PROPERTY">STORAGE_POLICY_PROPERTY</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#STORAGE_POLICY_PROPERTY_CF_PREFIX">STORAGE_POLICY_PROPERTY_CF_PREFIX</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#tableSeparator">tableSeparator</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="fields.inherited.from.class.org.apache.hadoop.mapreduce.lib.output.FileOutputFormat">
@@ -279,7 +279,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFor
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html" title="class in org.apache.hadoop.hbase.mapreduce">HFileOutputFormat2</a></h3>
-<code><a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#combineTableNameSuffix-byte:A-byte:A-">combineTableNameSuffix</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#configureIncrementalLoad-org.apache.hadoop.mapreduce.Job-java.util.List-java.lang.Class-">configureIncrementalLoad</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#configureIncrementalLoad-org.apache.hadoop.mapreduce.Job-org.apache.hadoop.hbase.client.TableDescriptor-org.apache.hadoop.hbase.client.RegionLocator-">configureIncrementalLoad</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#configureIncrementalLoad-org.apache.hadoop.mapreduce.Job-org.apache.hadoop.hbase.client.Table-org.apache.hadoop.hbase.client.RegionLocator-">configureIncrementalLoad</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#configureIncrementalLoadMap-org.apache.had
 oop.mapreduce.Job-org.apache.hadoop.hbase.client.TableDescriptor-">configureIncrementalLoadMap</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#configurePartitioner-org.apache.hadoop.mapreduce.Job-java.util.List-boolean-">configurePartitioner</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#configureStoragePolicy-org.apache.hadoop.conf.Configuration-org.apache.hadoop.fs.FileSystem-byte:A-org.apache.hadoop.fs.Path-">configureStoragePolicy</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#createFamilyBlockSizeMap-org.apache.hadoop.conf.Configuration-">createFamilyBlockSizeMap</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#createFamilyBloomTypeMap-org.apache.hadoop.conf.Configuration-">createFamilyBloomTypeMap</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#createFamilyCompressionMap-org.apache.ha
 doop.conf.Configuration-">createFamilyCompressionMap</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#createFamilyDataBlockEncodingMap-org.apache.hadoop.conf.Configuration-">createFamilyDataBlockEncodingMap</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#createRecordWriter-org.apache.hadoop.mapreduce.TaskAttemptContext-org.apache.hadoop.mapreduce.OutputCommitter-">createRecordWriter</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#getRecordWriter-org.apache.hadoop.mapreduce.TaskAttemptContext-">getRecordWriter</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#getTableNameSuffixedWithFamily-byte:A-byte:A-">getTableNameSuffixedWithFamily</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#serializeColumnFamilyAttribute-java.util.function.Function-java.util.List-">serializeColumnFamilyAttribute</a></co
 de></li>
+<code><a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#combineTableNameSuffix-byte:A-byte:A-">combineTableNameSuffix</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#configureIncrementalLoad-org.apache.hadoop.mapreduce.Job-java.util.List-java.lang.Class-">configureIncrementalLoad</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#configureIncrementalLoad-org.apache.hadoop.mapreduce.Job-org.apache.hadoop.hbase.client.TableDescriptor-org.apache.hadoop.hbase.client.RegionLocator-">configureIncrementalLoad</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#configureIncrementalLoad-org.apache.hadoop.mapreduce.Job-org.apache.hadoop.hbase.client.Table-org.apache.hadoop.hbase.client.RegionLocator-">configureIncrementalLoad</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#configureIncrementalLoadMap-org.apache.had
 oop.mapreduce.Job-org.apache.hadoop.hbase.client.TableDescriptor-">configureIncrementalLoadMap</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#configurePartitioner-org.apache.hadoop.mapreduce.Job-java.util.List-boolean-">configurePartitioner</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#configureStoragePolicy-org.apache.hadoop.conf.Configuration-org.apache.hadoop.fs.FileSystem-byte:A-org.apache.hadoop.fs.Path-">configureStoragePolicy</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#createFamilyBlockSizeMap-org.apache.hadoop.conf.Configuration-">createFamilyBlockSizeMap</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#createFamilyBloomParamMap-org.apache.hadoop.conf.Configuration-">createFamilyBloomParamMap</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#createFamilyBloomTypeMap-org.apache.ha
 doop.conf.Configuration-">createFamilyBloomTypeMap</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#createFamilyCompressionMap-org.apache.hadoop.conf.Configuration-">createFamilyCompressionMap</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#createFamilyDataBlockEncodingMap-org.apache.hadoop.conf.Configuration-">createFamilyDataBlockEncodingMap</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#createRecordWriter-org.apache.hadoop.mapreduce.TaskAttemptContext-org.apache.hadoop.mapreduce.OutputCommitter-">createRecordWriter</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#getRecordWriter-org.apache.hadoop.mapreduce.TaskAttemptContext-">getRecordWriter</a>, <a href="../../../../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#getTableNameSuffixedWithFamily-byte:A-byte:A-">getTableNameSuffixedWithFamily</a>, <a href="../../../
 ../../org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#serializeColumnFamilyAttribute-java.util.function.Function-java.util.List-">serializeColumnFamilyAttribute</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.mapreduce.lib.output.FileOutputFormat">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/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 a07a1d8..a77bff8 100644
--- a/devapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html
@@ -293,10 +293,10 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.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>
 <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/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/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/CellCounter.CellCounterMapper.Counters.html" title="enum in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">CellCounter.CellCounterMapper.Counters</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/devapidocs/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html b/devapidocs/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html
index 9aba51a..0b76287 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html
@@ -122,7 +122,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.260">HMaster.InitializationMonitor</a>
+<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.262">HMaster.InitializationMonitor</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/util/HasThread.html" title="class in org.apache.hadoop.hbase.util">HasThread</a></pre>
 <div class="block">Protection against zombie master. Started once Master accepts active responsibility and
  starts taking over responsibilities. Allows a finite time window before giving up ownership.</div>
@@ -250,7 +250,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/HasThread.html" tit
 <ul class="blockList">
 <li class="blockList">
 <h4>TIMEOUT_KEY</h4>
-<pre>public static final&nbsp;<a href="https://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/master/HMaster.InitializationMonitor.html#line.262">TIMEOUT_KEY</a></pre>
+<pre>public static final&nbsp;<a href="https://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/master/HMaster.InitializationMonitor.html#line.264">TIMEOUT_KEY</a></pre>
 <div class="block">The amount of time in milliseconds to sleep before checking initialization status.</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -264,7 +264,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/HasThread.html" tit
 <ul class="blockList">
 <li class="blockList">
 <h4>TIMEOUT_DEFAULT</h4>
-<pre>public static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.263">TIMEOUT_DEFAULT</a></pre>
+<pre>public static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.265">TIMEOUT_DEFAULT</a></pre>
 </li>
 </ul>
 <a name="HALT_KEY">
@@ -273,7 +273,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/HasThread.html" tit
 <ul class="blockList">
 <li class="blockList">
 <h4>HALT_KEY</h4>
-<pre>public static final&nbsp;<a href="https://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/master/HMaster.InitializationMonitor.html#line.269">HALT_KEY</a></pre>
+<pre>public static final&nbsp;<a href="https://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/master/HMaster.InitializationMonitor.html#line.271">HALT_KEY</a></pre>
 <div class="block">When timeout expired and initialization has not complete, call <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/System.html?is-external=true#exit-int-" title="class or interface in java.lang"><code>System.exit(int)</code></a> when
  true, do nothing otherwise.</div>
 <dl>
@@ -288,7 +288,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/HasThread.html" tit
 <ul class="blockList">
 <li class="blockList">
 <h4>HALT_DEFAULT</h4>
-<pre>public static final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.270">HALT_DEFAULT</a></pre>
+<pre>public static final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.272">HALT_DEFAULT</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.master.HMaster.InitializationMonitor.HALT_DEFAULT">Constant Field Values</a></dd>
@@ -301,7 +301,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/HasThread.html" tit
 <ul class="blockList">
 <li class="blockList">
 <h4>master</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.272">master</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.274">master</a></pre>
 </li>
 </ul>
 <a name="timeout">
@@ -310,7 +310,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/HasThread.html" tit
 <ul class="blockList">
 <li class="blockList">
 <h4>timeout</h4>
-<pre>private final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.273">timeout</a></pre>
+<pre>private final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.275">timeout</a></pre>
 </li>
 </ul>
 <a name="haltOnTimeout">
@@ -319,7 +319,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/HasThread.html" tit
 <ul class="blockListLast">
 <li class="blockList">
 <h4>haltOnTimeout</h4>
-<pre>private final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.274">haltOnTimeout</a></pre>
+<pre>private final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.276">haltOnTimeout</a></pre>
 </li>
 </ul>
 </li>
@@ -336,7 +336,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/HasThread.html" tit
 <ul class="blockListLast">
 <li class="blockList">
 <h4>InitializationMonitor</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.277">InitializationMonitor</a>(<a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a>&nbsp;master)</pre>
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.279">InitializationMonitor</a>(<a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a>&nbsp;master)</pre>
 <div class="block">Creates a Thread that monitors the <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isInitialized--"><code>HMaster.isInitialized()</code></a> state.</div>
 </li>
 </ul>
@@ -354,7 +354,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/HasThread.html" tit
 <ul class="blockListLast">
 <li class="blockList">
 <h4>run</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.286">run</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.288">run</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="https://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="https://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>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/devapidocs/org/apache/hadoop/hbase/master/HMaster.MasterStoppedException.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/HMaster.MasterStoppedException.html b/devapidocs/org/apache/hadoop/hbase/master/HMaster.MasterStoppedException.html
index ccdf27e..27c31f9 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/HMaster.MasterStoppedException.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/HMaster.MasterStoppedException.html
@@ -136,7 +136,7 @@
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.3008">HMaster.MasterStoppedException</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.3022">HMaster.MasterStoppedException</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/DoNotRetryIOException.html" title="class in org.apache.hadoop.hbase">DoNotRetryIOException</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -205,7 +205,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/DoNotRetryIOException.ht
 <ul class="blockListLast">
 <li class="blockList">
 <h4>MasterStoppedException</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.MasterStoppedException.html#line.3009">MasterStoppedException</a>()</pre>
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.MasterStoppedException.html#line.3023">MasterStoppedException</a>()</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/devapidocs/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html b/devapidocs/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html
index 19f6dea..cfe6508 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html
@@ -127,7 +127,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.443">HMaster.RedirectServlet</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.445">HMaster.RedirectServlet</a>
 extends javax.servlet.http.HttpServlet</pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -243,7 +243,7 @@ extends javax.servlet.http.HttpServlet</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>serialVersionUID</h4>
-<pre>private static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html#line.444">serialVersionUID</a></pre>
+<pre>private static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html#line.446">serialVersionUID</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.master.HMaster.RedirectServlet.serialVersionUID">Constant Field Values</a></dd>
@@ -256,7 +256,7 @@ extends javax.servlet.http.HttpServlet</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>regionServerInfoPort</h4>
-<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html#line.445">regionServerInfoPort</a></pre>
+<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html#line.447">regionServerInfoPort</a></pre>
 </li>
 </ul>
 <a name="regionServerHostname">
@@ -265,7 +265,7 @@ extends javax.servlet.http.HttpServlet</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>regionServerHostname</h4>
-<pre>private final&nbsp;<a href="https://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/master/HMaster.RedirectServlet.html#line.446">regionServerHostname</a></pre>
+<pre>private final&nbsp;<a href="https://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/master/HMaster.RedirectServlet.html#line.448">regionServerHostname</a></pre>
 </li>
 </ul>
 </li>
@@ -282,7 +282,7 @@ extends javax.servlet.http.HttpServlet</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>RedirectServlet</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html#line.452">RedirectServlet</a>(<a href="../../../../../org/apache/hadoop/hbase/http/InfoServer.html" title="class in org.apache.hadoop.hbase.http">InfoServer</a>&nbsp;infoServer,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html#line.454">RedirectServlet</a>(<a href="../../../../../org/apache/hadoop/hbase/http/InfoServer.html" title="class in org.apache.hadoop.hbase.http">InfoServer</a>&nbsp;infoServer,
                        <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;hostname)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -305,7 +305,7 @@ extends javax.servlet.http.HttpServlet</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>doGet</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html#line.458">doGet</a>(javax.servlet.http.HttpServletRequest&nbsp;request,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html#line.460">doGet</a>(javax.servlet.http.HttpServletRequest&nbsp;request,
                   javax.servlet.http.HttpServletResponse&nbsp;response)
            throws javax.servlet.ServletException,
                   <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/devapidocs/org/apache/hadoop/hbase/master/HMaster.TableDescriptorGetter.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/HMaster.TableDescriptorGetter.html b/devapidocs/org/apache/hadoop/hbase/master/HMaster.TableDescriptorGetter.html
index c3dbbed..bb24dfb 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/HMaster.TableDescriptorGetter.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/HMaster.TableDescriptorGetter.html
@@ -105,7 +105,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>protected static interface <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.2428">HMaster.TableDescriptorGetter</a></pre>
+<pre>protected static interface <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.2442">HMaster.TableDescriptorGetter</a></pre>
 <div class="block">Implement to return TableDescriptor after pre-checks</div>
 </li>
 </ul>
@@ -150,7 +150,7 @@ var activeTableTab = "activeTableTab";
 <ul class="blockListLast">
 <li class="blockList">
 <h4>get</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.TableDescriptorGetter.html#line.2429">get</a>()
+<pre><a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.TableDescriptorGetter.html#line.2443">get</a>()
              throws <a href="https://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>


[28/43] hbase-site git commit: Published site at 7ab77518a2569e2416a50020393aa386e7734501.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.WriterLength.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.WriterLength.html b/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.WriterLength.html
index ab76d10..5ee521a 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.WriterLength.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.WriterLength.html
@@ -81,862 +81,913 @@
 <span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.regionserver.BloomType;<a name="line.73"></a>
 <span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.regionserver.HStore;<a name="line.74"></a>
 <span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.regionserver.StoreFileWriter;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.util.MapReduceExtendedCell;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.io.NullWritable;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.io.SequenceFile;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.io.Text;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.mapreduce.Job;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.mapreduce.OutputCommitter;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.mapreduce.OutputFormat;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.mapreduce.RecordWriter;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.hadoop.mapreduce.TaskAttemptContext;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.apache.hadoop.mapreduce.lib.output.FileOutputCommitter;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.mapreduce.lib.partition.TotalOrderPartitioner;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.slf4j.Logger;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.slf4j.LoggerFactory;<a name="line.93"></a>
-<span class="sourceLineNo">094</span><a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<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> * Writes HFiles. Passed Cells must arrive in order.<a name="line.98"></a>
-<span class="sourceLineNo">099</span> * Writes current time as the sequence id for the file. Sets the major compacted<a name="line.99"></a>
-<span class="sourceLineNo">100</span> * attribute on created @{link {@link HFile}s. Calling write(null,null) will forcibly roll<a name="line.100"></a>
-<span class="sourceLineNo">101</span> * all HFiles being written.<a name="line.101"></a>
-<span class="sourceLineNo">102</span> * &lt;p&gt;<a name="line.102"></a>
-<span class="sourceLineNo">103</span> * Using this class as part of a MapReduce job is best done<a name="line.103"></a>
-<span class="sourceLineNo">104</span> * using {@link #configureIncrementalLoad(Job, TableDescriptor, RegionLocator)}.<a name="line.104"></a>
-<span class="sourceLineNo">105</span> */<a name="line.105"></a>
-<span class="sourceLineNo">106</span>@InterfaceAudience.Public<a name="line.106"></a>
-<span class="sourceLineNo">107</span>public class HFileOutputFormat2<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    extends FileOutputFormat&lt;ImmutableBytesWritable, Cell&gt; {<a name="line.108"></a>
-<span class="sourceLineNo">109</span>  private static final Logger LOG = LoggerFactory.getLogger(HFileOutputFormat2.class);<a name="line.109"></a>
-<span class="sourceLineNo">110</span>  static class TableInfo {<a name="line.110"></a>
-<span class="sourceLineNo">111</span>    private TableDescriptor tableDesctiptor;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>    private RegionLocator regionLocator;<a name="line.112"></a>
-<span class="sourceLineNo">113</span><a name="line.113"></a>
-<span class="sourceLineNo">114</span>    public TableInfo(TableDescriptor tableDesctiptor, RegionLocator regionLocator) {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      this.tableDesctiptor = tableDesctiptor;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>      this.regionLocator = regionLocator;<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    }<a name="line.117"></a>
-<span class="sourceLineNo">118</span><a name="line.118"></a>
-<span class="sourceLineNo">119</span>    /**<a name="line.119"></a>
-<span class="sourceLineNo">120</span>     * The modification for the returned HTD doesn't affect the inner TD.<a name="line.120"></a>
-<span class="sourceLineNo">121</span>     * @return A clone of inner table descriptor<a name="line.121"></a>
-<span class="sourceLineNo">122</span>     * @deprecated use {@link #getTableDescriptor}<a name="line.122"></a>
-<span class="sourceLineNo">123</span>     */<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    @Deprecated<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    public HTableDescriptor getHTableDescriptor() {<a name="line.125"></a>
-<span class="sourceLineNo">126</span>      return new HTableDescriptor(tableDesctiptor);<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    }<a name="line.127"></a>
-<span class="sourceLineNo">128</span><a name="line.128"></a>
-<span class="sourceLineNo">129</span>    public TableDescriptor getTableDescriptor() {<a name="line.129"></a>
-<span class="sourceLineNo">130</span>      return tableDesctiptor;<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    }<a name="line.131"></a>
-<span class="sourceLineNo">132</span><a name="line.132"></a>
-<span class="sourceLineNo">133</span>    public RegionLocator getRegionLocator() {<a name="line.133"></a>
-<span class="sourceLineNo">134</span>      return regionLocator;<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>  protected static final byte[] tableSeparator = Bytes.toBytes(";");<a name="line.138"></a>
-<span class="sourceLineNo">139</span><a name="line.139"></a>
-<span class="sourceLineNo">140</span>  protected static byte[] combineTableNameSuffix(byte[] tableName, byte[] suffix) {<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    return Bytes.add(tableName, tableSeparator, suffix);<a name="line.141"></a>
-<span class="sourceLineNo">142</span>  }<a name="line.142"></a>
-<span class="sourceLineNo">143</span><a name="line.143"></a>
-<span class="sourceLineNo">144</span>  // The following constants are private since these are used by<a name="line.144"></a>
-<span class="sourceLineNo">145</span>  // HFileOutputFormat2 to internally transfer data between job setup and<a name="line.145"></a>
-<span class="sourceLineNo">146</span>  // reducer run using conf.<a name="line.146"></a>
-<span class="sourceLineNo">147</span>  // These should not be changed by the client.<a name="line.147"></a>
-<span class="sourceLineNo">148</span>  static final String COMPRESSION_FAMILIES_CONF_KEY =<a name="line.148"></a>
-<span class="sourceLineNo">149</span>      "hbase.hfileoutputformat.families.compression";<a name="line.149"></a>
-<span class="sourceLineNo">150</span>  static final String BLOOM_TYPE_FAMILIES_CONF_KEY =<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      "hbase.hfileoutputformat.families.bloomtype";<a name="line.151"></a>
-<span class="sourceLineNo">152</span>  static final String BLOCK_SIZE_FAMILIES_CONF_KEY =<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      "hbase.mapreduce.hfileoutputformat.blocksize";<a name="line.153"></a>
-<span class="sourceLineNo">154</span>  static final String DATABLOCK_ENCODING_FAMILIES_CONF_KEY =<a name="line.154"></a>
-<span class="sourceLineNo">155</span>      "hbase.mapreduce.hfileoutputformat.families.datablock.encoding";<a name="line.155"></a>
-<span class="sourceLineNo">156</span><a name="line.156"></a>
-<span class="sourceLineNo">157</span>  // This constant is public since the client can modify this when setting<a name="line.157"></a>
-<span class="sourceLineNo">158</span>  // up their conf object and thus refer to this symbol.<a name="line.158"></a>
-<span class="sourceLineNo">159</span>  // It is present for backwards compatibility reasons. Use it only to<a name="line.159"></a>
-<span class="sourceLineNo">160</span>  // override the auto-detection of datablock encoding.<a name="line.160"></a>
-<span class="sourceLineNo">161</span>  public static final String DATABLOCK_ENCODING_OVERRIDE_CONF_KEY =<a name="line.161"></a>
-<span class="sourceLineNo">162</span>      "hbase.mapreduce.hfileoutputformat.datablock.encoding";<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>   * Keep locality while generating HFiles for bulkload. See HBASE-12596<a name="line.165"></a>
-<span class="sourceLineNo">166</span>   */<a name="line.166"></a>
-<span class="sourceLineNo">167</span>  public static final String LOCALITY_SENSITIVE_CONF_KEY =<a name="line.167"></a>
-<span class="sourceLineNo">168</span>      "hbase.bulkload.locality.sensitive.enabled";<a name="line.168"></a>
-<span class="sourceLineNo">169</span>  private static final boolean DEFAULT_LOCALITY_SENSITIVE = true;<a name="line.169"></a>
-<span class="sourceLineNo">170</span>  static final String OUTPUT_TABLE_NAME_CONF_KEY =<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      "hbase.mapreduce.hfileoutputformat.table.name";<a name="line.171"></a>
-<span class="sourceLineNo">172</span>  static final String MULTI_TABLE_HFILEOUTPUTFORMAT_CONF_KEY =<a name="line.172"></a>
-<span class="sourceLineNo">173</span>          "hbase.mapreduce.use.multi.table.hfileoutputformat";<a name="line.173"></a>
-<span class="sourceLineNo">174</span><a name="line.174"></a>
-<span class="sourceLineNo">175</span>  public static final String STORAGE_POLICY_PROPERTY = HStore.BLOCK_STORAGE_POLICY_KEY;<a name="line.175"></a>
-<span class="sourceLineNo">176</span>  public static final String STORAGE_POLICY_PROPERTY_CF_PREFIX = STORAGE_POLICY_PROPERTY + ".";<a name="line.176"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.util.BloomFilterUtil;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.util.MapReduceExtendedCell;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hadoop.io.NullWritable;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hadoop.io.SequenceFile;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hadoop.io.Text;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hadoop.mapreduce.Job;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hadoop.mapreduce.OutputCommitter;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hadoop.mapreduce.OutputFormat;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.hadoop.mapreduce.RecordWriter;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.hadoop.mapreduce.TaskAttemptContext;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.hadoop.mapreduce.lib.output.FileOutputCommitter;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import org.apache.hadoop.mapreduce.lib.partition.TotalOrderPartitioner;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import org.slf4j.Logger;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import org.slf4j.LoggerFactory;<a name="line.94"></a>
+<span class="sourceLineNo">095</span><a name="line.95"></a>
+<span class="sourceLineNo">096</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<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> * Writes HFiles. Passed Cells must arrive in order.<a name="line.99"></a>
+<span class="sourceLineNo">100</span> * Writes current time as the sequence id for the file. Sets the major compacted<a name="line.100"></a>
+<span class="sourceLineNo">101</span> * attribute on created @{link {@link HFile}s. Calling write(null,null) will forcibly roll<a name="line.101"></a>
+<span class="sourceLineNo">102</span> * all HFiles being written.<a name="line.102"></a>
+<span class="sourceLineNo">103</span> * &lt;p&gt;<a name="line.103"></a>
+<span class="sourceLineNo">104</span> * Using this class as part of a MapReduce job is best done<a name="line.104"></a>
+<span class="sourceLineNo">105</span> * using {@link #configureIncrementalLoad(Job, TableDescriptor, RegionLocator)}.<a name="line.105"></a>
+<span class="sourceLineNo">106</span> */<a name="line.106"></a>
+<span class="sourceLineNo">107</span>@InterfaceAudience.Public<a name="line.107"></a>
+<span class="sourceLineNo">108</span>public class HFileOutputFormat2<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    extends FileOutputFormat&lt;ImmutableBytesWritable, Cell&gt; {<a name="line.109"></a>
+<span class="sourceLineNo">110</span>  private static final Logger LOG = LoggerFactory.getLogger(HFileOutputFormat2.class);<a name="line.110"></a>
+<span class="sourceLineNo">111</span>  static class TableInfo {<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    private TableDescriptor tableDesctiptor;<a name="line.112"></a>
+<span class="sourceLineNo">113</span>    private RegionLocator regionLocator;<a name="line.113"></a>
+<span class="sourceLineNo">114</span><a name="line.114"></a>
+<span class="sourceLineNo">115</span>    public TableInfo(TableDescriptor tableDesctiptor, RegionLocator regionLocator) {<a name="line.115"></a>
+<span class="sourceLineNo">116</span>      this.tableDesctiptor = tableDesctiptor;<a name="line.116"></a>
+<span class="sourceLineNo">117</span>      this.regionLocator = regionLocator;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    }<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>     * The modification for the returned HTD doesn't affect the inner TD.<a name="line.121"></a>
+<span class="sourceLineNo">122</span>     * @return A clone of inner table descriptor<a name="line.122"></a>
+<span class="sourceLineNo">123</span>     * @deprecated use {@link #getTableDescriptor}<a name="line.123"></a>
+<span class="sourceLineNo">124</span>     */<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    @Deprecated<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    public HTableDescriptor getHTableDescriptor() {<a name="line.126"></a>
+<span class="sourceLineNo">127</span>      return new HTableDescriptor(tableDesctiptor);<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    }<a name="line.128"></a>
+<span class="sourceLineNo">129</span><a name="line.129"></a>
+<span class="sourceLineNo">130</span>    public TableDescriptor getTableDescriptor() {<a name="line.130"></a>
+<span class="sourceLineNo">131</span>      return tableDesctiptor;<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    }<a name="line.132"></a>
+<span class="sourceLineNo">133</span><a name="line.133"></a>
+<span class="sourceLineNo">134</span>    public RegionLocator getRegionLocator() {<a name="line.134"></a>
+<span class="sourceLineNo">135</span>      return regionLocator;<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>  protected static final byte[] tableSeparator = Bytes.toBytes(";");<a name="line.139"></a>
+<span class="sourceLineNo">140</span><a name="line.140"></a>
+<span class="sourceLineNo">141</span>  protected static byte[] combineTableNameSuffix(byte[] tableName, byte[] suffix) {<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    return Bytes.add(tableName, tableSeparator, suffix);<a name="line.142"></a>
+<span class="sourceLineNo">143</span>  }<a name="line.143"></a>
+<span class="sourceLineNo">144</span><a name="line.144"></a>
+<span class="sourceLineNo">145</span>  // The following constants are private since these are used by<a name="line.145"></a>
+<span class="sourceLineNo">146</span>  // HFileOutputFormat2 to internally transfer data between job setup and<a name="line.146"></a>
+<span class="sourceLineNo">147</span>  // reducer run using conf.<a name="line.147"></a>
+<span class="sourceLineNo">148</span>  // These should not be changed by the client.<a name="line.148"></a>
+<span class="sourceLineNo">149</span>  static final String COMPRESSION_FAMILIES_CONF_KEY =<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      "hbase.hfileoutputformat.families.compression";<a name="line.150"></a>
+<span class="sourceLineNo">151</span>  static final String BLOOM_TYPE_FAMILIES_CONF_KEY =<a name="line.151"></a>
+<span class="sourceLineNo">152</span>      "hbase.hfileoutputformat.families.bloomtype";<a name="line.152"></a>
+<span class="sourceLineNo">153</span>  static final String BLOOM_PARAM_FAMILIES_CONF_KEY =<a name="line.153"></a>
+<span class="sourceLineNo">154</span>      "hbase.hfileoutputformat.families.bloomparam";<a name="line.154"></a>
+<span class="sourceLineNo">155</span>  static final String BLOCK_SIZE_FAMILIES_CONF_KEY =<a name="line.155"></a>
+<span class="sourceLineNo">156</span>      "hbase.mapreduce.hfileoutputformat.blocksize";<a name="line.156"></a>
+<span class="sourceLineNo">157</span>  static final String DATABLOCK_ENCODING_FAMILIES_CONF_KEY =<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      "hbase.mapreduce.hfileoutputformat.families.datablock.encoding";<a name="line.158"></a>
+<span class="sourceLineNo">159</span><a name="line.159"></a>
+<span class="sourceLineNo">160</span>  // This constant is public since the client can modify this when setting<a name="line.160"></a>
+<span class="sourceLineNo">161</span>  // up their conf object and thus refer to this symbol.<a name="line.161"></a>
+<span class="sourceLineNo">162</span>  // It is present for backwards compatibility reasons. Use it only to<a name="line.162"></a>
+<span class="sourceLineNo">163</span>  // override the auto-detection of datablock encoding.<a name="line.163"></a>
+<span class="sourceLineNo">164</span>  public static final String DATABLOCK_ENCODING_OVERRIDE_CONF_KEY =<a name="line.164"></a>
+<span class="sourceLineNo">165</span>      "hbase.mapreduce.hfileoutputformat.datablock.encoding";<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>   * Keep locality while generating HFiles for bulkload. See HBASE-12596<a name="line.168"></a>
+<span class="sourceLineNo">169</span>   */<a name="line.169"></a>
+<span class="sourceLineNo">170</span>  public static final String LOCALITY_SENSITIVE_CONF_KEY =<a name="line.170"></a>
+<span class="sourceLineNo">171</span>      "hbase.bulkload.locality.sensitive.enabled";<a name="line.171"></a>
+<span class="sourceLineNo">172</span>  private static final boolean DEFAULT_LOCALITY_SENSITIVE = true;<a name="line.172"></a>
+<span class="sourceLineNo">173</span>  static final String OUTPUT_TABLE_NAME_CONF_KEY =<a name="line.173"></a>
+<span class="sourceLineNo">174</span>      "hbase.mapreduce.hfileoutputformat.table.name";<a name="line.174"></a>
+<span class="sourceLineNo">175</span>  static final String MULTI_TABLE_HFILEOUTPUTFORMAT_CONF_KEY =<a name="line.175"></a>
+<span class="sourceLineNo">176</span>          "hbase.mapreduce.use.multi.table.hfileoutputformat";<a name="line.176"></a>
 <span class="sourceLineNo">177</span><a name="line.177"></a>
-<span class="sourceLineNo">178</span>  @Override<a name="line.178"></a>
-<span class="sourceLineNo">179</span>  public RecordWriter&lt;ImmutableBytesWritable, Cell&gt; getRecordWriter(<a name="line.179"></a>
-<span class="sourceLineNo">180</span>      final TaskAttemptContext context) throws IOException, InterruptedException {<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    return createRecordWriter(context, this.getOutputCommitter(context));<a name="line.181"></a>
-<span class="sourceLineNo">182</span>  }<a name="line.182"></a>
-<span class="sourceLineNo">183</span><a name="line.183"></a>
-<span class="sourceLineNo">184</span>  protected static byte[] getTableNameSuffixedWithFamily(byte[] tableName, byte[] family) {<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    return combineTableNameSuffix(tableName, family);<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>  static &lt;V extends Cell&gt; RecordWriter&lt;ImmutableBytesWritable, V&gt;<a name="line.188"></a>
-<span class="sourceLineNo">189</span>      createRecordWriter(final TaskAttemptContext context, final OutputCommitter committer)<a name="line.189"></a>
-<span class="sourceLineNo">190</span>          throws IOException {<a name="line.190"></a>
-<span class="sourceLineNo">191</span><a name="line.191"></a>
-<span class="sourceLineNo">192</span>    // Get the path of the temporary output file<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    final Path outputDir = ((FileOutputCommitter)committer).getWorkPath();<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    final Configuration conf = context.getConfiguration();<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    final boolean writeMultipleTables = conf.getBoolean(MULTI_TABLE_HFILEOUTPUTFORMAT_CONF_KEY, false) ;<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    final String writeTableNames = conf.get(OUTPUT_TABLE_NAME_CONF_KEY);<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    if (writeTableNames==null || writeTableNames.isEmpty()) {<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      throw new IllegalArgumentException("Configuration parameter " + OUTPUT_TABLE_NAME_CONF_KEY<a name="line.198"></a>
-<span class="sourceLineNo">199</span>              + " cannot be empty");<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    }<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    final FileSystem fs = outputDir.getFileSystem(conf);<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    // These configs. are from hbase-*.xml<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    final long maxsize = conf.getLong(HConstants.HREGION_MAX_FILESIZE,<a name="line.203"></a>
-<span class="sourceLineNo">204</span>        HConstants.DEFAULT_MAX_FILE_SIZE);<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    // Invented config.  Add to hbase-*.xml if other than default compression.<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    final String defaultCompressionStr = conf.get("hfile.compression",<a name="line.206"></a>
-<span class="sourceLineNo">207</span>        Compression.Algorithm.NONE.getName());<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    final Algorithm defaultCompression = HFileWriterImpl<a name="line.208"></a>
-<span class="sourceLineNo">209</span>        .compressionByName(defaultCompressionStr);<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    final boolean compactionExclude = conf.getBoolean(<a name="line.210"></a>
-<span class="sourceLineNo">211</span>        "hbase.mapreduce.hfileoutputformat.compaction.exclude", false);<a name="line.211"></a>
-<span class="sourceLineNo">212</span><a name="line.212"></a>
-<span class="sourceLineNo">213</span>    final Set&lt;String&gt; allTableNames = Arrays.stream(writeTableNames.split(<a name="line.213"></a>
-<span class="sourceLineNo">214</span>            Bytes.toString(tableSeparator))).collect(Collectors.toSet());<a name="line.214"></a>
+<span class="sourceLineNo">178</span>  public static final String STORAGE_POLICY_PROPERTY = HStore.BLOCK_STORAGE_POLICY_KEY;<a name="line.178"></a>
+<span class="sourceLineNo">179</span>  public static final String STORAGE_POLICY_PROPERTY_CF_PREFIX = STORAGE_POLICY_PROPERTY + ".";<a name="line.179"></a>
+<span class="sourceLineNo">180</span><a name="line.180"></a>
+<span class="sourceLineNo">181</span>  @Override<a name="line.181"></a>
+<span class="sourceLineNo">182</span>  public RecordWriter&lt;ImmutableBytesWritable, Cell&gt; getRecordWriter(<a name="line.182"></a>
+<span class="sourceLineNo">183</span>      final TaskAttemptContext context) throws IOException, InterruptedException {<a name="line.183"></a>
+<span class="sourceLineNo">184</span>    return createRecordWriter(context, this.getOutputCommitter(context));<a name="line.184"></a>
+<span class="sourceLineNo">185</span>  }<a name="line.185"></a>
+<span class="sourceLineNo">186</span><a name="line.186"></a>
+<span class="sourceLineNo">187</span>  protected static byte[] getTableNameSuffixedWithFamily(byte[] tableName, byte[] family) {<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    return combineTableNameSuffix(tableName, family);<a name="line.188"></a>
+<span class="sourceLineNo">189</span>  }<a name="line.189"></a>
+<span class="sourceLineNo">190</span><a name="line.190"></a>
+<span class="sourceLineNo">191</span>  static &lt;V extends Cell&gt; RecordWriter&lt;ImmutableBytesWritable, V&gt;<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      createRecordWriter(final TaskAttemptContext context, final OutputCommitter committer)<a name="line.192"></a>
+<span class="sourceLineNo">193</span>          throws IOException {<a name="line.193"></a>
+<span class="sourceLineNo">194</span><a name="line.194"></a>
+<span class="sourceLineNo">195</span>    // Get the path of the temporary output file<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    final Path outputDir = ((FileOutputCommitter)committer).getWorkPath();<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    final Configuration conf = context.getConfiguration();<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    final boolean writeMultipleTables = conf.getBoolean(MULTI_TABLE_HFILEOUTPUTFORMAT_CONF_KEY, false) ;<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    final String writeTableNames = conf.get(OUTPUT_TABLE_NAME_CONF_KEY);<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    if (writeTableNames==null || writeTableNames.isEmpty()) {<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      throw new IllegalArgumentException("Configuration parameter " + OUTPUT_TABLE_NAME_CONF_KEY<a name="line.201"></a>
+<span class="sourceLineNo">202</span>              + " cannot be empty");<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    }<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    final FileSystem fs = outputDir.getFileSystem(conf);<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    // These configs. are from hbase-*.xml<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    final long maxsize = conf.getLong(HConstants.HREGION_MAX_FILESIZE,<a name="line.206"></a>
+<span class="sourceLineNo">207</span>        HConstants.DEFAULT_MAX_FILE_SIZE);<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    // Invented config.  Add to hbase-*.xml if other than default compression.<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    final String defaultCompressionStr = conf.get("hfile.compression",<a name="line.209"></a>
+<span class="sourceLineNo">210</span>        Compression.Algorithm.NONE.getName());<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    final Algorithm defaultCompression = HFileWriterImpl<a name="line.211"></a>
+<span class="sourceLineNo">212</span>        .compressionByName(defaultCompressionStr);<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    final boolean compactionExclude = conf.getBoolean(<a name="line.213"></a>
+<span class="sourceLineNo">214</span>        "hbase.mapreduce.hfileoutputformat.compaction.exclude", false);<a name="line.214"></a>
 <span class="sourceLineNo">215</span><a name="line.215"></a>
-<span class="sourceLineNo">216</span>    // create a map from column family to the compression algorithm<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    final Map&lt;byte[], Algorithm&gt; compressionMap = createFamilyCompressionMap(conf);<a name="line.217"></a>
-<span class="sourceLineNo">218</span>    final Map&lt;byte[], BloomType&gt; bloomTypeMap = createFamilyBloomTypeMap(conf);<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    final Map&lt;byte[], Integer&gt; blockSizeMap = createFamilyBlockSizeMap(conf);<a name="line.219"></a>
-<span class="sourceLineNo">220</span><a name="line.220"></a>
-<span class="sourceLineNo">221</span>    String dataBlockEncodingStr = conf.get(DATABLOCK_ENCODING_OVERRIDE_CONF_KEY);<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    final Map&lt;byte[], DataBlockEncoding&gt; datablockEncodingMap<a name="line.222"></a>
-<span class="sourceLineNo">223</span>        = createFamilyDataBlockEncodingMap(conf);<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    final DataBlockEncoding overriddenEncoding;<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    if (dataBlockEncodingStr != null) {<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      overriddenEncoding = DataBlockEncoding.valueOf(dataBlockEncodingStr);<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    } else {<a name="line.227"></a>
-<span class="sourceLineNo">228</span>      overriddenEncoding = null;<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>    return new RecordWriter&lt;ImmutableBytesWritable, V&gt;() {<a name="line.231"></a>
-<span class="sourceLineNo">232</span>      // Map of families to writers and how much has been output on the writer.<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      private final Map&lt;byte[], WriterLength&gt; writers =<a name="line.233"></a>
-<span class="sourceLineNo">234</span>              new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      private byte[] previousRow = HConstants.EMPTY_BYTE_ARRAY;<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      private final long now = EnvironmentEdgeManager.currentTime();<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      private boolean rollRequested = false;<a name="line.237"></a>
-<span class="sourceLineNo">238</span><a name="line.238"></a>
-<span class="sourceLineNo">239</span>      @Override<a name="line.239"></a>
-<span class="sourceLineNo">240</span>      public void write(ImmutableBytesWritable row, V cell)<a name="line.240"></a>
-<span class="sourceLineNo">241</span>          throws IOException {<a name="line.241"></a>
-<span class="sourceLineNo">242</span>        Cell kv = cell;<a name="line.242"></a>
-<span class="sourceLineNo">243</span>        // null input == user explicitly wants to flush<a name="line.243"></a>
-<span class="sourceLineNo">244</span>        if (row == null &amp;&amp; kv == null) {<a name="line.244"></a>
-<span class="sourceLineNo">245</span>          rollWriters(null);<a name="line.245"></a>
-<span class="sourceLineNo">246</span>          return;<a name="line.246"></a>
-<span class="sourceLineNo">247</span>        }<a name="line.247"></a>
-<span class="sourceLineNo">248</span><a name="line.248"></a>
-<span class="sourceLineNo">249</span>        byte[] rowKey = CellUtil.cloneRow(kv);<a name="line.249"></a>
-<span class="sourceLineNo">250</span>        int length = (PrivateCellUtil.estimatedSerializedSizeOf(kv)) - Bytes.SIZEOF_INT;<a name="line.250"></a>
-<span class="sourceLineNo">251</span>        byte[] family = CellUtil.cloneFamily(kv);<a name="line.251"></a>
-<span class="sourceLineNo">252</span>        byte[] tableNameBytes = null;<a name="line.252"></a>
-<span class="sourceLineNo">253</span>        if (writeMultipleTables) {<a name="line.253"></a>
-<span class="sourceLineNo">254</span>          tableNameBytes = MultiTableHFileOutputFormat.getTableName(row.get());<a name="line.254"></a>
-<span class="sourceLineNo">255</span>          tableNameBytes =<a name="line.255"></a>
-<span class="sourceLineNo">256</span>              TableName.valueOf(tableNameBytes).getNameWithNamespaceInclAsString()<a name="line.256"></a>
-<span class="sourceLineNo">257</span>              .getBytes(Charset.defaultCharset());<a name="line.257"></a>
-<span class="sourceLineNo">258</span>          if (!allTableNames.contains(Bytes.toString(tableNameBytes))) {<a name="line.258"></a>
-<span class="sourceLineNo">259</span>            throw new IllegalArgumentException("TableName '" + Bytes.toString(tableNameBytes) +<a name="line.259"></a>
-<span class="sourceLineNo">260</span>                    "' not" + " expected");<a name="line.260"></a>
-<span class="sourceLineNo">261</span>          }<a name="line.261"></a>
-<span class="sourceLineNo">262</span>        } else {<a name="line.262"></a>
-<span class="sourceLineNo">263</span>          tableNameBytes = Bytes.toBytes(writeTableNames);<a name="line.263"></a>
-<span class="sourceLineNo">264</span>        }<a name="line.264"></a>
-<span class="sourceLineNo">265</span>        String tableName = Bytes.toString(tableNameBytes);<a name="line.265"></a>
-<span class="sourceLineNo">266</span>        Path tableRelPath = getTableRelativePath(tableNameBytes);<a name="line.266"></a>
-<span class="sourceLineNo">267</span>        byte[] tableAndFamily = getTableNameSuffixedWithFamily(tableNameBytes, family);<a name="line.267"></a>
-<span class="sourceLineNo">268</span><a name="line.268"></a>
-<span class="sourceLineNo">269</span>        WriterLength wl = this.writers.get(tableAndFamily);<a name="line.269"></a>
-<span class="sourceLineNo">270</span><a name="line.270"></a>
-<span class="sourceLineNo">271</span>        // If this is a new column family, verify that the directory exists<a name="line.271"></a>
-<span class="sourceLineNo">272</span>        if (wl == null) {<a name="line.272"></a>
-<span class="sourceLineNo">273</span>          Path writerPath = null;<a name="line.273"></a>
-<span class="sourceLineNo">274</span>          if (writeMultipleTables) {<a name="line.274"></a>
-<span class="sourceLineNo">275</span>            writerPath = new Path(outputDir,new Path(tableRelPath, Bytes<a name="line.275"></a>
-<span class="sourceLineNo">276</span>                    .toString(family)));<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>          else {<a name="line.279"></a>
-<span class="sourceLineNo">280</span>            writerPath = new Path(outputDir, Bytes.toString(family));<a name="line.280"></a>
-<span class="sourceLineNo">281</span>          }<a name="line.281"></a>
-<span class="sourceLineNo">282</span>          fs.mkdirs(writerPath);<a name="line.282"></a>
-<span class="sourceLineNo">283</span>          configureStoragePolicy(conf, fs, tableAndFamily, writerPath);<a name="line.283"></a>
-<span class="sourceLineNo">284</span>        }<a name="line.284"></a>
-<span class="sourceLineNo">285</span><a name="line.285"></a>
-<span class="sourceLineNo">286</span>        if (wl != null &amp;&amp; wl.written + length &gt;= maxsize) {<a name="line.286"></a>
-<span class="sourceLineNo">287</span>          this.rollRequested = true;<a name="line.287"></a>
+<span class="sourceLineNo">216</span>    final Set&lt;String&gt; allTableNames = Arrays.stream(writeTableNames.split(<a name="line.216"></a>
+<span class="sourceLineNo">217</span>            Bytes.toString(tableSeparator))).collect(Collectors.toSet());<a name="line.217"></a>
+<span class="sourceLineNo">218</span><a name="line.218"></a>
+<span class="sourceLineNo">219</span>    // create a map from column family to the compression algorithm<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    final Map&lt;byte[], Algorithm&gt; compressionMap = createFamilyCompressionMap(conf);<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    final Map&lt;byte[], BloomType&gt; bloomTypeMap = createFamilyBloomTypeMap(conf);<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    final Map&lt;byte[], String&gt; bloomParamMap = createFamilyBloomParamMap(conf);<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    final Map&lt;byte[], Integer&gt; blockSizeMap = createFamilyBlockSizeMap(conf);<a name="line.223"></a>
+<span class="sourceLineNo">224</span><a name="line.224"></a>
+<span class="sourceLineNo">225</span>    String dataBlockEncodingStr = conf.get(DATABLOCK_ENCODING_OVERRIDE_CONF_KEY);<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    final Map&lt;byte[], DataBlockEncoding&gt; datablockEncodingMap<a name="line.226"></a>
+<span class="sourceLineNo">227</span>        = createFamilyDataBlockEncodingMap(conf);<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    final DataBlockEncoding overriddenEncoding;<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    if (dataBlockEncodingStr != null) {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>      overriddenEncoding = DataBlockEncoding.valueOf(dataBlockEncodingStr);<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    } else {<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      overriddenEncoding = null;<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    }<a name="line.233"></a>
+<span class="sourceLineNo">234</span><a name="line.234"></a>
+<span class="sourceLineNo">235</span>    return new RecordWriter&lt;ImmutableBytesWritable, V&gt;() {<a name="line.235"></a>
+<span class="sourceLineNo">236</span>      // Map of families to writers and how much has been output on the writer.<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      private final Map&lt;byte[], WriterLength&gt; writers =<a name="line.237"></a>
+<span class="sourceLineNo">238</span>              new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.238"></a>
+<span class="sourceLineNo">239</span>      private byte[] previousRow = HConstants.EMPTY_BYTE_ARRAY;<a name="line.239"></a>
+<span class="sourceLineNo">240</span>      private final long now = EnvironmentEdgeManager.currentTime();<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      private boolean rollRequested = false;<a name="line.241"></a>
+<span class="sourceLineNo">242</span><a name="line.242"></a>
+<span class="sourceLineNo">243</span>      @Override<a name="line.243"></a>
+<span class="sourceLineNo">244</span>      public void write(ImmutableBytesWritable row, V cell)<a name="line.244"></a>
+<span class="sourceLineNo">245</span>          throws IOException {<a name="line.245"></a>
+<span class="sourceLineNo">246</span>        Cell kv = cell;<a name="line.246"></a>
+<span class="sourceLineNo">247</span>        // null input == user explicitly wants to flush<a name="line.247"></a>
+<span class="sourceLineNo">248</span>        if (row == null &amp;&amp; kv == null) {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>          rollWriters(null);<a name="line.249"></a>
+<span class="sourceLineNo">250</span>          return;<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>
+<span class="sourceLineNo">253</span>        byte[] rowKey = CellUtil.cloneRow(kv);<a name="line.253"></a>
+<span class="sourceLineNo">254</span>        int length = (PrivateCellUtil.estimatedSerializedSizeOf(kv)) - Bytes.SIZEOF_INT;<a name="line.254"></a>
+<span class="sourceLineNo">255</span>        byte[] family = CellUtil.cloneFamily(kv);<a name="line.255"></a>
+<span class="sourceLineNo">256</span>        byte[] tableNameBytes = null;<a name="line.256"></a>
+<span class="sourceLineNo">257</span>        if (writeMultipleTables) {<a name="line.257"></a>
+<span class="sourceLineNo">258</span>          tableNameBytes = MultiTableHFileOutputFormat.getTableName(row.get());<a name="line.258"></a>
+<span class="sourceLineNo">259</span>          tableNameBytes =<a name="line.259"></a>
+<span class="sourceLineNo">260</span>              TableName.valueOf(tableNameBytes).getNameWithNamespaceInclAsString()<a name="line.260"></a>
+<span class="sourceLineNo">261</span>              .getBytes(Charset.defaultCharset());<a name="line.261"></a>
+<span class="sourceLineNo">262</span>          if (!allTableNames.contains(Bytes.toString(tableNameBytes))) {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>            throw new IllegalArgumentException("TableName '" + Bytes.toString(tableNameBytes) +<a name="line.263"></a>
+<span class="sourceLineNo">264</span>                    "' not" + " expected");<a name="line.264"></a>
+<span class="sourceLineNo">265</span>          }<a name="line.265"></a>
+<span class="sourceLineNo">266</span>        } else {<a name="line.266"></a>
+<span class="sourceLineNo">267</span>          tableNameBytes = Bytes.toBytes(writeTableNames);<a name="line.267"></a>
+<span class="sourceLineNo">268</span>        }<a name="line.268"></a>
+<span class="sourceLineNo">269</span>        String tableName = Bytes.toString(tableNameBytes);<a name="line.269"></a>
+<span class="sourceLineNo">270</span>        Path tableRelPath = getTableRelativePath(tableNameBytes);<a name="line.270"></a>
+<span class="sourceLineNo">271</span>        byte[] tableAndFamily = getTableNameSuffixedWithFamily(tableNameBytes, family);<a name="line.271"></a>
+<span class="sourceLineNo">272</span><a name="line.272"></a>
+<span class="sourceLineNo">273</span>        WriterLength wl = this.writers.get(tableAndFamily);<a name="line.273"></a>
+<span class="sourceLineNo">274</span><a name="line.274"></a>
+<span class="sourceLineNo">275</span>        // If this is a new column family, verify that the directory exists<a name="line.275"></a>
+<span class="sourceLineNo">276</span>        if (wl == null) {<a name="line.276"></a>
+<span class="sourceLineNo">277</span>          Path writerPath = null;<a name="line.277"></a>
+<span class="sourceLineNo">278</span>          if (writeMultipleTables) {<a name="line.278"></a>
+<span class="sourceLineNo">279</span>            writerPath = new Path(outputDir,new Path(tableRelPath, Bytes<a name="line.279"></a>
+<span class="sourceLineNo">280</span>                    .toString(family)));<a name="line.280"></a>
+<span class="sourceLineNo">281</span><a name="line.281"></a>
+<span class="sourceLineNo">282</span>          }<a name="line.282"></a>
+<span class="sourceLineNo">283</span>          else {<a name="line.283"></a>
+<span class="sourceLineNo">284</span>            writerPath = new Path(outputDir, Bytes.toString(family));<a name="line.284"></a>
+<span class="sourceLineNo">285</span>          }<a name="line.285"></a>
+<span class="sourceLineNo">286</span>          fs.mkdirs(writerPath);<a name="line.286"></a>
+<span class="sourceLineNo">287</span>          configureStoragePolicy(conf, fs, tableAndFamily, writerPath);<a name="line.287"></a>
 <span class="sourceLineNo">288</span>        }<a name="line.288"></a>
 <span class="sourceLineNo">289</span><a name="line.289"></a>
-<span class="sourceLineNo">290</span>        // This can only happen once a row is finished though<a name="line.290"></a>
-<span class="sourceLineNo">291</span>        if (rollRequested &amp;&amp; Bytes.compareTo(this.previousRow, rowKey) != 0) {<a name="line.291"></a>
-<span class="sourceLineNo">292</span>          rollWriters(wl);<a name="line.292"></a>
-<span class="sourceLineNo">293</span>        }<a name="line.293"></a>
-<span class="sourceLineNo">294</span><a name="line.294"></a>
-<span class="sourceLineNo">295</span>        // create a new WAL writer, if necessary<a name="line.295"></a>
-<span class="sourceLineNo">296</span>        if (wl == null || wl.writer == null) {<a name="line.296"></a>
-<span class="sourceLineNo">297</span>          if (conf.getBoolean(LOCALITY_SENSITIVE_CONF_KEY, DEFAULT_LOCALITY_SENSITIVE)) {<a name="line.297"></a>
-<span class="sourceLineNo">298</span>            HRegionLocation loc = null;<a name="line.298"></a>
-<span class="sourceLineNo">299</span><a name="line.299"></a>
-<span class="sourceLineNo">300</span>            if (tableName != null) {<a name="line.300"></a>
-<span class="sourceLineNo">301</span>              try (Connection connection = ConnectionFactory.createConnection(conf);<a name="line.301"></a>
-<span class="sourceLineNo">302</span>                     RegionLocator locator =<a name="line.302"></a>
-<span class="sourceLineNo">303</span>                       connection.getRegionLocator(TableName.valueOf(tableName))) {<a name="line.303"></a>
-<span class="sourceLineNo">304</span>                loc = locator.getRegionLocation(rowKey);<a name="line.304"></a>
-<span class="sourceLineNo">305</span>              } catch (Throwable e) {<a name="line.305"></a>
-<span class="sourceLineNo">306</span>                LOG.warn("There's something wrong when locating rowkey: " +<a name="line.306"></a>
-<span class="sourceLineNo">307</span>                  Bytes.toString(rowKey) + " for tablename: " + tableName, e);<a name="line.307"></a>
-<span class="sourceLineNo">308</span>                loc = null;<a name="line.308"></a>
-<span class="sourceLineNo">309</span>              } }<a name="line.309"></a>
-<span class="sourceLineNo">310</span><a name="line.310"></a>
-<span class="sourceLineNo">311</span>            if (null == loc) {<a name="line.311"></a>
-<span class="sourceLineNo">312</span>              if (LOG.isTraceEnabled()) {<a name="line.312"></a>
-<span class="sourceLineNo">313</span>                LOG.trace("failed to get region location, so use default writer for rowkey: " +<a name="line.313"></a>
-<span class="sourceLineNo">314</span>                  Bytes.toString(rowKey));<a name="line.314"></a>
-<span class="sourceLineNo">315</span>              }<a name="line.315"></a>
-<span class="sourceLineNo">316</span>              wl = getNewWriter(tableNameBytes, family, conf, null);<a name="line.316"></a>
-<span class="sourceLineNo">317</span>            } else {<a name="line.317"></a>
-<span class="sourceLineNo">318</span>              if (LOG.isDebugEnabled()) {<a name="line.318"></a>
-<span class="sourceLineNo">319</span>                LOG.debug("first rowkey: [" + Bytes.toString(rowKey) + "]");<a name="line.319"></a>
-<span class="sourceLineNo">320</span>              }<a name="line.320"></a>
-<span class="sourceLineNo">321</span>              InetSocketAddress initialIsa =<a name="line.321"></a>
-<span class="sourceLineNo">322</span>                  new InetSocketAddress(loc.getHostname(), loc.getPort());<a name="line.322"></a>
-<span class="sourceLineNo">323</span>              if (initialIsa.isUnresolved()) {<a name="line.323"></a>
-<span class="sourceLineNo">324</span>                if (LOG.isTraceEnabled()) {<a name="line.324"></a>
-<span class="sourceLineNo">325</span>                  LOG.trace("failed to resolve bind address: " + loc.getHostname() + ":"<a name="line.325"></a>
-<span class="sourceLineNo">326</span>                      + loc.getPort() + ", so use default writer");<a name="line.326"></a>
-<span class="sourceLineNo">327</span>                }<a name="line.327"></a>
-<span class="sourceLineNo">328</span>                wl = getNewWriter(tableNameBytes, family, conf, null);<a name="line.328"></a>
-<span class="sourceLineNo">329</span>              } else {<a name="line.329"></a>
-<span class="sourceLineNo">330</span>                if (LOG.isDebugEnabled()) {<a name="line.330"></a>
-<span class="sourceLineNo">331</span>                  LOG.debug("use favored nodes writer: " + initialIsa.getHostString());<a name="line.331"></a>
-<span class="sourceLineNo">332</span>                }<a name="line.332"></a>
-<span class="sourceLineNo">333</span>                wl = getNewWriter(tableNameBytes, family, conf, new InetSocketAddress[] { initialIsa<a name="line.333"></a>
-<span class="sourceLineNo">334</span>                });<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>          } else {<a name="line.337"></a>
-<span class="sourceLineNo">338</span>            wl = getNewWriter(tableNameBytes, family, conf, null);<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>        // we now have the proper WAL writer. full steam ahead<a name="line.342"></a>
-<span class="sourceLineNo">343</span>        PrivateCellUtil.updateLatestStamp(cell, this.now);<a name="line.343"></a>
-<span class="sourceLineNo">344</span>        wl.writer.append(kv);<a name="line.344"></a>
-<span class="sourceLineNo">345</span>        wl.written += length;<a name="line.345"></a>
-<span class="sourceLineNo">346</span><a name="line.346"></a>
-<span class="sourceLineNo">347</span>        // Copy the row so we know when a row transition.<a name="line.347"></a>
-<span class="sourceLineNo">348</span>        this.previousRow = rowKey;<a name="line.348"></a>
-<span class="sourceLineNo">349</span>      }<a name="line.349"></a>
+<span class="sourceLineNo">290</span>        if (wl != null &amp;&amp; wl.written + length &gt;= maxsize) {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>          this.rollRequested = true;<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>        // This can only happen once a row is finished though<a name="line.294"></a>
+<span class="sourceLineNo">295</span>        if (rollRequested &amp;&amp; Bytes.compareTo(this.previousRow, rowKey) != 0) {<a name="line.295"></a>
+<span class="sourceLineNo">296</span>          rollWriters(wl);<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>        // create a new WAL writer, if necessary<a name="line.299"></a>
+<span class="sourceLineNo">300</span>        if (wl == null || wl.writer == null) {<a name="line.300"></a>
+<span class="sourceLineNo">301</span>          if (conf.getBoolean(LOCALITY_SENSITIVE_CONF_KEY, DEFAULT_LOCALITY_SENSITIVE)) {<a name="line.301"></a>
+<span class="sourceLineNo">302</span>            HRegionLocation loc = null;<a name="line.302"></a>
+<span class="sourceLineNo">303</span><a name="line.303"></a>
+<span class="sourceLineNo">304</span>            if (tableName != null) {<a name="line.304"></a>
+<span class="sourceLineNo">305</span>              try (Connection connection = ConnectionFactory.createConnection(conf);<a name="line.305"></a>
+<span class="sourceLineNo">306</span>                     RegionLocator locator =<a name="line.306"></a>
+<span class="sourceLineNo">307</span>                       connection.getRegionLocator(TableName.valueOf(tableName))) {<a name="line.307"></a>
+<span class="sourceLineNo">308</span>                loc = locator.getRegionLocation(rowKey);<a name="line.308"></a>
+<span class="sourceLineNo">309</span>              } catch (Throwable e) {<a name="line.309"></a>
+<span class="sourceLineNo">310</span>                LOG.warn("There's something wrong when locating rowkey: " +<a name="line.310"></a>
+<span class="sourceLineNo">311</span>                  Bytes.toString(rowKey) + " for tablename: " + tableName, e);<a name="line.311"></a>
+<span class="sourceLineNo">312</span>                loc = null;<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>            if (null == loc) {<a name="line.315"></a>
+<span class="sourceLineNo">316</span>              if (LOG.isTraceEnabled()) {<a name="line.316"></a>
+<span class="sourceLineNo">317</span>                LOG.trace("failed to get region location, so use default writer for rowkey: " +<a name="line.317"></a>
+<span class="sourceLineNo">318</span>                  Bytes.toString(rowKey));<a name="line.318"></a>
+<span class="sourceLineNo">319</span>              }<a name="line.319"></a>
+<span class="sourceLineNo">320</span>              wl = getNewWriter(tableNameBytes, family, conf, null);<a name="line.320"></a>
+<span class="sourceLineNo">321</span>            } else {<a name="line.321"></a>
+<span class="sourceLineNo">322</span>              if (LOG.isDebugEnabled()) {<a name="line.322"></a>
+<span class="sourceLineNo">323</span>                LOG.debug("first rowkey: [" + Bytes.toString(rowKey) + "]");<a name="line.323"></a>
+<span class="sourceLineNo">324</span>              }<a name="line.324"></a>
+<span class="sourceLineNo">325</span>              InetSocketAddress initialIsa =<a name="line.325"></a>
+<span class="sourceLineNo">326</span>                  new InetSocketAddress(loc.getHostname(), loc.getPort());<a name="line.326"></a>
+<span class="sourceLineNo">327</span>              if (initialIsa.isUnresolved()) {<a name="line.327"></a>
+<span class="sourceLineNo">328</span>                if (LOG.isTraceEnabled()) {<a name="line.328"></a>
+<span class="sourceLineNo">329</span>                  LOG.trace("failed to resolve bind address: " + loc.getHostname() + ":"<a name="line.329"></a>
+<span class="sourceLineNo">330</span>                      + loc.getPort() + ", so use default writer");<a name="line.330"></a>
+<span class="sourceLineNo">331</span>                }<a name="line.331"></a>
+<span class="sourceLineNo">332</span>                wl = getNewWriter(tableNameBytes, family, conf, null);<a name="line.332"></a>
+<span class="sourceLineNo">333</span>              } else {<a name="line.333"></a>
+<span class="sourceLineNo">334</span>                if (LOG.isDebugEnabled()) {<a name="line.334"></a>
+<span class="sourceLineNo">335</span>                  LOG.debug("use favored nodes writer: " + initialIsa.getHostString());<a name="line.335"></a>
+<span class="sourceLineNo">336</span>                }<a name="line.336"></a>
+<span class="sourceLineNo">337</span>                wl = getNewWriter(tableNameBytes, family, conf, new InetSocketAddress[] { initialIsa<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>          } else {<a name="line.341"></a>
+<span class="sourceLineNo">342</span>            wl = getNewWriter(tableNameBytes, family, conf, null);<a name="line.342"></a>
+<span class="sourceLineNo">343</span>          }<a name="line.343"></a>
+<span class="sourceLineNo">344</span>        }<a name="line.344"></a>
+<span class="sourceLineNo">345</span><a name="line.345"></a>
+<span class="sourceLineNo">346</span>        // we now have the proper WAL writer. full steam ahead<a name="line.346"></a>
+<span class="sourceLineNo">347</span>        PrivateCellUtil.updateLatestStamp(cell, this.now);<a name="line.347"></a>
+<span class="sourceLineNo">348</span>        wl.writer.append(kv);<a name="line.348"></a>
+<span class="sourceLineNo">349</span>        wl.written += length;<a name="line.349"></a>
 <span class="sourceLineNo">350</span><a name="line.350"></a>
-<span class="sourceLineNo">351</span>      private Path getTableRelativePath(byte[] tableNameBytes) {<a name="line.351"></a>
-<span class="sourceLineNo">352</span>        String tableName = Bytes.toString(tableNameBytes);<a name="line.352"></a>
-<span class="sourceLineNo">353</span>        String[] tableNameParts = tableName.split(":");<a name="line.353"></a>
-<span class="sourceLineNo">354</span>        Path tableRelPath = new Path(tableName.split(":")[0]);<a name="line.354"></a>
-<span class="sourceLineNo">355</span>        if (tableNameParts.length &gt; 1) {<a name="line.355"></a>
-<span class="sourceLineNo">356</span>          tableRelPath = new Path(tableRelPath, tableName.split(":")[1]);<a name="line.356"></a>
-<span class="sourceLineNo">357</span>        }<a name="line.357"></a>
-<span class="sourceLineNo">358</span>        return tableRelPath;<a name="line.358"></a>
-<span class="sourceLineNo">359</span>      }<a name="line.359"></a>
-<span class="sourceLineNo">360</span>      private void rollWriters(WriterLength writerLength) throws IOException {<a name="line.360"></a>
-<span class="sourceLineNo">361</span>        if (writerLength != null) {<a name="line.361"></a>
-<span class="sourceLineNo">362</span>          closeWriter(writerLength);<a name="line.362"></a>
-<span class="sourceLineNo">363</span>        } else {<a name="line.363"></a>
-<span class="sourceLineNo">364</span>          for (WriterLength wl : this.writers.values()) {<a name="line.364"></a>
-<span class="sourceLineNo">365</span>            closeWriter(wl);<a name="line.365"></a>
-<span class="sourceLineNo">366</span>          }<a name="line.366"></a>
-<span class="sourceLineNo">367</span>        }<a name="line.367"></a>
-<span class="sourceLineNo">368</span>        this.rollRequested = false;<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>      private void closeWriter(WriterLength wl) throws IOException {<a name="line.371"></a>
-<span class="sourceLineNo">372</span>        if (wl.writer != null) {<a name="line.372"></a>
-<span class="sourceLineNo">373</span>          LOG.info(<a name="line.373"></a>
-<span class="sourceLineNo">374</span>              "Writer=" + wl.writer.getPath() + ((wl.written == 0)? "": ", wrote=" + wl.written));<a name="line.374"></a>
-<span class="sourceLineNo">375</span>          close(wl.writer);<a name="line.375"></a>
-<span class="sourceLineNo">376</span>        }<a name="line.376"></a>
-<span class="sourceLineNo">377</span>        wl.writer = null;<a name="line.377"></a>
-<span class="sourceLineNo">378</span>        wl.written = 0;<a name="line.378"></a>
-<span class="sourceLineNo">379</span>      }<a name="line.379"></a>
-<span class="sourceLineNo">380</span><a name="line.380"></a>
-<span class="sourceLineNo">381</span>      /*<a name="line.381"></a>
-<span class="sourceLineNo">382</span>       * Create a new StoreFile.Writer.<a name="line.382"></a>
-<span class="sourceLineNo">383</span>       * @param family<a name="line.383"></a>
-<span class="sourceLineNo">384</span>       * @return A WriterLength, containing a new StoreFile.Writer.<a name="line.384"></a>
-<span class="sourceLineNo">385</span>       * @throws IOException<a name="line.385"></a>
-<span class="sourceLineNo">386</span>       */<a name="line.386"></a>
-<span class="sourceLineNo">387</span>      @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="BX_UNBOXING_IMMEDIATELY_REBOXED",<a name="line.387"></a>
-<span class="sourceLineNo">388</span>          justification="Not important")<a name="line.388"></a>
-<span class="sourceLineNo">389</span>      private WriterLength getNewWriter(byte[] tableName, byte[] family, Configuration<a name="line.389"></a>
-<span class="sourceLineNo">390</span>              conf, InetSocketAddress[] favoredNodes) throws IOException {<a name="line.390"></a>
-<span class="sourceLineNo">391</span>        byte[] tableAndFamily = getTableNameSuffixedWithFamily(tableName, family);<a name="line.391"></a>
-<span class="sourceLineNo">392</span>        Path familydir = new Path(outputDir, Bytes.toString(family));<a name="line.392"></a>
-<span class="sourceLineNo">393</span>        if (writeMultipleTables) {<a name="line.393"></a>
-<span class="sourceLineNo">394</span>          familydir = new Path(outputDir,<a name="line.394"></a>
-<span class="sourceLineNo">395</span>                  new Path(getTableRelativePath(tableName), Bytes.toString(family)));<a name="line.395"></a>
-<span class="sourceLineNo">396</span>        }<a name="line.396"></a>
-<span class="sourceLineNo">397</span>        WriterLength wl = new WriterLength();<a name="line.397"></a>
-<span class="sourceLineNo">398</span>        Algorithm compression = compressionMap.get(tableAndFamily);<a name="line.398"></a>
-<span class="sourceLineNo">399</span>        compression = compression == null ? defaultCompression : compression;<a name="line.399"></a>
-<span class="sourceLineNo">400</span>        BloomType bloomType = bloomTypeMap.get(tableAndFamily);<a name="line.400"></a>
-<span class="sourceLineNo">401</span>        bloomType = bloomType == null ? BloomType.NONE : bloomType;<a name="line.401"></a>
-<span class="sourceLineNo">402</span>        Integer blockSize = blockSizeMap.get(tableAndFamily);<a name="line.402"></a>
-<span class="sourceLineNo">403</span>        blockSize = blockSize == null ? HConstants.DEFAULT_BLOCKSIZE : blockSize;<a name="line.403"></a>
-<span class="sourceLineNo">404</span>        DataBlockEncoding encoding = overriddenEncoding;<a name="line.404"></a>
-<span class="sourceLineNo">405</span>        encoding = encoding == null ? datablockEncodingMap.get(tableAndFamily) : encoding;<a name="line.405"></a>
-<span class="sourceLineNo">406</span>        encoding = encoding == null ? DataBlockEncoding.NONE : encoding;<a name="line.406"></a>
-<span class="sourceLineNo">407</span>        Configuration tempConf = new Configuration(conf);<a name="line.407"></a>
-<span class="sourceLineNo">408</span>        tempConf.setFloat(HConstants.HFILE_BLOCK_CACHE_SIZE_KEY, 0.0f);<a name="line.408"></a>
-<span class="sourceLineNo">409</span>        HFileContextBuilder contextBuilder = new HFileContextBuilder()<a name="line.409"></a>
-<span class="sourceLineNo">410</span>                                    .withCompression(compression)<a name="line.410"></a>
-<span class="sourceLineNo">411</span>                                    .withChecksumType(HStore.getChecksumType(conf))<a name="line.411"></a>
-<span class="sourceLineNo">412</span>                                    .withBytesPerCheckSum(HStore.getBytesPerChecksum(conf))<a name="line.412"></a>
-<span class="sourceLineNo">413</span>                                    .withBlockSize(blockSize);<a name="line.413"></a>
-<span class="sourceLineNo">414</span><a name="line.414"></a>
-<span class="sourceLineNo">415</span>        if (HFile.getFormatVersion(conf) &gt;= HFile.MIN_FORMAT_VERSION_WITH_TAGS) {<a name="line.415"></a>
-<span class="sourceLineNo">416</span>          contextBuilder.withIncludesTags(true);<a name="line.416"></a>
-<span class="sourceLineNo">417</span>        }<a name="line.417"></a>
-<span class="sourceLineNo">418</span><a name="line.418"></a>
-<span class="sourceLineNo">419</span>        contextBuilder.withDataBlockEncoding(encoding);<a name="line.419"></a>
-<span class="sourceLineNo">420</span>        HFileContext hFileContext = contextBuilder.build();<a name="line.420"></a>
-<span class="sourceLineNo">421</span>        if (null == favoredNodes) {<a name="line.421"></a>
-<span class="sourceLineNo">422</span>          wl.writer =<a name="line.422"></a>
-<span class="sourceLineNo">423</span>              new StoreFileWriter.Builder(conf, new CacheConfig(tempConf), fs)<a name="line.423"></a>
-<span class="sourceLineNo">424</span>                  .withOutputDir(familydir).withBloomType(bloomType)<a name="line.424"></a>
-<span class="sourceLineNo">425</span>                  .withComparator(CellComparator.getInstance()).withFileContext(hFileContext).build();<a name="line.425"></a>
-<span class="sourceLineNo">426</span>        } else {<a name="line.426"></a>
-<span class="sourceLineNo">427</span>          wl.writer =<a name="line.427"></a>
-<span class="sourceLineNo">428</span>              new StoreFileWriter.Builder(conf, new CacheConfig(tempConf), new HFileSystem(fs))<a name="line.428"></a>
-<span class="sourceLineNo">429</span>                  .withOutputDir(familydir).withBloomType(bloomType)<a name="line.429"></a>
-<span class="sourceLineNo">430</span>                  .withComparator(CellComparator.getInstance()).withFileContext(hFileContext)<a name="line.430"></a>
-<span class="sourceLineNo">431</span>                  .withFavoredNodes(favoredNodes).build();<a name="line.431"></a>
-<span class="sourceLineNo">432</span>        }<a name="line.432"></a>
-<span class="sourceLineNo">433</span><a name="line.433"></a>
-<span class="sourceLineNo">434</span>        this.writers.put(tableAndFamily, wl);<a name="line.434"></a>
-<span class="sourceLineNo">435</span>        return wl;<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>      private void close(final StoreFileWriter w) throws IOException {<a name="line.438"></a>
-<span class="sourceLineNo">439</span>        if (w != null) {<a name="line.439"></a>
-<span class="sourceLineNo">440</span>          w.appendFileInfo(BULKLOAD_TIME_KEY,<a name="line.440"></a>
-<span class="sourceLineNo">441</span>              Bytes.toBytes(System.currentTimeMillis()));<a name="line.441"></a>
-<span class="sourceLineNo">442</span>          w.appendFileInfo(BULKLOAD_TASK_KEY,<a name="line.442"></a>
-<span class="sourceLineNo">443</span>              Bytes.toBytes(context.getTaskAttemptID().toString()));<a name="line.443"></a>
-<span class="sourceLineNo">444</span>          w.appendFileInfo(MAJOR_COMPACTION_KEY,<a name="line.444"></a>
-<span class="sourceLineNo">445</span>              Bytes.toBytes(true));<a name="line.445"></a>
-<span class="sourceLineNo">446</span>          w.appendFileInfo(EXCLUDE_FROM_MINOR_COMPACTION_KEY,<a name="line.446"></a>
-<span class="sourceLineNo">447</span>              Bytes.toBytes(compactionExclude));<a name="line.447"></a>
-<span class="sourceLineNo">448</span>          w.appendTrackedTimestampsToMetadata();<a name="line.448"></a>
-<span class="sourceLineNo">449</span>          w.close();<a name="line.449"></a>
-<span class="sourceLineNo">450</span>        }<a name="line.450"></a>
-<span class="sourceLineNo">451</span>      }<a name="line.451"></a>
-<span class="sourceLineNo">452</span><a name="line.452"></a>
-<span class="sourceLineNo">453</span>      @Override<a name="line.453"></a>
-<span class="sourceLineNo">454</span>      public void close(TaskAttemptContext c)<a name="line.454"></a>
-<span class="sourceLineNo">455</span>      throws IOException, InterruptedException {<a name="line.455"></a>
-<span class="sourceLineNo">456</span>        for (WriterLength wl: this.writers.values()) {<a name="line.456"></a>
-<span class="sourceLineNo">457</span>          close(wl.writer);<a name="line.457"></a>
-<span class="sourceLineNo">458</span>        }<a name="line.458"></a>
-<span class="sourceLineNo">459</span>      }<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">351</span>        // Copy the row so we know when a row transition.<a name="line.351"></a>
+<span class="sourceLineNo">352</span>        this.previousRow = rowKey;<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 Path getTableRelativePath(byte[] tableNameBytes) {<a name="line.355"></a>
+<span class="sourceLineNo">356</span>        String tableName = Bytes.toString(tableNameBytes);<a name="line.356"></a>
+<span class="sourceLineNo">357</span>        String[] tableNameParts = tableName.split(":");<a name="line.357"></a>
+<span class="sourceLineNo">358</span>        Path tableRelPath = new Path(tableName.split(":")[0]);<a name="line.358"></a>
+<span class="sourceLineNo">359</span>        if (tableNameParts.length &gt; 1) {<a name="line.359"></a>
+<span class="sourceLineNo">360</span>          tableRelPath = new Path(tableRelPath, tableName.split(":")[1]);<a name="line.360"></a>
+<span class="sourceLineNo">361</span>        }<a name="line.361"></a>
+<span class="sourceLineNo">362</span>        return tableRelPath;<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      }<a name="line.363"></a>
+<span class="sourceLineNo">364</span>      private void rollWriters(WriterLength writerLength) throws IOException {<a name="line.364"></a>
+<span class="sourceLineNo">365</span>        if (writerLength != null) {<a name="line.365"></a>
+<span class="sourceLineNo">366</span>          closeWriter(writerLength);<a name="line.366"></a>
+<span class="sourceLineNo">367</span>        } else {<a name="line.367"></a>
+<span class="sourceLineNo">368</span>          for (WriterLength wl : this.writers.values()) {<a name="line.368"></a>
+<span class="sourceLineNo">369</span>            closeWriter(wl);<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>        this.rollRequested = false;<a name="line.372"></a>
+<span class="sourceLineNo">373</span>      }<a name="line.373"></a>
+<span class="sourceLineNo">374</span><a name="line.374"></a>
+<span class="sourceLineNo">375</span>      private void closeWriter(WriterLength wl) throws IOException {<a name="line.375"></a>
+<span class="sourceLineNo">376</span>        if (wl.writer != null) {<a name="line.376"></a>
+<span class="sourceLineNo">377</span>          LOG.info(<a name="line.377"></a>
+<span class="sourceLineNo">378</span>              "Writer=" + wl.writer.getPath() + ((wl.written == 0)? "": ", wrote=" + wl.written));<a name="line.378"></a>
+<span class="sourceLineNo">379</span>          close(wl.writer);<a name="line.379"></a>
+<span class="sourceLineNo">380</span>        }<a name="line.380"></a>
+<span class="sourceLineNo">381</span>        wl.writer = null;<a name="line.381"></a>
+<span class="sourceLineNo">382</span>        wl.written = 0;<a name="line.382"></a>
+<span class="sourceLineNo">383</span>      }<a name="line.383"></a>
+<span class="sourceLineNo">384</span><a name="line.384"></a>
+<span class="sourceLineNo">385</span>      /*<a name="line.385"></a>
+<span class="sourceLineNo">386</span>       * Create a new StoreFile.Writer.<a name="line.386"></a>
+<span class="sourceLineNo">387</span>       * @param family<a name="line.387"></a>
+<span class="sourceLineNo">388</span>       * @return A WriterLength, containing a new StoreFile.Writer.<a name="line.388"></a>
+<span class="sourceLineNo">389</span>       * @throws IOException<a name="line.389"></a>
+<span class="sourceLineNo">390</span>       */<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="BX_UNBOXING_IMMEDIATELY_REBOXED",<a name="line.391"></a>
+<span class="sourceLineNo">392</span>          justification="Not important")<a name="line.392"></a>
+<span class="sourceLineNo">393</span>      private WriterLength getNewWriter(byte[] tableName, byte[] family, Configuration<a name="line.393"></a>
+<span class="sourceLineNo">394</span>              conf, InetSocketAddress[] favoredNodes) throws IOException {<a name="line.394"></a>
+<span class="sourceLineNo">395</span>        byte[] tableAndFamily = getTableNameSuffixedWithFamily(tableName, family);<a name="line.395"></a>
+<span class="sourceLineNo">396</span>        Path familydir = new Path(outputDir, Bytes.toString(family));<a name="line.396"></a>
+<span class="sourceLineNo">397</span>        if (writeMultipleTables) {<a name="line.397"></a>
+<span class="sourceLineNo">398</span>          familydir = new Path(outputDir,<a name="line.398"></a>
+<span class="sourceLineNo">399</span>                  new Path(getTableRelativePath(tableName), Bytes.toString(family)));<a name="line.399"></a>
+<span class="sourceLineNo">400</span>        }<a name="line.400"></a>
+<span class="sourceLineNo">401</span>        WriterLength wl = new WriterLength();<a name="line.401"></a>
+<span class="sourceLineNo">402</span>        Algorithm compression = compressionMap.get(tableAndFamily);<a name="line.402"></a>
+<span class="sourceLineNo">403</span>        compression = compression == null ? defaultCompression : compression;<a name="line.403"></a>
+<span class="sourceLineNo">404</span>        BloomType bloomType = bloomTypeMap.get(tableAndFamily);<a name="line.404"></a>
+<span class="sourceLineNo">405</span>        bloomType = bloomType == null ? BloomType.NONE : bloomType;<a name="line.405"></a>
+<span class="sourceLineNo">406</span>        String bloomParam = bloomParamMap.get(tableAndFamily);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>        if (bloomType == BloomType.ROWPREFIX_FIXED_LENGTH) {<a name="line.407"></a>
+<span class="sourceLineNo">408</span>          conf.set(BloomFilterUtil.PREFIX_LENGTH_KEY, bloomParam);<a name="line.408"></a>
+<span class="sourceLineNo">409</span>        } else if (bloomType == BloomType.ROWPREFIX_DELIMITED) {<a name="line.409"></a>
+<span class="sourceLineNo">410</span>          conf.set(BloomFilterUtil.DELIMITER_KEY, bloomParam);<a name="line.410"></a>
+<span class="sourceLineNo">411</span>        }<a name="line.411"></a>
+<span class="sourceLineNo">412</span>        Integer blockSize = blockSizeMap.get(tableAndFamily);<a name="line.412"></a>
+<span class="sourceLineNo">413</span>        blockSize = blockSize == null ? HConstants.DEFAULT_BLOCKSIZE : blockSize;<a name="line.413"></a>
+<span class="sourceLineNo">414</span>        DataBlockEncoding encoding = overriddenEncoding;<a name="line.414"></a>
+<span class="sourceLineNo">415</span>        encoding = encoding == null ? datablockEncodingMap.get(tableAndFamily) : encoding;<a name="line.415"></a>
+<span class="sourceLineNo">416</span>        encoding = encoding == null ? DataBlockEncoding.NONE : encoding;<a name="line.416"></a>
+<span class="sourceLineNo">417</span>        Configuration tempConf = new Configuration(conf);<a name="line.417"></a>
+<span class="sourceLineNo">418</span>        tempConf.setFloat(HConstants.HFILE_BLOCK_CACHE_SIZE_KEY, 0.0f);<a name="line.418"></a>
+<span class="sourceLineNo">419</span>        HFileContextBuilder contextBuilder = new HFileContextBuilder()<a name="line.419"></a>
+<span class="sourceLineNo">420</span>                                    .withCompression(compression)<a name="line.420"></a>
+<span class="sourceLineNo">421</span>                                    .withChecksumType(HStore.getChecksumType(conf))<a name="line.421"></a>
+<span class="sourceLineNo">422</span>                                    .withBytesPerCheckSum(HStore.getBytesPerChecksum(conf))<a name="line.422"></a>
+<span class="sourceLineNo">423</span>                                    .withBlockSize(blockSize);<a name="line.423"></a>
+<span class="sourceLineNo">424</span><a name="line.424"></a>
+<span class="sourceLineNo">425</span>        if (HFile.getFormatVersion(conf) &gt;= HFile.MIN_FORMAT_VERSION_WITH_TAGS) {<a name="line.425"></a>
+<span class="sourceLineNo">426</span>          contextBuilder.withIncludesTags(true);<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>        contextBuilder.withDataBlockEncoding(encoding);<a name="line.429"></a>
+<span class="sourceLineNo">430</span>        HFileContext hFileContext = contextBuilder.build();<a name="line.430"></a>
+<span class="sourceLineNo">431</span>        if (null == favoredNodes) {<a name="line.431"></a>
+<span class="sourceLineNo">432</span>          wl.writer =<a name="line.432"></a>
+<span class="sourceLineNo">433</span>              new StoreFileWriter.Builder(conf, new CacheConfig(tempConf), fs)<a name="line.433"></a>
+<span class="sourceLineNo">434</span>                  .withOutputDir(familydir).withBloomType(bloomType)<a name="line.434"></a>
+<span class="sourceLineNo">435</span>                  .withComparator(CellComparator.getInstance()).withFileContext(hFileContext).build();<a name="line.435"></a>
+<span class="sourceLineNo">436</span>        } else {<a name="line.436"></a>
+<span class="sourceLineNo">437</span>          wl.writer =<a name="line.437"></a>
+<span class="sourceLineNo">438</span>              new StoreFileWriter.Builder(conf, new CacheConfig(tempConf), new HFileSystem(fs))<a name="line.438"></a>
+<span class="sourceLineNo">439</span>                  .withOutputDir(familydir).withBloomType(bloomType)<a name="line.439"></a>
+<span class="sourceLineNo">440</span>                  .withComparator(CellComparator.getInstance()).withFileContext(hFileContext)<a name="line.440"></a>
+<span class="sourceLineNo">441</span>                  .withFavoredNodes(favoredNodes).build();<a name="line.441"></a>
+<span class="sourceLineNo">442</span>        }<a name="line.442"></a>
+<span class="sourceLineNo">443</span><a name="line.443"></a>
+<span class="sourceLineNo">444</span>        this.writers.put(tableAndFamily, wl);<a name="line.444"></a>
+<span class="sourceLineNo">445</span>        return wl;<a name="line.445"></a>
+<span class="sourceLineNo">446</span>      }<a name="line.446"></a>
+<span class="sourceLineNo">447</span><a name="line.447"></a>
+<span class="sourceLineNo">448</span>      private void close(final StoreFileWriter w) throws IOException {<a name="line.448"></a>
+<span class="sourceLineNo">449</span>        if (w != null) {<a name="line.449"></a>
+<span class="sourceLineNo">450</span>          w.appendFileInfo(BULKLOAD_TIME_KEY,<a name="line.450"></a>
+<span class="sourceLineNo">451</span>              Bytes.toBytes(System.currentTimeMillis()));<a name="line.451"></a>
+<span class="sourceLineNo">452</span>          w.appendFileInfo(BULKLOAD_TASK_KEY,<a name="line.452"></a>
+<span class="sourceLineNo">453</span>              Bytes.toBytes(context.getTaskAttemptID().toString()));<a name="line.453"></a>
+<span class="sourceLineNo">454</span>          w.appendFileInfo(MAJOR_COMPACTION_KEY,<a name="line.454"></a>
+<span class="sourceLineNo">455</span>              Bytes.toBytes(true));<a name="line.455"></a>
+<span class="sourceLineNo">456</span>          w.appendFileInfo(EXCLUDE_FROM_MINOR_COMPACTION_KEY,<a name="line.456"></a>
+<span class="sourceLineNo">457</span>              Bytes.toBytes(compactionExclude));<a name="line.457"></a>
+<span class="sourceLineNo">458</span>          w.appendTrackedTimestampsToMetadata();<a name="line.458"></a>
+<span class="sourceLineNo">459</span>          w.close();<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><a name="line.462"></a>
-<span class="sourceLineNo">463</span>  /**<a name="line.463"></a>
-<span class="sourceLineNo">464</span>   * Configure block storage policy for CF after the directory is created.<a name="line.464"></a>
-<span class="sourceLineNo">465</span>   */<a name="line.465"></a>
-<span class="sourceLineNo">466</span>  static void configureStoragePolicy(final Configuration conf, final FileSystem fs,<a name="line.466"></a>
-<span class="sourceLineNo">467</span>      byte[] tableAndFamily, Path cfPath) {<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    if (null == conf || null == fs || null == tableAndFamily || null == cfPath) {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>      return;<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>    String policy =<a name="line.472"></a>
-<span class="sourceLineNo">473</span>        conf.get(STORAGE_POLICY_PROPERTY_CF_PREFIX + Bytes.toString(tableAndFamily),<a name="line.473"></a>
-<span class="sourceLineNo">474</span>          conf.get(STORAGE_POLICY_PROPERTY));<a name="line.474"></a>
-<span class="sourceLineNo">475</span>    FSUtils.setStoragePolicy(fs, cfPath, policy);<a name="line.475"></a>
-<span class="sourceLineNo">476</span>  }<a name="line.476"></a>
-<span class="sourceLineNo">477</span><a name="line.477"></a>
-<span class="sourceLineNo">478</span>  /*<a name="line.478"></a>
-<span class="sourceLineNo">479</span>   * Data structure to hold a Writer and amount of data written on it.<a name="line.479"></a>
-<span class="sourceLineNo">480</span>   */<a name="line.480"></a>
-<span class="sourceLineNo">481</span>  static class WriterLength {<a name="line.481"></a>
-<span class="sourceLineNo">482</span>    long written = 0;<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    StoreFileWriter writer = null;<a name="line.483"></a>
-<span class="sourceLineNo">484</span>  }<a name="line.484"></a>
-<span class="sourceLineNo">485</span><a name="line.485"></a>
-<span class="sourceLineNo">486</span>  /**<a name="line.486"></a>
-<span class="sourceLineNo">487</span>   * Return the start keys of all of the regions in this table,<a name="line.487"></a>
-<span class="sourceLineNo">488</span>   * as a list of ImmutableBytesWritable.<a name="line.488"></a>
-<span class="sourceLineNo">489</span>   */<a name="line.489"></a>
-<span class="sourceLineNo">490</span>  private static List&lt;ImmutableBytesWritable&gt; getRegionStartKeys(List&lt;RegionLocator&gt; regionLocators,<a name="line.490"></a>
-<span class="sourceLineNo">491</span>                                                                 boolean writeMultipleTables)<a name="line.491"></a>
-<span class="sourceLineNo">492</span>          throws IOException {<a name="line.492"></a>
-<span class="sourceLineNo">493</span><a name="line.493"></a>
-<span class="sourceLineNo">494</span>    ArrayList&lt;ImmutableBytesWritable&gt; ret = new ArrayList&lt;&gt;();<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    for(RegionLocator regionLocator : regionLocators)<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    {<a name="line.496"></a>
-<span class="sourceLineNo">497</span>      TableName tableName = regionLocator.getName();<a name="line.497"></a>
-<span class="sourceLineNo">498</span>      LOG.info("Looking up current regions for table " + tableName);<a name="line.498"></a>
-<span class="sourceLineNo">499</span>      byte[][] byteKeys = regionLocator.getStartKeys();<a name="line.499"></a>
-<span class="sourceLineNo">500</span>      for (byte[] byteKey : byteKeys) {<a name="line.500"></a>
-<span class="sourceLineNo">501</span>        byte[] fullKey = byteKey; //HFileOutputFormat2 use case<a name="line.501"></a>
-<span class="sourceLineNo">502</span>        if (writeMultipleTables)<a name="line.502"></a>
-<span class="sourceLineNo">503</span>        {<a name="line.503"></a>
-<span class="sourceLineNo">504</span>          //MultiTableHFileOutputFormat use case<a name="line.504"></a>
-<span class="sourceLineNo">505</span>          fullKey = combineTableNameSuffix(tableName.getName(), byteKey);<a name="line.505"></a>
-<span class="sourceLineNo">506</span>        }<a name="line.506"></a>
-<span class="sourceLineNo">507</span>        if (LOG.isDebugEnabled()) {<a name="line.507"></a>
-<span class="sourceLineNo">508</span>          LOG.debug("SplitPoint startkey for table [" + tableName + "]: [" + Bytes.toStringBinary<a name="line.508"></a>
-<span class="sourceLineNo">509</span>                  (fullKey) + "]");<a name="line.509"></a>
-<span class="sourceLineNo">510</span>        }<a name="line.510"></a>
-<span class="sourceLineNo">511</span>        ret.add(new ImmutableBytesWritable(fullKey));<a name="line.511"></a>
-<span class="sourceLineNo">512</span>      }<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    }<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    return ret;<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 out a {@link SequenceFile} that can be read by<a name="line.518"></a>
-<span class="sourceLineNo">519</span>   * {@link TotalOrderPartitioner} that contains the split points in startKeys.<a name="line.519"></a>
-<span class="sourceLineNo">520</span>   */<a name="line.520"></a>
-<span class="sourceLineNo">521</span>  @SuppressWarnings("deprecation")<a name="line.521"></a>
-<span class="sourceLineNo">522</span>  private static void writePartitions(Configuration conf, Path partitionsPath,<a name="line.522"></a>
-<span class="sourceLineNo">523</span>      List&lt;ImmutableBytesWritable&gt; startKeys, boolean writeMultipleTables) throws IOException {<a name="line.523"></a>
-<span class="sourceLineNo">524</span>    LOG.info("Writing partition information to " + partitionsPath);<a name="line.524"></a>
-<span class="sourceLineNo">525</span>    if (startKeys.isEmpty()) {<a name="line.525"></a>
-<span class="sourceLineNo">526</span>      throw new IllegalArgumentException("No regions passed");<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>    // We're generating a list of split points, and we don't ever<a name="line.529"></a>
-<span class="sourceLineNo">530</span>    // have keys &lt; the first region (which has an empty start key)<a name="line.530"></a>
-<span class="sourceLineNo">531</span>    // so we need to remove it. Otherwise we would end up with an<a name="line.531"></a>
-<span class="sourceLineNo">532</span>    // empty reducer with index 0<a name="line.532"></a>
-<span class="sourceLineNo">533</span>    TreeSet&lt;ImmutableBytesWritable&gt; sorted = new TreeSet&lt;&gt;(startKeys);<a name="line.533"></a>
-<span class="sourceLineNo">534</span>    ImmutableBytesWritable first = sorted.first();<a name="line.534"></a>
-<span class="sourceLineNo">535</span>    if (writeMultipleTables) {<a name="line.535"></a>
-<span class="sourceLineNo">536</span>      first = new ImmutableBytes

<TRUNCATED>

[08/43] hbase-site git commit: Published site at 7ab77518a2569e2416a50020393aa386e7734501.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/testdevapidocs/org/apache/hadoop/hbase/util/LoadTestTool.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/util/LoadTestTool.html b/testdevapidocs/org/apache/hadoop/hbase/util/LoadTestTool.html
index f6012f4..0709ec8 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/util/LoadTestTool.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/util/LoadTestTool.html
@@ -341,237 +341,241 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="https://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/util/LoadTestTool.html#OPT_COLUMN_FAMILIES">OPT_COLUMN_FAMILIES</a></span></code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/LoadTestTool.html#OPT_BLOOM_PARAM">OPT_BLOOM_PARAM</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="https://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/util/LoadTestTool.html#OPT_COMPRESSION">OPT_COMPRESSION</a></span></code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/LoadTestTool.html#OPT_COLUMN_FAMILIES">OPT_COLUMN_FAMILIES</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="https://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/util/LoadTestTool.html#OPT_DEFERRED_LOG_FLUSH">OPT_DEFERRED_LOG_FLUSH</a></span></code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/LoadTestTool.html#OPT_COMPRESSION">OPT_COMPRESSION</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="https://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/util/LoadTestTool.html#OPT_DEFERRED_LOG_FLUSH_USAGE">OPT_DEFERRED_LOG_FLUSH_USAGE</a></span></code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/LoadTestTool.html#OPT_DEFERRED_LOG_FLUSH">OPT_DEFERRED_LOG_FLUSH</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="https://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/util/LoadTestTool.html#OPT_ENCRYPTION">OPT_ENCRYPTION</a></span></code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/LoadTestTool.html#OPT_DEFERRED_LOG_FLUSH_USAGE">OPT_DEFERRED_LOG_FLUSH_USAGE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><code>static <a href="https://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/util/LoadTestTool.html#OPT_ENCRYPTION">OPT_ENCRYPTION</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><code>protected static <a href="https://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/util/LoadTestTool.html#OPT_ENCRYPTION_USAGE">OPT_ENCRYPTION_USAGE</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="https://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/util/LoadTestTool.html#OPT_GENERATOR">OPT_GENERATOR</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="https://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/util/LoadTestTool.html#OPT_GENERATOR_USAGE">OPT_GENERATOR_USAGE</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected static <a href="https://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/util/LoadTestTool.html#OPT_INIT_ONLY">OPT_INIT_ONLY</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="https://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/util/LoadTestTool.html#OPT_INMEMORY">OPT_INMEMORY</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected static <a href="https://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/util/LoadTestTool.html#OPT_KEY_WINDOW">OPT_KEY_WINDOW</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected static <a href="https://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/util/LoadTestTool.html#OPT_MAX_READ_ERRORS">OPT_MAX_READ_ERRORS</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="https://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/util/LoadTestTool.html#OPT_MOB_THRESHOLD">OPT_MOB_THRESHOLD</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected static <a href="https://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/util/LoadTestTool.html#OPT_MOB_THRESHOLD_USAGE">OPT_MOB_THRESHOLD_USAGE</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="https://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/util/LoadTestTool.html#OPT_MULTIGET">OPT_MULTIGET</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="https://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/util/LoadTestTool.html#OPT_MULTIPUT">OPT_MULTIPUT</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected static <a href="https://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/util/LoadTestTool.html#OPT_NUM_KEYS">OPT_NUM_KEYS</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="https://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/util/LoadTestTool.html#OPT_NUM_REGIONS_PER_SERVER">OPT_NUM_REGIONS_PER_SERVER</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected static <a href="https://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/util/LoadTestTool.html#OPT_NUM_REGIONS_PER_SERVER_USAGE">OPT_NUM_REGIONS_PER_SERVER_USAGE</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected static <a href="https://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/util/LoadTestTool.html#OPT_READ">OPT_READ</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="https://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/util/LoadTestTool.html#OPT_READER">OPT_READER</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="https://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/util/LoadTestTool.html#OPT_READER_USAGE">OPT_READER_USAGE</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="https://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/util/LoadTestTool.html#OPT_REGION_REPLICA_ID">OPT_REGION_REPLICA_ID</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected static <a href="https://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/util/LoadTestTool.html#OPT_REGION_REPLICA_ID_USAGE">OPT_REGION_REPLICA_ID_USAGE</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="https://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/util/LoadTestTool.html#OPT_REGION_REPLICATION">OPT_REGION_REPLICATION</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected static <a href="https://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/util/LoadTestTool.html#OPT_REGION_REPLICATION_USAGE">OPT_REGION_REPLICATION_USAGE</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected static <a href="https://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/util/LoadTestTool.html#OPT_SKIP_INIT">OPT_SKIP_INIT</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected static <a href="https://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/util/LoadTestTool.html#OPT_START_KEY">OPT_START_KEY</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="https://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/util/LoadTestTool.html#OPT_TABLE_NAME">OPT_TABLE_NAME</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected static <a href="https://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/util/LoadTestTool.html#OPT_UPDATE">OPT_UPDATE</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="https://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/util/LoadTestTool.html#OPT_UPDATER">OPT_UPDATER</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="https://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/util/LoadTestTool.html#OPT_UPDATER_USAGE">OPT_UPDATER_USAGE</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected static <a href="https://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/util/LoadTestTool.html#OPT_USAGE_BLOOM">OPT_USAGE_BLOOM</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected static <a href="https://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/util/LoadTestTool.html#OPT_USAGE_COMPRESSION">OPT_USAGE_COMPRESSION</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="https://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/util/LoadTestTool.html#OPT_USAGE_IN_MEMORY">OPT_USAGE_IN_MEMORY</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected static <a href="https://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/util/LoadTestTool.html#OPT_USAGE_LOAD">OPT_USAGE_LOAD</a></span></code>
 <div class="block">Usage string for the load option</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected static <a href="https://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/util/LoadTestTool.html#OPT_USAGE_READ">OPT_USAGE_READ</a></span></code>
 <div class="block">Usage string for the read option</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected static <a href="https://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/util/LoadTestTool.html#OPT_USAGE_UPDATE">OPT_USAGE_UPDATE</a></span></code>
 <div class="block">Usage string for the update option</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected static <a href="https://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/util/LoadTestTool.html#OPT_VERBOSE">OPT_VERBOSE</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected static <a href="https://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/util/LoadTestTool.html#OPT_WRITE">OPT_WRITE</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="https://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/util/LoadTestTool.html#OPT_WRITER">OPT_WRITER</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="https://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/util/LoadTestTool.html#OPT_WRITER_USAGE">OPT_WRITER_USAGE</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected static <a href="https://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/util/LoadTestTool.html#OPT_ZK_PARENT_NODE">OPT_ZK_PARENT_NODE</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected static <a href="https://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/util/LoadTestTool.html#OPT_ZK_QUORUM">OPT_ZK_QUORUM</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/util/MultiThreadedReader.html" title="class in org.apache.hadoop.hbase.util">MultiThreadedReader</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/LoadTestTool.html#readerThreads">readerThreads</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/LoadTestTool.html#regionReplicaId">regionReplicaId</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/LoadTestTool.html#regionReplication">regionReplication</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/LoadTestTool.html#startKey">startKey</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private <a href="https://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/util/LoadTestTool.html#superUser">superUser</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private org.apache.hadoop.hbase.TableName</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/LoadTestTool.html#tableName">tableName</a></span></code>
 <div class="block">Table name for the test</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicReference.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicReference</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/LoadTestTool.html#thrown">thrown</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/LoadTestTool.html#updatePercent">updatePercent</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/util/MultiThreadedUpdater.html" title="class in org.apache.hadoop.hbase.util">MultiThreadedUpdater</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/LoadTestTool.html#updaterThreads">updaterThreads</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private <a href="https://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/util/LoadTestTool.html#userNames">userNames</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private org.apache.hadoop.hbase.security.User</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/LoadTestTool.html#userOwner">userOwner</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/LoadTestTool.html#verifyPercent">verifyPercent</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/util/MultiThreadedWriter.html" title="class in org.apache.hadoop.hbase.util">MultiThreadedWriter</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/LoadTestTool.html#writerThreads">writerThreads</a></span></code>&nbsp;</td>
 </tr>
@@ -910,13 +914,26 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 </dl>
 </li>
 </ul>
+<a name="OPT_BLOOM_PARAM">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>OPT_BLOOM_PARAM</h4>
+<pre>public static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.122">OPT_BLOOM_PARAM</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.util.LoadTestTool.OPT_BLOOM_PARAM">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
 <a name="OPT_COMPRESSION">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>OPT_COMPRESSION</h4>
-<pre>public static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.122">OPT_COMPRESSION</a></pre>
+<pre>public static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.123">OPT_COMPRESSION</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.util.LoadTestTool.OPT_COMPRESSION">Constant Field Values</a></dd>
@@ -929,7 +946,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>OPT_DEFERRED_LOG_FLUSH</h4>
-<pre>public static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.123">OPT_DEFERRED_LOG_FLUSH</a></pre>
+<pre>public static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.124">OPT_DEFERRED_LOG_FLUSH</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.util.LoadTestTool.OPT_DEFERRED_LOG_FLUSH">Constant Field Values</a></dd>
@@ -942,7 +959,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>OPT_DEFERRED_LOG_FLUSH_USAGE</h4>
-<pre>public static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.124">OPT_DEFERRED_LOG_FLUSH_USAGE</a></pre>
+<pre>public static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.125">OPT_DEFERRED_LOG_FLUSH_USAGE</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.util.LoadTestTool.OPT_DEFERRED_LOG_FLUSH_USAGE">Constant Field Values</a></dd>
@@ -955,7 +972,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>OPT_INMEMORY</h4>
-<pre>public static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.126">OPT_INMEMORY</a></pre>
+<pre>public static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.127">OPT_INMEMORY</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.util.LoadTestTool.OPT_INMEMORY">Constant Field Values</a></dd>
@@ -968,7 +985,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>OPT_USAGE_IN_MEMORY</h4>
-<pre>public static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.127">OPT_USAGE_IN_MEMORY</a></pre>
+<pre>public static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.128">OPT_USAGE_IN_MEMORY</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.util.LoadTestTool.OPT_USAGE_IN_MEMORY">Constant Field Values</a></dd>
@@ -981,7 +998,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>OPT_GENERATOR</h4>
-<pre>public static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.130">OPT_GENERATOR</a></pre>
+<pre>public static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.131">OPT_GENERATOR</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.util.LoadTestTool.OPT_GENERATOR">Constant Field Values</a></dd>
@@ -994,7 +1011,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>OPT_GENERATOR_USAGE</h4>
-<pre>public static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.131">OPT_GENERATOR_USAGE</a></pre>
+<pre>public static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.132">OPT_GENERATOR_USAGE</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.util.LoadTestTool.OPT_GENERATOR_USAGE">Constant Field Values</a></dd>
@@ -1007,7 +1024,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>OPT_WRITER</h4>
-<pre>public static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.134">OPT_WRITER</a></pre>
+<pre>public static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.135">OPT_WRITER</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.util.LoadTestTool.OPT_WRITER">Constant Field Values</a></dd>
@@ -1020,7 +1037,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>OPT_WRITER_USAGE</h4>
-<pre>public static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.135">OPT_WRITER_USAGE</a></pre>
+<pre>public static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.136">OPT_WRITER_USAGE</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.util.LoadTestTool.OPT_WRITER_USAGE">Constant Field Values</a></dd>
@@ -1033,7 +1050,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>OPT_UPDATER</h4>
-<pre>public static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.137">OPT_UPDATER</a></pre>
+<pre>public static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.138">OPT_UPDATER</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.util.LoadTestTool.OPT_UPDATER">Constant Field Values</a></dd>
@@ -1046,7 +1063,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>OPT_UPDATER_USAGE</h4>
-<pre>public static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.138">OPT_UPDATER_USAGE</a></pre>
+<pre>public static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.139">OPT_UPDATER_USAGE</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.util.LoadTestTool.OPT_UPDATER_USAGE">Constant Field Values</a></dd>
@@ -1059,7 +1076,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>OPT_READER</h4>
-<pre>public static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.140">OPT_READER</a></pre>
+<pre>public static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.141">OPT_READER</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.util.LoadTestTool.OPT_READER">Constant Field Values</a></dd>
@@ -1072,7 +1089,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>OPT_READER_USAGE</h4>
-<pre>public static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.141">OPT_READER_USAGE</a></pre>
+<pre>public static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.142">OPT_READER_USAGE</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.util.LoadTestTool.OPT_READER_USAGE">Constant Field Values</a></dd>
@@ -1085,7 +1102,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>OPT_KEY_WINDOW</h4>
-<pre>protected static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.143">OPT_KEY_WINDOW</a></pre>
+<pre>protected static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.144">OPT_KEY_WINDOW</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.util.LoadTestTool.OPT_KEY_WINDOW">Constant Field Values</a></dd>
@@ -1098,7 +1115,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>OPT_WRITE</h4>
-<pre>protected static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.144">OPT_WRITE</a></pre>
+<pre>protected static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.145">OPT_WRITE</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.util.LoadTestTool.OPT_WRITE">Constant Field Values</a></dd>
@@ -1111,7 +1128,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>OPT_MAX_READ_ERRORS</h4>
-<pre>protected static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.145">OPT_MAX_READ_ERRORS</a></pre>
+<pre>protected static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.146">OPT_MAX_READ_ERRORS</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.util.LoadTestTool.OPT_MAX_READ_ERRORS">Constant Field Values</a></dd>
@@ -1124,7 +1141,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>OPT_MULTIPUT</h4>
-<pre>public static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.146">OPT_MULTIPUT</a></pre>
+<pre>public static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.147">OPT_MULTIPUT</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.util.LoadTestTool.OPT_MULTIPUT">Constant Field Values</a></dd>
@@ -1137,7 +1154,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>OPT_MULTIGET</h4>
-<pre>public static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.147">OPT_MULTIGET</a></pre>
+<pre>public static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.148">OPT_MULTIGET</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.util.LoadTestTool.OPT_MULTIGET">Constant Field Values</a></dd>
@@ -1150,7 +1167,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>OPT_NUM_KEYS</h4>
-<pre>protected static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.148">OPT_NUM_KEYS</a></pre>
+<pre>protected static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.149">OPT_NUM_KEYS</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.util.LoadTestTool.OPT_NUM_KEYS">Constant Field Values</a></dd>
@@ -1163,7 +1180,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>OPT_READ</h4>
-<pre>protected static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.149">OPT_READ</a></pre>
+<pre>protected static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.150">OPT_READ</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.util.LoadTestTool.OPT_READ">Constant Field Values</a></dd>
@@ -1176,7 +1193,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>OPT_START_KEY</h4>
-<pre>protected static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.150">OPT_START_KEY</a></pre>
+<pre>protected static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.151">OPT_START_KEY</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.util.LoadTestTool.OPT_START_KEY">Constant Field Values</a></dd>
@@ -1189,7 +1206,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>OPT_TABLE_NAME</h4>
-<pre>public static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.151">OPT_TABLE_NAME</a></pre>
+<pre>public static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.152">OPT_TABLE_NAME</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.util.LoadTestTool.OPT_TABLE_NAME">Constant Field Values</a></dd>
@@ -1202,7 +1219,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>OPT_COLUMN_FAMILIES</h4>
-<pre>public static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.152">OPT_COLUMN_FAMILIES</a></pre>
+<pre>public static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.153">OPT_COLUMN_FAMILIES</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.util.LoadTestTool.OPT_COLUMN_FAMILIES">Constant Field Values</a></dd>
@@ -1215,7 +1232,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>OPT_ZK_QUORUM</h4>
-<pre>protected static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.153">OPT_ZK_QUORUM</a></pre>
+<pre>protected static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.154">OPT_ZK_QUORUM</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.util.LoadTestTool.OPT_ZK_QUORUM">Constant Field Values</a></dd>
@@ -1228,7 +1245,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>OPT_ZK_PARENT_NODE</h4>
-<pre>protected static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.154">OPT_ZK_PARENT_NODE</a></pre>
+<pre>protected static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.155">OPT_ZK_PARENT_NODE</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.util.LoadTestTool.OPT_ZK_PARENT_NODE">Constant Field Values</a></dd>
@@ -1241,7 +1258,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>OPT_SKIP_INIT</h4>
-<pre>protected static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.155">OPT_SKIP_INIT</a></pre>
+<pre>protected static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.156">OPT_SKIP_INIT</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.util.LoadTestTool.OPT_SKIP_INIT">Constant Field Values</a></dd>
@@ -1254,7 +1271,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>OPT_INIT_ONLY</h4>
-<pre>protected static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.156">OPT_INIT_ONLY</a></pre>
+<pre>protected static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.157">OPT_INIT_ONLY</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.util.LoadTestTool.OPT_INIT_ONLY">Constant Field Values</a></dd>
@@ -1267,7 +1284,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>NUM_TABLES</h4>
-<pre>protected static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.157">NUM_TABLES</a></pre>
+<pre>protected static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.158">NUM_TABLES</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.util.LoadTestTool.NUM_TABLES">Constant Field Values</a></dd>
@@ -1280,7 +1297,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>OPT_BATCHUPDATE</h4>
-<pre>protected static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.158">OPT_BATCHUPDATE</a></pre>
+<pre>protected static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.159">OPT_BATCHUPDATE</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.util.LoadTestTool.OPT_BATCHUPDATE">Constant Field Values</a></dd>
@@ -1293,7 +1310,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>OPT_UPDATE</h4>
-<pre>protected static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.159">OPT_UPDATE</a></pre>
+<pre>protected static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.160">OPT_UPDATE</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.util.LoadTestTool.OPT_UPDATE">Constant Field Values</a></dd>
@@ -1306,7 +1323,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>OPT_ENCRYPTION</h4>
-<pre>public static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.161">OPT_ENCRYPTION</a></pre>
+<pre>public static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.162">OPT_ENCRYPTION</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.util.LoadTestTool.OPT_ENCRYPTION">Constant Field Values</a></dd>
@@ -1319,7 +1336,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>OPT_ENCRYPTION_USAGE</h4>
-<pre>protected static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.162">OPT_ENCRYPTION_USAGE</a></pre>
+<pre>protected static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.163">OPT_ENCRYPTION_USAGE</a></pre>
 </li>
 </ul>
 <a name="OPT_NUM_REGIONS_PER_SERVER">
@@ -1328,7 +1345,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>OPT_NUM_REGIONS_PER_SERVER</h4>
-<pre>public static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.166">OPT_NUM_REGIONS_PER_SERVER</a></pre>
+<pre>public static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.167">OPT_NUM_REGIONS_PER_SERVER</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.util.LoadTestTool.OPT_NUM_REGIONS_PER_SERVER">Constant Field Values</a></dd>
@@ -1341,7 +1358,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>OPT_NUM_REGIONS_PER_SERVER_USAGE</h4>
-<pre>protected static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.167">OPT_NUM_REGIONS_PER_SERVER_USAGE</a></pre>
+<pre>protected static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.168">OPT_NUM_REGIONS_PER_SERVER_USAGE</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.util.LoadTestTool.OPT_NUM_REGIONS_PER_SERVER_USAGE">Constant Field Values</a></dd>
@@ -1354,7 +1371,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>DEFAULT_NUM_REGIONS_PER_SERVER</h4>
-<pre>public static&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.169">DEFAULT_NUM_REGIONS_PER_SERVER</a></pre>
+<pre>public static&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.170">DEFAULT_NUM_REGIONS_PER_SERVER</a></pre>
 </li>
 </ul>
 <a name="OPT_REGION_REPLICATION">
@@ -1363,7 +1380,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>OPT_REGION_REPLICATION</h4>
-<pre>public static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.171">OPT_REGION_REPLICATION</a></pre>
+<pre>public static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.172">OPT_REGION_REPLICATION</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.util.LoadTestTool.OPT_REGION_REPLICATION">Constant Field Values</a></dd>
@@ -1376,7 +1393,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>OPT_REGION_REPLICATION_USAGE</h4>
-<pre>protected static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.172">OPT_REGION_REPLICATION_USAGE</a></pre>
+<pre>protected static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.173">OPT_REGION_REPLICATION_USAGE</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.util.LoadTestTool.OPT_REGION_REPLICATION_USAGE">Constant Field Values</a></dd>
@@ -1389,7 +1406,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>OPT_REGION_REPLICA_ID</h4>
-<pre>public static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.175">OPT_REGION_REPLICA_ID</a></pre>
+<pre>public static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.176">OPT_REGION_REPLICA_ID</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.util.LoadTestTool.OPT_REGION_REPLICA_ID">Constant Field Values</a></dd>
@@ -1402,7 +1419,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>OPT_REGION_REPLICA_ID_USAGE</h4>
-<pre>protected static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.176">OPT_REGION_REPLICA_ID_USAGE</a></pre>
+<pre>protected static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.177">OPT_REGION_REPLICA_ID_USAGE</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.util.LoadTestTool.OPT_REGION_REPLICA_ID_USAGE">Constant Field Values</a></dd>
@@ -1415,7 +1432,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>OPT_MOB_THRESHOLD</h4>
-<pre>public static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.179">OPT_MOB_THRESHOLD</a></pre>
+<pre>public static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.180">OPT_MOB_THRESHOLD</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.util.LoadTestTool.OPT_MOB_THRESHOLD">Constant Field Values</a></dd>
@@ -1428,7 +1445,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>OPT_MOB_THRESHOLD_USAGE</h4>
-<pre>protected static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.180">OPT_MOB_THRESHOLD_USAGE</a></pre>
+<pre>protected static final&nbsp;<a href="https://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/util/LoadTestTool.html#line.181">OPT_MOB_THRESHOLD_USAGE</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.util.LoadTestTool.OPT_MOB_THRESHOLD_USAGE">Constant Field Values</a></dd>
@@ -1441,7 +1458,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>DEFAULT_START_KEY</h4>
-<pre>protected static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.183">DEFAULT_START_KEY</a></pre>
+<pre>protected static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.184">DEFAULT_START_KEY</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.util.LoadTestTool.DEFAULT_START_KEY">Constant Field Values</a></dd>
@@ -1454,7 +1471,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>cmd</h4>
-<pre>protected&nbsp;org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.186">cmd</a></pre>
+<pre>protected&nbsp;org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.187">cmd</a></pre>
 <div class="block">This will be removed as we factor out the dependency on command line</div>
 </li>
 </ul>
@@ -1464,7 +1481,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>writerThreads</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/MultiThreadedWriter.html" title="class in org.apache.hadoop.hbase.util">MultiThreadedWriter</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.188">writerThreads</a></pre>
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/MultiThreadedWriter.html" title="class in org.apache.hadoop.hbase.util">MultiThreadedWriter</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.189">writerThreads</a></pre>
 </li>
 </ul>
 <a name="readerThreads">
@@ -1473,7 +1490,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>readerThreads</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/MultiThreadedReader.html" title="class in org.apache.hadoop.hbase.util">MultiThreadedReader</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.189">readerThreads</a></pre>
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/MultiThreadedReader.html" title="class in org.apache.hadoop.hbase.util">MultiThreadedReader</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.190">readerThreads</a></pre>
 </li>
 </ul>
 <a name="updaterThreads">
@@ -1482,7 +1499,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>updaterThreads</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/MultiThreadedUpdater.html" title="class in org.apache.hadoop.hbase.util">MultiThreadedUpdater</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.190">updaterThreads</a></pre>
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/MultiThreadedUpdater.html" title="class in org.apache.hadoop.hbase.util">MultiThreadedUpdater</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.191">updaterThreads</a></pre>
 </li>
 </ul>
 <a name="startKey">
@@ -1491,7 +1508,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>startKey</h4>
-<pre>protected&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.192">startKey</a></pre>
+<pre>protected&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.193">startKey</a></pre>
 </li>
 </ul>
 <a name="endKey">
@@ -1500,7 +1517,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>endKey</h4>
-<pre>protected&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.192">endKey</a></pre>
+<pre>protected&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.193">endKey</a></pre>
 </li>
 </ul>
 <a name="isVerbose">
@@ -1509,7 +1526,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>isVerbose</h4>
-<pre>protected&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.194">isVerbose</a></pre>
+<pre>protected&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.195">isVerbose</a></pre>
 </li>
 </ul>
 <a name="isWrite">
@@ -1518,7 +1535,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>isWrite</h4>
-<pre>protected&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.194">isWrite</a></pre>
+<pre>protected&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.195">isWrite</a></pre>
 </li>
 </ul>
 <a name="isRead">
@@ -1527,7 +1544,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>isRead</h4>
-<pre>protected&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.194">isRead</a></pre>
+<pre>protected&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.195">isRead</a></pre>
 </li>
 </ul>
 <a name="isUpdate">
@@ -1536,7 +1553,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>isUpdate</h4>
-<pre>protected&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.194">isUpdate</a></pre>
+<pre>protected&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.195">isUpdate</a></pre>
 </li>
 </ul>
 <a name="deferredLogFlush">
@@ -1545,7 +1562,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>deferredLogFlush</h4>
-<pre>protected&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.195">deferredLogFlush</a></pre>
+<pre>protected&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.196">deferredLogFlush</a></pre>
 </li>
 </ul>
 <a name="dataBlockEncodingAlgo">
@@ -1554,7 +1571,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>dataBlockEncodingAlgo</h4>
-<pre>protected&nbsp;org.apache.hadoop.hbase.io.encoding.DataBlockEncoding <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.198">dataBlockEncodingAlgo</a></pre>
+<pre>protected&nbsp;org.apache.hadoop.hbase.io.encoding.DataBlockEncoding <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.199">dataBlockEncodingAlgo</a></pre>
 </li>
 </ul>
 <a name="compressAlgo">
@@ -1563,7 +1580,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>compressAlgo</h4>
-<pre>protected&nbsp;org.apache.hadoop.hbase.io.compress.Compression.Algorithm <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.199">compressAlgo</a></pre>
+<pre>protected&nbsp;org.apache.hadoop.hbase.io.compress.Compression.Algorithm <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.200">compressAlgo</a></pre>
 </li>
 </ul>
 <a name="bloomType">
@@ -1572,7 +1589,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>bloomType</h4>
-<pre>protected&nbsp;org.apache.hadoop.hbase.regionserver.BloomType <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.200">bloomType</a></pre>
+<pre>protected&nbsp;org.apache.hadoop.hbase.regionserver.BloomType <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.201">bloomType</a></pre>
 </li>
 </ul>
 <a name="inMemoryCF">
@@ -1581,7 +1598,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>inMemoryCF</h4>
-<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.201">inMemoryCF</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.202">inMemoryCF</a></pre>
 </li>
 </ul>
 <a name="userOwner">
@@ -1590,7 +1607,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>userOwner</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.security.User <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.203">userOwner</a></pre>
+<pre>private&nbsp;org.apache.hadoop.hbase.security.User <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.204">userOwner</a></pre>
 </li>
 </ul>
 <a name="numWriterThreads">
@@ -1599,7 +1616,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>numWriterThreads</h4>
-<pre>protected&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.205">numWriterThreads</a></pre>
+<pre>protected&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.206">numWriterThreads</a></pre>
 </li>
 </ul>
 <a name="minColsPerKey">
@@ -1608,7 +1625,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>minColsPerKey</h4>
-<pre>protected&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.206">minColsPerKey</a></pre>
+<pre>protected&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.207">minColsPerKey</a></pre>
 </li>
 </ul>
 <a name="maxColsPerKey">
@@ -1617,7 +1634,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>maxColsPerKey</h4>
-<pre>protected&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.206">maxColsPerKey</a></pre>
+<pre>protected&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.207">maxColsPerKey</a></pre>
 </li>
 </ul>
 <a name="minColDataSize">
@@ -1626,7 +1643,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>minColDataSize</h4>
-<pre>protected&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.207">minColDataSize</a></pre>
+<pre>protected&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.208">minColDataSize</a></pre>
 </li>
 </ul>
 <a name="maxColDataSize">
@@ -1635,7 +1652,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>maxColDataSize</h4>
-<pre>protected&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.207">maxColDataSize</a></pre>
+<pre>protected&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.208">maxColDataSize</a></pre>
 </li>
 </ul>
 <a name="isMultiPut">
@@ -1644,7 +1661,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>isMultiPut</h4>
-<pre>protected&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.208">isMultiPut</a></pre>
+<pre>protected&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.209">isMultiPut</a></pre>
 </li>
 </ul>
 <a name="numUpdaterThreads">
@@ -1653,7 +1670,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>numUpdaterThreads</h4>
-<pre>protected&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.211">numUpdaterThreads</a></pre>
+<pre>protected&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.212">numUpdaterThreads</a></pre>
 </li>
 </ul>
 <a name="updatePercent">
@@ -1662,7 +1679,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>updatePercent</h4>
-<pre>protected&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.212">updatePercent</a></pre>
+<pre>protected&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.213">updatePercent</a></pre>
 </li>
 </ul>
 <a name="ignoreConflicts">
@@ -1671,7 +1688,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>ignoreConflicts</h4>
-<pre>protected&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.213">ignoreConflicts</a></pre>
+<pre>protected&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.214">ignoreConflicts</a></pre>
 </li>
 </ul>
 <a name="isBatchUpdate">
@@ -1680,7 +1697,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>isBatchUpdate</h4>
-<pre>protected&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.214">isBatchUpdate</a></pre>
+<pre>protected&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.215">isBatchUpdate</a></pre>
 </li>
 </ul>
 <a name="numReaderThreads">
@@ -1689,7 +1706,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>numReaderThreads</h4>
-<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.217">numReaderThreads</a></pre>
+<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.218">numReaderThreads</a></pre>
 </li>
 </ul>
 <a name="keyWindow">
@@ -1698,7 +1715,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>keyWindow</h4>
-<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.218">keyWindow</a></pre>
+<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.219">keyWindow</a></pre>
 </li>
 </ul>
 <a name="multiGetBatchSize">
@@ -1707,7 +1724,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>multiGetBatchSize</h4>
-<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.219">multiGetBatchSize</a></pre>
+<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.220">multiGetBatchSize</a></pre>
 </li>
 </ul>
 <a name="maxReadErrors">
@@ -1716,7 +1733,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>maxReadErrors</h4>
-<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.220">maxReadErrors</a></pre>
+<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.221">maxReadErrors</a></pre>
 </li>
 </ul>
 <a name="verifyPercent">
@@ -1725,7 +1742,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>verifyPercent</h4>
-<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.221">verifyPercent</a></pre>
+<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.222">verifyPercent</a></pre>
 </li>
 </ul>
 <a name="numTables">
@@ -1734,7 +1751,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>numTables</h4>
-<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.223">numTables</a></pre>
+<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.224">numTables</a></pre>
 </li>
 </ul>
 <a name="superUser">
@@ -1743,7 +1760,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>superUser</h4>
-<pre>private&nbsp;<a href="https://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/util/LoadTestTool.html#line.225">superUser</a></pre>
+<pre>private&nbsp;<a href="https://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/util/LoadTestTool.html#line.226">superUser</a></pre>
 </li>
 </ul>
 <a name="userNames">
@@ -1752,7 +1769,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>userNames</h4>
-<pre>private&nbsp;<a href="https://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/util/LoadTestTool.html#line.227">userNames</a></pre>
+<pre>private&nbsp;<a href="https://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/util/LoadTestTool.html#line.228">userNames</a></pre>
 </li>
 </ul>
 <a name="authnFileName">
@@ -1761,7 +1778,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>authnFileName</h4>
-<pre>private&nbsp;<a href="https://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/util/LoadTestTool.html#line.229">authnFileName</a></pre>
+<pre>private&nbsp;<a href="https://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/util/LoadTestTool.html#line.230">authnFileName</a></pre>
 </li>
 </ul>
 <a name="numRegionsPerServer">
@@ -1770,7 +1787,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>numRegionsPerServer</h4>
-<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.231">numRegionsPerServer</a></pre>
+<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.232">numRegionsPerServer</a></pre>
 </li>
 </ul>
 <a name="regionReplication">
@@ -1779,7 +1796,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>regionReplication</h4>
-<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.232">regionReplication</a></pre>
+<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.233">regionReplication</a></pre>
 </li>
 </ul>
 <a name="regionReplicaId">
@@ -1788,7 +1805,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>regionReplicaId</h4>
-<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.233">regionReplicaId</a></pre>
+<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.234">regionReplicaId</a></pre>
 </li>
 </ul>
 <a name="mobThreshold">
@@ -1797,7 +1814,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>mobThreshold</h4>
-<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.235">mobThreshold</a></pre>
+<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.236">mobThreshold</a></pre>
 </li>
 </ul>
 <a name="isSkipInit">
@@ -1806,7 +1823,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>isSkipInit</h4>
-<pre>protected&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.239">isSkipInit</a></pre>
+<pre>protected&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.240">isSkipInit</a></pre>
 </li>
 </ul>
 <a name="isInitOnly">
@@ -1815,7 +1832,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>isInitOnly</h4>
-<pre>protected&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.240">isInitOnly</a></pre>
+<pre>protected&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.241">isInitOnly</a></pre>
 </li>
 </ul>
 <a name="cipher">
@@ -1824,7 +1841,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>cipher</h4>
-<pre>protected&nbsp;org.apache.hadoop.hbase.io.crypto.Cipher <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.242">cipher</a></pre>
+<pre>protected&nbsp;org.apache.hadoop.hbase.io.crypto.Cipher <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.243">cipher</a></pre>
 </li>
 </ul>
 <a name="thrown">
@@ -1833,7 +1850,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>thrown</h4>
-<pre>protected&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicReference.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicReference</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.891">thrown</a></pre>
+<pre>protected&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicReference.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicReference</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/util/LoadTestTool.html#line.909">thrown</a></pre>
 </li>
 </ul>
 </li>
@@ -1867,7 +1884,7 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>splitColonSeparated</h4>
-<pre>protected&nbsp;<a href="https://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/util/LoadTestTool.html#line.244">splitColonSeparated</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;option,
+<pre>protected&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class

<TRUNCATED>

[41/43] hbase-site git commit: Published site at 7ab77518a2569e2416a50020393aa386e7734501.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/apidocs/src-html/org/apache/hadoop/hbase/regionserver/BloomType.html
----------------------------------------------------------------------
diff --git a/apidocs/src-html/org/apache/hadoop/hbase/regionserver/BloomType.html b/apidocs/src-html/org/apache/hadoop/hbase/regionserver/BloomType.html
index 2218d26..27fd9a2 100644
--- a/apidocs/src-html/org/apache/hadoop/hbase/regionserver/BloomType.html
+++ b/apidocs/src-html/org/apache/hadoop/hbase/regionserver/BloomType.html
@@ -42,8 +42,16 @@
 <span class="sourceLineNo">034</span>  /**<a name="line.34"></a>
 <span class="sourceLineNo">035</span>   * Bloom enabled with Table row &amp;amp; column (family+qualifier) as Key<a name="line.35"></a>
 <span class="sourceLineNo">036</span>   */<a name="line.36"></a>
-<span class="sourceLineNo">037</span>  ROWCOL<a name="line.37"></a>
-<span class="sourceLineNo">038</span>}<a name="line.38"></a>
+<span class="sourceLineNo">037</span>  ROWCOL,<a name="line.37"></a>
+<span class="sourceLineNo">038</span>  /**<a name="line.38"></a>
+<span class="sourceLineNo">039</span>   * Bloom enabled with Table row prefix as Key, specify the length of the prefix<a name="line.39"></a>
+<span class="sourceLineNo">040</span>   */<a name="line.40"></a>
+<span class="sourceLineNo">041</span>  ROWPREFIX_FIXED_LENGTH,<a name="line.41"></a>
+<span class="sourceLineNo">042</span>  /**<a name="line.42"></a>
+<span class="sourceLineNo">043</span>   * Bloom enabled with Table row prefix as Key, specify the delimiter of the prefix<a name="line.43"></a>
+<span class="sourceLineNo">044</span>   */<a name="line.44"></a>
+<span class="sourceLineNo">045</span>  ROWPREFIX_DELIMITED<a name="line.45"></a>
+<span class="sourceLineNo">046</span>}<a name="line.46"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/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 2f28172..2ff788d 100644
--- a/apidocs/src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html
+++ b/apidocs/src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html
@@ -184,305 +184,307 @@
 <span class="sourceLineNo">176</span>    // set env and directly in order to handle static init/gc issues<a name="line.176"></a>
 <span class="sourceLineNo">177</span>    System.setProperty("zookeeper.preAllocSize", "100");<a name="line.177"></a>
 <span class="sourceLineNo">178</span>    FileTxnLog.setPreallocSize(100 * 1024);<a name="line.178"></a>
-<span class="sourceLineNo">179</span>  }<a name="line.179"></a>
-<span class="sourceLineNo">180</span><a name="line.180"></a>
-<span class="sourceLineNo">181</span>  public int startup(File baseDir) throws IOException, InterruptedException {<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    int numZooKeeperServers = clientPortList.size();<a name="line.182"></a>
-<span class="sourceLineNo">183</span>    if (numZooKeeperServers == 0) {<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      numZooKeeperServers = 1; // need at least 1 ZK server for testing<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    }<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    return startup(baseDir, numZooKeeperServers);<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>   * @param baseDir the base directory to use<a name="line.190"></a>
-<span class="sourceLineNo">191</span>   * @param numZooKeeperServers the number of ZooKeeper servers<a name="line.191"></a>
-<span class="sourceLineNo">192</span>   * @return ClientPort server bound to, -1 if there was a binding problem and we couldn't pick<a name="line.192"></a>
-<span class="sourceLineNo">193</span>   *         another port.<a name="line.193"></a>
-<span class="sourceLineNo">194</span>   * @throws IOException if an operation fails during the startup<a name="line.194"></a>
-<span class="sourceLineNo">195</span>   * @throws InterruptedException if the startup fails<a name="line.195"></a>
-<span class="sourceLineNo">196</span>   */<a name="line.196"></a>
-<span class="sourceLineNo">197</span>  public int startup(File baseDir, int numZooKeeperServers) throws IOException,<a name="line.197"></a>
-<span class="sourceLineNo">198</span>          InterruptedException {<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    if (numZooKeeperServers &lt;= 0) {<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      return -1;<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>    setupTestEnv();<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    shutdown();<a name="line.204"></a>
-<span class="sourceLineNo">205</span><a name="line.205"></a>
-<span class="sourceLineNo">206</span>    int tentativePort = -1; // the seed port<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    int currentClientPort;<a name="line.207"></a>
-<span class="sourceLineNo">208</span><a name="line.208"></a>
-<span class="sourceLineNo">209</span>    // running all the ZK servers<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    for (int i = 0; i &lt; numZooKeeperServers; i++) {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>      File dir = new File(baseDir, "zookeeper_"+i).getAbsoluteFile();<a name="line.211"></a>
-<span class="sourceLineNo">212</span>      createDir(dir);<a name="line.212"></a>
-<span class="sourceLineNo">213</span>      int tickTimeToUse;<a name="line.213"></a>
-<span class="sourceLineNo">214</span>      if (this.tickTime &gt; 0) {<a name="line.214"></a>
-<span class="sourceLineNo">215</span>        tickTimeToUse = this.tickTime;<a name="line.215"></a>
-<span class="sourceLineNo">216</span>      } else {<a name="line.216"></a>
-<span class="sourceLineNo">217</span>        tickTimeToUse = TICK_TIME;<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>      // Set up client port - if we have already had a list of valid ports, use it.<a name="line.220"></a>
-<span class="sourceLineNo">221</span>      if (hasValidClientPortInList(i)) {<a name="line.221"></a>
-<span class="sourceLineNo">222</span>        currentClientPort = clientPortList.get(i);<a name="line.222"></a>
-<span class="sourceLineNo">223</span>      } else {<a name="line.223"></a>
-<span class="sourceLineNo">224</span>        tentativePort = selectClientPort(tentativePort); // update the seed<a name="line.224"></a>
-<span class="sourceLineNo">225</span>        currentClientPort = tentativePort;<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>      ZooKeeperServer server = new ZooKeeperServer(dir, dir, tickTimeToUse);<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      // Setting {min,max}SessionTimeout defaults to be the same as in Zookeeper<a name="line.229"></a>
-<span class="sourceLineNo">230</span>      server.setMinSessionTimeout(configuration.getInt(<a name="line.230"></a>
-<span class="sourceLineNo">231</span>              "hbase.zookeeper.property.minSessionTimeout", -1));<a name="line.231"></a>
-<span class="sourceLineNo">232</span>      server.setMaxSessionTimeout(configuration.getInt(<a name="line.232"></a>
-<span class="sourceLineNo">233</span>              "hbase.zookeeper.property.maxSessionTimeout", -1));<a name="line.233"></a>
-<span class="sourceLineNo">234</span>      NIOServerCnxnFactory standaloneServerFactory;<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      while (true) {<a name="line.235"></a>
-<span class="sourceLineNo">236</span>        try {<a name="line.236"></a>
-<span class="sourceLineNo">237</span>          standaloneServerFactory = new NIOServerCnxnFactory();<a name="line.237"></a>
-<span class="sourceLineNo">238</span>          standaloneServerFactory.configure(<a name="line.238"></a>
-<span class="sourceLineNo">239</span>            new InetSocketAddress(currentClientPort),<a name="line.239"></a>
-<span class="sourceLineNo">240</span>            configuration.getInt(HConstants.ZOOKEEPER_MAX_CLIENT_CNXNS,<a name="line.240"></a>
-<span class="sourceLineNo">241</span>                    HConstants.DEFAULT_ZOOKEEPER_MAX_CLIENT_CNXNS));<a name="line.241"></a>
-<span class="sourceLineNo">242</span>        } catch (BindException e) {<a name="line.242"></a>
-<span class="sourceLineNo">243</span>          LOG.debug("Failed binding ZK Server to client port: " +<a name="line.243"></a>
-<span class="sourceLineNo">244</span>              currentClientPort, e);<a name="line.244"></a>
-<span class="sourceLineNo">245</span>          // We're told to use some port but it's occupied, fail<a name="line.245"></a>
-<span class="sourceLineNo">246</span>          if (hasValidClientPortInList(i)) {<a name="line.246"></a>
-<span class="sourceLineNo">247</span>            return -1;<a name="line.247"></a>
-<span class="sourceLineNo">248</span>          }<a name="line.248"></a>
-<span class="sourceLineNo">249</span>          // This port is already in use, try to use another.<a name="line.249"></a>
-<span class="sourceLineNo">250</span>          tentativePort = selectClientPort(tentativePort);<a name="line.250"></a>
-<span class="sourceLineNo">251</span>          currentClientPort = tentativePort;<a name="line.251"></a>
-<span class="sourceLineNo">252</span>          continue;<a name="line.252"></a>
-<span class="sourceLineNo">253</span>        }<a name="line.253"></a>
-<span class="sourceLineNo">254</span>        break;<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>      // Start up this ZK server<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      standaloneServerFactory.startup(server);<a name="line.258"></a>
-<span class="sourceLineNo">259</span>      // Runs a 'stat' against the servers.<a name="line.259"></a>
-<span class="sourceLineNo">260</span>      if (!waitForServerUp(currentClientPort, connectionTimeout)) {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>        throw new IOException("Waiting for startup of standalone server");<a name="line.261"></a>
-<span class="sourceLineNo">262</span>      }<a name="line.262"></a>
-<span class="sourceLineNo">263</span><a name="line.263"></a>
-<span class="sourceLineNo">264</span>      // We have selected a port as a client port.  Update clientPortList if necessary.<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      if (clientPortList.size() &lt;= i) { // it is not in the list, add the port<a name="line.265"></a>
-<span class="sourceLineNo">266</span>        clientPortList.add(currentClientPort);<a name="line.266"></a>
-<span class="sourceLineNo">267</span>      }<a name="line.267"></a>
-<span class="sourceLineNo">268</span>      else if (clientPortList.get(i) &lt;= 0) { // the list has invalid port, update with valid port<a name="line.268"></a>
-<span class="sourceLineNo">269</span>        clientPortList.remove(i);<a name="line.269"></a>
-<span class="sourceLineNo">270</span>        clientPortList.add(i, currentClientPort);<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>      standaloneServerFactoryList.add(standaloneServerFactory);<a name="line.273"></a>
-<span class="sourceLineNo">274</span>      zooKeeperServers.add(server);<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    }<a name="line.275"></a>
-<span class="sourceLineNo">276</span><a name="line.276"></a>
-<span class="sourceLineNo">277</span>    // set the first one to be active ZK; Others are backups<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    activeZKServerIndex = 0;<a name="line.278"></a>
-<span class="sourceLineNo">279</span>    started = true;<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    int clientPort = clientPortList.get(activeZKServerIndex);<a name="line.280"></a>
-<span class="sourceLineNo">281</span>    LOG.info("Started MiniZooKeeperCluster and ran successful 'stat' " +<a name="line.281"></a>
-<span class="sourceLineNo">282</span>        "on client port=" + clientPort);<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    return clientPort;<a name="line.283"></a>
-<span class="sourceLineNo">284</span>  }<a name="line.284"></a>
-<span class="sourceLineNo">285</span><a name="line.285"></a>
-<span class="sourceLineNo">286</span>  private void createDir(File dir) throws IOException {<a name="line.286"></a>
-<span class="sourceLineNo">287</span>    try {<a name="line.287"></a>
-<span class="sourceLineNo">288</span>      if (!dir.exists()) {<a name="line.288"></a>
-<span class="sourceLineNo">289</span>        dir.mkdirs();<a name="line.289"></a>
-<span class="sourceLineNo">290</span>      }<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    } catch (SecurityException e) {<a name="line.291"></a>
-<span class="sourceLineNo">292</span>      throw new IOException("creating dir: " + dir, e);<a name="line.292"></a>
-<span class="sourceLineNo">293</span>    }<a name="line.293"></a>
-<span class="sourceLineNo">294</span>  }<a name="line.294"></a>
-<span class="sourceLineNo">295</span><a name="line.295"></a>
-<span class="sourceLineNo">296</span>  /**<a name="line.296"></a>
-<span class="sourceLineNo">297</span>   * @throws IOException if waiting for the shutdown of a server fails<a name="line.297"></a>
-<span class="sourceLineNo">298</span>   */<a name="line.298"></a>
-<span class="sourceLineNo">299</span>  public void shutdown() throws IOException {<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    // shut down all the zk servers<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    for (int i = 0; i &lt; standaloneServerFactoryList.size(); i++) {<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      NIOServerCnxnFactory standaloneServerFactory =<a name="line.302"></a>
-<span class="sourceLineNo">303</span>        standaloneServerFactoryList.get(i);<a name="line.303"></a>
-<span class="sourceLineNo">304</span>      int clientPort = clientPortList.get(i);<a name="line.304"></a>
-<span class="sourceLineNo">305</span><a name="line.305"></a>
-<span class="sourceLineNo">306</span>      standaloneServerFactory.shutdown();<a name="line.306"></a>
-<span class="sourceLineNo">307</span>      if (!waitForServerDown(clientPort, connectionTimeout)) {<a name="line.307"></a>
-<span class="sourceLineNo">308</span>        throw new IOException("Waiting for shutdown of standalone server");<a name="line.308"></a>
-<span class="sourceLineNo">309</span>      }<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    }<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    standaloneServerFactoryList.clear();<a name="line.311"></a>
-<span class="sourceLineNo">312</span><a name="line.312"></a>
-<span class="sourceLineNo">313</span>    for (ZooKeeperServer zkServer: zooKeeperServers) {<a name="line.313"></a>
-<span class="sourceLineNo">314</span>      //explicitly close ZKDatabase since ZookeeperServer does not close them<a name="line.314"></a>
-<span class="sourceLineNo">315</span>      zkServer.getZKDatabase().close();<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    }<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    zooKeeperServers.clear();<a name="line.317"></a>
-<span class="sourceLineNo">318</span><a name="line.318"></a>
-<span class="sourceLineNo">319</span>    // clear everything<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    if (started) {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>      started = false;<a name="line.321"></a>
-<span class="sourceLineNo">322</span>      activeZKServerIndex = 0;<a name="line.322"></a>
-<span class="sourceLineNo">323</span>      clientPortList.clear();<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      LOG.info("Shutdown MiniZK cluster with all ZK servers");<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    }<a name="line.325"></a>
-<span class="sourceLineNo">326</span>  }<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>   * @return clientPort return clientPort if there is another ZK backup can run<a name="line.329"></a>
-<span class="sourceLineNo">330</span>   *         when killing the current active; return -1, if there is no backups.<a name="line.330"></a>
-<span class="sourceLineNo">331</span>   * @throws IOException if waiting for the shutdown of a server fails<a name="line.331"></a>
-<span class="sourceLineNo">332</span>   */<a name="line.332"></a>
-<span class="sourceLineNo">333</span>  public int killCurrentActiveZooKeeperServer() throws IOException, InterruptedException {<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    if (!started || activeZKServerIndex &lt; 0) {<a name="line.334"></a>
-<span class="sourceLineNo">335</span>      return -1;<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>    // Shutdown the current active one<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    NIOServerCnxnFactory standaloneServerFactory =<a name="line.339"></a>
-<span class="sourceLineNo">340</span>      standaloneServerFactoryList.get(activeZKServerIndex);<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    int clientPort = clientPortList.get(activeZKServerIndex);<a name="line.341"></a>
-<span class="sourceLineNo">342</span><a name="line.342"></a>
-<span class="sourceLineNo">343</span>    standaloneServerFactory.shutdown();<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    if (!waitForServerDown(clientPort, connectionTimeout)) {<a name="line.344"></a>
-<span class="sourceLineNo">345</span>      throw new IOException("Waiting for shutdown of standalone server");<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>
-<span class="sourceLineNo">348</span>    zooKeeperServers.get(activeZKServerIndex).getZKDatabase().close();<a name="line.348"></a>
+<span class="sourceLineNo">179</span>    // allow all 4 letter words<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    System.setProperty("zookeeper.4lw.commands.whitelist","*");<a name="line.180"></a>
+<span class="sourceLineNo">181</span>  }<a name="line.181"></a>
+<span class="sourceLineNo">182</span><a name="line.182"></a>
+<span class="sourceLineNo">183</span>  public int startup(File baseDir) throws IOException, InterruptedException {<a name="line.183"></a>
+<span class="sourceLineNo">184</span>    int numZooKeeperServers = clientPortList.size();<a name="line.184"></a>
+<span class="sourceLineNo">185</span>    if (numZooKeeperServers == 0) {<a name="line.185"></a>
+<span class="sourceLineNo">186</span>      numZooKeeperServers = 1; // need at least 1 ZK server for testing<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    }<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    return startup(baseDir, numZooKeeperServers);<a name="line.188"></a>
+<span class="sourceLineNo">189</span>  }<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>   * @param baseDir the base directory to use<a name="line.192"></a>
+<span class="sourceLineNo">193</span>   * @param numZooKeeperServers the number of ZooKeeper servers<a name="line.193"></a>
+<span class="sourceLineNo">194</span>   * @return ClientPort server bound to, -1 if there was a binding problem and we couldn't pick<a name="line.194"></a>
+<span class="sourceLineNo">195</span>   *         another port.<a name="line.195"></a>
+<span class="sourceLineNo">196</span>   * @throws IOException if an operation fails during the startup<a name="line.196"></a>
+<span class="sourceLineNo">197</span>   * @throws InterruptedException if the startup fails<a name="line.197"></a>
+<span class="sourceLineNo">198</span>   */<a name="line.198"></a>
+<span class="sourceLineNo">199</span>  public int startup(File baseDir, int numZooKeeperServers) throws IOException,<a name="line.199"></a>
+<span class="sourceLineNo">200</span>          InterruptedException {<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    if (numZooKeeperServers &lt;= 0) {<a name="line.201"></a>
+<span class="sourceLineNo">202</span>      return -1;<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>    setupTestEnv();<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    shutdown();<a name="line.206"></a>
+<span class="sourceLineNo">207</span><a name="line.207"></a>
+<span class="sourceLineNo">208</span>    int tentativePort = -1; // the seed port<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    int currentClientPort;<a name="line.209"></a>
+<span class="sourceLineNo">210</span><a name="line.210"></a>
+<span class="sourceLineNo">211</span>    // running all the ZK servers<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    for (int i = 0; i &lt; numZooKeeperServers; i++) {<a name="line.212"></a>
+<span class="sourceLineNo">213</span>      File dir = new File(baseDir, "zookeeper_"+i).getAbsoluteFile();<a name="line.213"></a>
+<span class="sourceLineNo">214</span>      createDir(dir);<a name="line.214"></a>
+<span class="sourceLineNo">215</span>      int tickTimeToUse;<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      if (this.tickTime &gt; 0) {<a name="line.216"></a>
+<span class="sourceLineNo">217</span>        tickTimeToUse = this.tickTime;<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      } else {<a name="line.218"></a>
+<span class="sourceLineNo">219</span>        tickTimeToUse = TICK_TIME;<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>      // Set up client port - if we have already had a list of valid ports, use it.<a name="line.222"></a>
+<span class="sourceLineNo">223</span>      if (hasValidClientPortInList(i)) {<a name="line.223"></a>
+<span class="sourceLineNo">224</span>        currentClientPort = clientPortList.get(i);<a name="line.224"></a>
+<span class="sourceLineNo">225</span>      } else {<a name="line.225"></a>
+<span class="sourceLineNo">226</span>        tentativePort = selectClientPort(tentativePort); // update the seed<a name="line.226"></a>
+<span class="sourceLineNo">227</span>        currentClientPort = tentativePort;<a name="line.227"></a>
+<span class="sourceLineNo">228</span>      }<a name="line.228"></a>
+<span class="sourceLineNo">229</span><a name="line.229"></a>
+<span class="sourceLineNo">230</span>      ZooKeeperServer server = new ZooKeeperServer(dir, dir, tickTimeToUse);<a name="line.230"></a>
+<span class="sourceLineNo">231</span>      // Setting {min,max}SessionTimeout defaults to be the same as in Zookeeper<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      server.setMinSessionTimeout(configuration.getInt(<a name="line.232"></a>
+<span class="sourceLineNo">233</span>              "hbase.zookeeper.property.minSessionTimeout", -1));<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      server.setMaxSessionTimeout(configuration.getInt(<a name="line.234"></a>
+<span class="sourceLineNo">235</span>              "hbase.zookeeper.property.maxSessionTimeout", -1));<a name="line.235"></a>
+<span class="sourceLineNo">236</span>      NIOServerCnxnFactory standaloneServerFactory;<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      while (true) {<a name="line.237"></a>
+<span class="sourceLineNo">238</span>        try {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>          standaloneServerFactory = new NIOServerCnxnFactory();<a name="line.239"></a>
+<span class="sourceLineNo">240</span>          standaloneServerFactory.configure(<a name="line.240"></a>
+<span class="sourceLineNo">241</span>            new InetSocketAddress(currentClientPort),<a name="line.241"></a>
+<span class="sourceLineNo">242</span>            configuration.getInt(HConstants.ZOOKEEPER_MAX_CLIENT_CNXNS,<a name="line.242"></a>
+<span class="sourceLineNo">243</span>                    HConstants.DEFAULT_ZOOKEEPER_MAX_CLIENT_CNXNS));<a name="line.243"></a>
+<span class="sourceLineNo">244</span>        } catch (BindException e) {<a name="line.244"></a>
+<span class="sourceLineNo">245</span>          LOG.debug("Failed binding ZK Server to client port: " +<a name="line.245"></a>
+<span class="sourceLineNo">246</span>              currentClientPort, e);<a name="line.246"></a>
+<span class="sourceLineNo">247</span>          // We're told to use some port but it's occupied, fail<a name="line.247"></a>
+<span class="sourceLineNo">248</span>          if (hasValidClientPortInList(i)) {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>            return -1;<a name="line.249"></a>
+<span class="sourceLineNo">250</span>          }<a name="line.250"></a>
+<span class="sourceLineNo">251</span>          // This port is already in use, try to use another.<a name="line.251"></a>
+<span class="sourceLineNo">252</span>          tentativePort = selectClientPort(tentativePort);<a name="line.252"></a>
+<span class="sourceLineNo">253</span>          currentClientPort = tentativePort;<a name="line.253"></a>
+<span class="sourceLineNo">254</span>          continue;<a name="line.254"></a>
+<span class="sourceLineNo">255</span>        }<a name="line.255"></a>
+<span class="sourceLineNo">256</span>        break;<a name="line.256"></a>
+<span class="sourceLineNo">257</span>      }<a name="line.257"></a>
+<span class="sourceLineNo">258</span><a name="line.258"></a>
+<span class="sourceLineNo">259</span>      // Start up this ZK server<a name="line.259"></a>
+<span class="sourceLineNo">260</span>      standaloneServerFactory.startup(server);<a name="line.260"></a>
+<span class="sourceLineNo">261</span>      // Runs a 'stat' against the servers.<a name="line.261"></a>
+<span class="sourceLineNo">262</span>      if (!waitForServerUp(currentClientPort, connectionTimeout)) {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>        throw new IOException("Waiting for startup of standalone server");<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">266</span>      // We have selected a port as a client port.  Update clientPortList if necessary.<a name="line.266"></a>
+<span class="sourceLineNo">267</span>      if (clientPortList.size() &lt;= i) { // it is not in the list, add the port<a name="line.267"></a>
+<span class="sourceLineNo">268</span>        clientPortList.add(currentClientPort);<a name="line.268"></a>
+<span class="sourceLineNo">269</span>      }<a name="line.269"></a>
+<span class="sourceLineNo">270</span>      else if (clientPortList.get(i) &lt;= 0) { // the list has invalid port, update with valid port<a name="line.270"></a>
+<span class="sourceLineNo">271</span>        clientPortList.remove(i);<a name="line.271"></a>
+<span class="sourceLineNo">272</span>        clientPortList.add(i, currentClientPort);<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>      standaloneServerFactoryList.add(standaloneServerFactory);<a name="line.275"></a>
+<span class="sourceLineNo">276</span>      zooKeeperServers.add(server);<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>    // set the first one to be active ZK; Others are backups<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    activeZKServerIndex = 0;<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    started = true;<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    int clientPort = clientPortList.get(activeZKServerIndex);<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    LOG.info("Started MiniZooKeeperCluster and ran successful 'stat' " +<a name="line.283"></a>
+<span class="sourceLineNo">284</span>        "on client port=" + clientPort);<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    return clientPort;<a name="line.285"></a>
+<span class="sourceLineNo">286</span>  }<a name="line.286"></a>
+<span class="sourceLineNo">287</span><a name="line.287"></a>
+<span class="sourceLineNo">288</span>  private void createDir(File dir) throws IOException {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    try {<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      if (!dir.exists()) {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        dir.mkdirs();<a name="line.291"></a>
+<span class="sourceLineNo">292</span>      }<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    } catch (SecurityException e) {<a name="line.293"></a>
+<span class="sourceLineNo">294</span>      throw new IOException("creating dir: " + dir, e);<a name="line.294"></a>
+<span class="sourceLineNo">295</span>    }<a name="line.295"></a>
+<span class="sourceLineNo">296</span>  }<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>   * @throws IOException if waiting for the shutdown of a server fails<a name="line.299"></a>
+<span class="sourceLineNo">300</span>   */<a name="line.300"></a>
+<span class="sourceLineNo">301</span>  public void shutdown() throws IOException {<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    // shut down all the zk servers<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    for (int i = 0; i &lt; standaloneServerFactoryList.size(); i++) {<a name="line.303"></a>
+<span class="sourceLineNo">304</span>      NIOServerCnxnFactory standaloneServerFactory =<a name="line.304"></a>
+<span class="sourceLineNo">305</span>        standaloneServerFactoryList.get(i);<a name="line.305"></a>
+<span class="sourceLineNo">306</span>      int clientPort = clientPortList.get(i);<a name="line.306"></a>
+<span class="sourceLineNo">307</span><a name="line.307"></a>
+<span class="sourceLineNo">308</span>      standaloneServerFactory.shutdown();<a name="line.308"></a>
+<span class="sourceLineNo">309</span>      if (!waitForServerDown(clientPort, connectionTimeout)) {<a name="line.309"></a>
+<span class="sourceLineNo">310</span>        throw new IOException("Waiting for shutdown of standalone server");<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>    standaloneServerFactoryList.clear();<a name="line.313"></a>
+<span class="sourceLineNo">314</span><a name="line.314"></a>
+<span class="sourceLineNo">315</span>    for (ZooKeeperServer zkServer: zooKeeperServers) {<a name="line.315"></a>
+<span class="sourceLineNo">316</span>      //explicitly close ZKDatabase since ZookeeperServer does not close them<a name="line.316"></a>
+<span class="sourceLineNo">317</span>      zkServer.getZKDatabase().close();<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    }<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    zooKeeperServers.clear();<a name="line.319"></a>
+<span class="sourceLineNo">320</span><a name="line.320"></a>
+<span class="sourceLineNo">321</span>    // clear everything<a name="line.321"></a>
+<span class="sourceLineNo">322</span>    if (started) {<a name="line.322"></a>
+<span class="sourceLineNo">323</span>      started = false;<a name="line.323"></a>
+<span class="sourceLineNo">324</span>      activeZKServerIndex = 0;<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      clientPortList.clear();<a name="line.325"></a>
+<span class="sourceLineNo">326</span>      LOG.info("Shutdown MiniZK cluster with all ZK servers");<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>   * @return clientPort return clientPort if there is another ZK backup can run<a name="line.331"></a>
+<span class="sourceLineNo">332</span>   *         when killing the current active; return -1, if there is no backups.<a name="line.332"></a>
+<span class="sourceLineNo">333</span>   * @throws IOException if waiting for the shutdown of a server fails<a name="line.333"></a>
+<span class="sourceLineNo">334</span>   */<a name="line.334"></a>
+<span class="sourceLineNo">335</span>  public int killCurrentActiveZooKeeperServer() throws IOException, InterruptedException {<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    if (!started || activeZKServerIndex &lt; 0) {<a name="line.336"></a>
+<span class="sourceLineNo">337</span>      return -1;<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>    // Shutdown the current active one<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    NIOServerCnxnFactory standaloneServerFactory =<a name="line.341"></a>
+<span class="sourceLineNo">342</span>      standaloneServerFactoryList.get(activeZKServerIndex);<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    int clientPort = clientPortList.get(activeZKServerIndex);<a name="line.343"></a>
+<span class="sourceLineNo">344</span><a name="line.344"></a>
+<span class="sourceLineNo">345</span>    standaloneServerFactory.shutdown();<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    if (!waitForServerDown(clientPort, connectionTimeout)) {<a name="line.346"></a>
+<span class="sourceLineNo">347</span>      throw new IOException("Waiting for shutdown of standalone server");<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>    // remove the current active zk server<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    standaloneServerFactoryList.remove(activeZKServerIndex);<a name="line.351"></a>
-<span class="sourceLineNo">352</span>    clientPortList.remove(activeZKServerIndex);<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    zooKeeperServers.remove(activeZKServerIndex);<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    LOG.info("Kill the current active ZK servers in the cluster " +<a name="line.354"></a>
-<span class="sourceLineNo">355</span>        "on client port: " + clientPort);<a name="line.355"></a>
-<span class="sourceLineNo">356</span><a name="line.356"></a>
-<span class="sourceLineNo">357</span>    if (standaloneServerFactoryList.isEmpty()) {<a name="line.357"></a>
-<span class="sourceLineNo">358</span>      // there is no backup servers;<a name="line.358"></a>
-<span class="sourceLineNo">359</span>      return -1;<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    }<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    clientPort = clientPortList.get(activeZKServerIndex);<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    LOG.info("Activate a backup zk server in the cluster " +<a name="line.362"></a>
-<span class="sourceLineNo">363</span>        "on client port: " + clientPort);<a name="line.363"></a>
-<span class="sourceLineNo">364</span>    // return the next back zk server's port<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    return clientPort;<a name="line.365"></a>
-<span class="sourceLineNo">366</span>  }<a name="line.366"></a>
-<span class="sourceLineNo">367</span><a name="line.367"></a>
-<span class="sourceLineNo">368</span>  /**<a name="line.368"></a>
-<span class="sourceLineNo">369</span>   * Kill one back up ZK servers.<a name="line.369"></a>
-<span class="sourceLineNo">370</span>   *<a name="line.370"></a>
-<span class="sourceLineNo">371</span>   * @throws IOException if waiting for the shutdown of a server fails<a name="line.371"></a>
-<span class="sourceLineNo">372</span>   */<a name="line.372"></a>
-<span class="sourceLineNo">373</span>  public void killOneBackupZooKeeperServer() throws IOException, InterruptedException {<a name="line.373"></a>
-<span class="sourceLineNo">374</span>    if (!started || activeZKServerIndex &lt; 0 || standaloneServerFactoryList.size() &lt;= 1) {<a name="line.374"></a>
-<span class="sourceLineNo">375</span>      return ;<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>    int backupZKServerIndex = activeZKServerIndex+1;<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    // Shutdown the current active one<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    NIOServerCnxnFactory standaloneServerFactory =<a name="line.380"></a>
-<span class="sourceLineNo">381</span>      standaloneServerFactoryList.get(backupZKServerIndex);<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    int clientPort = clientPortList.get(backupZKServerIndex);<a name="line.382"></a>
-<span class="sourceLineNo">383</span><a name="line.383"></a>
-<span class="sourceLineNo">384</span>    standaloneServerFactory.shutdown();<a name="line.384"></a>
-<span class="sourceLineNo">385</span>    if (!waitForServerDown(clientPort, connectionTimeout)) {<a name="line.385"></a>
-<span class="sourceLineNo">386</span>      throw new IOException("Waiting for shutdown of standalone server");<a name="line.386"></a>
-<span class="sourceLineNo">387</span>    }<a name="line.387"></a>
-<span class="sourceLineNo">388</span><a name="line.388"></a>
-<span class="sourceLineNo">389</span>    zooKeeperServers.get(backupZKServerIndex).getZKDatabase().close();<a name="line.389"></a>
+<span class="sourceLineNo">350</span>    zooKeeperServers.get(activeZKServerIndex).getZKDatabase().close();<a name="line.350"></a>
+<span class="sourceLineNo">351</span><a name="line.351"></a>
+<span class="sourceLineNo">352</span>    // remove the current active zk server<a name="line.352"></a>
+<span class="sourceLineNo">353</span>    standaloneServerFactoryList.remove(activeZKServerIndex);<a name="line.353"></a>
+<span class="sourceLineNo">354</span>    clientPortList.remove(activeZKServerIndex);<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    zooKeeperServers.remove(activeZKServerIndex);<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    LOG.info("Kill the current active ZK servers in the cluster " +<a name="line.356"></a>
+<span class="sourceLineNo">357</span>        "on client port: " + clientPort);<a name="line.357"></a>
+<span class="sourceLineNo">358</span><a name="line.358"></a>
+<span class="sourceLineNo">359</span>    if (standaloneServerFactoryList.isEmpty()) {<a name="line.359"></a>
+<span class="sourceLineNo">360</span>      // there is no backup servers;<a name="line.360"></a>
+<span class="sourceLineNo">361</span>      return -1;<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    }<a name="line.362"></a>
+<span class="sourceLineNo">363</span>    clientPort = clientPortList.get(activeZKServerIndex);<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    LOG.info("Activate a backup zk server in the cluster " +<a name="line.364"></a>
+<span class="sourceLineNo">365</span>        "on client port: " + clientPort);<a name="line.365"></a>
+<span class="sourceLineNo">366</span>    // return the next back zk server's port<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    return clientPort;<a name="line.367"></a>
+<span class="sourceLineNo">368</span>  }<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>   * Kill one back up ZK servers.<a name="line.371"></a>
+<span class="sourceLineNo">372</span>   *<a name="line.372"></a>
+<span class="sourceLineNo">373</span>   * @throws IOException if waiting for the shutdown of a server fails<a name="line.373"></a>
+<span class="sourceLineNo">374</span>   */<a name="line.374"></a>
+<span class="sourceLineNo">375</span>  public void killOneBackupZooKeeperServer() throws IOException, InterruptedException {<a name="line.375"></a>
+<span class="sourceLineNo">376</span>    if (!started || activeZKServerIndex &lt; 0 || standaloneServerFactoryList.size() &lt;= 1) {<a name="line.376"></a>
+<span class="sourceLineNo">377</span>      return ;<a name="line.377"></a>
+<span class="sourceLineNo">378</span>    }<a name="line.378"></a>
+<span class="sourceLineNo">379</span><a name="line.379"></a>
+<span class="sourceLineNo">380</span>    int backupZKServerIndex = activeZKServerIndex+1;<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    // Shutdown the current active one<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    NIOServerCnxnFactory standaloneServerFactory =<a name="line.382"></a>
+<span class="sourceLineNo">383</span>      standaloneServerFactoryList.get(backupZKServerIndex);<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    int clientPort = clientPortList.get(backupZKServerIndex);<a name="line.384"></a>
+<span class="sourceLineNo">385</span><a name="line.385"></a>
+<span class="sourceLineNo">386</span>    standaloneServerFactory.shutdown();<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    if (!waitForServerDown(clientPort, connectionTimeout)) {<a name="line.387"></a>
+<span class="sourceLineNo">388</span>      throw new IOException("Waiting for shutdown of standalone server");<a name="line.388"></a>
+<span class="sourceLineNo">389</span>    }<a name="line.389"></a>
 <span class="sourceLineNo">390</span><a name="line.390"></a>
-<span class="sourceLineNo">391</span>    // remove this backup zk server<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    standaloneServerFactoryList.remove(backupZKServerIndex);<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    clientPortList.remove(backupZKServerIndex);<a name="line.393"></a>
-<span class="sourceLineNo">394</span>    zooKeeperServers.remove(backupZKServerIndex);<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    LOG.info("Kill one backup ZK servers in the cluster " +<a name="line.395"></a>
-<span class="sourceLineNo">396</span>        "on client port: " + clientPort);<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>  // XXX: From o.a.zk.t.ClientBase<a name="line.399"></a>
-<span class="sourceLineNo">400</span>  private static boolean waitForServerDown(int port, long timeout) throws IOException {<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    long start = System.currentTimeMillis();<a name="line.401"></a>
-<span class="sourceLineNo">402</span>    while (true) {<a name="line.402"></a>
-<span class="sourceLineNo">403</span>      try {<a name="line.403"></a>
-<span class="sourceLineNo">404</span>        Socket sock = new Socket("localhost", port);<a name="line.404"></a>
-<span class="sourceLineNo">405</span>        try {<a name="line.405"></a>
-<span class="sourceLineNo">406</span>          OutputStream outstream = sock.getOutputStream();<a name="line.406"></a>
-<span class="sourceLineNo">407</span>          outstream.write("stat".getBytes());<a name="line.407"></a>
-<span class="sourceLineNo">408</span>          outstream.flush();<a name="line.408"></a>
-<span class="sourceLineNo">409</span>        } finally {<a name="line.409"></a>
-<span class="sourceLineNo">410</span>          sock.close();<a name="line.410"></a>
-<span class="sourceLineNo">411</span>        }<a name="line.411"></a>
-<span class="sourceLineNo">412</span>      } catch (IOException e) {<a name="line.412"></a>
-<span class="sourceLineNo">413</span>        return true;<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>      if (System.currentTimeMillis() &gt; start + timeout) {<a name="line.416"></a>
-<span class="sourceLineNo">417</span>        break;<a name="line.417"></a>
-<span class="sourceLineNo">418</span>      }<a name="line.418"></a>
-<span class="sourceLineNo">419</span>      try {<a name="line.419"></a>
-<span class="sourceLineNo">420</span>        Thread.sleep(250);<a name="line.420"></a>
-<span class="sourceLineNo">421</span>      } catch (InterruptedException e) {<a name="line.421"></a>
-<span class="sourceLineNo">422</span>        throw (InterruptedIOException)new InterruptedIOException().initCause(e);<a name="line.422"></a>
-<span class="sourceLineNo">423</span>      }<a name="line.423"></a>
-<span class="sourceLineNo">424</span>    }<a name="line.424"></a>
-<span class="sourceLineNo">425</span>    return false;<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>  // XXX: From o.a.zk.t.ClientBase<a name="line.428"></a>
-<span class="sourceLineNo">429</span>  private static boolean waitForServerUp(int port, long timeout) throws IOException {<a name="line.429"></a>
-<span class="sourceLineNo">430</span>    long start = System.currentTimeMillis();<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    while (true) {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>      try {<a name="line.432"></a>
-<span class="sourceLineNo">433</span>        Socket sock = new Socket("localhost", port);<a name="line.433"></a>
-<span class="sourceLineNo">434</span>        BufferedReader reader = null;<a name="line.434"></a>
-<span class="sourceLineNo">435</span>        try {<a name="line.435"></a>
-<span class="sourceLineNo">436</span>          OutputStream outstream = sock.getOutputStream();<a name="line.436"></a>
-<span class="sourceLineNo">437</span>          outstream.write("stat".getBytes());<a name="line.437"></a>
-<span class="sourceLineNo">438</span>          outstream.flush();<a name="line.438"></a>
-<span class="sourceLineNo">439</span><a name="line.439"></a>
-<span class="sourceLineNo">440</span>          Reader isr = new InputStreamReader(sock.getInputStream());<a name="line.440"></a>
-<span class="sourceLineNo">441</span>          reader = new BufferedReader(isr);<a name="line.441"></a>
-<span class="sourceLineNo">442</span>          String line = reader.readLine();<a name="line.442"></a>
-<span class="sourceLineNo">443</span>          if (line != null &amp;&amp; line.startsWith("Zookeeper version:")) {<a name="line.443"></a>
-<span class="sourceLineNo">444</span>            return true;<a name="line.444"></a>
-<span class="sourceLineNo">445</span>          }<a name="line.445"></a>
-<span class="sourceLineNo">446</span>        } finally {<a name="line.446"></a>
-<span class="sourceLineNo">447</span>          sock.close();<a name="line.447"></a>
-<span class="sourceLineNo">448</span>          if (reader != null) {<a name="line.448"></a>
-<span class="sourceLineNo">449</span>            reader.close();<a name="line.449"></a>
-<span class="sourceLineNo">450</span>          }<a name="line.450"></a>
-<span class="sourceLineNo">451</span>        }<a name="line.451"></a>
-<span class="sourceLineNo">452</span>      } catch (IOException e) {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>        // ignore as this is expected<a name="line.453"></a>
-<span class="sourceLineNo">454</span>        LOG.info("server localhost:" + port + " not up " + e);<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>      if (System.currentTimeMillis() &gt; start + timeout) {<a name="line.457"></a>
-<span class="sourceLineNo">458</span>        break;<a name="line.458"></a>
-<span class="sourceLineNo">459</span>      }<a name="line.459"></a>
-<span class="sourceLineNo">460</span>      try {<a name="line.460"></a>
-<span class="sourceLineNo">461</span>        Thread.sleep(250);<a name="line.461"></a>
-<span class="sourceLineNo">462</span>      } catch (InterruptedException e) {<a name="line.462"></a>
-<span class="sourceLineNo">463</span>        throw (InterruptedIOException)new InterruptedIOException().initCause(e);<a name="line.463"></a>
-<span class="sourceLineNo">464</span>      }<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    }<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    return false;<a name="line.466"></a>
-<span class="sourceLineNo">467</span>  }<a name="line.467"></a>
-<span class="sourceLineNo">468</span><a name="line.468"></a>
-<span class="sourceLineNo">469</span>  public int getClientPort() {<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    return activeZKServerIndex &lt; 0 || activeZKServerIndex &gt;= clientPortList.size() ? -1<a name="line.470"></a>
-<span class="sourceLineNo">471</span>        : clientPortList.get(activeZKServerIndex);<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>  List&lt;ZooKeeperServer&gt; getZooKeeperServers() {<a name="line.474"></a>
-<span class="sourceLineNo">475</span>    return zooKeeperServers;<a name="line.475"></a>
-<span class="sourceLineNo">476</span>  }<a name="line.476"></a>
-<span class="sourceLineNo">477</span>}<a name="line.477"></a>
+<span class="sourceLineNo">391</span>    zooKeeperServers.get(backupZKServerIndex).getZKDatabase().close();<a name="line.391"></a>
+<span class="sourceLineNo">392</span><a name="line.392"></a>
+<span class="sourceLineNo">393</span>    // remove this backup zk server<a name="line.393"></a>
+<span class="sourceLineNo">394</span>    standaloneServerFactoryList.remove(backupZKServerIndex);<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    clientPortList.remove(backupZKServerIndex);<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    zooKeeperServers.remove(backupZKServerIndex);<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    LOG.info("Kill one backup ZK servers in the cluster " +<a name="line.397"></a>
+<span class="sourceLineNo">398</span>        "on client port: " + clientPort);<a name="line.398"></a>
+<span class="sourceLineNo">399</span>  }<a name="line.399"></a>
+<span class="sourceLineNo">400</span><a name="line.400"></a>
+<span class="sourceLineNo">401</span>  // XXX: From o.a.zk.t.ClientBase<a name="line.401"></a>
+<span class="sourceLineNo">402</span>  private static boolean waitForServerDown(int port, long timeout) throws IOException {<a name="line.402"></a>
+<span class="sourceLineNo">403</span>    long start = System.currentTimeMillis();<a name="line.403"></a>
+<span class="sourceLineNo">404</span>    while (true) {<a name="line.404"></a>
+<span class="sourceLineNo">405</span>      try {<a name="line.405"></a>
+<span class="sourceLineNo">406</span>        Socket sock = new Socket("localhost", port);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>        try {<a name="line.407"></a>
+<span class="sourceLineNo">408</span>          OutputStream outstream = sock.getOutputStream();<a name="line.408"></a>
+<span class="sourceLineNo">409</span>          outstream.write("stat".getBytes());<a name="line.409"></a>
+<span class="sourceLineNo">410</span>          outstream.flush();<a name="line.410"></a>
+<span class="sourceLineNo">411</span>        } finally {<a name="line.411"></a>
+<span class="sourceLineNo">412</span>          sock.close();<a name="line.412"></a>
+<span class="sourceLineNo">413</span>        }<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      } catch (IOException e) {<a name="line.414"></a>
+<span class="sourceLineNo">415</span>        return true;<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>      if (System.currentTimeMillis() &gt; start + timeout) {<a name="line.418"></a>
+<span class="sourceLineNo">419</span>        break;<a name="line.419"></a>
+<span class="sourceLineNo">420</span>      }<a name="line.420"></a>
+<span class="sourceLineNo">421</span>      try {<a name="line.421"></a>
+<span class="sourceLineNo">422</span>        Thread.sleep(250);<a name="line.422"></a>
+<span class="sourceLineNo">423</span>      } catch (InterruptedException e) {<a name="line.423"></a>
+<span class="sourceLineNo">424</span>        throw (InterruptedIOException)new InterruptedIOException().initCause(e);<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>    return false;<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>  // XXX: From o.a.zk.t.ClientBase<a name="line.430"></a>
+<span class="sourceLineNo">431</span>  private static boolean waitForServerUp(int port, long timeout) throws IOException {<a name="line.431"></a>
+<span class="sourceLineNo">432</span>    long start = System.currentTimeMillis();<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    while (true) {<a name="line.433"></a>
+<span class="sourceLineNo">434</span>      try {<a name="line.434"></a>
+<span class="sourceLineNo">435</span>        Socket sock = new Socket("localhost", port);<a name="line.435"></a>
+<span class="sourceLineNo">436</span>        BufferedReader reader = null;<a name="line.436"></a>
+<span class="sourceLineNo">437</span>        try {<a name="line.437"></a>
+<span class="sourceLineNo">438</span>          OutputStream outstream = sock.getOutputStream();<a name="line.438"></a>
+<span class="sourceLineNo">439</span>          outstream.write("stat".getBytes());<a name="line.439"></a>
+<span class="sourceLineNo">440</span>          outstream.flush();<a name="line.440"></a>
+<span class="sourceLineNo">441</span><a name="line.441"></a>
+<span class="sourceLineNo">442</span>          Reader isr = new InputStreamReader(sock.getInputStream());<a name="line.442"></a>
+<span class="sourceLineNo">443</span>          reader = new BufferedReader(isr);<a name="line.443"></a>
+<span class="sourceLineNo">444</span>          String line = reader.readLine();<a name="line.444"></a>
+<span class="sourceLineNo">445</span>          if (line != null &amp;&amp; line.startsWith("Zookeeper version:")) {<a name="line.445"></a>
+<span class="sourceLineNo">446</span>            return true;<a name="line.446"></a>
+<span class="sourceLineNo">447</span>          }<a name="line.447"></a>
+<span class="sourceLineNo">448</span>        } finally {<a name="line.448"></a>
+<span class="sourceLineNo">449</span>          sock.close();<a name="line.449"></a>
+<span class="sourceLineNo">450</span>          if (reader != null) {<a name="line.450"></a>
+<span class="sourceLineNo">451</span>            reader.close();<a name="line.451"></a>
+<span class="sourceLineNo">452</span>          }<a name="line.452"></a>
+<span class="sourceLineNo">453</span>        }<a name="line.453"></a>
+<span class="sourceLineNo">454</span>      } catch (IOException e) {<a name="line.454"></a>
+<span class="sourceLineNo">455</span>        // ignore as this is expected<a name="line.455"></a>
+<span class="sourceLineNo">456</span>        LOG.info("server localhost:" + port + " not up " + e);<a name="line.456"></a>
+<span class="sourceLineNo">457</span>      }<a name="line.457"></a>
+<span class="sourceLineNo">458</span><a name="line.458"></a>
+<span class="sourceLineNo">459</span>      if (System.currentTimeMillis() &gt; start + timeout) {<a name="line.459"></a>
+<span class="sourceLineNo">460</span>        break;<a name="line.460"></a>
+<span class="sourceLineNo">461</span>      }<a name="line.461"></a>
+<span class="sourceLineNo">462</span>      try {<a name="line.462"></a>
+<span class="sourceLineNo">463</span>        Thread.sleep(250);<a name="line.463"></a>
+<span class="sourceLineNo">464</span>      } catch (InterruptedException e) {<a name="line.464"></a>
+<span class="sourceLineNo">465</span>        throw (InterruptedIOException)new InterruptedIOException().initCause(e);<a name="line.465"></a>
+<span class="sourceLineNo">466</span>      }<a name="line.466"></a>
+<span class="sourceLineNo">467</span>    }<a name="line.467"></a>
+<span class="sourceLineNo">468</span>    return false;<a name="line.468"></a>
+<span class="sourceLineNo">469</span>  }<a name="line.469"></a>
+<span class="sourceLineNo">470</span><a name="line.470"></a>
+<span class="sourceLineNo">471</span>  public int getClientPort() {<a name="line.471"></a>
+<span class="sourceLineNo">472</span>    return activeZKServerIndex &lt; 0 || activeZKServerIndex &gt;= clientPortList.size() ? -1<a name="line.472"></a>
+<span class="sourceLineNo">473</span>        : clientPortList.get(activeZKServerIndex);<a name="line.473"></a>
+<span class="sourceLineNo">474</span>  }<a name="line.474"></a>
+<span class="sourceLineNo">475</span><a name="line.475"></a>
+<span class="sourceLineNo">476</span>  List&lt;ZooKeeperServer&gt; getZooKeeperServers() {<a name="line.476"></a>
+<span class="sourceLineNo">477</span>    return zooKeeperServers;<a name="line.477"></a>
+<span class="sourceLineNo">478</span>  }<a name="line.478"></a>
+<span class="sourceLineNo">479</span>}<a name="line.479"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/book.html
----------------------------------------------------------------------
diff --git a/book.html b/book.html
index 60ca6f1..21103ca 100644
--- a/book.html
+++ b/book.html
@@ -41284,7 +41284,7 @@ org/apache/hadoop/hbase/security/access/AccessControlClient.revoke:(Lorg/apache/
 <div id="footer">
 <div id="footer-text">
 Version 3.0.0-SNAPSHOT<br>
-Last updated 2018-09-21 14:33:34 UTC
+Last updated 2018-09-22 14:32:13 UTC
 </div>
 </div>
 </body>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bbe517ae/bulk-loads.html
----------------------------------------------------------------------
diff --git a/bulk-loads.html b/bulk-loads.html
index 5a12b16..e22314e 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="20180921" />
+    <meta name="Date-Revision-yyyymmdd" content="20180922" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Bulk Loads in Apache HBase (TM)
@@ -306,7 +306,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: 2018-09-21</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-22</li>
             </p>
                 </div>