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/06/20 04:25:17 UTC
[01/51] [partial] hbase-site git commit: Published site at
9101fc246f86445006bfbcdfda5cc495016dc280.
Repository: hbase-site
Updated Branches:
refs/heads/asf-site 630414573 -> 65565d77b
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html
index c1b4533..a0c568b 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html
@@ -136,220 +136,221 @@
<span class="sourceLineNo">128</span> public void updateRegionLocation(RegionStates.RegionStateNode regionStateNode)<a name="line.128"></a>
<span class="sourceLineNo">129</span> throws IOException {<a name="line.129"></a>
<span class="sourceLineNo">130</span> if (regionStateNode.getRegionInfo().isMetaRegion()) {<a name="line.130"></a>
-<span class="sourceLineNo">131</span> updateMetaLocation(regionStateNode.getRegionInfo(), regionStateNode.getRegionLocation());<a name="line.131"></a>
-<span class="sourceLineNo">132</span> } else {<a name="line.132"></a>
-<span class="sourceLineNo">133</span> long openSeqNum = regionStateNode.getState() == State.OPEN ?<a name="line.133"></a>
-<span class="sourceLineNo">134</span> regionStateNode.getOpenSeqNum() : HConstants.NO_SEQNUM;<a name="line.134"></a>
-<span class="sourceLineNo">135</span> updateUserRegionLocation(regionStateNode.getRegionInfo(), regionStateNode.getState(),<a name="line.135"></a>
-<span class="sourceLineNo">136</span> regionStateNode.getRegionLocation(), regionStateNode.getLastHost(), openSeqNum,<a name="line.136"></a>
-<span class="sourceLineNo">137</span> // The regionStateNode may have no procedure in a test scenario; allow for this.<a name="line.137"></a>
-<span class="sourceLineNo">138</span> regionStateNode.getProcedure() != null?<a name="line.138"></a>
-<span class="sourceLineNo">139</span> regionStateNode.getProcedure().getProcId(): Procedure.NO_PROC_ID);<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> private void updateMetaLocation(final RegionInfo regionInfo, final ServerName serverName)<a name="line.143"></a>
-<span class="sourceLineNo">144</span> throws IOException {<a name="line.144"></a>
-<span class="sourceLineNo">145</span> try {<a name="line.145"></a>
-<span class="sourceLineNo">146</span> MetaTableLocator.setMetaLocation(master.getZooKeeper(), serverName,<a name="line.146"></a>
-<span class="sourceLineNo">147</span> regionInfo.getReplicaId(), State.OPEN);<a name="line.147"></a>
-<span class="sourceLineNo">148</span> } catch (KeeperException e) {<a name="line.148"></a>
-<span class="sourceLineNo">149</span> throw new IOException(e);<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><a name="line.152"></a>
-<span class="sourceLineNo">153</span> private void updateUserRegionLocation(final RegionInfo regionInfo, final State state,<a name="line.153"></a>
-<span class="sourceLineNo">154</span> final ServerName regionLocation, final ServerName lastHost, final long openSeqNum,<a name="line.154"></a>
-<span class="sourceLineNo">155</span> final long pid)<a name="line.155"></a>
-<span class="sourceLineNo">156</span> throws IOException {<a name="line.156"></a>
-<span class="sourceLineNo">157</span> long time = EnvironmentEdgeManager.currentTime();<a name="line.157"></a>
-<span class="sourceLineNo">158</span> final int replicaId = regionInfo.getReplicaId();<a name="line.158"></a>
-<span class="sourceLineNo">159</span> final Put put = new Put(MetaTableAccessor.getMetaKeyForRegion(regionInfo), time);<a name="line.159"></a>
-<span class="sourceLineNo">160</span> MetaTableAccessor.addRegionInfo(put, regionInfo);<a name="line.160"></a>
-<span class="sourceLineNo">161</span> final StringBuilder info =<a name="line.161"></a>
-<span class="sourceLineNo">162</span> new StringBuilder("pid=").append(pid).append(" updating hbase:meta row=")<a name="line.162"></a>
-<span class="sourceLineNo">163</span> .append(regionInfo.getEncodedName()).append(", regionState=").append(state);<a name="line.163"></a>
-<span class="sourceLineNo">164</span> if (openSeqNum >= 0) {<a name="line.164"></a>
-<span class="sourceLineNo">165</span> Preconditions.checkArgument(state == State.OPEN && regionLocation != null,<a name="line.165"></a>
-<span class="sourceLineNo">166</span> "Open region should be on a server");<a name="line.166"></a>
-<span class="sourceLineNo">167</span> MetaTableAccessor.addLocation(put, regionLocation, openSeqNum, replicaId);<a name="line.167"></a>
-<span class="sourceLineNo">168</span> // only update replication barrier for default replica<a name="line.168"></a>
-<span class="sourceLineNo">169</span> if (regionInfo.getReplicaId() == RegionInfo.DEFAULT_REPLICA_ID &&<a name="line.169"></a>
-<span class="sourceLineNo">170</span> hasGlobalReplicationScope(regionInfo.getTable())) {<a name="line.170"></a>
-<span class="sourceLineNo">171</span> MetaTableAccessor.addReplicationBarrier(put, openSeqNum);<a name="line.171"></a>
-<span class="sourceLineNo">172</span> info.append(", repBarrier=").append(openSeqNum);<a name="line.172"></a>
-<span class="sourceLineNo">173</span> }<a name="line.173"></a>
-<span class="sourceLineNo">174</span> info.append(", openSeqNum=").append(openSeqNum);<a name="line.174"></a>
-<span class="sourceLineNo">175</span> info.append(", regionLocation=").append(regionLocation);<a name="line.175"></a>
-<span class="sourceLineNo">176</span> } else if (regionLocation != null && !regionLocation.equals(lastHost)) {<a name="line.176"></a>
-<span class="sourceLineNo">177</span> // Ideally, if no regionLocation, write null to the hbase:meta but this will confuse clients<a name="line.177"></a>
-<span class="sourceLineNo">178</span> // currently; they want a server to hit. TODO: Make clients wait if no location.<a name="line.178"></a>
-<span class="sourceLineNo">179</span> put.add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.179"></a>
-<span class="sourceLineNo">180</span> .setRow(put.getRow())<a name="line.180"></a>
-<span class="sourceLineNo">181</span> .setFamily(HConstants.CATALOG_FAMILY)<a name="line.181"></a>
-<span class="sourceLineNo">182</span> .setQualifier(getServerNameColumn(replicaId))<a name="line.182"></a>
-<span class="sourceLineNo">183</span> .setTimestamp(put.getTimestamp())<a name="line.183"></a>
-<span class="sourceLineNo">184</span> .setType(Cell.Type.Put)<a name="line.184"></a>
-<span class="sourceLineNo">185</span> .setValue(Bytes.toBytes(regionLocation.getServerName()))<a name="line.185"></a>
-<span class="sourceLineNo">186</span> .build());<a name="line.186"></a>
-<span class="sourceLineNo">187</span> info.append(", regionLocation=").append(regionLocation);<a name="line.187"></a>
-<span class="sourceLineNo">188</span> }<a name="line.188"></a>
-<span class="sourceLineNo">189</span> put.add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.189"></a>
-<span class="sourceLineNo">190</span> .setRow(put.getRow())<a name="line.190"></a>
-<span class="sourceLineNo">191</span> .setFamily(HConstants.CATALOG_FAMILY)<a name="line.191"></a>
-<span class="sourceLineNo">192</span> .setQualifier(getStateColumn(replicaId))<a name="line.192"></a>
-<span class="sourceLineNo">193</span> .setTimestamp(put.getTimestamp())<a name="line.193"></a>
-<span class="sourceLineNo">194</span> .setType(Cell.Type.Put)<a name="line.194"></a>
-<span class="sourceLineNo">195</span> .setValue(Bytes.toBytes(state.name()))<a name="line.195"></a>
-<span class="sourceLineNo">196</span> .build());<a name="line.196"></a>
-<span class="sourceLineNo">197</span> LOG.info(info.toString());<a name="line.197"></a>
-<span class="sourceLineNo">198</span> updateRegionLocation(regionInfo, state, put);<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> private void updateRegionLocation(RegionInfo regionInfo, State state, Put put)<a name="line.201"></a>
-<span class="sourceLineNo">202</span> throws IOException {<a name="line.202"></a>
-<span class="sourceLineNo">203</span> try (Table table = master.getConnection().getTable(TableName.META_TABLE_NAME)) {<a name="line.203"></a>
-<span class="sourceLineNo">204</span> table.put(put);<a name="line.204"></a>
-<span class="sourceLineNo">205</span> } catch (IOException e) {<a name="line.205"></a>
-<span class="sourceLineNo">206</span> // TODO: Revist!!!! Means that if a server is loaded, then we will abort our host!<a name="line.206"></a>
-<span class="sourceLineNo">207</span> // In tests we abort the Master!<a name="line.207"></a>
-<span class="sourceLineNo">208</span> String msg = String.format("FAILED persisting region=%s state=%s",<a name="line.208"></a>
-<span class="sourceLineNo">209</span> regionInfo.getShortNameToLog(), state);<a name="line.209"></a>
-<span class="sourceLineNo">210</span> LOG.error(msg, e);<a name="line.210"></a>
-<span class="sourceLineNo">211</span> master.abort(msg, e);<a name="line.211"></a>
-<span class="sourceLineNo">212</span> throw e;<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><a name="line.215"></a>
-<span class="sourceLineNo">216</span> private long getOpenSeqNumForParentRegion(RegionInfo region) throws IOException {<a name="line.216"></a>
-<span class="sourceLineNo">217</span> MasterFileSystem mfs = master.getMasterFileSystem();<a name="line.217"></a>
-<span class="sourceLineNo">218</span> long maxSeqId =<a name="line.218"></a>
-<span class="sourceLineNo">219</span> WALSplitter.getMaxRegionSequenceId(mfs.getFileSystem(), mfs.getRegionDir(region));<a name="line.219"></a>
-<span class="sourceLineNo">220</span> return maxSeqId > 0 ? maxSeqId + 1 : HConstants.NO_SEQNUM;<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> // Update Region Splitting State helpers<a name="line.224"></a>
-<span class="sourceLineNo">225</span> // ============================================================================================<a name="line.225"></a>
-<span class="sourceLineNo">226</span> public void splitRegion(RegionInfo parent, RegionInfo hriA, RegionInfo hriB,<a name="line.226"></a>
-<span class="sourceLineNo">227</span> ServerName serverName) throws IOException {<a name="line.227"></a>
-<span class="sourceLineNo">228</span> TableDescriptor htd = getTableDescriptor(parent.getTable());<a name="line.228"></a>
-<span class="sourceLineNo">229</span> long parentOpenSeqNum = HConstants.NO_SEQNUM;<a name="line.229"></a>
-<span class="sourceLineNo">230</span> if (htd.hasGlobalReplicationScope()) {<a name="line.230"></a>
-<span class="sourceLineNo">231</span> parentOpenSeqNum = getOpenSeqNumForParentRegion(parent);<a name="line.231"></a>
-<span class="sourceLineNo">232</span> }<a name="line.232"></a>
-<span class="sourceLineNo">233</span> MetaTableAccessor.splitRegion(master.getConnection(), parent, parentOpenSeqNum, hriA, hriB,<a name="line.233"></a>
-<span class="sourceLineNo">234</span> serverName, getRegionReplication(htd));<a name="line.234"></a>
-<span class="sourceLineNo">235</span> }<a name="line.235"></a>
-<span class="sourceLineNo">236</span><a name="line.236"></a>
-<span class="sourceLineNo">237</span> // ============================================================================================<a name="line.237"></a>
-<span class="sourceLineNo">238</span> // Update Region Merging State helpers<a name="line.238"></a>
-<span class="sourceLineNo">239</span> // ============================================================================================<a name="line.239"></a>
-<span class="sourceLineNo">240</span> public void mergeRegions(RegionInfo child, RegionInfo hriA, RegionInfo hriB,<a name="line.240"></a>
-<span class="sourceLineNo">241</span> ServerName serverName) throws IOException {<a name="line.241"></a>
-<span class="sourceLineNo">242</span> TableDescriptor htd = getTableDescriptor(child.getTable());<a name="line.242"></a>
-<span class="sourceLineNo">243</span> long regionAOpenSeqNum = -1L;<a name="line.243"></a>
-<span class="sourceLineNo">244</span> long regionBOpenSeqNum = -1L;<a name="line.244"></a>
-<span class="sourceLineNo">245</span> if (htd.hasGlobalReplicationScope()) {<a name="line.245"></a>
-<span class="sourceLineNo">246</span> regionAOpenSeqNum = getOpenSeqNumForParentRegion(hriA);<a name="line.246"></a>
-<span class="sourceLineNo">247</span> regionBOpenSeqNum = getOpenSeqNumForParentRegion(hriB);<a name="line.247"></a>
-<span class="sourceLineNo">248</span> }<a name="line.248"></a>
-<span class="sourceLineNo">249</span> MetaTableAccessor.mergeRegions(master.getConnection(), child, hriA, regionAOpenSeqNum, hriB,<a name="line.249"></a>
-<span class="sourceLineNo">250</span> regionBOpenSeqNum, serverName, getRegionReplication(htd));<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> // ============================================================================================<a name="line.253"></a>
-<span class="sourceLineNo">254</span> // Delete Region State helpers<a name="line.254"></a>
-<span class="sourceLineNo">255</span> // ============================================================================================<a name="line.255"></a>
-<span class="sourceLineNo">256</span> public void deleteRegion(final RegionInfo regionInfo) throws IOException {<a name="line.256"></a>
-<span class="sourceLineNo">257</span> deleteRegions(Collections.singletonList(regionInfo));<a name="line.257"></a>
-<span class="sourceLineNo">258</span> }<a name="line.258"></a>
-<span class="sourceLineNo">259</span><a name="line.259"></a>
-<span class="sourceLineNo">260</span> public void deleteRegions(final List<RegionInfo> regions) throws IOException {<a name="line.260"></a>
-<span class="sourceLineNo">261</span> MetaTableAccessor.deleteRegions(master.getConnection(), regions);<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> // ==========================================================================<a name="line.264"></a>
-<span class="sourceLineNo">265</span> // Table Descriptors helpers<a name="line.265"></a>
-<span class="sourceLineNo">266</span> // ==========================================================================<a name="line.266"></a>
-<span class="sourceLineNo">267</span> private boolean hasGlobalReplicationScope(TableName tableName) throws IOException {<a name="line.267"></a>
-<span class="sourceLineNo">268</span> return hasGlobalReplicationScope(getTableDescriptor(tableName));<a name="line.268"></a>
-<span class="sourceLineNo">269</span> }<a name="line.269"></a>
-<span class="sourceLineNo">270</span><a name="line.270"></a>
-<span class="sourceLineNo">271</span> private boolean hasGlobalReplicationScope(TableDescriptor htd) {<a name="line.271"></a>
-<span class="sourceLineNo">272</span> return htd != null ? htd.hasGlobalReplicationScope() : false;<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 int getRegionReplication(TableDescriptor htd) {<a name="line.275"></a>
-<span class="sourceLineNo">276</span> return htd != null ? htd.getRegionReplication() : 1;<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> private TableDescriptor getTableDescriptor(TableName tableName) throws IOException {<a name="line.279"></a>
-<span class="sourceLineNo">280</span> return master.getTableDescriptors().get(tableName);<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> // ==========================================================================<a name="line.283"></a>
-<span class="sourceLineNo">284</span> // Server Name<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> /**<a name="line.287"></a>
-<span class="sourceLineNo">288</span> * Returns the {@link ServerName} from catalog table {@link Result}<a name="line.288"></a>
-<span class="sourceLineNo">289</span> * where the region is transitioning. It should be the same as<a name="line.289"></a>
-<span class="sourceLineNo">290</span> * {@link MetaTableAccessor#getServerName(Result,int)} if the server is at OPEN state.<a name="line.290"></a>
-<span class="sourceLineNo">291</span> * @param r Result to pull the transitioning server name from<a name="line.291"></a>
-<span class="sourceLineNo">292</span> * @return A ServerName instance or {@link MetaTableAccessor#getServerName(Result,int)}<a name="line.292"></a>
-<span class="sourceLineNo">293</span> * if necessary fields not found or empty.<a name="line.293"></a>
-<span class="sourceLineNo">294</span> */<a name="line.294"></a>
-<span class="sourceLineNo">295</span> static ServerName getRegionServer(final Result r, int replicaId) {<a name="line.295"></a>
-<span class="sourceLineNo">296</span> final Cell cell = r.getColumnLatestCell(HConstants.CATALOG_FAMILY,<a name="line.296"></a>
-<span class="sourceLineNo">297</span> getServerNameColumn(replicaId));<a name="line.297"></a>
-<span class="sourceLineNo">298</span> if (cell == null || cell.getValueLength() == 0) {<a name="line.298"></a>
-<span class="sourceLineNo">299</span> RegionLocations locations = MetaTableAccessor.getRegionLocations(r);<a name="line.299"></a>
-<span class="sourceLineNo">300</span> if (locations != null) {<a name="line.300"></a>
-<span class="sourceLineNo">301</span> HRegionLocation location = locations.getRegionLocation(replicaId);<a name="line.301"></a>
-<span class="sourceLineNo">302</span> if (location != null) {<a name="line.302"></a>
-<span class="sourceLineNo">303</span> return location.getServerName();<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> return null;<a name="line.306"></a>
-<span class="sourceLineNo">307</span> }<a name="line.307"></a>
-<span class="sourceLineNo">308</span> return ServerName.parseServerName(Bytes.toString(cell.getValueArray(),<a name="line.308"></a>
-<span class="sourceLineNo">309</span> cell.getValueOffset(), cell.getValueLength()));<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> private static byte[] getServerNameColumn(int replicaId) {<a name="line.312"></a>
-<span class="sourceLineNo">313</span> return replicaId == 0<a name="line.313"></a>
-<span class="sourceLineNo">314</span> ? HConstants.SERVERNAME_QUALIFIER<a name="line.314"></a>
-<span class="sourceLineNo">315</span> : Bytes.toBytes(HConstants.SERVERNAME_QUALIFIER_STR + META_REPLICA_ID_DELIMITER<a name="line.315"></a>
-<span class="sourceLineNo">316</span> + String.format(RegionInfo.REPLICA_ID_FORMAT, replicaId));<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> // Region State<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> /**<a name="line.323"></a>
-<span class="sourceLineNo">324</span> * Pull the region state from a catalog table {@link Result}.<a name="line.324"></a>
-<span class="sourceLineNo">325</span> * @param r Result to pull the region state from<a name="line.325"></a>
-<span class="sourceLineNo">326</span> * @return the region state, or null if unknown.<a name="line.326"></a>
-<span class="sourceLineNo">327</span> */<a name="line.327"></a>
-<span class="sourceLineNo">328</span> @VisibleForTesting<a name="line.328"></a>
-<span class="sourceLineNo">329</span> public static State getRegionState(final Result r, int replicaId) {<a name="line.329"></a>
-<span class="sourceLineNo">330</span> Cell cell = r.getColumnLatestCell(HConstants.CATALOG_FAMILY, getStateColumn(replicaId));<a name="line.330"></a>
-<span class="sourceLineNo">331</span> if (cell == null || cell.getValueLength() == 0) {<a name="line.331"></a>
-<span class="sourceLineNo">332</span> return null;<a name="line.332"></a>
-<span class="sourceLineNo">333</span> }<a name="line.333"></a>
-<span class="sourceLineNo">334</span> return State.valueOf(Bytes.toString(cell.getValueArray(), cell.getValueOffset(),<a name="line.334"></a>
-<span class="sourceLineNo">335</span> cell.getValueLength()));<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 static byte[] getStateColumn(int replicaId) {<a name="line.338"></a>
-<span class="sourceLineNo">339</span> return replicaId == 0<a name="line.339"></a>
-<span class="sourceLineNo">340</span> ? HConstants.STATE_QUALIFIER<a name="line.340"></a>
-<span class="sourceLineNo">341</span> : Bytes.toBytes(HConstants.STATE_QUALIFIER_STR + META_REPLICA_ID_DELIMITER<a name="line.341"></a>
-<span class="sourceLineNo">342</span> + String.format(RegionInfo.REPLICA_ID_FORMAT, replicaId));<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">131</span> updateMetaLocation(regionStateNode.getRegionInfo(), regionStateNode.getRegionLocation(),<a name="line.131"></a>
+<span class="sourceLineNo">132</span> regionStateNode.getState());<a name="line.132"></a>
+<span class="sourceLineNo">133</span> } else {<a name="line.133"></a>
+<span class="sourceLineNo">134</span> long openSeqNum = regionStateNode.getState() == State.OPEN ? regionStateNode.getOpenSeqNum()<a name="line.134"></a>
+<span class="sourceLineNo">135</span> : HConstants.NO_SEQNUM;<a name="line.135"></a>
+<span class="sourceLineNo">136</span> updateUserRegionLocation(regionStateNode.getRegionInfo(), regionStateNode.getState(),<a name="line.136"></a>
+<span class="sourceLineNo">137</span> regionStateNode.getRegionLocation(), regionStateNode.getLastHost(), openSeqNum,<a name="line.137"></a>
+<span class="sourceLineNo">138</span> // The regionStateNode may have no procedure in a test scenario; allow for this.<a name="line.138"></a>
+<span class="sourceLineNo">139</span> regionStateNode.getProcedure() != null ? regionStateNode.getProcedure().getProcId()<a name="line.139"></a>
+<span class="sourceLineNo">140</span> : Procedure.NO_PROC_ID);<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><a name="line.143"></a>
+<span class="sourceLineNo">144</span> private void updateMetaLocation(RegionInfo regionInfo, ServerName serverName, State state)<a name="line.144"></a>
+<span class="sourceLineNo">145</span> throws IOException {<a name="line.145"></a>
+<span class="sourceLineNo">146</span> try {<a name="line.146"></a>
+<span class="sourceLineNo">147</span> MetaTableLocator.setMetaLocation(master.getZooKeeper(), serverName, regionInfo.getReplicaId(),<a name="line.147"></a>
+<span class="sourceLineNo">148</span> state);<a name="line.148"></a>
+<span class="sourceLineNo">149</span> } catch (KeeperException e) {<a name="line.149"></a>
+<span class="sourceLineNo">150</span> throw new IOException(e);<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> private void updateUserRegionLocation(final RegionInfo regionInfo, final State state,<a name="line.154"></a>
+<span class="sourceLineNo">155</span> final ServerName regionLocation, final ServerName lastHost, final long openSeqNum,<a name="line.155"></a>
+<span class="sourceLineNo">156</span> final long pid)<a name="line.156"></a>
+<span class="sourceLineNo">157</span> throws IOException {<a name="line.157"></a>
+<span class="sourceLineNo">158</span> long time = EnvironmentEdgeManager.currentTime();<a name="line.158"></a>
+<span class="sourceLineNo">159</span> final int replicaId = regionInfo.getReplicaId();<a name="line.159"></a>
+<span class="sourceLineNo">160</span> final Put put = new Put(MetaTableAccessor.getMetaKeyForRegion(regionInfo), time);<a name="line.160"></a>
+<span class="sourceLineNo">161</span> MetaTableAccessor.addRegionInfo(put, regionInfo);<a name="line.161"></a>
+<span class="sourceLineNo">162</span> final StringBuilder info =<a name="line.162"></a>
+<span class="sourceLineNo">163</span> new StringBuilder("pid=").append(pid).append(" updating hbase:meta row=")<a name="line.163"></a>
+<span class="sourceLineNo">164</span> .append(regionInfo.getEncodedName()).append(", regionState=").append(state);<a name="line.164"></a>
+<span class="sourceLineNo">165</span> if (openSeqNum >= 0) {<a name="line.165"></a>
+<span class="sourceLineNo">166</span> Preconditions.checkArgument(state == State.OPEN && regionLocation != null,<a name="line.166"></a>
+<span class="sourceLineNo">167</span> "Open region should be on a server");<a name="line.167"></a>
+<span class="sourceLineNo">168</span> MetaTableAccessor.addLocation(put, regionLocation, openSeqNum, replicaId);<a name="line.168"></a>
+<span class="sourceLineNo">169</span> // only update replication barrier for default replica<a name="line.169"></a>
+<span class="sourceLineNo">170</span> if (regionInfo.getReplicaId() == RegionInfo.DEFAULT_REPLICA_ID &&<a name="line.170"></a>
+<span class="sourceLineNo">171</span> hasGlobalReplicationScope(regionInfo.getTable())) {<a name="line.171"></a>
+<span class="sourceLineNo">172</span> MetaTableAccessor.addReplicationBarrier(put, openSeqNum);<a name="line.172"></a>
+<span class="sourceLineNo">173</span> info.append(", repBarrier=").append(openSeqNum);<a name="line.173"></a>
+<span class="sourceLineNo">174</span> }<a name="line.174"></a>
+<span class="sourceLineNo">175</span> info.append(", openSeqNum=").append(openSeqNum);<a name="line.175"></a>
+<span class="sourceLineNo">176</span> info.append(", regionLocation=").append(regionLocation);<a name="line.176"></a>
+<span class="sourceLineNo">177</span> } else if (regionLocation != null && !regionLocation.equals(lastHost)) {<a name="line.177"></a>
+<span class="sourceLineNo">178</span> // Ideally, if no regionLocation, write null to the hbase:meta but this will confuse clients<a name="line.178"></a>
+<span class="sourceLineNo">179</span> // currently; they want a server to hit. TODO: Make clients wait if no location.<a name="line.179"></a>
+<span class="sourceLineNo">180</span> put.add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.180"></a>
+<span class="sourceLineNo">181</span> .setRow(put.getRow())<a name="line.181"></a>
+<span class="sourceLineNo">182</span> .setFamily(HConstants.CATALOG_FAMILY)<a name="line.182"></a>
+<span class="sourceLineNo">183</span> .setQualifier(getServerNameColumn(replicaId))<a name="line.183"></a>
+<span class="sourceLineNo">184</span> .setTimestamp(put.getTimestamp())<a name="line.184"></a>
+<span class="sourceLineNo">185</span> .setType(Cell.Type.Put)<a name="line.185"></a>
+<span class="sourceLineNo">186</span> .setValue(Bytes.toBytes(regionLocation.getServerName()))<a name="line.186"></a>
+<span class="sourceLineNo">187</span> .build());<a name="line.187"></a>
+<span class="sourceLineNo">188</span> info.append(", regionLocation=").append(regionLocation);<a name="line.188"></a>
+<span class="sourceLineNo">189</span> }<a name="line.189"></a>
+<span class="sourceLineNo">190</span> put.add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.190"></a>
+<span class="sourceLineNo">191</span> .setRow(put.getRow())<a name="line.191"></a>
+<span class="sourceLineNo">192</span> .setFamily(HConstants.CATALOG_FAMILY)<a name="line.192"></a>
+<span class="sourceLineNo">193</span> .setQualifier(getStateColumn(replicaId))<a name="line.193"></a>
+<span class="sourceLineNo">194</span> .setTimestamp(put.getTimestamp())<a name="line.194"></a>
+<span class="sourceLineNo">195</span> .setType(Cell.Type.Put)<a name="line.195"></a>
+<span class="sourceLineNo">196</span> .setValue(Bytes.toBytes(state.name()))<a name="line.196"></a>
+<span class="sourceLineNo">197</span> .build());<a name="line.197"></a>
+<span class="sourceLineNo">198</span> LOG.info(info.toString());<a name="line.198"></a>
+<span class="sourceLineNo">199</span> updateRegionLocation(regionInfo, state, put);<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 updateRegionLocation(RegionInfo regionInfo, State state, Put put)<a name="line.202"></a>
+<span class="sourceLineNo">203</span> throws IOException {<a name="line.203"></a>
+<span class="sourceLineNo">204</span> try (Table table = master.getConnection().getTable(TableName.META_TABLE_NAME)) {<a name="line.204"></a>
+<span class="sourceLineNo">205</span> table.put(put);<a name="line.205"></a>
+<span class="sourceLineNo">206</span> } catch (IOException e) {<a name="line.206"></a>
+<span class="sourceLineNo">207</span> // TODO: Revist!!!! Means that if a server is loaded, then we will abort our host!<a name="line.207"></a>
+<span class="sourceLineNo">208</span> // In tests we abort the Master!<a name="line.208"></a>
+<span class="sourceLineNo">209</span> String msg = String.format("FAILED persisting region=%s state=%s",<a name="line.209"></a>
+<span class="sourceLineNo">210</span> regionInfo.getShortNameToLog(), state);<a name="line.210"></a>
+<span class="sourceLineNo">211</span> LOG.error(msg, e);<a name="line.211"></a>
+<span class="sourceLineNo">212</span> master.abort(msg, e);<a name="line.212"></a>
+<span class="sourceLineNo">213</span> throw e;<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 long getOpenSeqNumForParentRegion(RegionInfo region) throws IOException {<a name="line.217"></a>
+<span class="sourceLineNo">218</span> MasterFileSystem mfs = master.getMasterFileSystem();<a name="line.218"></a>
+<span class="sourceLineNo">219</span> long maxSeqId =<a name="line.219"></a>
+<span class="sourceLineNo">220</span> WALSplitter.getMaxRegionSequenceId(mfs.getFileSystem(), mfs.getRegionDir(region));<a name="line.220"></a>
+<span class="sourceLineNo">221</span> return maxSeqId > 0 ? maxSeqId + 1 : HConstants.NO_SEQNUM;<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>
+<span class="sourceLineNo">225</span> // Update Region Splitting State helpers<a name="line.225"></a>
+<span class="sourceLineNo">226</span> // ============================================================================================<a name="line.226"></a>
+<span class="sourceLineNo">227</span> public void splitRegion(RegionInfo parent, RegionInfo hriA, RegionInfo hriB,<a name="line.227"></a>
+<span class="sourceLineNo">228</span> ServerName serverName) throws IOException {<a name="line.228"></a>
+<span class="sourceLineNo">229</span> TableDescriptor htd = getTableDescriptor(parent.getTable());<a name="line.229"></a>
+<span class="sourceLineNo">230</span> long parentOpenSeqNum = HConstants.NO_SEQNUM;<a name="line.230"></a>
+<span class="sourceLineNo">231</span> if (htd.hasGlobalReplicationScope()) {<a name="line.231"></a>
+<span class="sourceLineNo">232</span> parentOpenSeqNum = getOpenSeqNumForParentRegion(parent);<a name="line.232"></a>
+<span class="sourceLineNo">233</span> }<a name="line.233"></a>
+<span class="sourceLineNo">234</span> MetaTableAccessor.splitRegion(master.getConnection(), parent, parentOpenSeqNum, hriA, hriB,<a name="line.234"></a>
+<span class="sourceLineNo">235</span> serverName, getRegionReplication(htd));<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> // ============================================================================================<a name="line.238"></a>
+<span class="sourceLineNo">239</span> // Update Region Merging State helpers<a name="line.239"></a>
+<span class="sourceLineNo">240</span> // ============================================================================================<a name="line.240"></a>
+<span class="sourceLineNo">241</span> public void mergeRegions(RegionInfo child, RegionInfo hriA, RegionInfo hriB,<a name="line.241"></a>
+<span class="sourceLineNo">242</span> ServerName serverName) throws IOException {<a name="line.242"></a>
+<span class="sourceLineNo">243</span> TableDescriptor htd = getTableDescriptor(child.getTable());<a name="line.243"></a>
+<span class="sourceLineNo">244</span> long regionAOpenSeqNum = -1L;<a name="line.244"></a>
+<span class="sourceLineNo">245</span> long regionBOpenSeqNum = -1L;<a name="line.245"></a>
+<span class="sourceLineNo">246</span> if (htd.hasGlobalReplicationScope()) {<a name="line.246"></a>
+<span class="sourceLineNo">247</span> regionAOpenSeqNum = getOpenSeqNumForParentRegion(hriA);<a name="line.247"></a>
+<span class="sourceLineNo">248</span> regionBOpenSeqNum = getOpenSeqNumForParentRegion(hriB);<a name="line.248"></a>
+<span class="sourceLineNo">249</span> }<a name="line.249"></a>
+<span class="sourceLineNo">250</span> MetaTableAccessor.mergeRegions(master.getConnection(), child, hriA, regionAOpenSeqNum, hriB,<a name="line.250"></a>
+<span class="sourceLineNo">251</span> regionBOpenSeqNum, serverName, getRegionReplication(htd));<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> // Delete Region State helpers<a name="line.255"></a>
+<span class="sourceLineNo">256</span> // ============================================================================================<a name="line.256"></a>
+<span class="sourceLineNo">257</span> public void deleteRegion(final RegionInfo regionInfo) throws IOException {<a name="line.257"></a>
+<span class="sourceLineNo">258</span> deleteRegions(Collections.singletonList(regionInfo));<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 void deleteRegions(final List<RegionInfo> regions) throws IOException {<a name="line.261"></a>
+<span class="sourceLineNo">262</span> MetaTableAccessor.deleteRegions(master.getConnection(), regions);<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> // Table Descriptors helpers<a name="line.266"></a>
+<span class="sourceLineNo">267</span> // ==========================================================================<a name="line.267"></a>
+<span class="sourceLineNo">268</span> private boolean hasGlobalReplicationScope(TableName tableName) throws IOException {<a name="line.268"></a>
+<span class="sourceLineNo">269</span> return hasGlobalReplicationScope(getTableDescriptor(tableName));<a name="line.269"></a>
+<span class="sourceLineNo">270</span> }<a name="line.270"></a>
+<span class="sourceLineNo">271</span><a name="line.271"></a>
+<span class="sourceLineNo">272</span> private boolean hasGlobalReplicationScope(TableDescriptor htd) {<a name="line.272"></a>
+<span class="sourceLineNo">273</span> return htd != null ? htd.hasGlobalReplicationScope() : false;<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 int getRegionReplication(TableDescriptor htd) {<a name="line.276"></a>
+<span class="sourceLineNo">277</span> return htd != null ? htd.getRegionReplication() : 1;<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> private TableDescriptor getTableDescriptor(TableName tableName) throws IOException {<a name="line.280"></a>
+<span class="sourceLineNo">281</span> return master.getTableDescriptors().get(tableName);<a name="line.281"></a>
+<span class="sourceLineNo">282</span> }<a name="line.282"></a>
+<span class="sourceLineNo">283</span><a name="line.283"></a>
+<span class="sourceLineNo">284</span> // ==========================================================================<a name="line.284"></a>
+<span class="sourceLineNo">285</span> // Server Name<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> * Returns the {@link ServerName} from catalog table {@link Result}<a name="line.289"></a>
+<span class="sourceLineNo">290</span> * where the region is transitioning. It should be the same as<a name="line.290"></a>
+<span class="sourceLineNo">291</span> * {@link MetaTableAccessor#getServerName(Result,int)} if the server is at OPEN state.<a name="line.291"></a>
+<span class="sourceLineNo">292</span> * @param r Result to pull the transitioning server name from<a name="line.292"></a>
+<span class="sourceLineNo">293</span> * @return A ServerName instance or {@link MetaTableAccessor#getServerName(Result,int)}<a name="line.293"></a>
+<span class="sourceLineNo">294</span> * if necessary fields not found or empty.<a name="line.294"></a>
+<span class="sourceLineNo">295</span> */<a name="line.295"></a>
+<span class="sourceLineNo">296</span> static ServerName getRegionServer(final Result r, int replicaId) {<a name="line.296"></a>
+<span class="sourceLineNo">297</span> final Cell cell = r.getColumnLatestCell(HConstants.CATALOG_FAMILY,<a name="line.297"></a>
+<span class="sourceLineNo">298</span> getServerNameColumn(replicaId));<a name="line.298"></a>
+<span class="sourceLineNo">299</span> if (cell == null || cell.getValueLength() == 0) {<a name="line.299"></a>
+<span class="sourceLineNo">300</span> RegionLocations locations = MetaTableAccessor.getRegionLocations(r);<a name="line.300"></a>
+<span class="sourceLineNo">301</span> if (locations != null) {<a name="line.301"></a>
+<span class="sourceLineNo">302</span> HRegionLocation location = locations.getRegionLocation(replicaId);<a name="line.302"></a>
+<span class="sourceLineNo">303</span> if (location != null) {<a name="line.303"></a>
+<span class="sourceLineNo">304</span> return location.getServerName();<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> return null;<a name="line.307"></a>
+<span class="sourceLineNo">308</span> }<a name="line.308"></a>
+<span class="sourceLineNo">309</span> return ServerName.parseServerName(Bytes.toString(cell.getValueArray(),<a name="line.309"></a>
+<span class="sourceLineNo">310</span> cell.getValueOffset(), cell.getValueLength()));<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> private static byte[] getServerNameColumn(int replicaId) {<a name="line.313"></a>
+<span class="sourceLineNo">314</span> return replicaId == 0<a name="line.314"></a>
+<span class="sourceLineNo">315</span> ? HConstants.SERVERNAME_QUALIFIER<a name="line.315"></a>
+<span class="sourceLineNo">316</span> : Bytes.toBytes(HConstants.SERVERNAME_QUALIFIER_STR + META_REPLICA_ID_DELIMITER<a name="line.316"></a>
+<span class="sourceLineNo">317</span> + String.format(RegionInfo.REPLICA_ID_FORMAT, replicaId));<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> // Region State<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> /**<a name="line.324"></a>
+<span class="sourceLineNo">325</span> * Pull the region state from a catalog table {@link Result}.<a name="line.325"></a>
+<span class="sourceLineNo">326</span> * @param r Result to pull the region state from<a name="line.326"></a>
+<span class="sourceLineNo">327</span> * @return the region state, or null if unknown.<a name="line.327"></a>
+<span class="sourceLineNo">328</span> */<a name="line.328"></a>
+<span class="sourceLineNo">329</span> @VisibleForTesting<a name="line.329"></a>
+<span class="sourceLineNo">330</span> public static State getRegionState(final Result r, int replicaId) {<a name="line.330"></a>
+<span class="sourceLineNo">331</span> Cell cell = r.getColumnLatestCell(HConstants.CATALOG_FAMILY, getStateColumn(replicaId));<a name="line.331"></a>
+<span class="sourceLineNo">332</span> if (cell == null || cell.getValueLength() == 0) {<a name="line.332"></a>
+<span class="sourceLineNo">333</span> return null;<a name="line.333"></a>
+<span class="sourceLineNo">334</span> }<a name="line.334"></a>
+<span class="sourceLineNo">335</span> return State.valueOf(Bytes.toString(cell.getValueArray(), cell.getValueOffset(),<a name="line.335"></a>
+<span class="sourceLineNo">336</span> cell.getValueLength()));<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> private static byte[] getStateColumn(int replicaId) {<a name="line.339"></a>
+<span class="sourceLineNo">340</span> return replicaId == 0<a name="line.340"></a>
+<span class="sourceLineNo">341</span> ? HConstants.STATE_QUALIFIER<a name="line.341"></a>
+<span class="sourceLineNo">342</span> : Bytes.toBytes(HConstants.STATE_QUALIFIER_STR + META_REPLICA_ID_DELIMITER<a name="line.342"></a>
+<span class="sourceLineNo">343</span> + String.format(RegionInfo.REPLICA_ID_FORMAT, replicaId));<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>
[45/51] [partial] hbase-site git commit: Published site at
9101fc246f86445006bfbcdfda5cc495016dc280.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/index-all.html
----------------------------------------------------------------------
diff --git a/devapidocs/index-all.html b/devapidocs/index-all.html
index c9237ca..4b64e1b 100644
--- a/devapidocs/index-all.html
+++ b/devapidocs/index-all.html
@@ -782,8 +782,12 @@
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/CreateTableProcedure.html#acquireLock-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">acquireLock(MasterProcedureEnv)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/CreateTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">CreateTableProcedure</a></dt>
<dd> </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#acquireLock-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">acquireLock(MasterProcedureEnv)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RecoverMetaProcedure</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html#acquireLock-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">acquireLock(MasterProcedureEnv)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">InitMetaProcedure</a></dt>
<dd> </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#acquireLock-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">acquireLock(MasterProcedureEnv)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RecoverMetaProcedure</a></dt>
+<dd>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
+ </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#acquireLock-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">acquireLock(MasterProcedureEnv)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ServerCrashProcedure</a></dt>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/replication/AbstractPeerProcedure.html#acquireLock-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">acquireLock(MasterProcedureEnv)</a></span> - Method in class org.apache.hadoop.hbase.master.replication.<a href="org/apache/hadoop/hbase/master/replication/AbstractPeerProcedure.html" title="class in org.apache.hadoop.hbase.master.replication">AbstractPeerProcedure</a></dt>
@@ -4686,6 +4690,8 @@
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/locking/EntityLock.html#await--">await()</a></span> - Method in class org.apache.hadoop.hbase.client.locking.<a href="org/apache/hadoop/hbase/client/locking/EntityLock.html" title="class in org.apache.hadoop.hbase.client.locking">EntityLock</a></dt>
<dd> </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html#await--">await()</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">InitMetaProcedure</a></dt>
+<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/ProcedurePrepareLatch.html#await--">await()</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/ProcedurePrepareLatch.html" title="class in org.apache.hadoop.hbase.master.procedure">ProcedurePrepareLatch</a></dt>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/ProcedurePrepareLatch.CompatibilityLatch.html#await--">await()</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/ProcedurePrepareLatch.CompatibilityLatch.html" title="class in org.apache.hadoop.hbase.master.procedure">ProcedurePrepareLatch.CompatibilityLatch</a></dt>
@@ -10431,10 +10437,6 @@
<dd>
<div class="block">Throws an IOException back out if one is currently stored.</div>
</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#checkFailoverCleanupCompleted-org.apache.hadoop.hbase.client.RegionInfo-">checkFailoverCleanupCompleted(RegionInfo)</a></span> - Method in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignmentManager</a></dt>
-<dd>
-<div class="block">Used to check if the failover cleanup is done.</div>
-</dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/HRegion.html#checkFamilies-java.util.Collection-">checkFamilies(Collection<byte[]>)</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>
<div class="block">Check the collection of families for validity.</div>
@@ -10630,6 +10632,10 @@
</dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/LogRoller.html#checkLowReplicationInterval">checkLowReplicationInterval</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/LogRoller.html" title="class in org.apache.hadoop.hbase.regionserver">LogRoller</a></dt>
<dd> </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#checkMetaLoaded-org.apache.hadoop.hbase.client.RegionInfo-">checkMetaLoaded(RegionInfo)</a></span> - Method in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignmentManager</a></dt>
+<dd>
+<div class="block">Used to check if the meta loading is done.</div>
+</dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/HBaseFsck.html#checkMetaOnly">checkMetaOnly</a></span> - Variable in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/HBaseFsck.html" title="class in org.apache.hadoop.hbase.util">HBaseFsck</a></dt>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/HBaseFsck.html#checkMetaRegion--">checkMetaRegion()</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/HBaseFsck.html" title="class in org.apache.hadoop.hbase.util">HBaseFsck</a></dt>
@@ -11140,6 +11146,8 @@
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/normalizer/RegionNormalizerChore.html#chore--">chore()</a></span> - Method in class org.apache.hadoop.hbase.master.normalizer.<a href="org/apache/hadoop/hbase/master/normalizer/RegionNormalizerChore.html" title="class in org.apache.hadoop.hbase.master.normalizer">RegionNormalizerChore</a></dt>
<dd> </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/ServerManager.FlushedSequenceIdFlusher.html#chore--">chore()</a></span> - Method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/ServerManager.FlushedSequenceIdFlusher.html" title="class in org.apache.hadoop.hbase.master">ServerManager.FlushedSequenceIdFlusher</a></dt>
+<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/SplitLogManager.TimeoutMonitor.html#chore--">chore()</a></span> - Method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/SplitLogManager.TimeoutMonitor.html" title="class in org.apache.hadoop.hbase.master">SplitLogManager.TimeoutMonitor</a></dt>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/quotas/FileSystemUtilizationChore.html#chore--">chore()</a></span> - Method in class org.apache.hadoop.hbase.quotas.<a href="org/apache/hadoop/hbase/quotas/FileSystemUtilizationChore.html" title="class in org.apache.hadoop.hbase.quotas">FileSystemUtilizationChore</a></dt>
@@ -15590,12 +15598,16 @@
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/AsyncScanSingleRegionRpcRetryingCaller.html#completeWithNextStartRow-byte:A-boolean-">completeWithNextStartRow(byte[], boolean)</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/AsyncScanSingleRegionRpcRetryingCaller.html" title="class in org.apache.hadoop.hbase.client">AsyncScanSingleRegionRpcRetryingCaller</a></dt>
<dd> </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html#completionCleanup-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">completionCleanup(MasterProcedureEnv)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">InitMetaProcedure</a></dt>
+<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#completionCleanup-org.apache.hadoop.hbase.procedure2.Procedure-">completionCleanup(Procedure)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureScheduler</a></dt>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html#completionCleanup-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">completionCleanup(MasterProcedureEnv)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ModifyTableProcedure</a></dt>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#completionCleanup-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">completionCleanup(MasterProcedureEnv)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RecoverMetaProcedure</a></dt>
-<dd> </dd>
+<dd>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
+ </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/TruncateTableProcedure.html#completionCleanup-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">completionCleanup(MasterProcedureEnv)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/TruncateTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">TruncateTableProcedure</a></dt>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/procedure2/Procedure.html#completionCleanup-TEnvironment-">completionCleanup(TEnvironment)</a></span> - Method in class org.apache.hadoop.hbase.procedure2.<a href="org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a></dt>
@@ -20112,6 +20124,8 @@
<dd>
<div class="block">Exposed for hooking with unit tests.</div>
</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/HMaster.html#createProcedureExecutor--">createProcedureExecutor()</a></span> - Method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a></dt>
+<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/rest/model/CellModel.html#createProtobufOutput--">createProtobufOutput()</a></span> - Method in class org.apache.hadoop.hbase.rest.model.<a href="org/apache/hadoop/hbase/rest/model/CellModel.html" title="class in org.apache.hadoop.hbase.rest.model">CellModel</a></dt>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/rest/model/CellSetModel.html#createProtobufOutput--">createProtobufOutput()</a></span> - Method in class org.apache.hadoop.hbase.rest.model.<a href="org/apache/hadoop/hbase/rest/model/CellSetModel.html" title="class in org.apache.hadoop.hbase.rest.model">CellSetModel</a></dt>
@@ -25188,12 +25202,16 @@
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/EnableTableProcedure.html#deserializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">deserializeStateData(ProcedureStateSerializer)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/EnableTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">EnableTableProcedure</a></dt>
<dd> </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html#deserializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">deserializeStateData(ProcedureStateSerializer)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">InitMetaProcedure</a></dt>
+<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/ModifyNamespaceProcedure.html#deserializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">deserializeStateData(ProcedureStateSerializer)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/ModifyNamespaceProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ModifyNamespaceProcedure</a></dt>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html#deserializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">deserializeStateData(ProcedureStateSerializer)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ModifyTableProcedure</a></dt>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#deserializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">deserializeStateData(ProcedureStateSerializer)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RecoverMetaProcedure</a></dt>
-<dd> </dd>
+<dd>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
+ </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/ReopenTableRegionsProcedure.html#deserializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">deserializeStateData(ProcedureStateSerializer)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/ReopenTableRegionsProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ReopenTableRegionsProcedure</a></dt>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html#deserializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">deserializeStateData(ProcedureStateSerializer)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RestoreSnapshotProcedure</a></dt>
@@ -26839,8 +26857,6 @@
<dd>
<div class="block">Enable the given <a href="org/apache/hadoop/hbase/constraint/Constraint.html" title="interface in org.apache.hadoop.hbase.constraint"><code>Constraint</code></a>.</div>
</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#enableCrashedServerProcessing--">enableCrashedServerProcessing()</a></span> - Method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/MasterMetaBootstrap.html" title="class in org.apache.hadoop.hbase.master">MasterMetaBootstrap</a></dt>
-<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/constraint/Constraints.html#enabled-org.apache.hadoop.hbase.HTableDescriptor-java.lang.Class-">enabled(HTableDescriptor, Class<? extends Constraint>)</a></span> - Static method in class org.apache.hadoop.hbase.constraint.<a href="org/apache/hadoop/hbase/constraint/Constraints.html" title="class in org.apache.hadoop.hbase.constraint">Constraints</a></dt>
<dd>
<div class="block">Check to see if the given constraint is enabled.</div>
@@ -29114,12 +29130,16 @@
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/EnableTableProcedure.html#executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.EnableTableState-">executeFromState(MasterProcedureEnv, MasterProcedureProtos.EnableTableState)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/EnableTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">EnableTableProcedure</a></dt>
<dd> </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html#executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.InitMetaState-">executeFromState(MasterProcedureEnv, MasterProcedureProtos.InitMetaState)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">InitMetaProcedure</a></dt>
+<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/ModifyNamespaceProcedure.html#executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ModifyNamespaceState-">executeFromState(MasterProcedureEnv, MasterProcedureProtos.ModifyNamespaceState)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/ModifyNamespaceProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ModifyNamespaceProcedure</a></dt>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html#executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ModifyTableState-">executeFromState(MasterProcedureEnv, MasterProcedureProtos.ModifyTableState)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ModifyTableProcedure</a></dt>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RecoverMetaState-">executeFromState(MasterProcedureEnv, MasterProcedureProtos.RecoverMetaState)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RecoverMetaProcedure</a></dt>
-<dd> </dd>
+<dd>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
+ </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/ReopenTableRegionsProcedure.html#executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ReopenTableRegionsState-">executeFromState(MasterProcedureEnv, MasterProcedureProtos.ReopenTableRegionsState)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/ReopenTableRegionsProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ReopenTableRegionsProcedure</a></dt>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html#executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RestoreSnapshotState-">executeFromState(MasterProcedureEnv, MasterProcedureProtos.RestoreSnapshotState)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RestoreSnapshotProcedure</a></dt>
@@ -29426,7 +29446,9 @@
it expires now.</div>
</dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/ServerManager.html#expireServer-org.apache.hadoop.hbase.ServerName-">expireServer(ServerName)</a></span> - Method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a></dt>
-<dd> </dd>
+<dd>
+<div class="block">Expire the passed server.</div>
+</dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/Bytes.html#explainWrongLengthOrOffset-byte:A-int-int-int-">explainWrongLengthOrOffset(byte[], int, int, int)</a></span> - Static method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/Bytes.html" title="class in org.apache.hadoop.hbase.util">Bytes</a></dt>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/StoreScanner.html#explicitColumnQuery">explicitColumnQuery</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/StoreScanner.html" title="class in org.apache.hadoop.hbase.regionserver">StoreScanner</a></dt>
@@ -29795,7 +29817,9 @@
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/wal/FailedLogCloseException.html#FailedLogCloseException-java.lang.Throwable-">FailedLogCloseException(Throwable)</a></span> - Constructor for exception org.apache.hadoop.hbase.regionserver.wal.<a href="org/apache/hadoop/hbase/regionserver/wal/FailedLogCloseException.html" title="class in org.apache.hadoop.hbase.regionserver.wal">FailedLogCloseException</a></dt>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#failedMetaServer">failedMetaServer</a></span> - Variable in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RecoverMetaProcedure</a></dt>
-<dd> </dd>
+<dd>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
+ </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/backup/BackupInfo.html#failedMsg">failedMsg</a></span> - Variable in class org.apache.hadoop.hbase.backup.<a href="org/apache/hadoop/hbase/backup/BackupInfo.html" title="class in org.apache.hadoop.hbase.backup">BackupInfo</a></dt>
<dd>
<div class="block">Backup failure message</div>
@@ -29882,12 +29906,6 @@
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/tool/Canary.html#failOnError">failOnError</a></span> - Variable in class org.apache.hadoop.hbase.tool.<a href="org/apache/hadoop/hbase/tool/Canary.html" title="class in org.apache.hadoop.hbase.tool">Canary</a></dt>
<dd> </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#failoverCleanupDone">failoverCleanupDone</a></span> - Variable in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignmentManager</a></dt>
-<dd>
-<div class="block">Indicator that AssignmentManager has recovered the region states so
- that ServerCrashProcedure can be fully enabled and re-assign regions
- of dead servers.</div>
-</dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/backup/impl/TableBackupClient.html#failStageIf-org.apache.hadoop.hbase.backup.impl.TableBackupClient.Stage-">failStageIf(TableBackupClient.Stage)</a></span> - Method in class org.apache.hadoop.hbase.backup.impl.<a href="org/apache/hadoop/hbase/backup/impl/TableBackupClient.html" title="class in org.apache.hadoop.hbase.backup.impl">TableBackupClient</a></dt>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/OperationStatus.html#FAILURE">FAILURE</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/OperationStatus.html" title="class in org.apache.hadoop.hbase.regionserver">OperationStatus</a></dt>
@@ -31551,6 +31569,11 @@
</dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coordination/ZKSplitLogManagerCoordination.html#findOrCreateOrphanTask-java.lang.String-">findOrCreateOrphanTask(String)</a></span> - Method in class org.apache.hadoop.hbase.coordination.<a href="org/apache/hadoop/hbase/coordination/ZKSplitLogManagerCoordination.html" title="class in org.apache.hadoop.hbase.coordination">ZKSplitLogManagerCoordination</a></dt>
<dd> </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/ServerManager.html#findOutDeadServersAndProcess-java.util.Set-java.util.Set-">findOutDeadServersAndProcess(Set<ServerName>, Set<ServerName>)</a></span> - Method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a></dt>
+<dd>
+<div class="block">Find out the region servers crashed between the crash of the previous master instance and the
+ current master instance and schedule SCP for them.</div>
+</dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/http/HttpServer.Builder.html#findPort">findPort</a></span> - Variable in class org.apache.hadoop.hbase.http.<a href="org/apache/hadoop/hbase/http/HttpServer.Builder.html" title="class in org.apache.hadoop.hbase.http">HttpServer.Builder</a></dt>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/http/HttpServer.html#findPort">findPort</a></span> - Variable in class org.apache.hadoop.hbase.http.<a href="org/apache/hadoop/hbase/http/HttpServer.html" title="class in org.apache.hadoop.hbase.http">HttpServer</a></dt>
@@ -32258,10 +32281,18 @@
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/HRegion.PrepareFlushResult.html#flushedSeqId">flushedSeqId</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/HRegion.PrepareFlushResult.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.PrepareFlushResult</a></dt>
<dd> </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/ServerManager.html#flushedSeqIdFlusher">flushedSeqIdFlusher</a></span> - Variable in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a></dt>
+<dd> </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/ServerManager.html#FLUSHEDSEQUENCEID_FLUSHER_INTERVAL">FLUSHEDSEQUENCEID_FLUSHER_INTERVAL</a></span> - Static variable in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a></dt>
+<dd> </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/ServerManager.html#FLUSHEDSEQUENCEID_FLUSHER_INTERVAL_DEFAULT">FLUSHEDSEQUENCEID_FLUSHER_INTERVAL_DEFAULT</a></span> - Static variable in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a></dt>
+<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/ServerManager.html#flushedSequenceIdByRegion">flushedSequenceIdByRegion</a></span> - Variable in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a></dt>
<dd>
<div class="block">The last flushed sequence id for a region.</div>
</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/ServerManager.FlushedSequenceIdFlusher.html#FlushedSequenceIdFlusher-java.lang.String-int-">FlushedSequenceIdFlusher(String, int)</a></span> - Constructor for class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/ServerManager.FlushedSequenceIdFlusher.html" title="class in org.apache.hadoop.hbase.master">ServerManager.FlushedSequenceIdFlusher</a></dt>
+<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/StoreScanner.html#flushedstoreFileScanners">flushedstoreFileScanners</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/StoreScanner.html" title="class in org.apache.hadoop.hbase.regionserver">StoreScanner</a></dt>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/MetricsRegionSource.html#FLUSHES_QUEUED_COUNT">FLUSHES_QUEUED_COUNT</a></span> - Static variable in interface org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/MetricsRegionSource.html" title="interface in org.apache.hadoop.hbase.regionserver">MetricsRegionSource</a></dt>
@@ -37608,8 +37639,6 @@
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/rest/model/StorageClusterStatusModel.html#getDeadNodes--">getDeadNodes()</a></span> - Method in class org.apache.hadoop.hbase.rest.model.<a href="org/apache/hadoop/hbase/rest/model/StorageClusterStatusModel.html" title="class in org.apache.hadoop.hbase.rest.model">StorageClusterStatusModel</a></dt>
<dd> </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/ServerManager.html#getDeadNotExpiredServers--">getDeadNotExpiredServers()</a></span> - Method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a></dt>
-<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/MetricsMasterWrapper.html#getDeadRegionServers--">getDeadRegionServers()</a></span> - Method in interface org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/MetricsMasterWrapper.html" title="interface in org.apache.hadoop.hbase.master">MetricsMasterWrapper</a></dt>
<dd>
<div class="block">Get the dead region servers</div>
@@ -38523,10 +38552,13 @@
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/MasterWalManager.html#getFailedServersFromLogFolders--">getFailedServersFromLogFolders()</a></span> - Method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/MasterWalManager.html" title="class in org.apache.hadoop.hbase.master">MasterWalManager</a></dt>
<dd>
-<div class="block">Inspect the log directory to find dead servers which need recovery work</div>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span>
+<div class="block"><span class="deprecationComment">With proc-v2, we can record the crash server with procedure store, so do not need
+ to scan the wal directory to find out the splitting wal directory any more. Leave
+ it here only because <code>RecoverMetaProcedure</code>(which is also deprecated) uses
+ it.</span></div>
+</div>
</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#getFailoverCleanupEvent--">getFailoverCleanupEvent()</a></span> - Method in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignmentManager</a></dt>
-<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/exceptions/PreemptiveFastFailException.html#getFailureCount--">getFailureCount()</a></span> - Method in exception org.apache.hadoop.hbase.exceptions.<a href="org/apache/hadoop/hbase/exceptions/PreemptiveFastFailException.html" title="class in org.apache.hadoop.hbase.exceptions">PreemptiveFastFailException</a></dt>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/FastFailInterceptorContext.html#getFailureInfo--">getFailureInfo()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/FastFailInterceptorContext.html" title="class in org.apache.hadoop.hbase.client">FastFailInterceptorContext</a></dt>
@@ -39273,6 +39305,8 @@
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/Store.html#getFlushedOutputFileSize--">getFlushedOutputFileSize()</a></span> - Method in interface org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/Store.html" title="interface in org.apache.hadoop.hbase.regionserver">Store</a></dt>
<dd> </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/ServerManager.html#getFlushedSequenceIdByRegion--">getFlushedSequenceIdByRegion()</a></span> - Method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a></dt>
+<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/FlushPolicyFactory.html#getFlushPolicyClass-org.apache.hadoop.hbase.client.TableDescriptor-org.apache.hadoop.conf.Configuration-">getFlushPolicyClass(TableDescriptor, Configuration)</a></span> - Static method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/FlushPolicyFactory.html" title="class in org.apache.hadoop.hbase.regionserver">FlushPolicyFactory</a></dt>
<dd>
<div class="block">Get FlushPolicy class for the given table.</div>
@@ -40000,12 +40034,16 @@
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/EnableTableProcedure.html#getInitialState--">getInitialState()</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/EnableTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">EnableTableProcedure</a></dt>
<dd> </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html#getInitialState--">getInitialState()</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">InitMetaProcedure</a></dt>
+<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/ModifyNamespaceProcedure.html#getInitialState--">getInitialState()</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/ModifyNamespaceProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ModifyNamespaceProcedure</a></dt>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html#getInitialState--">getInitialState()</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ModifyTableProcedure</a></dt>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#getInitialState--">getInitialState()</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RecoverMetaProcedure</a></dt>
-<dd> </dd>
+<dd>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
+ </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/ReopenTableRegionsProcedure.html#getInitialState--">getInitialState()</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/ReopenTableRegionsProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ReopenTableRegionsProcedure</a></dt>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html#getInitialState--">getInitialState()</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RestoreSnapshotProcedure</a></dt>
@@ -41007,6 +41045,8 @@
<dd>
<div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/MasterWalManager.html#getLiveServersFromWALDir--">getLiveServersFromWALDir()</a></span> - Method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/MasterWalManager.html" title="class in org.apache.hadoop.hbase.master">MasterWalManager</a></dt>
+<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ClusterStatus.html#getLoad-org.apache.hadoop.hbase.ServerName-">getLoad(ServerName)</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/ClusterStatus.html" title="class in org.apache.hadoop.hbase">ClusterStatus</a></dt>
<dd>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>
@@ -42187,6 +42227,8 @@
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/monitoring/MemoryBoundedLogMessageBuffer.html#getMessages--">getMessages()</a></span> - Method in class org.apache.hadoop.hbase.monitoring.<a href="org/apache/hadoop/hbase/monitoring/MemoryBoundedLogMessageBuffer.html" title="class in org.apache.hadoop.hbase.monitoring">MemoryBoundedLogMessageBuffer</a></dt>
<dd> </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#getMetaAssignEvent-org.apache.hadoop.hbase.client.RegionInfo-">getMetaAssignEvent(RegionInfo)</a></span> - Method in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignmentManager</a></dt>
+<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/hfile/HFile.Reader.html#getMetaBlock-java.lang.String-boolean-">getMetaBlock(String, boolean)</a></span> - Method in interface org.apache.hadoop.hbase.io.hfile.<a href="org/apache/hadoop/hbase/io/hfile/HFile.Reader.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFile.Reader</a></dt>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.html#getMetaBlock-java.lang.String-boolean-">getMetaBlock(String, boolean)</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>
@@ -42215,8 +42257,6 @@
</dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/hfile/FixedFileTrailer.html#getMetaIndexCount--">getMetaIndexCount()</a></span> - Method in class org.apache.hadoop.hbase.io.hfile.<a href="org/apache/hadoop/hbase/io/hfile/FixedFileTrailer.html" title="class in org.apache.hadoop.hbase.io.hfile">FixedFileTrailer</a></dt>
<dd> </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#getMetaInitializedEvent-org.apache.hadoop.hbase.client.RegionInfo-">getMetaInitializedEvent(RegionInfo)</a></span> - Method in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignmentManager</a></dt>
-<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/MetaTableAccessor.html#getMetaKeyForRegion-org.apache.hadoop.hbase.client.RegionInfo-">getMetaKeyForRegion(RegionInfo)</a></span> - Static method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/MetaTableAccessor.html" title="class in org.apache.hadoop.hbase">MetaTableAccessor</a></dt>
<dd>
<div class="block">Returns the row key to use for this regionInfo</div>
@@ -42228,7 +42268,12 @@
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/MasterStatusServlet.html#getMetaLocationOrNull-org.apache.hadoop.hbase.master.HMaster-">getMetaLocationOrNull(HMaster)</a></span> - Method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/MasterStatusServlet.html" title="class in org.apache.hadoop.hbase.master">MasterStatusServlet</a></dt>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/SchemaLocking.html#getMetaLock--">getMetaLock()</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/SchemaLocking.html" title="class in org.apache.hadoop.hbase.master.procedure">SchemaLocking</a></dt>
-<dd> </dd>
+<dd>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span>
+<div class="block"><span class="deprecationComment">only used for <a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>RecoverMetaProcedure</code></a>. Should be removed along with
+ <a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>RecoverMetaProcedure</code></a>.</span></div>
+</div>
+</dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/ConnectionImplementation.html#getMetaLookupPool--">getMetaLookupPool()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/ConnectionImplementation.html" title="class in org.apache.hadoop.hbase.client">ConnectionImplementation</a></dt>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/hfile/CacheStats.html#getMetaMissCount--">getMetaMissCount()</a></span> - Method in class org.apache.hadoop.hbase.io.hfile.<a href="org/apache/hadoop/hbase/io/hfile/CacheStats.html" title="class in org.apache.hadoop.hbase.io.hfile">CacheStats</a></dt>
@@ -42244,7 +42289,9 @@
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/AsyncConnectionConfiguration.html#getMetaOperationTimeoutNs--">getMetaOperationTimeoutNs()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/AsyncConnectionConfiguration.html" title="class in org.apache.hadoop.hbase.client">AsyncConnectionConfiguration</a></dt>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/MetaProcedureInterface.html#getMetaOperationType--">getMetaOperationType()</a></span> - Method in interface org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/MetaProcedureInterface.html" title="interface in org.apache.hadoop.hbase.master.procedure">MetaProcedureInterface</a></dt>
-<dd> </dd>
+<dd>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
+ </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/MetricsConnection.html#getMetaPoolName--">getMetaPoolName()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/MetricsConnection.html" title="class in org.apache.hadoop.hbase.client">MetricsConnection</a></dt>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#getMetaProto-byte:A-">getMetaProto(byte[])</a></span> - Static method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/ZKAsyncRegistry.html" title="class in org.apache.hadoop.hbase.client">ZKAsyncRegistry</a></dt>
@@ -46509,8 +46556,6 @@
<dd>
<div class="block">Get the regioninfo for a region</div>
</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#getRegionNormalizer--">getRegionNormalizer()</a></span> - Method in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignmentManager</a></dt>
-<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/HMaster.html#getRegionNormalizer--">getRegionNormalizer()</a></span> - Method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a></dt>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/MasterServices.html#getRegionNormalizer--">getRegionNormalizer()</a></span> - Method in interface org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/MasterServices.html" title="interface in org.apache.hadoop.hbase.master">MasterServices</a></dt>
@@ -48578,8 +48623,6 @@
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/MetricsMasterSourceImpl.html#getServerCrashMetrics--">getServerCrashMetrics()</a></span> - Method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/MetricsMasterSourceImpl.html" title="class in org.apache.hadoop.hbase.master">MetricsMasterSourceImpl</a></dt>
<dd> </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/HMaster.html#getServerCrashProcessingEnabledEvent--">getServerCrashProcessingEnabledEvent()</a></span> - Method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a></dt>
-<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/MetricsMaster.html#getServerCrashProcMetrics--">getServerCrashProcMetrics()</a></span> - Method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/MetricsMaster.html" title="class in org.apache.hadoop.hbase.master">MetricsMaster</a></dt>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/balancer/FavoredStochasticBalancer.html#getServerFromFavoredNode-java.util.List-org.apache.hadoop.hbase.ServerName-">getServerFromFavoredNode(List<ServerName>, ServerName)</a></span> - Method in class org.apache.hadoop.hbase.master.balancer.<a href="org/apache/hadoop/hbase/master/balancer/FavoredStochasticBalancer.html" title="class in org.apache.hadoop.hbase.master.balancer">FavoredStochasticBalancer</a></dt>
@@ -49748,12 +49791,16 @@
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/EnableTableProcedure.html#getState-int-">getState(int)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/EnableTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">EnableTableProcedure</a></dt>
<dd> </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html#getState-int-">getState(int)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">InitMetaProcedure</a></dt>
+<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/ModifyNamespaceProcedure.html#getState-int-">getState(int)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/ModifyNamespaceProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ModifyNamespaceProcedure</a></dt>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html#getState-int-">getState(int)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ModifyTableProcedure</a></dt>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#getState-int-">getState(int)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RecoverMetaProcedure</a></dt>
-<dd> </dd>
+<dd>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
+ </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/ReopenTableRegionsProcedure.html#getState-int-">getState(int)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/ReopenTableRegionsProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ReopenTableRegionsProcedure</a></dt>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html#getState-int-">getState(int)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RestoreSnapshotProcedure</a></dt>
@@ -49820,12 +49867,16 @@
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/EnableTableProcedure.html#getStateId-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.EnableTableState-">getStateId(MasterProcedureProtos.EnableTableState)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/EnableTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">EnableTableProcedure</a></dt>
<dd> </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html#getStateId-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.InitMetaState-">getStateId(MasterProcedureProtos.InitMetaState)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">InitMetaProcedure</a></dt>
+<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/ModifyNamespaceProcedure.html#getStateId-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ModifyNamespaceState-">getStateId(MasterProcedureProtos.ModifyNamespaceState)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/ModifyNamespaceProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ModifyNamespaceProcedure</a></dt>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html#getStateId-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ModifyTableState-">getStateId(MasterProcedureProtos.ModifyTableState)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ModifyTableProcedure</a></dt>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#getStateId-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RecoverMetaState-">getStateId(MasterProcedureProtos.RecoverMetaState)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RecoverMetaProcedure</a></dt>
-<dd> </dd>
+<dd>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
+ </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/ReopenTableRegionsProcedure.html#getStateId-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ReopenTableRegionsState-">getStateId(MasterProcedureProtos.ReopenTableRegionsState)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/ReopenTableRegionsProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ReopenTableRegionsProcedure</a></dt>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html#getStateId-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RestoreSnapshotState-">getStateId(MasterProcedureProtos.RestoreSnapshotState)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RestoreSnapshotProcedure</a></dt>
@@ -50973,6 +51024,8 @@
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/EnableTableProcedure.html#getTableName--">getTableName()</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/EnableTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">EnableTableProcedure</a></dt>
<dd> </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html#getTableName--">getTableName()</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">InitMetaProcedure</a></dt>
+<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#getTableName-org.apache.hadoop.hbase.procedure2.Procedure-">getTableName(Procedure<?>)</a></span> - Static method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureScheduler</a></dt>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html#getTableName--">getTableName()</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ModifyTableProcedure</a></dt>
@@ -51123,6 +51176,8 @@
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/EnableTableProcedure.html#getTableOperationType--">getTableOperationType()</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/EnableTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">EnableTableProcedure</a></dt>
<dd> </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html#getTableOperationType--">getTableOperationType()</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">InitMetaProcedure</a></dt>
+<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/ModifyNamespaceProcedure.html#getTableOperationType--">getTableOperationType()</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/ModifyNamespaceProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ModifyNamespaceProcedure</a></dt>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html#getTableOperationType--">getTableOperationType()</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ModifyTableProcedure</a></dt>
@@ -54142,6 +54197,7 @@
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#handleRIT-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.ServerName-">handleRIT(MasterProcedureEnv, RegionInfo, ServerName)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RecoverMetaProcedure</a></dt>
<dd>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
<div class="block">Is the region stuck assigning to this failedMetaServer? If so, cancel the call
just as we do over in ServerCrashProcedure#handleRIT except less to do here; less context
to carry.</div>
@@ -59553,6 +59609,10 @@
<dd>
<div class="block">Make sure that this global MetricSource for hbase-metrics module based metrics are initialized.</div>
</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#init-int-boolean-">init(int, boolean)</a></span> - Method in class org.apache.hadoop.hbase.procedure2.<a href="org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureExecutor</a></dt>
+<dd>
+<div class="block">Initialize the procedure executor, but do not start workers.</div>
+</dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/procedure2/RSProcedureCallable.html#init-byte:A-org.apache.hadoop.hbase.regionserver.HRegionServer-">init(byte[], HRegionServer)</a></span> - Method in interface org.apache.hadoop.hbase.procedure2.<a href="org/apache/hadoop/hbase/procedure2/RSProcedureCallable.html" title="interface in org.apache.hadoop.hbase.procedure2">RSProcedureCallable</a></dt>
<dd>
<div class="block">Initialize the callable</div>
@@ -60090,6 +60150,12 @@
<dd>
<div class="block">Use this before submitting a TableMap job.</div>
</dd>
+<dt><a href="org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">InitMetaProcedure</span></a> - Class in <a href="org/apache/hadoop/hbase/master/procedure/package-summary.html">org.apache.hadoop.hbase.master.procedure</a></dt>
+<dd>
+<div class="block">This procedure is used to initialize meta table for a new hbase deploy.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html#InitMetaProcedure--">InitMetaProcedure()</a></span> - Constructor for class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">InitMetaProcedure</a></dt>
+<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html#initMetrics-org.apache.hadoop.hbase.thrift.ThriftMetrics-">initMetrics(ThriftMetrics)</a></span> - Method in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftServerRunner.HBaseHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftServerRunner.HBaseHandler</a></dt>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/HMaster.html#initMobCleaner--">initMobCleaner()</a></span> - Method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a></dt>
@@ -61952,11 +62018,6 @@
<dd>
<div class="block">Check if the server should be considered as bad.</div>
</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#isFailoverCleanupDone--">isFailoverCleanupDone()</a></span> - Method in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignmentManager</a></dt>
-<dd>
-<div class="block">Used by ServerCrashProcedure to make sure AssignmentManager has completed
- the failover cleanup before re-assigning regions of dead servers.</div>
-</dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/CompactionTool.html#isFamilyDir-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.fs.Path-">isFamilyDir(FileSystem, Path)</a></span> - Static method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/CompactionTool.html" title="class in org.apache.hadoop.hbase.regionserver">CompactionTool</a></dt>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/filter/ColumnValueFilter.html#isFamilyEssential-byte:A-">isFamilyEssential(byte[])</a></span> - Method in class org.apache.hadoop.hbase.filter.<a href="org/apache/hadoop/hbase/filter/ColumnValueFilter.html" title="class in org.apache.hadoop.hbase.filter">ColumnValueFilter</a></dt>
@@ -62101,6 +62162,8 @@
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/HRegion.WriteState.html#isFlushRequested--">isFlushRequested()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/HRegion.WriteState.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.WriteState</a></dt>
<dd> </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/ServerManager.html#isFlushSeqIdPersistInProgress">isFlushSeqIdPersistInProgress</a></span> - Variable in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a></dt>
+<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/HRegion.html#isFlushSize-org.apache.hadoop.hbase.regionserver.MemStoreSize-">isFlushSize(MemStoreSize)</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> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.html#isFlushSucceeded--">isFlushSucceeded()</a></span> - Method in interface org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.html" title="interface in org.apache.hadoop.hbase.regionserver">HRegion.FlushResult</a></dt>
@@ -62525,6 +62588,13 @@
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#isMeta--">isMeta()</a></span> - Method in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionTransitionProcedure</a></dt>
<dd> </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#isMetaAssigned--">isMetaAssigned()</a></span> - Method in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignmentManager</a></dt>
+<dd>
+<div class="block">Notice that, this only means the meta region is available on a RS, but the AM may still be
+ loading the region states from meta, so usually you need to check <a href="org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#isMetaLoaded--"><code>AssignmentManager.isMetaLoaded()</code></a> first
+ before checking this method, unless you can make sure that your piece of code can only be
+ executed after AM builds the region states.</div>
+</dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/exceptions/ClientExceptionsUtil.html#isMetaClearingException-java.lang.Throwable-">isMetaClearingException(Throwable)</a></span> - Static method in class org.apache.hadoop.hbase.exceptions.<a href="org/apache/hadoop/hbase/exceptions/ClientExceptionsUtil.html" title="class in org.apache.hadoop.hbase.exceptions">ClientExceptionsUtil</a></dt>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/wal/WALEdit.html#isMetaEdit--">isMetaEdit()</a></span> - Method in class org.apache.hadoop.hbase.wal.<a href="org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a></dt>
@@ -62537,10 +62607,10 @@
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/wal/AbstractFSWALProvider.html#isMetaFile-java.lang.String-">isMetaFile(String)</a></span> - Static method in class org.apache.hadoop.hbase.wal.<a href="org/apache/hadoop/hbase/wal/AbstractFSWALProvider.html" title="class in org.apache.hadoop.hbase.wal">AbstractFSWALProvider</a></dt>
<dd> </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#isMetaInitialized--">isMetaInitialized()</a></span> - Method in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignmentManager</a></dt>
-<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#isMetaLoaded--">isMetaLoaded()</a></span> - Method in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignmentManager</a></dt>
-<dd> </dd>
+<dd>
+<div class="block">Return whether AM finishes the meta loading, i.e, the region states rebuilding.</div>
+</dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#isMetaProcedure-org.apache.hadoop.hbase.procedure2.Procedure-">isMetaProcedure(Procedure<?>)</a></span> - Static method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureScheduler</a></dt>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/MasterCallable.html#isMetaRegion-byte:A-">isMetaRegion(byte[])</a></span> - Static method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/MasterCallable.html" title="class in org.apache.hadoop.hbase.client">MasterCallable</a></dt>
@@ -63362,7 +63432,9 @@
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/visibility/VisibilityReplicationEndpoint.html#isRunning--">isRunning()</a></span> - Method in class org.apache.hadoop.hbase.security.visibility.<a href="org/apache/hadoop/hbase/security/visibility/VisibilityReplicationEndpoint.html" title="class in org.apache.hadoop.hbase.security.visibility">VisibilityReplicationEndpoint</a></dt>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#isRunRequired--">isRunRequired()</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RecoverMetaProcedure</a></dt>
-<dd> </dd>
+<dd>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
+ </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/UnassignProcedure.html#isSafeToProceed-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.master.assignment.RegionStates.RegionStateNode-java.io.IOException-">isSafeToProceed(MasterProcedureEnv, RegionStates.RegionStateNode, IOException)</a></span> - Method in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/UnassignProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">UnassignProcedure</a></dt>
<dd>
<div class="block">Our remote call failed but there are a few states where it is safe to proceed with the
@@ -63424,13 +63496,6 @@
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html#isSerial--">isSerial()</a></span> - Method in class org.apache.hadoop.hbase.replication.<a href="org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig</a></dt>
<dd> </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/HMaster.html#isServerCrashProcessingEnabled--">isServerCrashProcessingEnabled()</a></span> - Method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a></dt>
-<dd>
-<div class="block">ServerCrashProcessingEnabled is set false before completing assignMeta to prevent processing
- of crashed servers.</div>
-</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/MasterServices.html#isServerCrashProcessingEnabled--">isServerCrashProcessingEnabled()</a></span> - Method in interface org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/MasterServices.html" title="interface in org.apache.hadoop.hbase.master">MasterServices</a></dt>
-<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/ServerManager.html#isServerDead-org.apache.hadoop.hbase.ServerName-">isServerDead(ServerName)</a></span> - Method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a></dt>
<dd>
<div class="block">Check if a server is known to be dead.</div>
@@ -65044,8 +65109,6 @@
<dd>
<div class="block">Kill one back up ZK servers.</div>
</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#killRegionServer-org.apache.hadoop.hbase.ServerName-">killRegionServer(ServerName)</a></span> - Method in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignmentManager</a></dt>
-<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#killRegionServer-org.apache.hadoop.hbase.master.assignment.RegionStates.ServerStateNode-">killRegionServer(RegionStates.ServerStateNode)</a></span> - Method in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignmentManager</a></dt>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/AnnotationReadingPriorityFunction.html#knownArgumentClasses">knownArgumentClasses</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/AnnotationReadingPriorityFunction.html" title="class in org.apache.hadoop.hbase.regionserver">AnnotationReadingPriorityFunction</a></dt>
@@ -65214,6 +65277,10 @@
<dd>
<div class="block">Last Bloom filter key in FileInfo</div>
</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/ServerManager.html#LAST_FLUSHED_SEQ_ID_FILE">LAST_FLUSHED_SEQ_ID_FILE</a></span> - Static variable in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a></dt>
+<dd>
+<div class="block">File on hdfs to store last flushed sequence id of regions</div>
+</dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/MetricsRegionSource.html#LAST_MAJOR_COMPACTION_AGE">LAST_MAJOR_COMPACTION_AGE</a></span> - Static variable in interface org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/MetricsRegionSource.html" title="interface in org.apache.hadoop.hbase.regionserver">MetricsRegionSource</a></dt>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/MetricsRegionSource.html#LAST_MAJOR_COMPACTION_DESC">LAST_MAJOR_COMPACTION_DESC</a></span> - Static variable in interface org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/MetricsRegionSource.html" title="interface in org.apache.hadoop.hbase.regionserver">MetricsRegionSource</a></dt>
@@ -65493,6 +65560,8 @@
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/locking/EntityLock.html#latch">latch</a></span> - Variable in class org.apache.hadoop.hbase.client.locking.<a href="org/apache/hadoop/hbase/client/locking/EntityLock.html" title="class in org.apache.hadoop.hbase.client.locking">EntityLock</a></dt>
<dd> </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html#latch">latch</a></span> - Variable in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">InitMetaProcedure</a></dt>
+<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/ProcedurePrepareLatch.CompatibilityLatch.html#latch">latch</a></span> - Variable in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/ProcedurePrepareLatch.CompatibilityLatch.html" title="class in org.apache.hadoop.hbase.master.procedure">ProcedurePrepareLatch.CompatibilityLatch</a></dt>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/replication/AbstractPeerProcedure.html#latch">latch</a></span> - Variable in class org.apache.hadoop.hbase.master.replication.<a href="org/apache/hadoop/hbase/master/replication/AbstractPeerProcedure.html" title="class in org.apache.hadoop.hbase.master.replication">AbstractPeerProcedure</a></dt>
@@ -66720,6 +66789,10 @@
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/procedure/ProcedureManagerHost.html#loadInstance-java.lang.Class-">loadInstance(Class<?>)</a></span> - Method in class org.apache.hadoop.hbase.procedure.<a href="org/apache/hadoop/hbase/procedure/ProcedureManagerHost.html" title="class in org.apache.hadoop.hbase.procedure">ProcedureManagerHost</a></dt>
<dd> </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/ServerManager.html#loadLastFlushedSequenceIds--">loadLastFlushedSequenceIds()</a></span> - Method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a></dt>
+<dd>
+<div class="block">Load last flushed sequence id of each region from HDFS, if persisted</div>
+</dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/http/HttpServer.html#loadListeners--">loadListeners()</a></span> - Method in class org.apache.hadoop.hbase.http.<a href="org/apache/hadoop/hbase/http/HttpServer.html" title="class in org.apache.hadoop.hbase.http">HttpServer</a></dt>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#loadMeta--">loadMeta()</a></span> - Method in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignmentManager</a></dt>
@@ -67803,7 +67876,9 @@
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/ProcedureSyncWait.html#LOG">LOG</a></span> - Static variable in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/ProcedureSyncWait.html" title="class in org.apache.hadoop.hbase.master.procedure">ProcedureSyncWait</a></dt>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#LOG">LOG</a></span> - Static variable in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RecoverMetaProcedure</a></dt>
-<dd> </dd>
+<dd>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
+ </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/ReopenTableRegionsProcedure.html#LOG">LOG</a></span> - Static variable in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/ReopenTableRegionsProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ReopenTableRegionsProcedure</a></dt>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html#LOG">LOG</a></span> - Static variable in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RestoreSnapshotProcedure</a></dt>
@@ -70182,7 +70257,9 @@
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/MasterProcedureUtil.NonceProcedureRunnable.html#master">master</a></span> - Variable in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/MasterProcedureUtil.NonceProcedureRunnable.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureUtil.NonceProcedureRunnable</a></dt>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#master">master</a></span> - Variable in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RecoverMetaProcedure</a></dt>
-<dd> </dd>
+<dd>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
+ </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.html#master">master</a></span> - Variable in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.html" title="class in org.apache.hadoop.hbase.master.procedure">RSProcedureDispatcher</a></dt>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/ServerManager.html#master">master</a></span> - Variable in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a></dt>
@@ -72194,6 +72271,8 @@
</dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/ZNodePaths.html#META_ZNODE_PREFIX">META_ZNODE_PREFIX</a></span> - Static variable in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ZNodePaths.html" title="class in org.apache.hadoop.hbase.zookeeper">ZNodePaths</a></dt>
<dd> </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#metaAssignEvent">metaAssignEvent</a></span> - Variable in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignmentManager</a></dt>
+<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.html#metaBlockIndexReader">metaBlockIndexReader</a></span> - Variable 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>
<div class="block">Meta block index reader -- always single level</div>
@@ -72248,8 +72327,6 @@
<dd>
<div class="block">The number of entries in the meta index</div>
</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#metaInitializedEvent">metaInitializedEvent</a></span> - Variable in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignmentManager</a></dt>
-<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/HBaseFsck.RegionBoundariesInformation.html#metaLastKey">metaLastKey</a></span> - Variable in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/HBaseFsck.RegionBoundariesInformation.html" title="class in org.apache.hadoop.hbase.util">HBaseFsck.RegionBoundariesInformation</a></dt>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#metaLoadEvent">metaLoadEvent</a></span> - Variable in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignmentManager</a></dt>
@@ -72299,17 +72376,33 @@
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/AsyncConnectionConfiguration.html#metaOperationTimeoutNs">metaOperationTimeoutNs</a></span> - Variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/AsyncConnectionConfiguration.html" title="class in org.apache.hadoop.hbase.client">AsyncConnectionConfiguration</a></dt>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/MetaProcedureInterface.MetaOperationType.html#MetaOperationType--">MetaOperationType()</a></span> - Constructor for enum 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">MetaProcedureInterface.MetaOperationType</a></dt>
-<dd> </dd>
+<dd>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
+ </dd>
<dt><a href="org/apache/hadoop/hbase/master/procedure/MetaProcedureInterface.html" title="interface in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">MetaProcedureInterface</span></a> - Interface in <a href="org/apache/hadoop/hbase/master/procedure/package-summary.html">org.apache.hadoop.hbase.master.procedure</a></dt>
-<dd> </dd>
+<dd>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span>
+<div class="block"><span class="deprecationComment">only used for <a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>RecoverMetaProcedure</code></a>. Should be removed along with
+ <a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>RecoverMetaProcedure</code></a>.</span></div>
+</div>
+</dd>
<dt><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> - Enum in <a href="org/apache/hadoop/hbase/master/procedure/package-summary.html">org.apache.hadoop.hbase.master.procedure</a></dt>
-<dd> </dd>
+<dd>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
+ </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/wal/WALFactory.html#metaProvider">metaProvider</a></span> - Variable in class org.apache.hadoop.hbase.wal.<a href="org/apache/hadoop/hbase/wal/WALFactory.html" title="class in org.apache.hadoop.hbase.wal">WALFactory</a></dt>
<dd> </dd>
<dt><a href="org/apache/hadoop/hbase/master/procedure/MetaQueue.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">MetaQueue</span></a> - Class in <a href="org/apache/hadoop/hbase/master/procedure/package-summary.html">org.apache.hadoop.hbase.master.procedure</a></dt>
-<dd> </dd>
+<dd>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span>
+<div class="block"><span class="deprecationComment">only used for <a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>RecoverMetaProcedure</code></a>. Should be removed along with
+ <a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>RecoverMetaProcedure</code></a>.</span></div>
+</div>
+</dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/MetaQueue.html#MetaQueue-org.apache.hadoop.hbase.procedure2.LockStatus-">MetaQueue(LockStatus)</a></span> - Constructor for class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/MetaQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">MetaQueue</a></dt>
-<dd> </dd>
+<dd>
+<div class="block"><span class
<TRUNCATED>
[50/51] [partial] hbase-site git commit: Published site at
9101fc246f86445006bfbcdfda5cc495016dc280.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/apache_hbase_reference_guide.pdf
----------------------------------------------------------------------
diff --git a/apache_hbase_reference_guide.pdf b/apache_hbase_reference_guide.pdf
index 90255f0..e443db0 100644
--- a/apache_hbase_reference_guide.pdf
+++ b/apache_hbase_reference_guide.pdf
@@ -5,16 +5,16 @@
/Author (Apache HBase Team)
/Creator (Asciidoctor PDF 1.5.0.alpha.15, based on Prawn 2.2.2)
/Producer (Apache HBase Team)
-/ModDate (D:20180619001822+00'00')
-/CreationDate (D:20180619003342+00'00')
+/ModDate (D:20180620040607+00'00')
+/CreationDate (D:20180620042140+00'00')
>>
endobj
2 0 obj
<< /Type /Catalog
/Pages 3 0 R
-/Names 26 0 R
-/Outlines 4782 0 R
-/PageLabels 5027 0 R
+/Names 28 0 R
+/Outlines 4917 0 R
+/PageLabels 5164 0 R
/PageMode /UseOutlines
/OpenAction [7 0 R /FitH 842.89]
/ViewerPreferences << /DisplayDocTitle true
@@ -23,8 +23,8 @@ endobj
endobj
3 0 obj
<< /Type /Pages
-/Count 748
-/Kids [7 0 R 12 0 R 14 0 R 16 0 R 18 0 R 20 0 R 22 0 R 24 0 R 44 0 R 47 0 R 50 0 R 54 0 R 61 0 R 63 0 R 67 0 R 69 0 R 71 0 R 78 0 R 81 0 R 83 0 R 89 0 R 92 0 R 94 0 R 96 0 R 103 0 R 110 0 R 115 0 R 117 0 R 133 0 R 138 0 R 146 0 R 155 0 R 163 0 R 172 0 R 183 0 R 187 0 R 189 0 R 193 0 R 202 0 R 211 0 R 219 0 R 228 0 R 233 0 R 242 0 R 250 0 R 259 0 R 272 0 R 279 0 R 289 0 R 297 0 R 305 0 R 312 0 R 320 0 R 327 0 R 333 0 R 340 0 R 348 0 R 357 0 R 366 0 R 380 0 R 387 0 R 395 0 R 402 0 R 410 0 R 419 0 R 429 0 R 437 0 R 444 0 R 453 0 R 465 0 R 475 0 R 482 0 R 489 0 R 497 0 R 506 0 R 514 0 R 519 0 R 523 0 R 528 0 R 532 0 R 548 0 R 559 0 R 563 0 R 578 0 R 583 0 R 588 0 R 590 0 R 592 0 R 595 0 R 597 0 R 599 0 R 607 0 R 613 0 R 616 0 R 620 0 R 629 0 R 640 0 R 648 0 R 652 0 R 656 0 R 658 0 R 668 0 R 683 0 R 690 0 R 701 0 R 711 0 R 722 0 R 734 0 R 754 0 R 763 0 R 767 0 R 773 0 R 776 0 R 780 0 R 784 0 R 787 0 R 790 0 R 792 0 R 795 0 R 799 0 R 801 0 R 805 0 R 811 0 R 816 0 R 820 0 R 823 0 R 829 0 R
831 0 R 835 0 R 843 0 R 845 0 R 848 0 R 851 0 R 854 0 R 857 0 R 871 0 R 879 0 R 890 0 R 901 0 R 907 0 R 917 0 R 928 0 R 931 0 R 935 0 R 938 0 R 943 0 R 952 0 R 960 0 R 964 0 R 968 0 R 973 0 R 977 0 R 979 0 R 995 0 R 1006 0 R 1011 0 R 1018 0 R 1021 0 R 1029 0 R 1037 0 R 1042 0 R 1047 0 R 1052 0 R 1054 0 R 1056 0 R 1058 0 R 1068 0 R 1076 0 R 1080 0 R 1087 0 R 1094 0 R 1102 0 R 1106 0 R 1112 0 R 1117 0 R 1125 0 R 1129 0 R 1134 0 R 1136 0 R 1142 0 R 1150 0 R 1156 0 R 1163 0 R 1174 0 R 1178 0 R 1180 0 R 1182 0 R 1186 0 R 1189 0 R 1194 0 R 1197 0 R 1209 0 R 1213 0 R 1219 0 R 1227 0 R 1232 0 R 1236 0 R 1240 0 R 1242 0 R 1245 0 R 1248 0 R 1251 0 R 1255 0 R 1259 0 R 1263 0 R 1268 0 R 1272 0 R 1275 0 R 1277 0 R 1287 0 R 1290 0 R 1298 0 R 1307 0 R 1313 0 R 1317 0 R 1319 0 R 1330 0 R 1333 0 R 1339 0 R 1347 0 R 1350 0 R 1357 0 R 1364 0 R 1367 0 R 1369 0 R 1378 0 R 1380 0 R 1382 0 R 1385 0 R 1387 0 R 1389 0 R 1391 0 R 1393 0 R 1396 0 R 1400 0 R 1405 0 R 1407 0 R 1409 0 R 1411 0 R 1416 0 R 1423 0
R 1429 0 R 1432 0 R 1434 0 R 1437 0 R 1441 0 R 1445 0 R 1448 0 R 1450 0 R 1452 0 R 1455 0 R 1460 0 R 1466 0 R 1474 0 R 1488 0 R 1502 0 R 1505 0 R 1510 0 R 1523 0 R 1528 0 R 1543 0 R 1551 0 R 1555 0 R 1564 0 R 1579 0 R 1593 0 R 1601 0 R 1606 0 R 1617 0 R 1622 0 R 1628 0 R 1634 0 R 1646 0 R 1649 0 R 1658 0 R 1661 0 R 1670 0 R 1676 0 R 1680 0 R 1692 0 R 1697 0 R 1703 0 R 1705 0 R 1712 0 R 1720 0 R 1728 0 R 1732 0 R 1734 0 R 1736 0 R 1748 0 R 1754 0 R 1763 0 R 1769 0 R 1782 0 R 1788 0 R 1794 0 R 1805 0 R 1811 0 R 1816 0 R 1821 0 R 1824 0 R 1827 0 R 1832 0 R 1837 0 R 1844 0 R 1848 0 R 1853 0 R 1862 0 R 1867 0 R 1872 0 R 1874 0 R 1883 0 R 1890 0 R 1896 0 R 1901 0 R 1905 0 R 1909 0 R 1914 0 R 1919 0 R 1925 0 R 1927 0 R 1929 0 R 1932 0 R 1943 0 R 1946 0 R 1953 0 R 1961 0 R 1966 0 R 1970 0 R 1975 0 R 1977 0 R 1980 0 R 1985 0 R 1988 0 R 1990 0 R 1993 0 R 1996 0 R 1999 0 R 2009 0 R 2014 0 R 2019 0 R 2021 0 R 2029 0 R 2036 0 R 2043 0 R 2049 0 R 2054 0 R 2056 0 R 2065 0 R 2075 0 R 2085 0 R 2091
0 R 2098 0 R 2100 0 R 2105 0 R 2107 0 R 2109 0 R 2113 0 R 2116 0 R 2119 0 R 2124 0 R 2128 0 R 2139 0 R 2142 0 R 2147 0 R 2150 0 R 2152 0 R 2157 0 R 2167 0 R 2169 0 R 2171 0 R 2173 0 R 2175 0 R 2178 0 R 2180 0 R 2182 0 R 2185 0 R 2187 0 R 2189 0 R 2193 0 R 2198 0 R 2207 0 R 2209 0 R 2211 0 R 2217 0 R 2219 0 R 2224 0 R 2226 0 R 2228 0 R 2235 0 R 2240 0 R 2244 0 R 2249 0 R 2253 0 R 2255 0 R 2257 0 R 2261 0 R 2264 0 R 2266 0 R 2268 0 R 2272 0 R 2274 0 R 2277 0 R 2279 0 R 2281 0 R 2283 0 R 2290 0 R 2293 0 R 2298 0 R 2300 0 R 2302 0 R 2304 0 R 2306 0 R 2314 0 R 2325 0 R 2339 0 R 2350 0 R 2354 0 R 2359 0 R 2363 0 R 2366 0 R 2371 0 R 2377 0 R 2379 0 R 2382 0 R 2384 0 R 2386 0 R 2388 0 R 2393 0 R 2395 0 R 2408 0 R 2411 0 R 2419 0 R 2425 0 R 2437 0 R 2451 0 R 2464 0 R 2483 0 R 2485 0 R 2487 0 R 2491 0 R 2509 0 R 2515 0 R 2527 0 R 2531 0 R 2535 0 R 2544 0 R 2556 0 R 2561 0 R 2571 0 R 2584 0 R 2603 0 R 2612 0 R 2615 0 R 2624 0 R 2641 0 R 2648 0 R 2651 0 R 2656 0 R 2660 0 R 2663 0 R 2672 0 R 26
81 0 R 2684 0 R 2686 0 R 2690 0 R 2704 0 R 2713 0 R 2718 0 R 2722 0 R 2725 0 R 2727 0 R 2729 0 R 2731 0 R 2736 0 R 2749 0 R 2759 0 R 2767 0 R 2773 0 R 2778 0 R 2789 0 R 2796 0 R 2802 0 R 2804 0 R 2813 0 R 2821 0 R 2823 0 R 2831 0 R 2839 0 R 2841 0 R 2850 0 R 2853 0 R 2863 0 R 2867 0 R 2876 0 R 2884 0 R 2889 0 R 2893 0 R 2897 0 R 2899 0 R 2905 0 R 2909 0 R 2913 0 R 2919 0 R 2925 0 R 2928 0 R 2934 0 R 2938 0 R 2947 0 R 2952 0 R 2958 0 R 2968 0 R 2974 0 R 2981 0 R 2984 0 R 2987 0 R 2994 0 R 2999 0 R 3002 0 R 3007 0 R 3017 0 R 3022 0 R 3024 0 R 3028 0 R 3035 0 R 3038 0 R 3049 0 R 3052 0 R 3059 0 R 3067 0 R 3074 0 R 3079 0 R 3088 0 R 3093 0 R 3097 0 R 3105 0 R 3110 0 R 3114 0 R 3116 0 R 3127 0 R 3132 0 R 3135 0 R 3137 0 R 3139 0 R 3149 0 R 3156 0 R 3160 0 R 3163 0 R 3169 0 R 3173 0 R 3176 0 R 3180 0 R 3185 0 R 3193 0 R 3198 0 R 3203 0 R 3208 0 R 3210 0 R 3213 0 R 3215 0 R 3219 0 R 3230 0 R 3232 0 R 3236 0 R 3239 0 R 3243 0 R 3246 0 R 3250 0 R 3252 0 R 3265 0 R 3270 0 R 3275 0 R 3281 0 R
3289 0 R 3291 0 R 3299 0 R 3317 0 R 3329 0 R 3335 0 R 3351 0 R 3354 0 R 3359 0 R 3361 0 R 3368 0 R 3371 0 R 3376 0 R 3379 0 R 3381 0 R 3383 0 R 3385 0 R 3388 0 R 3406 0 R 3409 0 R 3414 0 R 3420 0 R 3430 0 R 3435 0 R 3445 0 R 3455 0 R 3463 0 R 3468 0 R 3474 0 R 3479 0 R 3482 0 R 3490 0 R 3494 0 R 3499 0 R 3504 0 R 3517 0 R 3520 0 R 3526 0 R 3532 0 R 3537 0 R 3546 0 R 3555 0 R 3561 0 R 3570 0 R 3579 0 R 3584 0 R 3590 0 R 3596 0 R 3600 0 R 3602 0 R 3608 0 R 3615 0 R 3617 0 R 3623 0 R 3625 0 R 3631 0 R 3639 0 R 3645 0 R 3654 0 R 3661 0 R 3672 0 R 3682 0 R 3694 0 R 3707 0 R 3710 0 R 3712 0 R 3716 0 R 3729 0 R 3735 0 R 3740 0 R 3746 0 R 3750 0 R 3753 0 R 3758 0 R 3760 0 R 3764 0 R 3766 0 R 3770 0 R 3773 0 R 3776 0 R 3784 0 R 3786 0 R 3792 0 R 3795 0 R 3802 0 R 3806 0 R 3809 0 R 3812 0 R 3815 0 R 3819 0 R 3822 0 R 3827 0 R 3832 0 R 3835 0 R 3843 0 R 3847 0 R 3851 0 R 3853 0 R 3856 0 R 3859 0 R 3864 0 R 3871 0 R 3877 0 R 3881 0 R 3884 0 R 3891 0 R 3899 0 R 3903 0 R 3906 0 R 3908 0 R 3912 0
R 3917 0 R 3922 0 R 3925 0 R 3934 0 R 3939 0 R 3943 0 R 3946 0 R 3954 0 R 3959 0 R 3967 0 R 3972 0 R 3974 0 R 3980 0 R 3982 0 R 3987 0 R 3991 0 R 3996 0 R 4000 0 R 4012 0 R 4028 0 R 4043 0 R 4048 0 R 4051 0 R 4054 0 R 4060 0 R 4065 0 R 4067 0 R 4069 0 R 4071 0 R 4073 0 R 4075 0 R 4084 0 R 4088 0 R 4092 0 R 4096 0 R 4098 0 R 4105 0 R 4115 0 R 4124 0 R 4127 0 R 4130 0 R 4132 0 R 4139 0 R 4146 0 R 4156 0 R 4160 0 R 4163 0 R 4167 0 R 4170 0 R 4176 0 R 4179 0 R 4194 0 R 4199 0 R 4222 0 R 4226 0 R 4233 0 R 4244 0 R 4253 0 R 4256 0 R 4259 0 R 4262 0 R 4278 0 R 4283 0 R 4290 0 R]
+/Count 771
+/Kids [7 0 R 12 0 R 14 0 R 16 0 R 18 0 R 20 0 R 22 0 R 24 0 R 26 0 R 46 0 R 49 0 R 52 0 R 56 0 R 63 0 R 65 0 R 69 0 R 71 0 R 73 0 R 80 0 R 83 0 R 85 0 R 91 0 R 94 0 R 96 0 R 98 0 R 105 0 R 112 0 R 117 0 R 119 0 R 135 0 R 140 0 R 148 0 R 157 0 R 165 0 R 174 0 R 185 0 R 189 0 R 191 0 R 195 0 R 204 0 R 213 0 R 221 0 R 230 0 R 235 0 R 244 0 R 252 0 R 261 0 R 274 0 R 281 0 R 291 0 R 299 0 R 307 0 R 314 0 R 322 0 R 329 0 R 335 0 R 342 0 R 350 0 R 359 0 R 368 0 R 382 0 R 389 0 R 397 0 R 404 0 R 412 0 R 421 0 R 431 0 R 439 0 R 446 0 R 455 0 R 467 0 R 477 0 R 484 0 R 491 0 R 499 0 R 508 0 R 516 0 R 521 0 R 525 0 R 530 0 R 534 0 R 550 0 R 561 0 R 565 0 R 580 0 R 585 0 R 590 0 R 592 0 R 594 0 R 597 0 R 599 0 R 601 0 R 609 0 R 615 0 R 618 0 R 622 0 R 631 0 R 642 0 R 650 0 R 654 0 R 658 0 R 660 0 R 670 0 R 685 0 R 692 0 R 703 0 R 713 0 R 724 0 R 736 0 R 756 0 R 765 0 R 769 0 R 775 0 R 778 0 R 782 0 R 786 0 R 789 0 R 792 0 R 794 0 R 797 0 R 801 0 R 803 0 R 807 0 R 813 0 R 818 0 R 822 0 R 825 0 R
831 0 R 833 0 R 837 0 R 845 0 R 847 0 R 850 0 R 853 0 R 856 0 R 859 0 R 873 0 R 881 0 R 892 0 R 903 0 R 909 0 R 919 0 R 930 0 R 933 0 R 937 0 R 940 0 R 945 0 R 954 0 R 962 0 R 966 0 R 970 0 R 975 0 R 979 0 R 981 0 R 997 0 R 1008 0 R 1013 0 R 1020 0 R 1023 0 R 1031 0 R 1039 0 R 1044 0 R 1049 0 R 1054 0 R 1056 0 R 1058 0 R 1060 0 R 1070 0 R 1078 0 R 1082 0 R 1089 0 R 1096 0 R 1104 0 R 1108 0 R 1114 0 R 1119 0 R 1127 0 R 1131 0 R 1136 0 R 1138 0 R 1144 0 R 1152 0 R 1158 0 R 1165 0 R 1176 0 R 1180 0 R 1182 0 R 1184 0 R 1188 0 R 1191 0 R 1196 0 R 1199 0 R 1211 0 R 1215 0 R 1221 0 R 1229 0 R 1234 0 R 1238 0 R 1242 0 R 1244 0 R 1247 0 R 1250 0 R 1253 0 R 1257 0 R 1261 0 R 1265 0 R 1270 0 R 1274 0 R 1277 0 R 1279 0 R 1289 0 R 1292 0 R 1300 0 R 1309 0 R 1315 0 R 1319 0 R 1321 0 R 1332 0 R 1335 0 R 1341 0 R 1349 0 R 1352 0 R 1359 0 R 1366 0 R 1369 0 R 1371 0 R 1380 0 R 1382 0 R 1384 0 R 1387 0 R 1389 0 R 1391 0 R 1393 0 R 1395 0 R 1398 0 R 1402 0 R 1407 0 R 1409 0 R 1411 0 R 1413 0 R 1418 0 R
1425 0 R 1431 0 R 1434 0 R 1436 0 R 1439 0 R 1443 0 R 1447 0 R 1450 0 R 1452 0 R 1454 0 R 1457 0 R 1462 0 R 1468 0 R 1476 0 R 1490 0 R 1504 0 R 1507 0 R 1512 0 R 1525 0 R 1530 0 R 1545 0 R 1553 0 R 1557 0 R 1566 0 R 1581 0 R 1595 0 R 1603 0 R 1608 0 R 1619 0 R 1624 0 R 1630 0 R 1636 0 R 1648 0 R 1651 0 R 1660 0 R 1663 0 R 1672 0 R 1678 0 R 1682 0 R 1694 0 R 1699 0 R 1705 0 R 1707 0 R 1714 0 R 1722 0 R 1730 0 R 1734 0 R 1736 0 R 1738 0 R 1750 0 R 1756 0 R 1765 0 R 1771 0 R 1784 0 R 1790 0 R 1796 0 R 1807 0 R 1813 0 R 1818 0 R 1823 0 R 1826 0 R 1829 0 R 1834 0 R 1839 0 R 1846 0 R 1850 0 R 1855 0 R 1864 0 R 1869 0 R 1874 0 R 1876 0 R 1885 0 R 1892 0 R 1898 0 R 1903 0 R 1907 0 R 1911 0 R 1916 0 R 1921 0 R 1927 0 R 1929 0 R 1931 0 R 1934 0 R 1945 0 R 1948 0 R 1955 0 R 1963 0 R 1968 0 R 1972 0 R 1977 0 R 1979 0 R 1982 0 R 1987 0 R 1990 0 R 1992 0 R 1995 0 R 1998 0 R 2001 0 R 2011 0 R 2016 0 R 2021 0 R 2023 0 R 2031 0 R 2038 0 R 2045 0 R 2051 0 R 2056 0 R 2058 0 R 2067 0 R 2077 0 R 2087 0
R 2093 0 R 2100 0 R 2102 0 R 2107 0 R 2109 0 R 2111 0 R 2115 0 R 2118 0 R 2121 0 R 2126 0 R 2130 0 R 2141 0 R 2144 0 R 2149 0 R 2152 0 R 2154 0 R 2159 0 R 2169 0 R 2171 0 R 2173 0 R 2175 0 R 2177 0 R 2180 0 R 2182 0 R 2184 0 R 2187 0 R 2189 0 R 2191 0 R 2195 0 R 2200 0 R 2209 0 R 2211 0 R 2213 0 R 2219 0 R 2221 0 R 2226 0 R 2228 0 R 2230 0 R 2237 0 R 2242 0 R 2246 0 R 2251 0 R 2255 0 R 2257 0 R 2259 0 R 2263 0 R 2266 0 R 2268 0 R 2270 0 R 2274 0 R 2276 0 R 2279 0 R 2281 0 R 2283 0 R 2285 0 R 2292 0 R 2295 0 R 2300 0 R 2302 0 R 2304 0 R 2306 0 R 2308 0 R 2316 0 R 2327 0 R 2341 0 R 2352 0 R 2356 0 R 2361 0 R 2365 0 R 2368 0 R 2373 0 R 2379 0 R 2381 0 R 2384 0 R 2386 0 R 2388 0 R 2390 0 R 2395 0 R 2397 0 R 2410 0 R 2413 0 R 2421 0 R 2427 0 R 2439 0 R 2453 0 R 2466 0 R 2485 0 R 2487 0 R 2489 0 R 2493 0 R 2511 0 R 2517 0 R 2529 0 R 2533 0 R 2537 0 R 2546 0 R 2558 0 R 2563 0 R 2573 0 R 2586 0 R 2605 0 R 2614 0 R 2617 0 R 2626 0 R 2643 0 R 2650 0 R 2653 0 R 2658 0 R 2662 0 R 2665 0 R 2674
0 R 2683 0 R 2686 0 R 2688 0 R 2692 0 R 2706 0 R 2715 0 R 2720 0 R 2724 0 R 2727 0 R 2729 0 R 2731 0 R 2733 0 R 2738 0 R 2751 0 R 2761 0 R 2769 0 R 2775 0 R 2780 0 R 2791 0 R 2798 0 R 2804 0 R 2806 0 R 2815 0 R 2823 0 R 2825 0 R 2833 0 R 2841 0 R 2843 0 R 2852 0 R 2855 0 R 2865 0 R 2869 0 R 2878 0 R 2886 0 R 2891 0 R 2895 0 R 2899 0 R 2901 0 R 2907 0 R 2911 0 R 2915 0 R 2921 0 R 2927 0 R 2930 0 R 2936 0 R 2940 0 R 2949 0 R 2954 0 R 2960 0 R 2970 0 R 2976 0 R 2983 0 R 2986 0 R 2989 0 R 2996 0 R 3001 0 R 3004 0 R 3009 0 R 3019 0 R 3024 0 R 3026 0 R 3030 0 R 3037 0 R 3040 0 R 3051 0 R 3054 0 R 3061 0 R 3069 0 R 3076 0 R 3081 0 R 3090 0 R 3095 0 R 3099 0 R 3107 0 R 3112 0 R 3116 0 R 3118 0 R 3129 0 R 3134 0 R 3137 0 R 3139 0 R 3141 0 R 3151 0 R 3158 0 R 3162 0 R 3165 0 R 3171 0 R 3175 0 R 3178 0 R 3182 0 R 3187 0 R 3195 0 R 3200 0 R 3205 0 R 3210 0 R 3212 0 R 3215 0 R 3217 0 R 3221 0 R 3232 0 R 3234 0 R 3238 0 R 3241 0 R 3245 0 R 3248 0 R 3252 0 R 3254 0 R 3267 0 R 3272 0 R 3277 0 R 32
83 0 R 3291 0 R 3293 0 R 3301 0 R 3319 0 R 3331 0 R 3337 0 R 3353 0 R 3356 0 R 3361 0 R 3363 0 R 3370 0 R 3373 0 R 3378 0 R 3381 0 R 3383 0 R 3385 0 R 3387 0 R 3390 0 R 3408 0 R 3411 0 R 3416 0 R 3422 0 R 3432 0 R 3437 0 R 3447 0 R 3457 0 R 3465 0 R 3470 0 R 3476 0 R 3481 0 R 3484 0 R 3492 0 R 3496 0 R 3501 0 R 3506 0 R 3519 0 R 3522 0 R 3528 0 R 3534 0 R 3539 0 R 3548 0 R 3557 0 R 3563 0 R 3572 0 R 3581 0 R 3586 0 R 3592 0 R 3598 0 R 3602 0 R 3604 0 R 3610 0 R 3617 0 R 3619 0 R 3625 0 R 3627 0 R 3633 0 R 3641 0 R 3647 0 R 3656 0 R 3663 0 R 3674 0 R 3684 0 R 3696 0 R 3709 0 R 3712 0 R 3714 0 R 3718 0 R 3731 0 R 3737 0 R 3742 0 R 3748 0 R 3752 0 R 3755 0 R 3760 0 R 3762 0 R 3766 0 R 3768 0 R 3772 0 R 3775 0 R 3778 0 R 3786 0 R 3788 0 R 3794 0 R 3797 0 R 3804 0 R 3808 0 R 3811 0 R 3814 0 R 3817 0 R 3821 0 R 3824 0 R 3829 0 R 3834 0 R 3837 0 R 3845 0 R 3849 0 R 3853 0 R 3855 0 R 3858 0 R 3861 0 R 3866 0 R 3873 0 R 3879 0 R 3883 0 R 3886 0 R 3893 0 R 3901 0 R 3905 0 R 3908 0 R 3910 0 R
3914 0 R 3919 0 R 3924 0 R 3927 0 R 3936 0 R 3941 0 R 3945 0 R 3948 0 R 3956 0 R 3961 0 R 3969 0 R 3974 0 R 3976 0 R 3982 0 R 3984 0 R 3989 0 R 3993 0 R 3998 0 R 4002 0 R 4014 0 R 4030 0 R 4045 0 R 4050 0 R 4053 0 R 4056 0 R 4062 0 R 4067 0 R 4069 0 R 4071 0 R 4073 0 R 4075 0 R 4077 0 R 4086 0 R 4090 0 R 4094 0 R 4098 0 R 4100 0 R 4107 0 R 4117 0 R 4126 0 R 4129 0 R 4132 0 R 4134 0 R 4141 0 R 4148 0 R 4158 0 R 4162 0 R 4165 0 R 4169 0 R 4172 0 R 4178 0 R 4181 0 R 4196 0 R 4201 0 R 4224 0 R 4228 0 R 4235 0 R 4246 0 R 4255 0 R 4258 0 R 4261 0 R 4264 0 R 4280 0 R 4285 0 R 4292 0 R 4295 0 R 4298 0 R 4305 0 R 4310 0 R 4314 0 R 4316 0 R 4323 0 R 4330 0 R 4338 0 R 4342 0 R 4347 0 R 4352 0 R 4358 0 R 4365 0 R 4372 0 R 4378 0 R 4386 0 R 4394 0 R 4398 0 R 4407 0 R 4416 0 R 4422 0 R]
>>
endobj
4 0 obj
@@ -187,11 +187,11 @@ endobj
<< /Type /Font
/BaseFont /71be00+NotoSerif
/Subtype /TrueType
-/FontDescriptor 5029 0 R
+/FontDescriptor 5166 0 R
/FirstChar 32
/LastChar 255
-/Widths 5031 0 R
-/ToUnicode 5030 0 R
+/Widths 5168 0 R
+/ToUnicode 5167 0 R
>>
endobj
11 0 obj
@@ -1746,11 +1746,11 @@ endobj
/ArtBox [0 0 595.28 841.89]
/Contents 11 0 R
/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
-/Font << /F2.0 29 0 R
+/Font << /F2.0 31 0 R
/F1.0 10 0 R
>>
>>
-/Annots [4292 0 R 4293 0 R 4294 0 R 4295 0 R 4296 0 R 4297 0 R 4298 0 R 4299 0 R 4300 0 R 4301 0 R 4302 0 R 4303 0 R 4304 0 R 4305 0 R 4306 0 R 4307 0 R 4308 0 R 4309 0 R 4310 0 R 4311 0 R 4312 0 R 4313 0 R 4314 0 R 4315 0 R 4316 0 R 4317 0 R 4318 0 R 4319 0 R 4320 0 R 4321 0 R 4322 0 R 4323 0 R 4324 0 R 4325 0 R 4326 0 R 4327 0 R 4328 0 R 4329 0 R 4330 0 R 4331 0 R 4332 0 R 4333 0 R 4334 0 R 4335 0 R 4336 0 R 4337 0 R 4338 0 R 4339 0 R 4340 0 R 4341 0 R 4342 0 R 4343 0 R 4344 0 R 4345 0 R 4346 0 R 4347 0 R 4348 0 R 4349 0 R 4350 0 R 4351 0 R 4352 0 R 4353 0 R 4354 0 R 4355 0 R 4356 0 R 4357 0 R 4358 0 R 4359 0 R 4360 0 R 4361 0 R 4362 0 R 4363 0 R 4364 0 R 4365 0 R 4366 0 R 4367 0 R]
+/Annots [4423 0 R 4424 0 R 4425 0 R 4426 0 R 4427 0 R 4428 0 R 4429 0 R 4430 0 R 4431 0 R 4432 0 R 4433 0 R 4434 0 R 4435 0 R 4436 0 R 4437 0 R 4438 0 R 4439 0 R 4440 0 R 4441 0 R 4442 0 R 4443 0 R 4444 0 R 4445 0 R 4446 0 R 4447 0 R 4448 0 R 4449 0 R 4450 0 R 4451 0 R 4452 0 R 4453 0 R 4454 0 R 4455 0 R 4456 0 R 4457 0 R 4458 0 R 4459 0 R 4460 0 R 4461 0 R 4462 0 R 4463 0 R 4464 0 R 4465 0 R 4466 0 R 4467 0 R 4468 0 R 4469 0 R 4470 0 R 4471 0 R 4472 0 R 4473 0 R 4474 0 R 4475 0 R 4476 0 R 4477 0 R 4478 0 R 4479 0 R 4480 0 R 4481 0 R 4482 0 R 4483 0 R 4484 0 R 4485 0 R 4486 0 R 4487 0 R 4488 0 R 4489 0 R 4490 0 R 4491 0 R 4492 0 R 4493 0 R 4494 0 R 4495 0 R 4496 0 R 4497 0 R 4498 0 R]
>>
endobj
13 0 obj
@@ -3417,7 +3417,7 @@ endobj
/Font << /F1.0 10 0 R
>>
>>
-/Annots [4368 0 R 4369 0 R 4370 0 R 4371 0 R 4372 0 R 4373 0 R 4374 0 R 4375 0 R 4376 0 R 4377 0 R 4378 0 R 4379 0 R 4380 0 R 4381 0 R 4382 0 R 4383 0 R 4384 0 R 4385 0 R 4386 0 R 4387 0 R 4388 0 R 4389 0 R 4390 0 R 4391 0 R 4392 0 R 4393 0 R 4394 0 R 4395 0 R 4396 0 R 4397 0 R 4398 0 R 4399 0 R 4400 0 R 4401 0 R 4402 0 R 4403 0 R 4404 0 R 4405 0 R 4406 0 R 4407 0 R 4408 0 R 4409 0 R 4410 0 R 4411 0 R 4412 0 R 4413 0 R 4414 0 R 4415 0 R 4416 0 R 4417 0 R 4418 0 R 4419 0 R 4420 0 R 4421 0 R 4422 0 R 4423 0 R 4424 0 R 4425 0 R 4426 0 R 4427 0 R 4428 0 R 4429 0 R 4430 0 R 4431 0 R 4432 0 R 4433 0 R 4434 0 R 4435 0 R 4436 0 R 4437 0 R 4438 0 R 4439 0 R 4440 0 R 4441 0 R 4442 0 R 4443 0 R 4444 0 R 4445 0 R 4446 0 R 4447 0 R 4448 0 R 4449 0 R]
+/Annots [4499 0 R 4500 0 R 4501 0 R 4502 0 R 4503 0 R 4504 0 R 4505 0 R 4506 0 R 4507 0 R 4508 0 R 4509 0 R 4510 0 R 4511 0 R 4512 0 R 4513 0 R 4514 0 R 4515 0 R 4516 0 R 4517 0 R 4518 0 R 4519 0 R 4520 0 R 4521 0 R 4522 0 R 4523 0 R 4524 0 R 4525 0 R 4526 0 R 4527 0 R 4528 0 R 4529 0 R 4530 0 R 4531 0 R 4532 0 R 4533 0 R 4534 0 R 4535 0 R 4536 0 R 4537 0 R 4538 0 R 4539 0 R 4540 0 R 4541 0 R 4542 0 R 4543 0 R 4544 0 R 4545 0 R 4546 0 R 4547 0 R 4548 0 R 4549 0 R 4550 0 R 4551 0 R 4552 0 R 4553 0 R 4554 0 R 4555 0 R 4556 0 R 4557 0 R 4558 0 R 4559 0 R 4560 0 R 4561 0 R 4562 0 R 4563 0 R 4564 0 R 4565 0 R 4566 0 R 4567 0 R 4568 0 R 4569 0 R 4570 0 R 4571 0 R 4572 0 R 4573 0 R 4574 0 R 4575 0 R 4576 0 R 4577 0 R 4578 0 R 4579 0 R 4580 0 R]
>>
endobj
15 0 obj
@@ -5084,7 +5084,7 @@ endobj
/Font << /F1.0 10 0 R
>>
>>
-/Annots [4450 0 R 4451 0 R 4452 0 R 4453 0 R 4454 0 R 4455 0 R 4456 0 R 4457 0 R 4458 0 R 4459 0 R 4460 0 R 4461 0 R 4462 0 R 4463 0 R 4464 0 R 4465 0 R 4466 0 R 4467 0 R 4468 0 R 4469 0 R 4470 0 R 4471 0 R 4472 0 R 4473 0 R 4474 0 R 4475 0 R 4476 0 R 4477 0 R 4478 0 R 4479 0 R 4480 0 R 4481 0 R 4482 0 R 4483 0 R 4484 0 R 4485 0 R 4486 0 R 4487 0 R 4488 0 R 4489 0 R 4490 0 R 4491 0 R 4492 0 R 4493 0 R 4494 0 R 4495 0 R 4496 0 R 4497 0 R 4498 0 R 4499 0 R 4500 0 R 4501 0 R 4502 0 R 4503 0 R 4504 0 R 4505 0 R 4506 0 R 4507 0 R 4508 0 R 4509 0 R 4510 0 R 4511 0 R 4512 0 R 4513 0 R 4514 0 R 4515 0 R 4516 0 R 4517 0 R 4518 0 R 4519 0 R 4520 0 R 4521 0 R 4522 0 R 4523 0 R 4524 0 R 4525 0 R 4526 0 R 4527 0 R 4528 0 R 4529 0 R 4530 0 R 4531 0 R]
+/Annots [4581 0 R 4582 0 R 4583 0 R 4584 0 R 4585 0 R 4586 0 R 4587 0 R 4588 0 R 4589 0 R 4590 0 R 4591 0 R 4592 0 R 4593 0 R 4594 0 R 4595 0 R 4596 0 R 4597 0 R 4598 0 R 4599 0 R 4600 0 R 4601 0 R 4602 0 R 4603 0 R 4604 0 R 4605 0 R 4606 0 R 4607 0 R 4608 0 R 4609 0 R 4610 0 R 4611 0 R 4612 0 R 4613 0 R 4614 0 R 4615 0 R 4616 0 R 4617 0 R 4618 0 R 4619 0 R 4620 0 R 4621 0 R 4622 0 R 4623 0 R 4624 0 R 4625 0 R 4626 0 R 4627 0 R 4628 0 R 4629 0 R 4630 0 R 4631 0 R 4632 0 R 4633 0 R 4634 0 R 4635 0 R 4636 0 R 4637 0 R 4638 0 R 4639 0 R 4640 0 R 4641 0 R 4642 0 R 4643 0 R 4644 0 R 4645 0 R 4646 0 R 4647 0 R 4648 0 R 4649 0 R 4650 0 R 4651 0 R 4652 0 R 4653 0 R 4654 0 R 4655 0 R 4656 0 R 4657 0 R 4658 0 R 4659 0 R 4660 0 R 4661 0 R 4662 0 R]
>>
endobj
17 0 obj
@@ -6751,7 +6751,7 @@ endobj
/Font << /F1.0 10 0 R
>>
>>
-/Annots [4532 0 R 4533 0 R 4534 0 R 4535 0 R 4536 0 R 4537 0 R 4538 0 R 4539 0 R 4540 0 R 4541 0 R 4542 0 R 4543 0 R 4544 0 R 4545 0 R 4546 0 R 4547 0 R 4548 0 R 4549 0 R 4550 0 R 4551 0 R 4552 0 R 4553 0 R 4554 0 R 4555 0 R 4556 0 R 4557 0 R 4558 0 R 4559 0 R 4560 0 R 4561 0 R 4562 0 R 4563 0 R 4564 0 R 4565 0 R 4566 0 R 4567 0 R 4568 0 R 4569 0 R 4570 0 R 4571 0 R 4572 0 R 4573 0 R 4574 0 R 4575 0 R 4576 0 R 4577 0 R 4578 0 R 4579 0 R 4580 0 R 4581 0 R 4582 0 R 4583 0 R 4584 0 R 4585 0 R 4586 0 R 4587 0 R 4588 0 R 4589 0 R 4590 0 R 4591 0 R 4592 0 R 4593 0 R 4594 0 R 4595 0 R 4596 0 R 4597 0 R 4598 0 R 4599 0 R 4600 0 R 4601 0 R 4602 0 R 4603 0 R 4604 0 R 4605 0 R 4606 0 R 4607 0 R 4608 0 R 4609 0 R 4610 0 R 4611 0 R 4612 0 R 4613 0 R]
+/Annots [4663 0 R 4664 0 R 4665 0 R 4666 0 R 4667 0 R 4668 0 R 4669 0 R 4670 0 R 4671 0 R 4672 0 R 4673 0 R 4674 0 R 4675 0 R 4676 0 R 4677 0 R 4678 0 R 4679 0 R 4680 0 R 4681 0 R 4682 0 R 4683 0 R 4684 0 R 4685 0 R 4686 0 R 4687 0 R 4688 0 R 4689 0 R 4690 0 R 4691 0 R 4692 0 R 4693 0 R 4694 0 R 4695 0 R 4696 0 R 4697 0 R 4698 0 R 4699 0 R 4700 0 R 4701 0 R 4702 0 R 4703 0 R 4704 0 R 4705 0 R 4706 0 R 4707 0 R 4708 0 R 4709 0 R 4710 0 R 4711 0 R 4712 0 R 4713 0 R 4714 0 R 4715 0 R 4716 0 R 4717 0 R 4718 0 R 4719 0 R 4720 0 R 4721 0 R 4722 0 R 4723 0 R 4724 0 R 4725 0 R 4726 0 R 4727 0 R 4728 0 R 4729 0 R 4730 0 R 4731 0 R 4732 0 R 4733 0 R 4734 0 R 4735 0 R 4736 0 R 4737 0 R 4738 0 R 4739 0 R 4740 0 R 4741 0 R 4742 0 R 4743 0 R 4744 0 R]
>>
endobj
19 0 obj
@@ -8440,11 +8440,11 @@ endobj
/Font << /F1.0 10 0 R
>>
>>
-/Annots [4614 0 R 4615 0 R 4616 0 R 4617 0 R 4618 0 R 4619 0 R 4620 0 R 4621 0 R 4622 0 R 4623 0 R 4624 0 R 4625 0 R 4626 0 R 4627 0 R 4628 0 R 4629 0 R 4630 0 R 4631 0 R 4632 0 R 4633 0 R 4634 0 R 4635 0 R 4636 0 R 4637 0 R 4638 0 R 4639 0 R 4640 0 R 4641 0 R 4642 0 R 4643 0 R 4644 0 R 4645 0 R 4646 0 R 4647 0 R 4648 0 R 4649 0 R 4650 0 R 4651 0 R 4652 0 R 4653 0 R 4654 0 R 4655 0 R 4656 0 R 4657 0 R 4658 0 R 4659 0 R 4660 0 R 4661 0 R 4662 0 R 4663 0 R 4664 0 R 4665 0 R 4666 0 R 4667 0 R 4668 0 R 4669 0 R 4670 0 R 4671 0 R 4672 0 R 4673 0 R 4674 0 R 4675 0 R 4676 0 R 4677 0 R 4678 0 R 4679 0 R 4680 0 R 4681 0 R 4682 0 R 4683 0 R 4684 0 R 4685 0 R 4686 0 R 4687 0 R 4688 0 R 4689 0 R 4690 0 R 4691 0 R 4692 0 R 4693 0 R 4694 0 R 4695 0 R 4696 0 R 4697 0 R 4698 0 R 4699 0 R]
+/Annots [4745 0 R 4746 0 R 4747 0 R 4748 0 R 4749 0 R 4750 0 R 4751 0 R 4752 0 R 4753 0 R 4754 0 R 4755 0 R 4756 0 R 4757 0 R 4758 0 R 4759 0 R 4760 0 R 4761 0 R 4762 0 R 4763 0 R 4764 0 R 4765 0 R 4766 0 R 4767 0 R 4768 0 R 4769 0 R 4770 0 R 4771 0 R 4772 0 R 4773 0 R 4774 0 R 4775 0 R 4776 0 R 4777 0 R 4778 0 R 4779 0 R 4780 0 R 4781 0 R 4782 0 R 4783 0 R 4784 0 R 4785 0 R 4786 0 R 4787 0 R 4788 0 R 4789 0 R 4790 0 R 4791 0 R 4792 0 R 4793 0 R 4794 0 R 4795 0 R 4796 0 R 4797 0 R 4798 0 R 4799 0 R 4800 0 R 4801 0 R 4802 0 R 4803 0 R 4804 0 R 4805 0 R 4806 0 R 4807 0 R 4808 0 R 4809 0 R 4810 0 R 4811 0 R 4812 0 R 4813 0 R 4814 0 R 4815 0 R 4816 0 R 4817 0 R 4818 0 R 4819 0 R 4820 0 R 4821 0 R 4822 0 R 4823 0 R 4824 0 R 4825 0 R 4826 0 R 4827 0 R 4828 0 R 4829 0 R 4830 0 R]
>>
endobj
21 0 obj
-<< /Length 28610
+<< /Length 29259
>>
stream
q
@@ -10050,6 +10050,46 @@ ET
0.0 0.0 0.0 SCN
0.0 0.0 0.0 scn
+0.2 0.2 0.2 scn
+0.2 0.2 0.2 SCN
+
+BT
+60.24 55.476 Td
+/F1.0 10.5 Tf
+[<417070656e646978204f3a204b6e6f776e20496e636f6d7061746962696c697469657320416d6f6e672048426173652056> 60.0586 <657273696f6e73>] TJ
+ET
+
+0.0 0.0 0.0 SCN
+0.0 0.0 0.0 scn
+0.6627 0.6627 0.6627 scn
+0.6627 0.6627 0.6627 SCN
+
+BT
+368.4166 55.476 Td
+/F1.0 10.5 Tf
+<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj
+ET
+
+0.0 0.0 0.0 SCN
+0.0 0.0 0.0 scn
+
+BT
+528.7516 55.476 Td
+/F1.0 2.625 Tf
+<ca> Tj
+ET
+
+0.2 0.2 0.2 scn
+0.2 0.2 0.2 SCN
+
+BT
+529.4315 55.476 Td
+/F1.0 10.5 Tf
+<373432> Tj
+ET
+
+0.0 0.0 0.0 SCN
+0.0 0.0 0.0 scn
Q
endstream
@@ -10067,10 +10107,77 @@ endobj
/Font << /F1.0 10 0 R
>>
>>
-/Annots [4700 0 R 4701 0 R 4702 0 R 4703 0 R 4704 0 R 4705 0 R 4706 0 R 4707 0 R 4708 0 R 4709 0 R 4710 0 R 4711 0 R 4712 0 R 4713 0 R 4714 0 R 4715 0 R 4716 0 R 4717 0 R 4718 0 R 4719 0 R 4720 0 R 4721 0 R 4722 0 R 4723 0 R 4724 0 R 4725 0 R 4726 0 R 4727 0 R 4728 0 R 4729 0 R 4730 0 R 4731 0 R 4732 0 R 4733 0 R 4734 0 R 4735 0 R 4736 0 R 4737 0 R 4738 0 R 4739 0 R 4740 0 R 4741 0 R 4742 0 R 4743 0 R 4744 0 R 4745 0 R 4746 0 R 4747 0 R 4748 0 R 4749 0 R 4750 0 R 4751 0 R 4752 0 R 4753 0 R 4754 0 R 4755 0 R 4756 0 R 4757 0 R 4758 0 R 4759 0 R 4760 0 R 4761 0 R 4762 0 R 4763 0 R 4764 0 R 4765 0 R 4766 0 R 4767 0 R 4768 0 R 4769 0 R 4770 0 R 4771 0 R 4772 0 R 4773 0 R 4774 0 R 4775 0 R 4776 0 R 4777 0 R 4778 0 R 4779 0 R]
+/Annots [4831 0 R 4832 0 R 4833 0 R 4834 0 R 4835 0 R 4836 0 R 4837 0 R 4838 0 R 4839 0 R 4840 0 R 4841 0 R 4842 0 R 4843 0 R 4844 0 R 4845 0 R 4846 0 R 4847 0 R 4848 0 R 4849 0 R 4850 0 R 4851 0 R 4852 0 R 4853 0 R 4854 0 R 4855 0 R 4856 0 R 4857 0 R 4858 0 R 4859 0 R 4860 0 R 4861 0 R 4862 0 R 4863 0 R 4864 0 R 4865 0 R 4866 0 R 4867 0 R 4868 0 R 4869 0 R 4870 0 R 4871 0 R 4872 0 R 4873 0 R 4874 0 R 4875 0 R 4876 0 R 4877 0 R 4878 0 R 4879 0 R 4880 0 R 4881 0 R 4882 0 R 4883 0 R 4884 0 R 4885 0 R 4886 0 R 4887 0 R 4888 0 R 4889 0 R 4890 0 R 4891 0 R 4892 0 R 4893 0 R 4894 0 R 4895 0 R 4896 0 R 4897 0 R 4898 0 R 4899 0 R 4900 0 R 4901 0 R 4902 0 R 4903 0 R 4904 0 R 4905 0 R 4906 0 R 4907 0 R 4908 0 R 4909 0 R 4910 0 R 4911 0 R 4912 0 R]
>>
endobj
23 0 obj
+<< /Length 722
+>>
+stream
+q
+/DeviceRGB cs
+0.2 0.2 0.2 scn
+/DeviceRGB CS
+0.2 0.2 0.2 SCN
+
+BT
+60.24 794.676 Td
+/F1.0 10.5 Tf
+<3139392e20484261736520322e3020496e636f6d70617469626c65204368616e676573> Tj
+ET
+
+0.0 0.0 0.0 SCN
+0.0 0.0 0.0 scn
+0.6627 0.6627 0.6627 scn
+0.6627 0.6627 0.6627 SCN
+
+BT
+245.4931 794.676 Td
+/F1.0 10.5 Tf
+<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj
+ET
+
+0.0 0.0 0.0 SCN
+0.0 0.0 0.0 scn
+
+BT
+528.7516 794.676 Td
+/F1.0 2.625 Tf
+<ca> Tj
+ET
+
+0.2 0.2 0.2 scn
+0.2 0.2 0.2 SCN
+
+BT
+529.4315 794.676 Td
+/F1.0 10.5 Tf
+<373433> Tj
+ET
+
+0.0 0.0 0.0 SCN
+0.0 0.0 0.0 scn
+Q
+
+endstream
+endobj
+24 0 obj
+<< /Type /Page
+/Parent 3 0 R
+/MediaBox [0 0 595.28 841.89]
+/CropBox [0 0 595.28 841.89]
+/BleedBox [0 0 595.28 841.89]
+/TrimBox [0 0 595.28 841.89]
+/ArtBox [0 0 595.28 841.89]
+/Contents 23 0 R
+/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
+/Font << /F1.0 10 0 R
+>>
+>>
+/Annots [4913 0 R 4914 0 R]
+>>
+endobj
+25 0 obj
<< /Length 12754
>>
stream
@@ -10863,7 +10970,7 @@ Q
endstream
endobj
-24 0 obj
+26 0 obj
<< /Type /Page
/Parent 3 0 R
/MediaBox [0 0 595.28 841.89]
@@ -10871,47 +10978,47 @@ endobj
/BleedBox [0 0 595.28 841.89]
/TrimBox [0 0 595.28 841.89]
/ArtBox [0 0 595.28 841.89]
-/Contents 23 0 R
+/Contents 25 0 R
/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
-/Font << /F2.0 29 0 R
+/Font << /F2.0 31 0 R
/F1.0 10 0 R
-/F3.0 33 0 R
-/F4.0 35 0 R
-/F1.1 38 0 R
+/F3.0 35 0 R
+/F4.0 37 0 R
+/F1.1 40 0 R
>>
-/XObject << /Stamp1 4780 0 R
+/XObject << /Stamp1 4915 0 R
>>
>>
-/Annots [30 0 R 31 0 R 32 0 R 34 0 R 36 0 R 37 0 R 39 0 R 40 0 R 41 0 R]
+/Annots [32 0 R 33 0 R 34 0 R 36 0 R 38 0 R 39 0 R 41 0 R 42 0 R 43 0 R]
>>
endobj
-25 0 obj
-[24 0 R /XYZ 0 841.89 null]
+27 0 obj
+[26 0 R /XYZ 0 841.89 null]
endobj
-26 0 obj
+28 0 obj
<< /Type /Names
-/Dests 27 0 R
+/Dests 29 0 R
>>
endobj
-27 0 obj
-<< /Kids [643 0 R 3670 0 R 1936 0 R 644 0 R 4121 0 R 1166 0 R 2551 0 R 3894 0 R]
+29 0 obj
+<< /Kids [645 0 R 3672 0 R 1938 0 R 646 0 R 4123 0 R 1168 0 R 2553 0 R 3896 0 R]
>>
endobj
-28 0 obj
-[24 0 R /XYZ 0 841.89 null]
+30 0 obj
+[26 0 R /XYZ 0 841.89 null]
endobj
-29 0 obj
+31 0 obj
<< /Type /Font
/BaseFont /309344+NotoSerif-Bold
/Subtype /TrueType
-/FontDescriptor 5033 0 R
+/FontDescriptor 5170 0 R
/FirstChar 32
/LastChar 255
-/Widths 5035 0 R
-/ToUnicode 5034 0 R
+/Widths 5172 0 R
+/ToUnicode 5171 0 R
>>
endobj
-30 0 obj
+32 0 obj
<< /Border [0 0 0]
/A << /Type /Action
/S /URI
@@ -10922,7 +11029,7 @@ endobj
/Type /Annot
>>
endobj
-31 0 obj
+33 0 obj
<< /Border [0 0 0]
/A << /Type /Action
/S /URI
@@ -10933,7 +11040,7 @@ endobj
/Type /Annot
>>
endobj
-32 0 obj
+34 0 obj
<< /Border [0 0 0]
/A << /Type /Action
/S /URI
@@ -10944,18 +11051,18 @@ endobj
/Type /Annot
>>
endobj
-33 0 obj
+35 0 obj
<< /Type /Font
/BaseFont /fbe45d+NotoSerif-Italic
/Subtype /TrueType
-/FontDescriptor 5037 0 R
+/FontDescriptor 5174 0 R
/FirstChar 32
/LastChar 255
-/Widths 5039 0 R
-/ToUnicode 5038 0 R
+/Widths 5176 0 R
+/ToUnicode 5175 0 R
>>
endobj
-34 0 obj
+36 0 obj
<< /Border [0 0 0]
/A << /Type /Action
/S /URI
@@ -10966,18 +11073,18 @@ endobj
/Type /Annot
>>
endobj
-35 0 obj
+37 0 obj
<< /Type /Font
/BaseFont /c7d210+mplus1mn-regular
/Subtype /TrueType
-/FontDescriptor 5041 0 R
+/FontDescriptor 5178 0 R
/FirstChar 32
/LastChar 255
-/Widths 5043 0 R
-/ToUnicode 5042 0 R
+/Widths 5180 0 R
+/ToUnicode 5179 0 R
>>
endobj
-36 0 obj
+38 0 obj
<< /Border [0 0 0]
/A << /Type /Action
/S /URI
@@ -10988,7 +11095,7 @@ endobj
/Type /Annot
>>
endobj
-37 0 obj
+39 0 obj
<< /Border [0 0 0]
/Dest (appendix_contributing_to_documentation)
/Subtype /Link
@@ -10996,18 +11103,18 @@ endobj
/Type /Annot
>>
endobj
-38 0 obj
+40 0 obj
<< /Type /Font
/BaseFont /6bc580+NotoSerif
/Subtype /TrueType
-/FontDescriptor 5045 0 R
+/FontDescriptor 5182 0 R
/FirstChar 32
/LastChar 255
-/Widths 5047 0 R
-/ToUnicode 5046 0 R
+/Widths 5184 0 R
+/ToUnicode 5183 0 R
>>
endobj
-39 0 obj
+41 0 obj
<< /Border [0 0 0]
/A << /Type /Action
/S /URI
@@ -11018,7 +11125,7 @@ endobj
/Type /Annot
>>
endobj
-40 0 obj
+42 0 obj
<< /Border [0 0 0]
/A << /Type /Action
/S /URI
@@ -11029,7 +11136,7 @@ endobj
/Type /Annot
>>
endobj
-41 0 obj
+43 0 obj
<< /Border [0 0 0]
/A << /Type /Action
/S /URI
@@ -11040,10 +11147,10 @@ endobj
/Type /Annot
>>
endobj
-42 0 obj
-[24 0 R /XYZ 0 56.046 null]
+44 0 obj
+[26 0 R /XYZ 0 56.046 null]
endobj
-43 0 obj
+45 0 obj
<< /Length 7041
>>
stream
@@ -11423,7 +11530,7 @@ Q
endstream
endobj
-44 0 obj
+46 0 obj
<< /Type /Page
/Parent 3 0 R
/MediaBox [0 0 595.28 841.89]
@@ -11431,30 +11538,30 @@ endobj
/BleedBox [0 0 595.28 841.89]
/TrimBox [0 0 595.28 841.89]
/ArtBox [0 0 595.28 841.89]
-/Contents 43 0 R
+/Contents 45 0 R
/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
-/Font << /F3.0 33 0 R
+/Font << /F3.0 35 0 R
/F1.0 10 0 R
-/F5.1 45 0 R
-/F2.0 29 0 R
+/F5.1 47 0 R
+/F2.0 31 0 R
>>
-/XObject << /Stamp2 4781 0 R
+/XObject << /Stamp2 4916 0 R
>>
>>
>>
endobj
-45 0 obj
+47 0 obj
<< /Type /Font
/BaseFont /26ec65+FontAwesome
/Subtype /TrueType
-/FontDescriptor 5049 0 R
+/FontDescriptor 5186 0 R
/FirstChar 32
/LastChar 255
-/Widths 5051 0 R
-/ToUnicode 5050 0 R
+/Widths 5188 0 R
+/ToUnicode 5187 0 R
>>
endobj
-46 0 obj
+48 0 obj
<< /Length 344
>>
stream
@@ -11496,7 +11603,7 @@ Q
endstream
endobj
-47 0 obj
+49 0 obj
<< /Type /Page
/Parent 3 0 R
/MediaBox [0 0 595.28 841.89]
@@ -11504,20 +11611,20 @@ endobj
/BleedBox [0 0 595.28 841.89]
/TrimBox [0 0 595.28 841.89]
/ArtBox [0 0 595.28 841.89]
-/Contents 46 0 R
+/Contents 48 0 R
/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
-/Font << /F2.0 29 0 R
+/Font << /F2.0 31 0 R
/F1.0 10 0 R
>>
-/XObject << /Stamp1 4780 0 R
+/XObject << /Stamp1 4915 0 R
>>
>>
>>
endobj
-48 0 obj
-[47 0 R /XYZ 0 841.89 null]
+50 0 obj
+[49 0 R /XYZ 0 841.89 null]
endobj
-49 0 obj
+51 0 obj
<< /Length 769
>>
stream
@@ -11581,7 +11688,7 @@ Q
endstream
endobj
-50 0 obj
+52 0 obj
<< /Type /Page
/Parent 3 0 R
/MediaBox [0 0 595.28 841.89]
@@ -11589,21 +11696,21 @@ endobj
/BleedBox [0 0 595.28 841.89]
/TrimBox [0 0 595.28 841.89]
/ArtBox [0 0 595.28 841.89]
-/Contents 49 0 R
+/Contents 51 0 R
/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
-/Font << /F2.0 29 0 R
+/Font << /F2.0 31 0 R
/F1.0 10 0 R
>>
-/XObject << /Stamp2 4781 0 R
+/XObject << /Stamp2 4916 0 R
>>
>>
-/Annots [52 0 R]
+/Annots [54 0 R]
>>
endobj
-51 0 obj
-[50 0 R /XYZ 0 841.89 null]
+53 0 obj
+[52 0 R /XYZ 0 841.89 null]
endobj
-52 0 obj
+54 0 obj
<< /Border [0 0 0]
/Dest (quickstart)
/Subtype /Link
@@ -11611,7 +11718,7 @@ endobj
/Type /Annot
>>
endobj
-53 0 obj
+55 0 obj
<< /Length 20335
>>
stream
@@ -13151,7 +13258,7 @@ Q
endstream
endobj
-54 0 obj
+56 0 obj
<< /Type /Page
/Parent 3 0 R
/MediaBox [0 0 595.28 841.89]
@@ -13159,27 +13266,27 @@ endobj
/BleedBox [0 0 595.28 841.89]
/TrimBox [0 0 595.28 841.89]
/ArtBox [0 0 595.28 841.89]
-/Contents 53 0 R
+/Contents 55 0 R
/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
-/Font << /F2.0 29 0 R
+/Font << /F2.0 31 0 R
/F1.0 10 0 R
-/F3.0 33 0 R
-/F1.1 38 0 R
-/F4.0 35 0 R
+/F3.0 35 0 R
+/F1.1 40 0 R
+/F4.0 37 0 R
>>
-/XObject << /Stamp1 4780 0 R
+/XObject << /Stamp1 4915 0 R
>>
>>
-/Annots [57 0 R 59 0 R]
+/Annots [59 0 R 61 0 R]
>>
endobj
-55 0 obj
-[54 0 R /XYZ 0 841.89 null]
+57 0 obj
+[56 0 R /XYZ 0 841.89 null]
endobj
-56 0 obj
-[54 0 R /XYZ 0 646.49 null]
+58 0 obj
+[56 0 R /XYZ 0 646.49 null]
endobj
-57 0 obj
+59 0 obj
<< /Border [0 0 0]
/Dest (java)
/Subtype /Link
@@ -13187,10 +13294,10 @@ endobj
/Type /Annot
>>
endobj
-58 0 obj
-[54 0 R /XYZ 0 578.63 null]
+60 0 obj
+[56 0 R /XYZ 0 578.63 null]
endobj
-59 0 obj
+61 0 obj
<< /Border [0 0 0]
/A << /Type /Action
/S /URI
@@ -13201,7 +13308,7 @@ endobj
/Type /Annot
>>
endobj
-60 0 obj
+62 0 obj
<< /Length 15405
>>
stream
@@ -14272,7 +14379,7 @@ Q
endstream
endobj
-61 0 obj
+63 0 obj
<< /Type /Page
/Parent 3 0 R
/MediaBox [0 0 595.28 841.89]
@@ -14280,19 +14387,19 @@ endobj
/BleedBox [0 0 595.28 841.89]
/TrimBox [0 0 595.28 841.89]
/ArtBox [0 0 595.28 841.89]
-/Contents 60 0 R
+/Contents 62 0 R
/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
-/Font << /F3.0 33 0 R
-/F4.0 35 0 R
+/Font << /F3.0 35 0 R
+/F4.0 37 0 R
/F1.0 10 0 R
-/F5.1 45 0 R
+/F5.1 47 0 R
>>
-/XObject << /Stamp2 4781 0 R
+/XObject << /Stamp2 4916 0 R
>>
>>
>>
endobj
-62 0 obj
+64 0 obj
<< /Length 11899
>>
stream
@@ -15151,7 +15258,7 @@ Q
endstream
endobj
-63 0 obj
+65 0 obj
<< /Type /Page
/Parent 3 0 R
/MediaBox [0 0 595.28 841.89]
@@ -15159,20 +15266,20 @@ endobj
/BleedBox [0 0 595.28 841.89]
/TrimBox [0 0 595.28 841.89]
/ArtBox [0 0 595.28 841.89]
-/Contents 62 0 R
+/Contents 64 0 R
/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
/Font << /F1.0 10 0 R
-/F4.0 35 0 R
-/F3.0 33 0 R
-/F5.1 45 0 R
+/F4.0 37 0 R
+/F3.0 35 0 R
+/F5.1 47 0 R
>>
-/XObject << /Stamp1 4780 0 R
+/XObject << /Stamp1 4915 0 R
>>
>>
-/Annots [64 0 R]
+/Annots [66 0 R]
>>
endobj
-64 0 obj
+66 0 obj
<< /Border [0 0 0]
/A << /Type /Action
/S /URI
@@ -15183,10 +15290,10 @@ endobj
/Type /Annot
>>
endobj
-65 0 obj
-[63 0 R /XYZ 0 626.62 null]
+67 0 obj
+[65 0 R /XYZ 0 626.62 null]
endobj
-66 0 obj
+68 0 obj
<< /Length 11268
>>
stream
@@ -15943,7 +16050,7 @@ Q
endstream
endobj
-67 0 obj
+69 0 obj
<< /Type /Page
/Parent 3 0 R
/MediaBox [0 0 595.28 841.89]
@@ -15951,17 +16058,17 @@ endobj
/BleedBox [0 0 595.28 841.89]
/TrimBox [0 0 595.28 841.89]
/ArtBox [0 0 595.28 841.89]
-/Contents 66 0 R
+/Contents 68 0 R
/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
-/Font << /F4.0 35 0 R
+/Font << /F4.0 37 0 R
/F1.0 10 0 R
>>
-/XObject << /Stamp2 4781 0 R
+/XObject << /Stamp2 4916 0 R
>>
>>
>>
endobj
-68 0 obj
+70 0 obj
<< /Length 10836
>>
stream
@@ -16662,7 +16769,7 @@ Q
endstream
endobj
-69 0 obj
+71 0 obj
<< /Type /Page
/Parent 3 0 R
/MediaBox [0 0 595.28 841.89]
@@ -16670,17 +16777,17 @@ endobj
/BleedBox [0 0 595.28 841.89]
/TrimBox [0 0 595.28 841.89]
/ArtBox [0 0 595.28 841.89]
-/Contents 68 0 R
+/Contents 70 0 R
/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
-/Font << /F4.0 35 0 R
+/Font << /F4.0 37 0 R
/F1.0 10 0 R
>>
-/XObject << /Stamp1 4780 0 R
+/XObject << /Stamp1 4915 0 R
>>
>>
>>
endobj
-70 0 obj
+72 0 obj
<< /Length 12474
>>
stream
@@ -17535,7 +17642,7 @@ Q
endstream
endobj
-71 0 obj
+73 0 obj
<< /Type /Page
/Parent 3 0 R
/MediaBox [0 0 595.28 841.89]
@@ -17543,24 +17650,24 @@ endobj
/BleedBox [0 0 595.28 841.89]
/TrimBox [0 0 595.28 841.89]
/ArtBox [0 0 595.28 841.89]
-/Contents 70 0 R
+/Contents 72 0 R
/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
/Font << /F1.0 10 0 R
-/F4.0 35 0 R
-/F3.0 33 0 R
-/F2.0 29 0 R
-/F5.1 45 0 R
+/F4.0 37 0 R
+/F3.0 35 0 R
+/F2.0 31 0 R
+/F5.1 47 0 R
>>
-/XObject << /Stamp2 4781 0 R
+/XObject << /Stamp2 4916 0 R
>>
>>
-/Annots [73 0 R 74 0 R 75 0 R 76 0 R]
+/Annots [75 0 R 76 0 R 77 0 R 78 0 R]
>>
endobj
-72 0 obj
-[71 0 R /XYZ 0 529.189 null]
+74 0 obj
+[73 0 R /XYZ 0 529.189 null]
endobj
-73 0 obj
+75 0 obj
<< /Border [0 0 0]
/Dest (quickstart)
/Subtype /Link
@@ -17568,7 +17675,7 @@ endobj
/Type /Annot
>>
endobj
-74 0 obj
+76 0 obj
<< /Border [0 0 0]
/Dest (quickstart)
/Subtype /Link
@@ -17576,7 +17683,7 @@ endobj
/Type /Annot
>>
endobj
-75 0 obj
+77 0 obj
<< /Border [0 0 0]
/A << /Type /Action
/S /URI
@@ -17587,7 +17694,7 @@ endobj
/Type /Annot
>>
endobj
-76 0 obj
+78 0 obj
<< /Border [0 0 0]
/Dest (quickstart)
/Subtype /Link
@@ -17595,7 +17702,7 @@ endobj
/Type /Annot
>>
endobj
-77 0 obj
+79 0 obj
<< /Length 13713
>>
stream
@@ -18527,7 +18634,7 @@ Q
endstream
endobj
-78 0 obj
+80 0 obj
<< /Type /Page
/Parent 3 0 R
/MediaBox [0 0 595.28 841.89]
@@ -18535,19 +18642,19 @@ endobj
/BleedBox [0 0 595.28 841.89]
/TrimBox [0 0 595.28 841.89]
/ArtBox [0 0 595.28 841.89]
-/Contents 77 0 R
+/Contents 79 0 R
/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
-/Font << /F4.0 35 0 R
+/Font << /F4.0 37 0 R
/F1.0 10 0 R
-/F3.0 33 0 R
+/F3.0 35 0 R
>>
-/XObject << /Stamp1 4780 0 R
+/XObject << /Stamp1 4915 0 R
>>
>>
-/Annots [79 0 R]
+/Annots [81 0 R]
>>
endobj
-79 0 obj
+81 0 obj
<< /Border [0 0 0]
/Dest (shell_exercises)
/Subtype /Link
@@ -18555,7 +18662,7 @@ endobj
/Type /Annot
>>
endobj
-80 0 obj
+82 0 obj
<< /Length 15040
>>
stream
@@ -19449,7 +19556,7 @@ Q
endstream
endobj
-81 0 obj
+83 0 obj
<< /Type /Page
/Parent 3 0 R
/MediaBox [0 0 595.28 841.89]
@@ -19457,19 +19564,19 @@ endobj
/BleedBox [0 0 595.28 841.89]
/TrimBox [0 0 595.28 841.89]
/ArtBox [0 0 595.28 841.89]
-/Contents 80 0 R
+/Contents 82 0 R
/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
-/Font << /F5.1 45 0 R
+/Font << /F5.1 47 0 R
/F1.0 10 0 R
-/F4.0 35 0 R
-/F3.0 33 0 R
+/F4.0 37 0 R
+/F3.0 35 0 R
>>
-/XObject << /Stamp2 4781 0 R
+/XObject << /Stamp2 4916 0 R
>>
>>
>>
endobj
-82 0 obj
+84 0 obj
<< /Length 20031
>>
stream
@@ -20959,7 +21066,7 @@ Q
endstream
endobj
-83 0 obj
+85 0 obj
<< /Type /Page
/Parent 3 0 R
/MediaBox [0 0 595.28 841.89]
@@ -20967,21 +21074,21 @@ endobj
/BleedBox [0 0 595.28 841.89]
/TrimBox [0 0 595.28 841.89]
/ArtBox [0 0 595.28 841.89]
-/Contents 82 0 R
+/Contents 84 0 R
/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
/Font << /F1.0 10 0 R
-/F3.0 33 0 R
-/F2.0 29 0 R
-/F4.0 35 0 R
-/F5.1 45 0 R
+/F3.0 35 0 R
+/F2.0 31 0 R
+/F4.0 37 0 R
+/F5.1 47 0 R
>>
-/XObject << /Stamp1 4780 0 R
+/XObject << /Stamp1 4915 0 R
>>
>>
-/Annots [84 0 R 86 0 R]
+/Annots [86 0 R 88 0 R]
>>
endobj
-84 0 obj
+86 0 obj
<< /Border [0 0 0]
/Dest (quickstart)
/Subtype /Link
@@ -20989,10 +21096,10 @@ endobj
/Type /Annot
>>
endobj
-85 0 obj
-[83 0 R /XYZ 0 728.55 null]
+87 0 obj
+[85 0 R /XYZ 0 728.55 null]
endobj
-86 0 obj
+88 0 obj
<< /Border [0 0 0]
/Dest (quickstart_pseudo)
/Subtype /Link
@@ -21000,10 +21107,10 @@ endobj
/Type /Annot
>>
endobj
-87 0 obj
-[83 0 R /XYZ 0 346.779 null]
+89 0 obj
+[85 0 R /XYZ 0 346.779 null]
endobj
-88 0 obj
+90 0 obj
<< /Length 17240
>>
stream
@@ -22309,7 +22416,7 @@ Q
endstream
endobj
-89 0 obj
+91 0 obj
<< /Type /Page
/Parent 3 0 R
/MediaBox [0 0 595.28 841.89]
@@ -22317,19 +22424,19 @@ endobj
/BleedBox [0 0 595.28 841.89]
/TrimBox [0 0 595.28 841.89]
/ArtBox [0 0 595.28 841.89]
-/Contents 88 0 R
+/Contents 90 0 R
/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
/Font << /F1.0 10 0 R
-/F4.0 35 0 R
-/F3.0 33 0 R
+/F4.0 37 0 R
+/F3.0 35 0 R
>>
-/XObject << /Stamp2 4781 0 R
+/XObject << /Stamp2 4916 0 R
>>
>>
-/Annots [90 0 R]
+/Annots [92 0 R]
>>
endobj
-90 0 obj
+92 0 obj
<< /Border [0 0 0]
/Dest (zookeeper)
/Subtype /Link
@@ -22337,7 +22444,7 @@ endobj
/Type /Annot
>>
endobj
-91 0 obj
+93 0 obj
<< /Length 13673
>>
stream
@@ -23383,7 +23490,7 @@ Q
endstream
endobj
-92 0 obj
+94 0 obj
<< /Type /Page
/Parent 3 0 R
/MediaBox [0 0 595.28 841.89]
@@ -23391,18 +23498,18 @@ endobj
/BleedBox [0 0 595.28 841.89]
/TrimBox [0 0 595.28 841.89]
/ArtBox [0 0 595.28 841.89]
-/Contents 91 0 R
+/Contents 93 0 R
/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
-/Font << /F4.0 35 0 R
+/Font << /F4.0 37 0 R
/F1.0 10 0 R
-/F3.0 33 0 R
+/F3.0 35 0 R
>>
-/XObject << /Stamp1 4780 0 R
+/XObject << /Stamp1 4915 0 R
>>
>>
>>
endobj
-93 0 obj
+95 0 obj
<< /Length 11394
>>
stream
@@ -24106,7 +24213,7 @@ Q
endstream
endobj
-94 0 obj
+96 0 obj
<< /Type /Page
/Parent 3 0 R
/MediaBox [0 0 595.28 841.89]
@@ -24114,18 +24221,18 @@ endobj
/BleedBox [0 0 595.28 841.89]
/TrimBox [0 0 595.28 841.89]
/ArtBox [0 0 595.28 841.89]
-/Contents 93 0 R
+/Contents 95 0 R
/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
-/Font << /F4.0 35 0 R
+/Font << /F4.0 37 0 R
/F1.0 10 0 R
-/F3.0 33 0 R
+/F3.0 35 0 R
>>
-/XObject << /Stamp2 4781 0 R
+/XObject << /Stamp2 4916 0 R
>>
>>
>>
endobj
-95 0 obj
+97 0 obj
<< /Length 9141
>>
stream
@@ -24743,7 +24850,7 @@ Q
endstream
endobj
-96 0 obj
+98 0 obj
<< /Type /Page
/Parent 3 0 R
/MediaBox [0 0 595.28 841.89]
@@ -24751,21 +24858,21 @@ endobj
/BleedBox [0 0 595.28 841.89]
/TrimBox [0 0 595.28 841.89]
/ArtBox [0 0 595.28 841.89]
-/Contents 95 0 R
+/Contents 97 0 R
/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
-/Font << /F5.1 45 0 R
-/F3.0 33 0 R
+/Font << /F5.1 47 0 R
+/F3.0 35 0 R
/F1.0 10 0 R
-/F4.0 35 0 R
-/F2.0 29 0 R
+/F4.0 37 0 R
+/F2.0 31 0 R
>>
-/XObject << /Stamp1 4780 0 R
+/XObject << /Stamp1 4915 0 R
>>
>>
-/Annots [97 0 R 98 0 R 99 0 R 101 0 R]
+/Annots [99 0 R 100 0 R 101 0 R 103 0 R]
>>
endobj
-97 0 obj
+99 0 obj
<< /Border [0 0 0]
/Dest (zookeeper)
/Subtype /Link
@@ -24773,7 +24880,7 @@ endobj
/Type /Annot
>>
endobj
-98 0 obj
+100 0 obj
<< /Border [0 0 0]
/A << /Type /Action
/S /URI
@@ -24784,7 +24891,7 @@ endobj
/Type /Annot
>>
endobj
-99 0 obj
+101 0 obj
<< /Border [0 0 0]
/A << /Type /Action
/S /URI
@@ -24795,10 +24902,10 @@ endobj
/Type /Annot
>>
endobj
-100 0 obj
-[96 0 R /XYZ 0 346.308 null]
+102 0 obj
+[98 0 R /XYZ 0 346.308 null]
endobj
-101 0 obj
+103 0 obj
<< /Border [0 0 0]
/Dest (configuration)
/Subtype /Link
@@ -24806,7 +24913,7 @@ endobj
/Type /Annot
>>
endobj
-102 0 obj
+104 0 obj
<< /Length 2391
>>
stream
@@ -24990,7 +25097,7 @@ Q
endstream
endobj
-103 0 obj
+105 0 obj
<< /Type /Page
/Parent 3 0 R
/MediaBox [0 0 595.28 841.89]
@@ -24998,21 +25105,21 @@ endobj
/BleedBox [0 0 595.28 841.89]
/TrimBox [0 0 595.28 841.89]
/ArtBox [0 0 595.28 841.89]
-/Contents 102 0 R
+/Contents 104 0 R
/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
-/Font << /F2.0 29 0 R
+/Font << /F2.0 31 0 R
/F1.0 10 0 R
>>
-/XObject << /Stamp2 4781 0 R
+/XObject << /Stamp2 4916 0 R
>>
>>
-/Annots [105 0 R 106 0 R 107 0 R 108 0 R]
+/Annots [107 0 R 108 0 R 109 0 R 110 0 R]
>>
endobj
-104 0 obj
-[103 0 R /XYZ 0 841.89 null]
+106 0 obj
+[105 0 R /XYZ 0 841.89 null]
endobj
-105 0 obj
+107 0 obj
<< /Border [0 0 0]
/Dest (getting_started)
/Subtype /Link
@@ -25020,7 +25127,7 @@ endobj
/Type /Annot
>>
endobj
-106 0 obj
+108 0 obj
<< /Border [0 0 0]
/Dest (basic.prerequisites)
/Subtype /Link
@@ -25028,7 +25135,7 @@ endobj
/Type /Annot
>>
endobj
-107 0 obj
+109 0 obj
<< /Border [0 0 0]
/Dest (hbase_supported_tested_definitions)
/Subtype /Link
@@ -25036,7 +25143,7 @@ endobj
/Type /Annot
>>
endobj
-108 0 obj
+110 0 obj
<< /Border [0 0 0]
/Dest (hbase_supported_tested_definitions)
/Subtype /Link
@@ -25044,7 +25151,7 @@ endobj
/Type /Annot
>>
endobj
-109 0 obj
+111 0 obj
<< /Length 12480
>>
stream
@@ -25859,7 +25966,7 @@ Q
endstream
endobj
-110 0 obj
+112 0 obj
<< /Type /Page
/Parent 3 0 R
/MediaBox [0 0 595.28 841.89]
@@ -25867,24 +25974,24 @@ endobj
/BleedBox [0 0 595.28 841.89]
/TrimBox [0 0 595.28 841.89]
/ArtBox [0 0 595.28 841.89]
-/Contents 109 0 R
+/Contents 111 0 R
/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
-/Font << /F2.0 29 0 R
+/Font << /F2.0 31 0 R
/F1.0 10 0 R
-/F3.0 33 0 R
-/F4.0 35 0 R
-/F5.1 45 0 R
+/F3.0 35 0 R
+/F4.0 37 0 R
+/F5.1 47 0 R
>>
-/XObject << /Stamp1 4780 0 R
+/XObject << /Stamp1 4915 0 R
>>
>>
-/Annots [112 0 R 113 0 R]
+/Annots [114 0 R 115 0 R]
>>
endobj
-111 0 obj
-[110 0 R /XYZ 0 841.89 null]
+113 0 obj
+[112 0 R /XYZ 0 841.89 null]
endobj
-112 0 obj
+114 0 obj
<< /Border [0 0 0]
/A << /Type /Action
/S /URI
@@ -25895,7 +26002,7 @@ endobj
/Type /Annot
>>
endobj
-113 0 obj
+115 0 obj
<< /Border [0 0 0]
/Dest (security)
/Subtype /Link
@@ -25903,7 +26010,7 @@ endobj
/Type /Annot
>>
endobj
-114 0 obj
+116 0 obj
<< /Length 3240
>>
stream
@@ -26140,7 +26247,7 @@ Q
endstream
endobj
-115 0 obj
+117 0 obj
<< /Type /Page
/Parent 3 0 R
/MediaBox [0 0 595.28 841.89]
@@ -26148,19 +26255,19 @@ endobj
/BleedBox [0 0 595.28 841.89]
/TrimBox [0 0 595.28 841.89]
/ArtBox [0 0 595.28 841.89]
-/Contents 114 0 R
+/Contents 116 0 R
/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
-/Font << /F5.1 45 0 R
-/F3.0 33 0 R
+/Font << /F5.1 47 0 R
+/F3.0 35 0 R
/F1.0 10 0 R
-/F4.0 35 0 R
+/F4.0 37 0 R
>>
-/XObject << /Stamp2 4781 0 R
+/XObject << /Stamp2 4916 0 R
>>
>>
>>
endobj
-116 0 obj
+118 0 obj
<< /Length 20350
>>
stream
@@ -27619,7 +27726,7 @@ Q
endstream
endobj
-117 0 obj
+119 0 obj
<< /Type /Page
/Parent 3 0 R
/MediaBox [0 0 595.28 841.89]
@@ -27627,27 +27734,27 @@ endobj
/BleedBox [0 0 595.28 841.89]
/TrimBox [0 0 595.28 841.89]
/ArtBox [0 0 595.28 841.89]
-/Contents 116 0 R
+/Contents 118 0 R
/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
-/Font << /F2.0 29 0 R
+/Font << /F2.0 31 0 R
/F1.0 10 0 R
-/F3.0 33 0 R
-/F5.1 45 0 R
-/F4.0 35 0 R
+/F3.0 35 0 R
+/F5.1 47 0 R
+/F4.0 37 0 R
>>
-/XObject << /Stamp1 4780 0 R
+/XObject << /Stamp1 4915 0 R
>>
>>
-/Annots [120 0 R 121 0 R 122 0 R 123 0 R 124 0 R 125 0 R 126 0 R 128 0 R 129 0 R 130 0 R 131 0 R]
+/Annots [122 0 R 123 0 R 124 0 R 125 0 R 126 0 R 127 0 R 128 0 R 130 0 R 131 0 R 132 0 R 133 0 R]
>>
endobj
-118 0 obj
-[117 0 R /XYZ 0 841.89 null]
+120 0 obj
+[119 0 R /XYZ 0 841.89 null]
endobj
-119 0 obj
-[117 0 R /XYZ 0 737.39 null]
+121 0 obj
+[119 0 R /XYZ 0 737.39 null]
endobj
-120 0 obj
+122 0 obj
<< /Border [0 0 0]
/A << /Type /Action
/S /URI
@@ -27658,7 +27765,7 @@ endobj
/Type /Annot
>>
endobj
-121 0 obj
+123 0 obj
<< /Border [0 0 0]
/A << /Type /Action
/S /URI
@@ -27669,7 +27776,7 @@ endobj
/Type /Annot
>>
endobj
-122 0 obj
+124 0 obj
<< /Border [0 0 0]
/A << /Type /Action
/S /URI
@@ -27680,7 +27787,7 @@ endobj
/Type /Annot
>>
endobj
-123 0 obj
+125 0 obj
<< /Border [0 0 0]
/A << /Type /Action
/S /URI
@@ -27691,7 +27798,7 @@ endobj
/Type /Annot
>>
endobj
-124 0 obj
+126 0 obj
<< /Border [0 0 0]
/A << /Type /Action
/S /URI
@@ -27702,7 +27809,7 @@ endobj
/Type /Annot
>>
endobj
-125 0 obj
+127 0 obj
<< /Border [0 0 0]
/A << /Type /Action
/S /URI
@@ -27713,7 +27820,7 @@ endobj
/Type /Annot
>>
endobj
-126 0 obj
+128 0 obj
<< /Border [0 0 0]
/A << /Type /Action
/S /URI
@@ -27724,10 +27831,10 @@ endobj
/Type /Annot
>>
endobj
-127 0 obj
-[117 0 R /XYZ 0 294.377 null]
+129 0 obj
+[119 0 R /XYZ 0 294.377 null]
endobj
-128 0 obj
+130 0 obj
<< /Border [0 0 0]
/Dest (passwordless.ssh.quickstart)
/Subtype /Link
@@ -27735,7 +27842,7 @@ endobj
/Type /Annot
>>
endobj
-129 0 obj
+131 0 obj
<< /Border [0 0 0]
/Dest (passwordless.ssh.quickstart)
/Subtype /Link
@@ -27743,7 +27850,7 @@ endobj
/Type /Annot
>>
endobj
-130 0 obj
+132 0 obj
<< /Border [0 0 0]
/A << /Type /Action
/S /URI
@@ -27754,7 +27861,7 @@ endobj
/Type /Annot
>>
endobj
-131 0 obj
+133 0 obj
<< /Border [0 0 0]
/A << /Type /Action
/S /URI
@@ -27765,7 +27872,7 @@ endobj
/Type /Annot
>>
endobj
-132 0 obj
+134 0 obj
<< /Length 14989
>>
stream
@@ -28660,7 +28767,7 @@ Q
endstream
endobj
-133 0 obj
+135 0 obj
<< /Type /Page
/Parent 3 0 R
/MediaBox [0 0 595.28 841.89]
@@ -28668,20 +28775,20 @@ endobj
/BleedBox [0 0 595.28 841.89]
/TrimBox [0 0 595.28 841.89]
/ArtBox [0 0 595.28 841.89]
-/Contents 132 0 R
+/Contents 134 0 R
/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
/Font << /F1.0 10 0 R
-/F3.0 33 0 R
-/F2.0 29 0 R
-/F4.0 35 0 R
+/F3.0 35 0 R
+/F2.0 31 0 R
+/F4.0 37 0 R
>>
-/XObject << /Stamp2 4781 0 R
+/XObject << /Stamp2 4916 0 R
>>
>>
-/Annots [134 0 R 136 0 R]
+/Annots [136 0 R 138 0 R]
>>
endobj
-134 0 obj
+136 0 obj
<< /Border [0 0 0]
/A << /Type /Action
/S /URI
@@ -28692,10 +28799,10 @@ endobj
/Type /Annot
>>
endobj
-135 0 obj
-[133 0 R /XYZ 0 699.96 null]
+137 0 obj
+[135 0 R /XYZ 0 699.96 null]
endobj
-136 0 obj
+138 0 obj
<< /Border [0 0 0]
/Dest (trouble.rs.runtime.filehandles)
/Subtype /Link
@@ -28703,7 +28810,7 @@ endobj
/Type /Annot
>>
endobj
-137 0 obj
+139 0 obj
<< /Length 11978
>>
stream
@@ -29412,7 +29519,7 @@ Q
endstream
endobj
-138 0 obj
+140 0 obj
<< /Type /Page
/Parent 3 0 R
/MediaBox [0 0 595.28 841.89]
@@ -29420,21 +29527,21 @@ endobj
/BleedBox [0 0 595.28 841.89]
/TrimBox [0 0 595.28 841.89]
/ArtBox [0 0 595.28 841.89]
-/Contents 137 0 R
+/Contents 139 0 R
/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
-/Font << /F3.0 33 0 R
-/F4.0 35 0 R
+/Font << /F3.0 35 0 R
+/F4.0 37 0 R
/F1.0 10 0 R
-/F2.0 29 0 R
-/F5.1 45 0 R
+/F2.0 31 0 R
+/F5.1 47 0 R
>>
-/XObject << /Stamp1 4780 0 R
+/XObject << /Stamp1 4915 0 R
>>
>>
-/Annots [139 0 R 141 0 R 142 0 R 143 0 R 144 0 R]
+/Annots [141 0 R 143 0 R 144 0 R 145 0 R 146 0 R]
>>
endobj
-139 0 obj
+141 0 obj
<< /Border [0 0 0]
/A << /Type /Action
/S /URI
@@ -29445,10 +29552,10 @@ endobj
/Type /Annot
>>
endobj
-140 0 obj
-[138 0 R /XYZ 0 407.319 null]
+142 0 obj
+[140 0 R /XYZ 0 407.319 null]
endobj
-141 0 obj
+143 0 obj
<< /Border [0 0 0]
/A << /Type /Action
/S /URI
@@ -29459,7 +29566,7 @@ endobj
/Type /Annot
>>
endobj
-142 0 obj
+144 0 obj
<< /Border [0 0 0]
/A << /Type /Action
/S /URI
@@ -29470,7 +29577,7 @@ endobj
/Type /Annot
>>
endobj
-143 0 obj
+145 0 obj
<< /Border [0 0 0]
/A << /Type /Action
/S /URI
@@ -29481,7 +29588,7 @@ endobj
/Type /Annot
>>
endobj
-144 0 obj
+146 0 obj
<< /Border [0 0 0]
/Dest (perf.hdfs.configs.localread)
/Subtype /Link
@@ -29489,7 +29596,7 @@ endobj
/Type /Annot
>>
endobj
-145 0 obj
+147 0 obj
<< /Length 43405
>>
stream
@@ -32915,7 +33022,7 @@ Q
endstream
endobj
-146 0 obj
+148 0 obj
<< /Type /Page
/Parent 3 0 R
/MediaBox [0 0 595.28 841.89]
@@ -32923,20 +33030,20 @@ endobj
/BleedBox [0 0 595.28 841.89]
/TrimBox [0 0 595.28 841.89]
/ArtBox [0 0 595.28 841.89]
-/Contents 145 0 R
+/Contents 147 0 R
/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
-/Font << /F3.0 33 0 R
+/Font << /F3.0 35 0 R
/F1.0 10 0 R
-/F2.0 29 0 R
-/F5.1 45 0 R
+/F2.0 31 0 R
+/F5.1 47 0 R
>>
-/XObject << /Stamp2 4781 0 R
+/XObject << /Stamp2 4916 0 R
>>
>>
-/Annots [147 0 R 148 0 R 149 0 R 150 0 R 151 0 R 152 0 R 153 0 R]
+/Annots [149 0 R 150 0 R 151 0 R 152 0 R 153 0 R 154 0 R 155 0 R]
>>
endobj
-147 0 obj
+149 0 obj
<< /Border [0 0 0]
/A << /Type /Action
/S /URI
@@ -32947,7 +33054,7 @@ endobj
/Type /Annot
>>
endobj
-148 0 obj
+150 0 obj
<< /Border [0 0 0]
/A << /Type /Action
/S /URI
@@ -32958,7 +33065,7 @@ endobj
/Type /Annot
>>
endobj
-149 0 obj
+151 0 obj
<< /Border [0 0 0]
/A << /Type /Action
/S /URI
@@ -32969,7 +33076,7 @@ endobj
/Type /Annot
>>
endobj
-150 0 obj
+152 0 obj
<< /Border [0 0 0]
/A << /Type /Action
/S /URI
@@ -32980,7 +33087,7 @@ endobj
/Type /Annot
>>
endobj
-151 0 obj
+153 0 obj
<< /Border [0 0 0]
/A << /Type /Action
/S /URI
@@ -32991,7 +33098,7 @@ endobj
/Type /Annot
>>
endobj
-152 0 obj
+154 0 obj
<< /Border [0 0 0]
/A << /Type /Action
/S /URI
@@ -33002,7 +33109,7 @@ endobj
/Type /Annot
>>
endobj
-153 0 obj
+155 0 obj
<< /Border [0 0 0]
/A << /Type /Action
/S /URI
@@ -33013,7 +33120,7 @@ endobj
/Type /Annot
>>
endobj
-154 0 obj
+156 0 obj
<< /Length 10942
>>
stream
@@ -33715,7 +33822,7 @@ Q
endstream
endobj
-155 0 obj
+157 0 obj
<< /Type /Page
/Parent 3 0 R
/MediaBox [0 0 595.28 841.89]
@@ -33723,34 +33830,34 @@ endobj
/BleedBox [0 0 595.28 841.89]
/TrimBox [0 0 595.28 841.89]
/ArtBox [0 0 595.28 841.89]
-/Contents 154 0 R
+/Contents 156 0 R
/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
-/Font << /F5.1 45 0 R
-/F3.0 33 0 R
+/Font << /F5.1 47 0 R
+/F3.0 35 0 R
/F1.0 10 0 R
-/F2.0 29 0 R
-/F4.0 35 0 R
+/F2.0 31 0 R
+/F4.0 37 0 R
>>
-/XObject << /Stamp1 4780 0 R
+/XObject << /Stamp1 4915 0 R
>>
>>
-/Annots [159 0 R 160 0 R]
+/Annots [161 0 R 162 0 R]
>>
endobj
-156 0 obj
-[155 0 R /XYZ 0 640.659 null]
+158 0 obj
+[157 0 R /XYZ 0 640.659 null]
endobj
-157 0 obj
+159 0 obj
<< /Limits [(__anchor-top) (adding.new.node)]
-/Names [(__anchor-top) 25 0 R (__indexterm-2002) 3564 0 R (__indexterm-2004) 3566 0 R (__indexterm-2006) 3568 0 R (__indexterm-2008) 3571 0 R (acid) 939 0 R (acl) 3369 0 R (add-metric-name-and-function-to-hadoop-compat-interface) 3664 0 R (add-the-implementation-to-both-hadoop-1-and-hadoop-2-compat-modules) 3666 0 R (add.metrics) 3662 0 R (adding-a-new-chapter-to-the-hbase-reference-guide) 3997 0 R (adding.new.node) 3112 0 R]
+/Names [(__anchor-top) 27 0 R (__indexterm-2002) 3566 0 R (__indexterm-2004) 3568 0 R (__indexterm-2006) 3570 0 R (__indexterm-2008) 3573 0 R (accesscontrolclient-changes) 4420 0 R (acid) 941 0 R (acl) 3371 0 R (add-metric-name-and-function-to-hadoop-compat-interface) 3666 0 R (add-the-implementation-to-both-hadoop-1-and-hadoop-2-compat-modules) 3668 0 R (add.metrics) 3664 0 R (adding-a-new-chapter-to-the-hbase-reference-guide) 3999 0 R (adding.new.node) 3114 0 R]
>>
endobj
-158 0 obj
+160 0 obj
<< /Limits [(io.storefile.bloom.block.size) (jdk-version-requirements)]
-/Names [(io.storefile.bloom.block.size) 358 0 R (irbrc) 802 0 R (irc) 3400 0 R (isolate-system-tables) 3363 0 R (java) 119 0 R (java-2) 1939 0 R (java-3) 1944 0 R (java.client.config) 516 0 R (jdk-issues) 2920 0 R (jdk-version-requirements) 56 0 R]
+/Names [(io.storefile.bloom.block.size) 360 0 R (ipc) 4327 0 R (irbrc) 804 0 R (irc) 3402 0 R (isolate-system-tables) 3365 0 R (java) 121 0 R (java-2) 1941 0 R (java-3) 1946 0 R (java.client.config) 518 0 R (jdk-issues) 2922 0 R (jdk-version-requirements) 58 0 R]
>>
endobj
-159 0 obj
+161 0 obj
<< /Border [0 0 0]
/Dest (casestudies.max.transfer.threads)
/Subtype /Link
@@ -33758,7 +33865,7 @@ endobj
/Type /Annot
>>
endobj
-160 0 obj
+162 0 obj
<< /Border [0 0 0]
/A << /Type /Action
/S /URI
@@ -33769,10 +33876,10 @@ endobj
/Type /Annot
>>
endobj
-161 0 obj
-[155 0 R /XYZ 0 232.479 null]
+163 0 obj
+[157 0 R /XYZ 0 232.479 null]
endobj
-162 0 obj
+164 0 obj
<< /Length 15133
>>
stream
@@ -34870,7 +34977,7 @@ Q
endstream
endobj
-163 0 obj
+165 0 obj
<< /Type /Page
/Parent 3 0 R
/MediaBox [0 0 595.28 841.89]
@@ -34878,24 +34985,24 @@ endobj
/BleedBox [0 0 595.28 841.89]
/TrimBox [0 0 595.28 841.89]
/ArtBox [0 0 595.28 841.89]
-/Contents 162 0 R
+/Contents 164 0 R
/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
-/Font << /F2.0 29 0 R
+/Font << /F2.0 31 0 R
/F1.0 10 0 R
-/F3.0 33 0 R
-/F4.0 35 0 R
-/F1.1 38 0 R
+/F3.0 35 0 R
+/F4.0 37 0 R
+/F1.1 40 0 R
>>
-/XObject << /Stamp2 4781 0 R
+/XObject << /Stamp2 4916 0 R
>>
>>
-/Annots [165 0 R 166 0 R 168 0 R]
+/Annots [167 0 R 168 0 R 170 0 R]
>>
endobj
-164 0 obj
-[163 0 R /XYZ 0 841.89 null]
+166 0 obj
+[165 0 R /XYZ 0 841.89 null]
endobj
-165 0 obj
+167 0 obj
<< /Border [0 0 0]
/Dest (standalone)
/Subtype /Link
@@ -34903,7 +35010,7 @@ endobj
/Type /Annot
>>
endobj
-166 0 obj
+168 0 obj
<< /Border [0 0 0]
/Dest (distributed)
/Subtype /Link
@@ -34911,10 +35018,10 @@ endobj
/Type /Annot
>>
endobj
-167 0 obj
-[163 0 R /XYZ 0 644.35 null]
+169 0 obj
+[165 0 R /XYZ 0 644.35 null]
endobj
-168 0 obj
+170 0 obj
<< /Border [0 0 0]
/Dest (quickstart)
/Subtype /Link
@@ -34922,13 +35029,13 @@ endobj
/Type /Annot
>>
endobj
-169 0 obj
-[163 0 R /XYZ 0 529.15 null]
+171 0 obj
+[165 0 R /XYZ 0 529.15 null]
endobj
-170 0 obj
-[163 0 R /XYZ 0 168.01 null]
+172 0 obj
+[165 0 R /XYZ 0 168.01 null]
endobj
-171 0 obj
+173 0 obj
<< /Length 11191
>>
stream
@@ -35670,7 +35777,7 @@ Q
endstream
endobj
-172 0 obj
+174 0 obj
<< /Type /Page
/Parent 3 0 R
/MediaBox [0 0 595.28 841.89]
@@ -35678,21 +35785,21 @@ endobj
/BleedBox [0 0 595.28 841.89]
/TrimBox [0 0 595.28 841.89]
/ArtBox [0 0 595.28 841.89]
-/Contents 171 0 R
+/Contents 173 0 R
/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
/Font << /F1.0 10 0 R
-/F3.0 33 0 R
-/F2.0 29 0 R
-/F5.1 45 0 R
-/F4.0 35 0 R
+/F3.0 35 0 R
+/F2.0 31 0 R
+/F5.1 47 0 R
+/F4.0 37 0 R
>>
-/XObject << /Stamp1 4780 0 R
+/XObject << /Stamp1 4915 0 R
>>
>>
-/Annots [173 0 R 174 0 R 175 0 R 177 0 R 178 0 R 180 0 R 181 0 R]
+/Annots [175 0 R 176 0 R 177 0 R 179 0 R 180 0 R 182 0 R 183 0 R]
>>
endobj
-173 0 obj
+175 0 obj
<< /Border [0 0 0]
/A << /Type /Action
/S /URI
@@ -35703,7 +35810,7 @@ endobj
/Type /Annot
>>
endobj
-174 0 obj
+176 0 obj
<< /Border [0 0 0]
/A << /Type /Action
/S /URI
@@ -35714,7 +35821,7 @@ endobj
/Type /Annot
>>
endobj
-175 0 obj
+177 0 obj
<< /Border [0 0 0]
/A << /Type /Action
/S /URI
@@ -35725,10 +35832,10 @@ endobj
/Type /Annot
>>
endobj
-176 0 obj
-[172 0 R /XYZ 0 731.52 null]
+178 0 obj
+[174 0 R /XYZ 0 731.52 null]
endobj
-177 0 obj
+179 0 obj
<< /Border [0 0 0]
/Dest (quickstart)
/Subtype /Link
@@ -35736,7 +35843,7 @@ endobj
/Type /Annot
>>
endobj
-178 0 obj
+180 0 obj
<< /Border [0 0 0]
/Dest (quickstart_pseudo)
/Subtype /Link
@@ -35744,10 +35851,10 @@ endobj
/Type /Annot
>>
endobj
-179 0 obj
-[172 0 R /XYZ 0 568.349 null]
+181 0 obj
+[174 0 R /XYZ 0 568.349 null]
endobj
-180 0 obj
+182 0 obj
<< /Border [0 0 0]
/Dest (quickstart_fully_distributed)
/Subtype /Link
@@ -35755,7 +35862,7 @@ endobj
/Type /Annot
>>
endobj
-181 0 obj
+183 0 obj
<< /Border [0 0 0]
/Dest (zookeeper)
/Subtype /Link
@@ -35763,7 +35870,7 @@ endobj
/Type /Annot
>>
endobj
-182 0 obj
+184 0 obj
<< /Length 18606
>>
stream
@@ -37144,7 +37251,7 @@ Q
endstream
endobj
-183 0 obj
+185 0 obj
<< /Type /Page
/Parent 3 0 R
/MediaBox [0 0 595.28 841.89]
@@ -37152,19 +37259,19 @@ endobj
/BleedBox [0 0 595.28 841.89]
/TrimBox [0 0 595.28 841.89]
/ArtBox [0 0 595.28 841.89]
-/Contents 182 0 R
+/Contents 184 0 R
/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
-/Font << /F3.0 33 0 R
+/Font << /F3.0 35 0 R
/F1.0 10 0 R
-/F4.0 35 0 R
+/F4.0 37 0 R
>>
-/XObject << /Stamp2 4781 0 R
+/XObject << /Stamp2 4916 0 R
>>
>>
-/Annots [184 0 R 185 0 R]
+/Annots [186 0 R 187 0 R]
>>
endobj
-184 0 obj
+186 0 obj
<< /Border [0 0 0]
/Dest (config.files)
/Subtype /Link
@@ -37172,7 +37279,7 @@ endobj
/Type /Annot
>>
endobj
-185 0 obj
+187 0 obj
<< /Border [0 0 0]
/Dest (quickstart_fully_distributed)
/Subtype /Link
@@ -37180,7 +37287,7 @@ endobj
/Type /Annot
>>
endobj
-186 0 obj
+188 0 obj
<< /Length 4635
>>
stream
@@ -37569,7 +37676,7 @@ Q
endstream
endobj
-187 0 obj
+189 0 obj
<< /Type /Page
/Parent 3 0 R
/MediaBox [0 0 595.28 841.89]
@@ -37577,18 +37684,18 @@ endobj
/BleedBox [0 0 595.28 841.89]
/TrimBox [0 0 595.28 841.89]
/ArtBox [0 0 595.28 841.89]
-/Contents 186 0 R
+/Contents 188 0 R
/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
/Font << /F1.0 10 0 R
-/F4.0 35 0 R
-/F3.0 33 0 R
+/F4.0 37 0 R
+/F3.0 35 0 R
>>
-/XObject << /Stamp1 4780 0 R
+/XObject << /Stamp1 4915 0 R
>>
>>
>>
endobj
-188 0 obj
+190 0 obj
<< /Length 9974
>>
stream
@@ -38224,7 +38331,7 @@ Q
endstream
endobj
-189 0 obj
+191 0 obj
<< /Type /Page
/Parent 3 0 R
/MediaBox [0 0 595.28 841.89]
@@ -38232,23 +38339,23 @@ endobj
/BleedBox [0 0 595.28 841.89]
/TrimBox [0 0 595.28 841.89]
/ArtBox [0 0 595.28 841.89]
-/Contents 188 0 R
+/Contents 190 0 R
/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
-/Font << /F2.0 29 0 R
+/Font << /F2.0 31 0 R
/F1.0 10 0 R
-/F3.0 33 0 R
-/F4.0 35 0 R
+/F3.0 35 0 R
+/F4.0 37 0 R
>>
-/XObject << /Stamp2 4781 0 R
+/XObject << /Stamp2 4916 0 R
>>
>>
-/Annots [191 0 R]
+/Annots [193 0 R]
>>
endobj
-190 0 obj
-[189 0 R /XYZ 0 841.89 null]
+192 0 obj
+[191 0 R /XYZ 0 841.89 null]
endobj
-191 0 obj
+193 0 obj
<< /Border [0 0 0]
/Dest (shell_exercises)
/Subtype /Link
@@ -38256,7 +38363,7 @@ endobj
/Type /Annot
>>
endobj
-192 0 obj
+194 0 obj
<< /Length 10811
>>
stream
@@ -38990,7 +39097,7 @@ Q
endstream
endobj
-193 0 obj
+195 0 obj
<< /Type /Page
/Parent 3 0 R
/MediaBox [0 0 595.28 841.89]
@@ -38998,27 +39105,27 @@ endobj
/BleedBox [0 0 595.28 841.89]
/TrimBox [0 0 595.28 841.89]
/ArtBox [0 0 595.28 841.89]
-/Contents 192 0 R
+/Contents 194 0 R
/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
-/Font << /F2.0 29 0 R
-/F3.0 33 0 R
+/Font << /F2.0 31 0 R
+/F3.0 35 0 R
/F1.0 10 0 R
-/F4.0 35 0 R
-/F1.1 38 0 R
+/F4.0 37 0 R
+/F1.1 40 0 R
>>
-/XObject << /Stamp1 4780 0 R
+/XObject << /Stamp1 4915 0 R
>>
>>
-/Annots [196 0 R]
+/Annots [198 0 R]
>>
endobj
-194 0 obj
-[193 0 R /XYZ 0 841.89 null]
+196 0 obj
+[195 0 R /XYZ 0 841.89 null]
endobj
-195 0 obj
-[193 0 R /XYZ 0 765.17 null]
+197 0 obj
+[195 0 R /XYZ 0 765.17 null]
endobj
-196 0 obj
+198 0 obj
<< /Border [0 0 0]
/Dest (hbase_default_configurations)
/Subtype /Link
@@ -39026,19 +39133,19 @@ endobj
/Type /Annot
>>
endobj
-197 0 obj
-[193 0 R /XYZ 0 578.63 null]
-endobj
-198 0 obj
-[193 0 R /XYZ 0 494.99 null]
-endobj
199 0 obj
-[193 0 R /XYZ 0 358.668 null]
+[195 0 R /XYZ 0 578.63 null]
endobj
200 0 obj
-[193 0 R /XYZ 0 175.006 null]
+[195 0 R /XYZ 0 494.99 null]
endobj
201 0 obj
+[195 0 R /XYZ 0 358.668 null]
+endobj
+202 0 obj
+[195 0 R /XYZ 0 175.006 null]
+endobj
+203 0 obj
<< /Length 7734
>>
stream
@@ -39523,7 +39630,7 @@ Q
endstream
endobj
-202 0 obj
+204 0 obj
<< /Type /Page
/Parent 3 0 R
/MediaBox [0 0 595.28 841.89]
@@ -39531,41 +39638,41 @@ endobj
/BleedBox [0 0 595.28 841.89]
/TrimBox [0 0 595.28 841.89]
/ArtBox [0 0 595.28 841.89]
-/Contents 201 0 R
+/Contents 203 0 R
/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
-/Font << /F4.0 35 0 R
-/F3.0 33 0 R
+/Font << /F4.0 37 0 R
+/F3.0 35 0 R
/F1.0 10 0 R
>>
-/XObject << /Stamp2 4781 0 R
+/XObject << /Stamp2 4916 0 R
>>
>>
>>
endobj
-203 0 obj
-[202 0 R /XYZ 0 805.89 null]
-endobj
-204 0 obj
-[202 0 R /XYZ 0 574.888 null]
-endobj
205 0 obj
-[202 0 R /XYZ 0 454.346 null]
+[204 0 R /XYZ 0 805.89 null]
endobj
206 0 obj
-<< /Limits [(getshortmidpointkey-an-optimization-for-data-index-block) (handling-of-errors-during-log-splitting)]
-/Names [(getshortmidpointkey-an-optimization-for-data-index-block) 4177 0 R (getting.involved) 3389 0 R (getting_started) 48 0 R (git.best.practices) 3667 0 R (git.patch.flow) 3722 0 R (goals) 4270 0 R (guide-for-hbase-committers) 3696 0 R (guidelines-for-deploying-a-coprocessor) 2389 0 R (guidelines-for-reporting-effective-issues) 3407 0 R (hadoop) 140 0 R (hadoop.native.lib) 4094 0 R (hadoop.policy.file) 383 0 R (handling-of-errors-during-log-splitting) 1681 0 R]
->>
+[204 0 R /XYZ 0 574.888 null]
endobj
207 0 obj
-[202 0 R /XYZ 0 349.584 null]
+[204 0 R /XYZ 0 454.346 null]
endobj
208 0 obj
-[202 0 R /XYZ 0 244.822 null]
+<< /Limits [(getshortmidpointkey-an-optimization-for-data-index-block) (handling-of-errors-during-log-splitting)]
+/Names [(getshortmidpointkey-an-optimization-for-data-index-block) 4179 0 R (getting.involved) 3391 0 R (getting_started) 50 0 R (git.best.practices) 3669 0 R (git.patch.flow) 3724 0 R (goals) 4272 0 R (guide-for-hbase-committers) 3698 0 R (guidelines-for-deploying-a-coprocessor) 2391 0 R (guidelines-for-reporting-effective-issues) 3409 0 R (hadoop) 142 0 R (hadoop.native.lib) 4096 0 R (hadoop.policy.file) 385 0 R (handling-of-errors-during-log-splitting) 1683 0 R]
+>>
endobj
209 0 obj
-[202 0 R /XYZ 0 140.06 null]
+[204 0 R /XYZ 0 349.584 null]
endobj
210 0 obj
+[204 0 R /XYZ 0 244.822 null]
+endobj
+211 0 obj
+[204 0 R /XYZ 0 140.06 null]
+endobj
+212 0 obj
<< /Length 8737
>>
stream
@@ -40069,7 +40176,7 @@ Q
endstream
endobj
-211 0 obj
+213 0 obj
<< /Type /Page
/Parent 3 0 R
/MediaBox [0 0 595.28 841.89]
@@ -40077,36 +40184,36 @@ endobj
/BleedBox [0 0 595.28 841.89]
/TrimBox [0 0 595.28 841.89]
/ArtBox [0 0 595.28 841.89]
-/Contents 210 0 R
+/Contents 212 0 R
/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
-/Font << /F4.0 35 0 R
-/F3.0 33 0 R
+/Font << /F4.0 37 0 R
+/F3.0 35 0 R
/F1.0 10 0 R
>>
-/XObject << /Stamp1 4780 0 R
+/XObject << /Stamp1 4915 0 R
>>
>>
>>
endobj
-212 0 obj
-[211 0 R /XYZ 0 782.64 null]
-endobj
-213 0 obj
-[211 0 R /XYZ 0 617.593 null]
-endobj
214 0 obj
-[211 0 R /XYZ 0 497.051 null]
+[213 0 R /XYZ 0 782.64 null]
endobj
215 0 obj
-[211 0 R /XYZ 0 376.509 null]
+[213 0 R /XYZ 0 617.593 null]
endobj
216 0 obj
-[211 0 R /XYZ 0 208.627 null]
+[213 0 R /XYZ 0 497.051 null]
endobj
217 0 obj
-[211 0 R /XYZ 0 72.305 null]
+[213 0 R /XYZ 0 376.509 null]
endobj
218 0 obj
+[213 0 R /XYZ 0 208.627 null]
+endobj
+219 0 obj
+[213 0 R /XYZ 0 72.305 null]
+endobj
+220 0 obj
<< /Length 7573
>>
stream
@@ -40591,7 +40698,7 @@ Q
endstream
endobj
-219 0 obj
+221 0 obj
<< /Type /Page
/Parent 3 0 R
/MediaBox [0 0 595.28 841.89]
@@ -40599,41 +40706,41 @@ endobj
/BleedBox [0 0 595.28 841.89]
/TrimBox [0 0 595.28 841.89]
/ArtBox [0 0 595.28 841.89]
-/Contents 218 0 R
+/Contents 220 0 R
/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
-/Font << /F3.0 33 0 R
+/Font << /F3.0 35 0 R
/F1.0 10 0 R
-/F4.0 35 0 R
+/F4.0 37 0 R
>>
-/XObject << /Stamp2 4781 0 R
+/XObject << /Stamp2 4916 0 R
>>
>>
>>
endobj
-220 0 obj
-[219 0 R /XYZ 0 669.5005 null]
-endobj
-221 0 obj
-<< /Limits [(hbase.master.logcleaner.ttl) (hbase.mob.delfile.max.count)]
-/Names [(hbase.master.logcleaner.ttl) 213 0 R (hbase.master.mob.ttl.cleaner.period) 495 0 R (hbase.master.normalizer.class) 466 0 R (hbase.master.port) 207 0 R (hbase.master.procedurewalcleaner.ttl) 214 0 R (hbase.master.wait.on.service.seconds) 510 0 R (hbase.mob.cache.evict.period) 493 0 R (hbase.mob.cache.evict.remain.ratio) 494 0 R (hbase.mob.compaction.batch.size) 500 0 R (hbase.mob.compaction.chore.period) 502 0 R (hbase.mob.compaction.mergeable.threshold) 498 0 R (hbase.mob.compaction.threads.max) 504 0 R (hbase.mob.compactor.class) 503 0 R (hbase.mob.delfile.max.count) 499 0 R]
->>
-endobj
222 0 obj
-[219 0 R /XYZ 0 564.7385 null]
+[221 0 R /XYZ 0 669.5005 null]
endobj
223 0 obj
-[219 0 R /XYZ 0 444.1965 null]
+<< /Limits [(hbase.master.logcleaner.ttl) (hbase.mob.delfile.max.count)]
+/Names [(hbase.master.logcleaner.ttl) 215 0 R (hbase.master.mob.ttl.cleaner.period) 497 0 R (hbase.master.normalizer.class) 468 0 R (hbase.master.port) 209 0 R (hbase.master.procedurewalcleaner.ttl) 216 0 R (hbase.master.wait.on.service.seconds) 512 0 R (hbase.mob.cache.evict.period) 495 0 R (hbase.mob.cache.evict.remain.ratio) 496 0 R (hbase.mob.compaction.batch.size) 502 0 R (hbase.mob.compaction.chore.period) 504 0 R (hbase.mob.compaction.mergeable.threshold) 500 0 R (hbase.mob.compaction.threads.max) 506 0 R (hbase.mob.compactor.class) 505 0 R (hbase.mob.delfile.max.count) 501 0 R]
+>>
endobj
224 0 obj
-[219 0 R /XYZ 0 339.4345 null]
+[221 0 R /XYZ 0 564.7385 null]
endobj
225 0 obj
-[219 0 R /XYZ 0 203.1125 null]
+[221 0 R /XYZ 0 444.1965 null]
endobj
226 0 obj
-[219 0 R /XYZ 0 51.0105 null]
+[221 0 R /XYZ 0 339.4345 null]
endobj
227 0 obj
+[221 0 R /XYZ 0 203.1125 null]
+endobj
+228 0 obj
+[221 0 R /XYZ 0 51.0105 null]
+endobj
+229 0 obj
<< /Length 11027
>>
stream
@@ -41226,7 +41333,7 @@ Q
endstream
endobj
-228 0 obj
+230 0 obj
<< /Type /Page
/Parent 3 0 R
/MediaBox [0 0 595.28 841.89]
@@ -41234,27 +41341,27 @@ endobj
/BleedBox [0 0 595.28 841.89]
/TrimBox [0 0 595.28 841.89]
/ArtBox [0 0 595.28 841.89]
-/Contents 227 0 R
+/Contents 229 0 R
/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
-/Font << /F4.0 35 0 R
-/F3.0 33 0 R
+/Font << /F4.0 37 0 R
+/F3.0 35 0 R
/F1.0 10 0 R
>>
-/XObject << /Stamp1 4780 0 R
+/XObject << /Stamp1 4915 0 R
>>
>>
>>
endobj
-229 0 obj
-[228 0 R /XYZ 0 685.348 null]
-endobj
-230 0 obj
-[228 0 R /XYZ 0 375.446 null]
-endobj
231 0 obj
-[228 0 R /XYZ 0 97.104 null]
+[230 0 R /XYZ 0 685.348 null]
endobj
232 0 obj
+[230 0 R /XYZ 0 375.446 null]
+endobj
+233 0 obj
+[230 0 R /XYZ 0 97.104 null]
+endobj
+234 0 obj
<< /Length 7895
>>
stream
@@ -41735,7 +41842,7 @@ Q
endstream
endobj
-233 0 obj
+235 0 obj
<< /Type /Page
/Parent 3 0 R
/MediaBox [0 0 595.28 841.89]
@@ -41743,41 +41850,41 @@ endobj
/BleedBox [0 0 595.28 841.89]
/TrimBox [0 0 595.28 841.89]
/ArtBox [0 0 595.28 841.89]
-/Contents 232 0 R
+/Contents 234 0 R
/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
/Font << /F1.0 10 0 R
-/F3.0 33 0 R
-/F4.0 35 0 R
+/F3.0 35 0 R
+/F4.0 37 0 R
>>
-/XObject << /Stamp2 4781 0 R
+/XObject << /Stamp2 4916 0 R
>>
>>
>>
endobj
-234 0 obj
-[233 0 R /XYZ 0 735.869 null]
-endobj
-235 0 obj
-[233 0 R /XYZ 0 631.107 null]
-endobj
236 0 obj
-[233 0 R /XYZ 0 479.005 null]
+[235 0 R /XYZ 0 735.869 null]
endobj
237 0 obj
-[233 0 R /XYZ 0 374.243 null]
+[235 0 R /XYZ 0 631.107 null]
endobj
238 0 obj
-[233 0 R /XYZ 0 269.481 null]
+[235 0 R /XYZ 0 479.005 null]
endobj
239 0 obj
-<< /Limits [(hbase.regionserver.kerberos.principal) (hbase.regionserver.thread.compaction.throttle)]
-/Names [(hbase.regionserver.kerberos.principal) 382 0 R (hbase.regionserver.keytab.file) 381 0 R (hbase.regionserver.logroll.errors.tolerated) 235 0 R (hbase.regionserver.logroll.period) 234 0 R (hbase.regionserver.majorcompaction.pagecache.drop) 337 0 R (hbase.regionserver.minorcompaction.pagecache.drop) 338 0 R (hbase.regionserver.msginterval) 231 0 R (hbase.regionserver.optionalcacheflushinterval) 244 0 R (hbase.regionserver.port) 220 0 R (hbase.regionserver.region.split.policy) 247 0 R (hbase.regionserver.regionSplitLimit) 248 0 R (hbase.regionserver.storefile.refresh.period) 479 0 R (hbase.regionserver.thread.compaction.throttle) 336 0 R]
->>
+[235 0 R /XYZ 0 374.243 null]
endobj
240 0 obj
-[233 0 R /XYZ 0 97.819 null]
+[235 0 R /XYZ 0 269.481 null]
endobj
241 0 obj
+<< /Limits [(hbase.regionserver.kerberos.principal) (hbase.regionserver.thread.compaction.throttle)]
+/Names [(hbase.regionserver.kerberos.principal) 384 0 R (hbase.regionserver.keytab.file) 383 0 R (hbase.regionserver.logroll.errors.tolerated) 237 0 R (hbase.regionserver.logroll.period) 236 0 R (hbase.regionserver.majorcompaction.pagecache.drop) 339 0 R (hbase.regionserver.minorcompaction.pagecache.drop) 340 0 R (hbase.regionserver.msginterval) 233 0 R (hbase.regionserver.optionalcacheflushinterval) 246 0 R (hbase.regionserver.port) 222 0 R (hbase.regionserver.region.split.policy) 249 0 R (hbase.regionserver.regionSplitLimit) 250 0 R (hbase.regionserver.storefile.refresh.period) 481 0 R (hbase.regionserver.thread.compaction.throttle) 338 0 R]
+>>
+endobj
+242 0 obj
+[235 0 R /XYZ 0 97.819 null]
+endobj
+243 0 obj
<< /Length 8415
>>
stream
@@ -42266,7 +42373,7 @@ Q
endstream
endobj
-242 0 obj
+244 0 obj
<< /Type /Page
/Parent 3 0 R
/MediaBox [0 0 595.28 841.89]
@@ -42274,36 +42381,36 @@ endobj
/BleedBox [0 0 595.28 841.89]
/TrimBox [0 0 595.28 841.89]
/ArtBox [0 0 595.28 841.89]
-/Contents 241 0 R
+/Contents 243 0 R
/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
/Font << /F1.0 10 0 R
-/F3.0 33 0 R
-/F4.0 35 0 R
+/F3.0 35 0 R
+/F4.0 37 0 R
>>
-/XObject << /Stamp1 4780 0 R
+/XObject << /Stamp1 4915 0 R
>>
>>
>>
endobj
-243 0 obj
-[242 0 R /XYZ 0 684.749 null]
-endobj
-244 0 obj
-[242 0 R /XYZ 0 548.427 null]
-endobj
245 0 obj
-[242 0 R /XYZ 0 427.885 null]
+[244 0 R /XYZ 0 684.749 null]
endobj
246 0 obj
-[242 0 R /XYZ 0 323.123 null]
+[244 0 R /XYZ 0 548.427 null]
endobj
247 0 obj
-[242 0 R /XYZ 0 202.581 null]
+[244 0 R /XYZ 0 427.885 null]
endobj
248 0 obj
-[242 0 R /XYZ 0 50.479 null]
+[244 0 R /XYZ 0 323.123 null]
endobj
249 0 obj
+[244 0 R /XYZ 0 202.581 null]
+endobj
+250 0 obj
+[244 0 R /XYZ 0 50.479 null]
+endobj
+251 0 obj
<< /Length 9037
>>
stream
@@ -42845,7 +42952,7 @@ Q
endstream
endobj
-250 0 obj
+252 0 obj
<< /Type /Page
/Parent 3 0 R
/MediaBox [0 0 595.28 841.89]
@@ -42853,22 +42960,22 @@ endobj
/BleedBox [0 0 595.28 841.89]
/TrimBox [0 0 595.28 841.89]
/ArtBox [0 0 595.28 841.89]
-/Contents 249 0 R
+/Contents 251 0 R
/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
-/Font << /F4.0 35 0 R
-/F3.0 33 0 R
+/Font << /F4.0 37 0 R
+/F3.0 35 0 R
/F1.0 10 0 R
>>
-/XObject << /Stamp2 4781 0 R
+/XObject << /Stamp2 4916 0 R
>>
>>
-/Annots [252 0 R 253 0 R]
+/Annots [254 0 R 255 0 R]
>>
endobj
-251 0 obj
-[250 0 R /XYZ 0 669.568 null]
+253 0 obj
+[252 0 R /XYZ 0 669.568 null]
endobj
-252 0 obj
+254 0 obj
<< /Border [0 0 0]
/A << /Type /Action
/S /URI
@@ -42879,7 +42986,7 @@ endobj
/Type /Annot
>>
endobj
-253 0 obj
+255 0 obj
<< /Border [0 0 0]
/A << /Type /Action
/S /URI
@@ -42890,19 +42997,19 @@ endobj
/Type /Annot
>>
endobj
-254 0 obj
-[250 0 R /XYZ 0 422.786 null]
-endobj
-255 0 obj
-[250 0 R /XYZ 0 286.464 null]
-endobj
256 0 obj
-[250 0 R /XYZ 0 181.702 null]
+[252 0 R /XYZ 0 422.786 null]
endobj
257 0 obj
-[250 0 R /XYZ 0 76.94 null]
+[252 0 R /XYZ 0 286.464 null]
endobj
258 0 obj
+[252 0 R /XYZ 0 181.702 null]
+endobj
+259 0 obj
+[252 0 R /XYZ 0 76.94 null]
+endobj
+260 0 obj
<< /Length 7983
>>
stream
@@ -43412,7 +43519,7 @@ Q
endstream
endobj
-259 0 obj
+261 0 obj
<< /Type /Page
/Parent 3 0 R
/MediaBox [0 0 595.28 841.89]
@@ -43420,22 +43527,22 @@ endobj
/BleedBox [0 0 595.28 841.89]
/TrimBox [0 0 595.28 841.89]
/ArtBox [0 0 595.28 841.89]
-/Contents 258 0 R
+/Contents 260 0 R
/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
-/Font << /F3.0 33 0 R
+/Font << /F3.0 35 0 R
/F1.0 10 0 R
-/F4.0 35 0 R
+/F4.0 37 0 R
>>
-/XObject << /Stamp1 4780 0 R
+/XObject << /Stamp1 4915 0 R
>>
>>
-/Annots [261 0 R 262 0 R 264 0 R 265 0 R]
+/Annots [263 0 R 264 0 R 266 0 R 267 0 R]
>>
endobj
-260 0 obj
-[259 0 R /XYZ 0 701.0605 null]
+262 0 obj
+[261 0 R /XYZ 0 701.0605 null]
endobj
-261 0 obj
+263 0 obj
<< /Border [0 0 0]
/A << /Type /Action
/S /URI
@@ -43446,7 +43553,7 @@ endobj
/Type /Annot
>>
endobj
-262 0 obj
+264 0 obj
<< /Border [0 0 0]
/A << /Type /Action
/S /URI
@@ -43457,10 +43564,10 @@ endobj
/Type /Annot
>>
endobj
-263 0 obj
-[259 0 R /XYZ 0 580.5185 null]
+265 0 obj
+[261 0 R /XYZ 0 580.5185 null]
endobj
-264 0 obj
+266 0 obj
<< /Border [0 0 0]
/A << /Type /Action
/S /URI
@@ -43471,7 +43578,7 @@ endobj
/Type /Annot
>>
endobj
-265 0 obj
+267 0 obj
<< /Border [0 0 0]
/A << /Type /Action
/S /URI
@@ -43482,24 +43589,24 @@ endobj
/Type /Annot
>>
endobj
-266 0 obj
-[259 0 R /XYZ 0 459.9765 null]
-endobj
-267 0 obj
-[259 0 R /XYZ 0 339.4345 null]
-endobj
268 0 obj
-<< /Limits [(hbase.table.lock.enable) (hbase.tmp.dir)]
-/Names [(hbase.table.lock.enable) 408 0 R (hbase.table.max.rowsize) 411 0 R (hbase.tags) 1358 0 R (hbase.tests) 3547 0 R (hbase.tests.categories) 3591 0 R (hbase.tests.cluster) 3593 0 R (hbase.tests.example.code) 3594 0 R (hbase.tests.rules) 3587 0 R (hbase.tests.sleeps) 3592 0 R (hbase.tests.writing) 3586 0 R (hbase.thrift.maxQueuedRequests) 415 0 R (hbase.thrift.maxWorkerThreads) 414 0 R (hbase.thrift.minWorkerThreads) 413 0 R (hbase.tmp.dir) 198 0 R]
->>
+[261 0 R /XYZ 0 459.9765 null]
endobj
269 0 obj
-[259 0 R /XYZ 0 218.8925 null]
+[261 0 R /XYZ 0 339.4345 null]
endobj
270 0 obj
-[259 0 R /XYZ 0 114.1305 null]
+<< /Limits [(hbase.table.lock.enable) (hbase.tmp.dir)]
+/Names [(hbase.table.lock.enable) 410 0 R (hbase.table.max.rowsize) 413 0 R (hbase.tags) 1360 0 R (hbase.tests) 3549 0 R (hbase.tests.categories) 3593 0 R (hbase.tests.cluster) 3595 0 R (hbase.tests.example.code) 3596 0 R (hbase.tests.rules) 3589 0 R (hbase.tests.sleeps) 3594 0 R (hbase.tests.writing) 3588 0 R (hbase.thrift.maxQueuedRequests) 417 0 R (hbase.thrift.maxWorkerThreads) 416 0 R (hbase.thrift.minWorkerThreads) 415 0 R (hbase.tmp.dir) 200 0 R]
+>>
endobj
271 0 obj
+[261 0 R /XYZ 0 218.8925 null]
+endobj
+272 0 obj
+[261 0 R /XYZ 0 114.1305 null]
+endobj
+273 0 obj
<< /Length 8959
>>
stream
@@ -44031,7 +44138,7 @@ Q
endstream
endobj
-272 0 obj
+274 0 obj
<< /Type /Page
/Parent 3 0 R
/MediaBox [0 0 595.28 841.89]
@@ -44039,34 +44146,34 @@ endobj
/BleedBox [0 0 595.28 841.89]
/TrimBox [0 0 595.28 841.89]
/ArtBox [0 0 595.28 841.89]
-/Contents 271 0 R
+/Contents 273 0 R
/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
-/Font << /F3.0 33 0 R
-/F4.0 35 0 R
+/Font << /F3.0 35 0 R
+/F4.0 37 0 R
/F1.0 10 0 R
-/F1.1 38 0 R
+/F1.1 40 0 R
>>
-/XObject << /Stamp2 4781 0 R
+/XObject << /Stamp2 4916 0 R
>>
>>
>>
endobj
-273 0 obj
-[272 0 R /XYZ 0 763.6115 null]
-endobj
-274 0 obj
-[272 0 R /XYZ 0 611.5095 null]
-endobj
275 0 obj
-[272 0 R /XYZ 0 459.4075 null]
+[274 0 R /XYZ 0 763.6115 null]
endobj
276 0 obj
-[272 0 R /XYZ 0 323.0855 null]
+[274 0 R /XYZ 0 611.5095 null]
endobj
277 0 obj
-[272 0 R /XYZ 0 182.9835 null]
+[274 0 R /XYZ 0 459.4075 null]
endobj
278 0 obj
+[274 0 R /XYZ 0 323.0855 null]
+endobj
+279 0 obj
+[274 0 R /XYZ 0 182.9835 null]
+endobj
+280 0 obj
<< /Length 9261
>>
stream
@@ -44627,7 +44734,7 @@ Q
endstream
endobj
-279 0 obj
+281 0 obj
<< /Type /Page
/Parent 3 0 R
/MediaBox [0 0 595.28 841.89]
@@ -44635,36 +44742,36 @@ endobj
/BleedBox [0 0 595.28 841.89]
/TrimBox [0 0 595.28 841.89]
/ArtBox [0 0 595.28 841.89]
-/Contents 278 0 R
+/Contents 280 0 R
/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
-/Font << /F3.0 33 0 R
-/F4.0 35 0 R
+/Font << /F3.0 35 0 R
+/F4.0 37 0 R
/F1.0 10 0 R
>>
-/XObject << /Stamp1 4780 0 R
+/XObject << /Stamp1 4915 0 R
>>
>>
-/Annots [285 0 R 286 0 R]
+/Annots [287 0 R 288 0 R]
>>
endobj
-280 0 obj
-[279 0 R /XYZ 0 763.6115 null]
-endobj
-281 0 obj
-[279 0 R /XYZ 0 643.0695 null]
-endobj
282 0 obj
-[279 0 R /XYZ 0 522.5275 null]
+[281 0 R /XYZ 0 763.6115 null]
endobj
283 0 obj
-[279 0 R /XYZ 0 386.2055 null]
+[281 0 R /XYZ 0 643.0695 null]
endobj
284 0 obj
+[281 0 R /XYZ 0 522.5275 null]
+endobj
+285 0 obj
+[281 0 R /XYZ 0 386.2055 null]
+endobj
+286 0 obj
<< /Limits [(hbase.cluster.distributed) (hbase.data.umask.enable)]
-/Names [(hbase.cluster.distributed) 200 0 R (hbase.column.max.version) 434 0 R (hbase.commit.msg.format) 3940 0 R (hbase.coordinated.state.manager.class) 477 0 R (hbase.coprocessor.abortonerror) 399 0 R (hbase.coprocessor.enabled) 392 0 R (hbase.coprocessor.master.classes) 398 0 R (hbase.coprocessor.region.classes) 397 0 R (hbase.coprocessor.user.enabled) 396 0 R (hbase.data.umask) 425 0 R (hbase.data.umask.enable) 424 0 R]
+/Names [(hbase.cluster.distributed) 202 0 R (hbase.column.max.version) 436 0 R (hbase.commit.msg.format) 3942 0 R (hbase.coordinated.state.manager.class) 479 0 R (hbase.coprocessor.abortonerror) 401 0 R (hbase.coprocessor.enabled) 394 0 R (hbase.coprocessor.master.classes) 400 0 R (hbase.coprocessor.region.classes) 399 0 R (hbase.coprocessor.user.enabled) 398 0 R (hbase.data.umask) 427 0 R (hbase.data.umask.enable) 426 0 R]
>>
endobj
-285 0 obj
+287 0 obj
<< /Border [0 0 0]
/A << /Type /Action
/S /URI
@@ -44675,7 +44782,7 @@ endobj
/Type /Annot
>>
endobj
-286 0 obj
+288 0 obj
<< /Border [0 0 0]
/A << /Type /Action
/S /URI
@@ -44686,10 +44793,10 @@ endobj
/Type /Annot
>>
endobj
-287 0 obj
-[279 0 R /XYZ 0 202.5435 null]
+289 0 obj
+[281 0 R /XYZ 0 202.5435 null]
endobj
-288 0 obj
+290 0 obj
<< /Length 8281
>>
stream
@@ -45193,7 +45300,7 @@ Q
endstream
endobj
-289 0 obj
+291 0 obj
<< /Type /Page
/Parent 3 0 R
/MediaBox [0 0 595.28 841.89]
@@ -45201,36 +45308,36 @@ endobj
/BleedBox [0 0 595.28 841.89]
/TrimBox [0 0 595.28 841.89]
/ArtBox [0 0 595.28 841.89]
-/Contents 288 0 R
+/Contents 290 0 R
/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
/Font << /F1.0 10 0 R
-/F3.0 33 0 R
-/F4.0 35 0 R
+/F3.0 35 0 R
+/F4.0 37 0 R
>>
-/XObject << /Stamp2 4781 0 R
+/XObject << /Stamp2 4916 0 R
>>
>>
>>
endobj
-290 0 obj
-[289 0 R /XYZ 0 688.529 null]
-endobj
-291 0 obj
-[289 0 R /XYZ 0 536.427 null]
-endobj
292 0 obj
-[289 0 R /XYZ 0 400.105 null]
+[291 0 R /XYZ 0 688.529 null]
endobj
293 0 obj
-[289 0 R /XYZ 0 295.343 null]
+[291 0 R /XYZ 0 536.427 null]
endobj
294 0 obj
-[289 0 R /XYZ 0 237.352 null]
+[291 0 R /XYZ 0 400.105 null]
endobj
295 0 obj
-[289 0 R /XYZ 0 116.81 null]
+[291 0 R /XYZ 0 295.343 null]
endobj
296 0 obj
+[291 0 R /XYZ 0 237.352 null]
+endobj
+297 0 obj
+[291 0 R /XYZ 0 116.81 null]
+endobj
+298 0 obj
<< /Length 6859
>>
stream
@@ -45684,7 +45791,7 @@ Q
endstream
endobj
-297 0 obj
+299 0 obj
<< /Type /Page
/Parent 3 0 R
/MediaBox [0 0 595.28 841.89]
@@ -45692,36 +45799,36 @@ endobj
/BleedBox [0 0 595.28 841.89]
/TrimBox [0 0 595.28 841.89]
/ArtBox [0 0 595.28 841.89]
-/Contents 296 0 R
+/Contents 298 0 R
/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
/Font << /F1.0 10 0 R
-/F3.0 33 0 R
-/F4.0 35 0 R
+/F3.0 35 0 R
+/F4.0 37 0 R
>>
-/XObject << /Stamp1 4780 0 R
+/XObject << /Stamp1 4915 0 R
>>
>>
>>
endobj
-298 0 obj
-[297 0 R /XYZ 0 735.869 null]
-endobj
-299 0 obj
-[297 0 R /XYZ 0 631.107 null]
-endobj
300 0 obj
-[297 0 R /XYZ 0 526.345 null]
+[299 0 R /XYZ 0 735.869 null]
endobj
301 0 obj
-[297 0 R /XYZ 0 421.583 null]
+[299 0 R /XYZ 0 631.107 null]
endobj
302 0 obj
-[297 0 R /XYZ 0 285.261 null]
+[299 0 R /XYZ 0 526.345 null]
endobj
303 0 obj
-[297 0 R /XYZ 0 164.719 null]
+[299 0 R /XYZ 0 421.583 null]
endobj
304 0 obj
+[299 0 R /XYZ 0 285.261 null]
+endobj
+305 0 obj
+[299 0 R /XYZ 0 164.719 null]
+endobj
+306 0 obj
<< /Length 9496
>>
stream
@@ -46256,7 +46363,7 @@ Q
endstream
endobj
-305 0 obj
+307 0 obj
<< /Type /Page
/Parent 3 0 R
/MediaBox [0 0 595.28 841.89]
@@ -46264,33 +46371,33 @@ endobj
/BleedBox [0 0 595.28 841.89]
/TrimBox [0 0 595.28 841.89]
/ArtBox [0 0 595.28 841.89]
-/Contents 304 0 R
+/Contents 306 0 R
/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
-/Font << /F4.0 35 0 R
-/F3.0 33 0 R
+/Font << /F4.0 37 0 R
+/F3.0 35 0 R
/F1.0 10 0 R
>>
-/XObject << /Stamp2 4781 0 R
+/XObject << /Stamp2 4916 0 R
>>
>>
>>
endobj
-306 0 obj
-[305 0 R /XYZ 0 805.89 null]
-endobj
-307 0 obj
-[305 0 R /XYZ 0 685.348 null]
-endobj
308 0 obj
-[305 0 R /XYZ 0 501.686 null]
+[307 0 R /XYZ 0 805.89 null]
endobj
309 0 obj
-[305 0 R /XYZ 0 318.024 null]
+[307 0 R /XYZ 0 685.348 null]
endobj
310 0 obj
-[305 0 R /XYZ 0 165.922 null]
+[307 0 R /XYZ 0 501.686 null]
endobj
311 0 obj
+[307 0 R /XYZ 0 318.024 null]
+endobj
+312 0 obj
+[307 0 R /XYZ 0 165.922 null]
+endobj
+313 0 obj
<< /Length 8783
>>
stream
@@ -46817,7 +46924,7 @@ Q
endstream
endobj
-312 0 obj
+314 0 obj
<< /Type /Page
/Parent 3 0 R
/MediaBox [0 0 595.28 841.89]
@@ -46825,38 +46932,38 @@ endobj
/BleedBox [0 0 595.28 841.89]
/TrimBox [0 0 595.28 841.89]
/ArtBox [0 0 595.28 841.89]
-/Contents 311 0 R
+/Contents 313 0 R
/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
-/Font << /F4.0 35 0 R
-/F3.0 33 0 R
+/Font << /F4.0 37 0 R
+/F3.0 35 0 R
/F1.0 10 0 R
>>
-/XObject << /Stamp1 4780 0 R
+/XObject << /Stamp1 4915 0 R
>>
>>
>>
endobj
-313 0 obj
-[312 0 R /XYZ 0 782.64 null]
-endobj
-314 0 obj
-[312 0 R /XYZ 0 662.098 null]
-endobj
315 0 obj
-[312 0 R /XYZ 0 446.876 null]
+[314 0 R /XYZ 0 782.64 null]
endobj
316 0 obj
-[312 0 R /XYZ 0 310.554 null]
+[314 0 R /XYZ 0 662.098 null]
endobj
317 0 obj
-<< /Limits [(hbase.hstore.flusher.count) (hbase.lease.recovery.timeout)]
-/Names [(hbase.hstore.flusher.count) 318 0 R (hbase.hstore.time.to.purge.deletes) 331 0 R (hbase.http.filter.initializers) 483 0 R (hbase.http.max.threads) 485 0 R (hbase.http.staticuser.user) 490 0 R (hbase.ipc.client.fallback-to-simple-auth-allowed) 389 0 R (hbase.ipc.client.tcpnodelay) 369 0 R (hbase.ipc.server.callqueue.handler.factor) 226 0 R (hbase.ipc.server.callqueue.read.ratio) 229 0 R (hbase.ipc.server.callqueue.scan.ratio) 230 0 R (hbase.ipc.server.fallback-to-simple-auth-allowed) 390 0 R (hbase.lease.recovery.dfs.timeout) 433 0 R (hbase.lease.recovery.timeout) 432 0 R]
->>
+[314 0 R /XYZ 0 446.876 null]
endobj
318 0 obj
-[312 0 R /XYZ 0 174.232 null]
+[314 0 R /XYZ 0 310.554 null]
endobj
319 0 obj
+<< /Limits [(hbase.hstore.flusher.count) (hbase.lease.recovery.timeout)]
+/Names [(hbase.hstore.flusher.count) 320 0 R (hbase.hstore.time.to.purge.deletes) 333 0 R (hbase.http.filter.initializers) 485 0 R (hbase.http.max.threads) 487 0 R (hbase.http.staticuser.user) 492 0 R (hbase.ipc.client.fallback-to-simple-auth-allowed) 391 0 R (hbase.ipc.client.tcpnodelay) 371 0 R (hbase.ipc.server.callqueue.handler.factor) 228 0 R (hbase.ipc.server.callqueue.read.ratio) 231 0 R (hbase.ipc.server.callqueue.scan.ratio) 232 0 R (hbase.ipc.server.fallback-to-simple-auth-allowed) 392 0 R (hbase.lease.recovery.dfs.timeout) 435 0 R (hbase.lease.recovery.timeout) 434 0 R]
+>>
+endobj
+320 0 obj
+[314 0 R /XYZ 0 174.232 null]
+endobj
+321 0 obj
<< /Length 9764
>>
stream
@@ -47414,7 +47521,7 @@ Q
endstream
endobj
-320 0 obj
+322 0 obj
<< /Type /Page
/Parent 3 0 R
/MediaBox [0 0 595.28 841.89]
@@ -47422,33 +47529,33 @@ endobj
/BleedBox [0 0 595.28 841.89]
/TrimBox [0 0 595.28 841.89]
/ArtBox [0 0 595.28 841.89]
-/Contents 319 0 R
+/Contents 321 0 R
/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
-/Font << /F4.0 35 0 R
-/F3.0 33 0 R
+/Font << /F4.0 37 0 R
+/F3.0 35 0 R
/F1.0 10 0 R
>>
-/XObject << /Stamp2 4781 0 R
+/XObject << /Stamp2 4916 0 R
>>
>>
>>
endobj
-321 0 obj
-[320 0 R /XYZ 0 805.89 null]
-endobj
-322 0 obj
-[320 0 R /XYZ 0 669.568 null]
-endobj
323 0 obj
-[320 0 R /XYZ 0 533.246 null]
+[322 0 R /XYZ 0 805.89 null]
endobj
324 0 obj
-[320 0 R /XYZ 0 333.804 null]
+[322 0 R /XYZ 0 669.568 null]
endobj
325 0 obj
-[320 0 R /XYZ 0 165.922 null]
+[322 0 R /XYZ 0 533.246 null]
endobj
326 0 obj
+[322 0 R /XYZ 0 333.804 null]
+endobj
+327 0 obj
+[322 0 R /XYZ 0 165.922 null]
+endobj
+328 0 obj
<< /Length 10501
>>
stream
@@ -48018,7 +48125,7 @@ Q
endstream
endobj
-327 0 obj
+329 0 obj
<< /Type /Page
/Parent 3 0 R
/MediaBox [0 0 595.28 841.89]
@@ -48026,30 +48133,30 @@ endobj
/BleedBox [0 0 595.28 841.89]
/TrimBox [0 0 595.28 841.89]
/ArtBox [0 0 595.28 841.89]
-/Contents 326 0 R
+/Contents 328 0 R
/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
/Font << /F1.0 10 0 R
-/F3.0 33 0 R
-/F4.0 35 0 R
+/F3.0 35 0 R
+/F4.0 37 0 R
>>
-/XObject << /Stamp1 4780 0 R
+/XObject << /Stamp1 4915 0 R
>>
>>
>>
endobj
-328 0 obj
-[327 0 R /XYZ 0 672.749 null]
-endobj
-329 0 obj
-[327 0 R /XYZ 0 504.867 null]
-endobj
330 0 obj
-[327 0 R /XYZ 0 226.525 null]
+[329 0 R /XYZ 0 672.749 null]
endobj
331 0 obj
-[327 0 R /XYZ 0 74.423 null]
+[329 0 R /XYZ 0 504.867 null]
endobj
332 0 obj
+[329 0 R /XYZ 0 226.525 null]
+endobj
+333 0 obj
+[329 0 R /XYZ 0 74.423 null]
+endobj
+334 0 obj
<< /Length 8664
>>
stream
@@ -48561,7 +48668,7 @@ Q
endstream
endobj
-333 0 obj
+335 0 obj
<< /Type /Page
/Parent 3 0 R
/MediaBox [0 0 595.28 841.89]
@@ -48569,33 +48676,33 @@ endobj
/BleedBox [0 0 595.28 841.89]
/TrimBox [0 0 595.28 841.89]
/ArtBox [0 0 595.28 841.89]
-/Contents 332 0 R
+/Contents 334 0 R
/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
-/Font << /F3.0 33 0 R
+/Font << /F3.0 35 0 R
/F1.0 10 0 R
-/F4.0 35 0 R
+/F4.0 37 0 R
>>
-/XObject << /Stamp2 4781 0 R
+/XObject << /Stamp2 4916 0 R
>>
>>
>>
endobj
-334 0 obj
-[333 0 R /XYZ 0 669.5005 null]
-endobj
-335 0 obj
-[333 0 R /XYZ 0 548.9585 null]
-endobj
336 0 obj
-[333 0 R /XYZ 0 428.4165 null]
+[335 0 R /XYZ 0 669.5005 null]
endobj
337 0 obj
-[333 0 R /XYZ 0 244.7545 null]
+[335 0 R /XYZ 0 548.9585 null]
endobj
338 0 obj
-[333 0 R /XYZ 0 108.4325 null]
+[335 0 R /XYZ 0 428.4165 null]
endobj
339 0 obj
+[335 0 R /XYZ 0 244.7545 null]
+endobj
+340 0 obj
+[335 0 R /XYZ 0 108.4325 null]
+endobj
+341 0 obj
<< /Length 7465
>>
stream
@@ -49069,7 +49176,7 @@ Q
endstream
endobj
-340 0 obj
+342 0 obj
<< /Type /Page
/Parent 3 0 R
/MediaBox [0 0 595.28 841.89]
@@ -49077,36 +49184,36 @@ endobj
/BleedBox [0 0 595.28 841.89]
/TrimBox [0 0 595.28 841.89]
/ArtBox [0 0 595.28 841.89]
-/Contents 339 0 R
+/Contents 341 0 R
/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
/Font << /F1.0 10 0 R
-/F3.0 33 0 R
-/F4.0 35 0 R
+/F3.0 35 0 R
+/F4.0 37 0 R
>>
-/XObject << /Stamp1 4780 0 R
+/XObject << /Stamp1 4915 0 R
>>
>>
>>
endobj
-341 0 obj
-[340 0 R /XYZ 0 688.529 null]
-endobj
-342 0 obj
-[340 0 R /XYZ 0 552.207 null]
-endobj
343 0 obj
-[340 0 R /XYZ 0 431.665 null]
+[342 0 R /XYZ 0 688.529 null]
endobj
344 0 obj
-[340 0 R /XYZ 0 326.903 null]
+[342 0 R /XYZ 0 552.207 null]
endobj
345 0 obj
-[340 0 R /XYZ 0 190.581 null]
+[342 0 R /XYZ 0 431.665 null]
endobj
346 0 obj
-[340 0 R /XYZ 0 70.039 null]
+[3
<TRUNCATED>
[07/51] [partial] hbase-site git commit: Published site at
9101fc246f86445006bfbcdfda5cc495016dc280.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/src-html/org/apache/hadoop/hbase/master/ServerManager.FlushedSequenceIdFlusher.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/ServerManager.FlushedSequenceIdFlusher.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/ServerManager.FlushedSequenceIdFlusher.html
new file mode 100644
index 0000000..ba6e4aa
--- /dev/null
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/ServerManager.FlushedSequenceIdFlusher.html
@@ -0,0 +1,1244 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<title>Source code</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+</head>
+<body>
+<div class="sourceContainer">
+<pre><span class="sourceLineNo">001</span>/*<a name="line.1"></a>
+<span class="sourceLineNo">002</span> *<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * or more contributor license agreements. See the NOTICE file<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * distributed with this work for additional information<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * regarding copyright ownership. The ASF licenses this file<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * to you under the Apache License, Version 2.0 (the<a name="line.7"></a>
+<span class="sourceLineNo">008</span> * "License"); you may not use this file except in compliance<a name="line.8"></a>
+<span class="sourceLineNo">009</span> * with the License. You may obtain a copy of the License at<a name="line.9"></a>
+<span class="sourceLineNo">010</span> *<a name="line.10"></a>
+<span class="sourceLineNo">011</span> * http://www.apache.org/licenses/LICENSE-2.0<a name="line.11"></a>
+<span class="sourceLineNo">012</span> *<a name="line.12"></a>
+<span class="sourceLineNo">013</span> * Unless required by applicable law or agreed to in writing, software<a name="line.13"></a>
+<span class="sourceLineNo">014</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.14"></a>
+<span class="sourceLineNo">015</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.15"></a>
+<span class="sourceLineNo">016</span> * See the License for the specific language governing permissions and<a name="line.16"></a>
+<span class="sourceLineNo">017</span> * limitations under the License.<a name="line.17"></a>
+<span class="sourceLineNo">018</span> */<a name="line.18"></a>
+<span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.master;<a name="line.19"></a>
+<span class="sourceLineNo">020</span><a name="line.20"></a>
+<span class="sourceLineNo">021</span>import static org.apache.hadoop.hbase.util.CollectionUtils.computeIfAbsent;<a name="line.21"></a>
+<span class="sourceLineNo">022</span><a name="line.22"></a>
+<span class="sourceLineNo">023</span>import java.io.IOException;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import java.net.InetAddress;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import java.util.ArrayList;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import java.util.Collections;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import java.util.HashMap;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import java.util.Iterator;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import java.util.List;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import java.util.Map;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import java.util.Map.Entry;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import java.util.Set;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import java.util.concurrent.ConcurrentNavigableMap;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import java.util.concurrent.ConcurrentSkipListMap;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import java.util.concurrent.CopyOnWriteArrayList;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import java.util.function.Predicate;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.conf.Configuration;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.fs.FSDataInputStream;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.fs.FSDataOutputStream;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.fs.FileSystem;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.fs.Path;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.ClockOutOfSyncException;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.HConstants;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.NotServingRegionException;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.RegionMetrics;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.ScheduledChore;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.ServerMetrics;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.ServerMetricsBuilder;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.ServerName;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.YouAreDeadException;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.client.ClusterConnection;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.client.RetriesExhaustedException;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.ipc.HBaseRpcController;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.ipc.RpcControllerFactory;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.master.assignment.RegionStates;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.regionserver.HRegionServer;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.zookeeper.KeeperException;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.slf4j.Logger;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.slf4j.LoggerFactory;<a name="line.67"></a>
+<span class="sourceLineNo">068</span><a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hbase.thirdparty.com.google.protobuf.ByteString;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hbase.thirdparty.com.google.protobuf.UnsafeByteOperations;<a name="line.71"></a>
+<span class="sourceLineNo">072</span><a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.AdminService;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ClusterStatusProtos.RegionStoreSequenceIds;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ClusterStatusProtos.StoreSequenceId;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.FlushedRegionSequenceId;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.FlushedSequenceId;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.FlushedStoreSequenceId;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionServerStartupRequest;<a name="line.80"></a>
+<span class="sourceLineNo">081</span><a name="line.81"></a>
+<span class="sourceLineNo">082</span>/**<a name="line.82"></a>
+<span class="sourceLineNo">083</span> * The ServerManager class manages info about region servers.<a name="line.83"></a>
+<span class="sourceLineNo">084</span> * <p><a name="line.84"></a>
+<span class="sourceLineNo">085</span> * Maintains lists of online and dead servers. Processes the startups,<a name="line.85"></a>
+<span class="sourceLineNo">086</span> * shutdowns, and deaths of region servers.<a name="line.86"></a>
+<span class="sourceLineNo">087</span> * <p><a name="line.87"></a>
+<span class="sourceLineNo">088</span> * Servers are distinguished in two different ways. A given server has a<a name="line.88"></a>
+<span class="sourceLineNo">089</span> * location, specified by hostname and port, and of which there can only be one<a name="line.89"></a>
+<span class="sourceLineNo">090</span> * online at any given time. A server instance is specified by the location<a name="line.90"></a>
+<span class="sourceLineNo">091</span> * (hostname and port) as well as the startcode (timestamp from when the server<a name="line.91"></a>
+<span class="sourceLineNo">092</span> * was started). This is used to differentiate a restarted instance of a given<a name="line.92"></a>
+<span class="sourceLineNo">093</span> * server from the original instance.<a name="line.93"></a>
+<span class="sourceLineNo">094</span> * <p><a name="line.94"></a>
+<span class="sourceLineNo">095</span> * If a sever is known not to be running any more, it is called dead. The dead<a name="line.95"></a>
+<span class="sourceLineNo">096</span> * server needs to be handled by a ServerShutdownHandler. If the handler is not<a name="line.96"></a>
+<span class="sourceLineNo">097</span> * enabled yet, the server can't be handled right away so it is queued up.<a name="line.97"></a>
+<span class="sourceLineNo">098</span> * After the handler is enabled, the server will be submitted to a handler to handle.<a name="line.98"></a>
+<span class="sourceLineNo">099</span> * However, the handler may be just partially enabled. If so,<a name="line.99"></a>
+<span class="sourceLineNo">100</span> * the server cannot be fully processed, and be queued up for further processing.<a name="line.100"></a>
+<span class="sourceLineNo">101</span> * A server is fully processed only after the handler is fully enabled<a name="line.101"></a>
+<span class="sourceLineNo">102</span> * and has completed the handling.<a name="line.102"></a>
+<span class="sourceLineNo">103</span> */<a name="line.103"></a>
+<span class="sourceLineNo">104</span>@InterfaceAudience.Private<a name="line.104"></a>
+<span class="sourceLineNo">105</span>public class ServerManager {<a name="line.105"></a>
+<span class="sourceLineNo">106</span> public static final String WAIT_ON_REGIONSERVERS_MAXTOSTART =<a name="line.106"></a>
+<span class="sourceLineNo">107</span> "hbase.master.wait.on.regionservers.maxtostart";<a name="line.107"></a>
+<span class="sourceLineNo">108</span><a name="line.108"></a>
+<span class="sourceLineNo">109</span> public static final String WAIT_ON_REGIONSERVERS_MINTOSTART =<a name="line.109"></a>
+<span class="sourceLineNo">110</span> "hbase.master.wait.on.regionservers.mintostart";<a name="line.110"></a>
+<span class="sourceLineNo">111</span><a name="line.111"></a>
+<span class="sourceLineNo">112</span> public static final String WAIT_ON_REGIONSERVERS_TIMEOUT =<a name="line.112"></a>
+<span class="sourceLineNo">113</span> "hbase.master.wait.on.regionservers.timeout";<a name="line.113"></a>
+<span class="sourceLineNo">114</span><a name="line.114"></a>
+<span class="sourceLineNo">115</span> public static final String WAIT_ON_REGIONSERVERS_INTERVAL =<a name="line.115"></a>
+<span class="sourceLineNo">116</span> "hbase.master.wait.on.regionservers.interval";<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> * see HBASE-20727<a name="line.119"></a>
+<span class="sourceLineNo">120</span> * if set to true, flushedSequenceIdByRegion and storeFlushedSequenceIdsByRegion<a name="line.120"></a>
+<span class="sourceLineNo">121</span> * will be persisted to HDFS and loaded when master restart to speed up log split<a name="line.121"></a>
+<span class="sourceLineNo">122</span> */<a name="line.122"></a>
+<span class="sourceLineNo">123</span> public static final String PERSIST_FLUSHEDSEQUENCEID =<a name="line.123"></a>
+<span class="sourceLineNo">124</span> "hbase.master.persist.flushedsequenceid.enabled";<a name="line.124"></a>
+<span class="sourceLineNo">125</span><a name="line.125"></a>
+<span class="sourceLineNo">126</span> public static final boolean PERSIST_FLUSHEDSEQUENCEID_DEFAULT = true;<a name="line.126"></a>
+<span class="sourceLineNo">127</span><a name="line.127"></a>
+<span class="sourceLineNo">128</span> public static final String FLUSHEDSEQUENCEID_FLUSHER_INTERVAL =<a name="line.128"></a>
+<span class="sourceLineNo">129</span> "hbase.master.flushedsequenceid.flusher.interval";<a name="line.129"></a>
+<span class="sourceLineNo">130</span><a name="line.130"></a>
+<span class="sourceLineNo">131</span> public static final int FLUSHEDSEQUENCEID_FLUSHER_INTERVAL_DEFAULT =<a name="line.131"></a>
+<span class="sourceLineNo">132</span> 3 * 60 * 60 * 1000; // 3 hours<a name="line.132"></a>
+<span class="sourceLineNo">133</span><a name="line.133"></a>
+<span class="sourceLineNo">134</span> private static final Logger LOG = LoggerFactory.getLogger(ServerManager.class);<a name="line.134"></a>
+<span class="sourceLineNo">135</span><a name="line.135"></a>
+<span class="sourceLineNo">136</span> // Set if we are to shutdown the cluster.<a name="line.136"></a>
+<span class="sourceLineNo">137</span> private AtomicBoolean clusterShutdown = new AtomicBoolean(false);<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> * The last flushed sequence id for a region.<a name="line.140"></a>
+<span class="sourceLineNo">141</span> */<a name="line.141"></a>
+<span class="sourceLineNo">142</span> private final ConcurrentNavigableMap<byte[], Long> flushedSequenceIdByRegion =<a name="line.142"></a>
+<span class="sourceLineNo">143</span> new ConcurrentSkipListMap<>(Bytes.BYTES_COMPARATOR);<a name="line.143"></a>
+<span class="sourceLineNo">144</span><a name="line.144"></a>
+<span class="sourceLineNo">145</span> private boolean persistFlushedSequenceId = true;<a name="line.145"></a>
+<span class="sourceLineNo">146</span> private volatile boolean isFlushSeqIdPersistInProgress = false;<a name="line.146"></a>
+<span class="sourceLineNo">147</span> /** File on hdfs to store last flushed sequence id of regions */<a name="line.147"></a>
+<span class="sourceLineNo">148</span> private static final String LAST_FLUSHED_SEQ_ID_FILE = ".lastflushedseqids";<a name="line.148"></a>
+<span class="sourceLineNo">149</span> private FlushedSequenceIdFlusher flushedSeqIdFlusher;<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> /**<a name="line.152"></a>
+<span class="sourceLineNo">153</span> * The last flushed sequence id for a store in a region.<a name="line.153"></a>
+<span class="sourceLineNo">154</span> */<a name="line.154"></a>
+<span class="sourceLineNo">155</span> private final ConcurrentNavigableMap<byte[], ConcurrentNavigableMap<byte[], Long>><a name="line.155"></a>
+<span class="sourceLineNo">156</span> storeFlushedSequenceIdsByRegion = new ConcurrentSkipListMap<>(Bytes.BYTES_COMPARATOR);<a name="line.156"></a>
+<span class="sourceLineNo">157</span><a name="line.157"></a>
+<span class="sourceLineNo">158</span> /** Map of registered servers to their current load */<a name="line.158"></a>
+<span class="sourceLineNo">159</span> private final ConcurrentNavigableMap<ServerName, ServerMetrics> onlineServers =<a name="line.159"></a>
+<span class="sourceLineNo">160</span> new ConcurrentSkipListMap<>();<a name="line.160"></a>
+<span class="sourceLineNo">161</span><a name="line.161"></a>
+<span class="sourceLineNo">162</span> /**<a name="line.162"></a>
+<span class="sourceLineNo">163</span> * Map of admin interfaces per registered regionserver; these interfaces we use to control<a name="line.163"></a>
+<span class="sourceLineNo">164</span> * regionservers out on the cluster<a name="line.164"></a>
+<span class="sourceLineNo">165</span> */<a name="line.165"></a>
+<span class="sourceLineNo">166</span> private final Map<ServerName, AdminService.BlockingInterface> rsAdmins = new HashMap<>();<a name="line.166"></a>
+<span class="sourceLineNo">167</span><a name="line.167"></a>
+<span class="sourceLineNo">168</span> /** List of region servers that should not get any more new regions. */<a name="line.168"></a>
+<span class="sourceLineNo">169</span> private final ArrayList<ServerName> drainingServers = new ArrayList<>();<a name="line.169"></a>
+<span class="sourceLineNo">170</span><a name="line.170"></a>
+<span class="sourceLineNo">171</span> private final MasterServices master;<a name="line.171"></a>
+<span class="sourceLineNo">172</span> private final ClusterConnection connection;<a name="line.172"></a>
+<span class="sourceLineNo">173</span><a name="line.173"></a>
+<span class="sourceLineNo">174</span> private final DeadServer deadservers = new DeadServer();<a name="line.174"></a>
+<span class="sourceLineNo">175</span><a name="line.175"></a>
+<span class="sourceLineNo">176</span> private final long maxSkew;<a name="line.176"></a>
+<span class="sourceLineNo">177</span> private final long warningSkew;<a name="line.177"></a>
+<span class="sourceLineNo">178</span><a name="line.178"></a>
+<span class="sourceLineNo">179</span> private final RpcControllerFactory rpcControllerFactory;<a name="line.179"></a>
+<span class="sourceLineNo">180</span><a name="line.180"></a>
+<span class="sourceLineNo">181</span> /** Listeners that are called on server events. */<a name="line.181"></a>
+<span class="sourceLineNo">182</span> private List<ServerListener> listeners = new CopyOnWriteArrayList<>();<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> * Constructor.<a name="line.185"></a>
+<span class="sourceLineNo">186</span> */<a name="line.186"></a>
+<span class="sourceLineNo">187</span> public ServerManager(final MasterServices master) {<a name="line.187"></a>
+<span class="sourceLineNo">188</span> this.master = master;<a name="line.188"></a>
+<span class="sourceLineNo">189</span> Configuration c = master.getConfiguration();<a name="line.189"></a>
+<span class="sourceLineNo">190</span> maxSkew = c.getLong("hbase.master.maxclockskew", 30000);<a name="line.190"></a>
+<span class="sourceLineNo">191</span> warningSkew = c.getLong("hbase.master.warningclockskew", 10000);<a name="line.191"></a>
+<span class="sourceLineNo">192</span> this.connection = master.getClusterConnection();<a name="line.192"></a>
+<span class="sourceLineNo">193</span> this.rpcControllerFactory = this.connection == null? null: connection.getRpcControllerFactory();<a name="line.193"></a>
+<span class="sourceLineNo">194</span> persistFlushedSequenceId = c.getBoolean(PERSIST_FLUSHEDSEQUENCEID,<a name="line.194"></a>
+<span class="sourceLineNo">195</span> PERSIST_FLUSHEDSEQUENCEID_DEFAULT);<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> /**<a name="line.198"></a>
+<span class="sourceLineNo">199</span> * Add the listener to the notification list.<a name="line.199"></a>
+<span class="sourceLineNo">200</span> * @param listener The ServerListener to register<a name="line.200"></a>
+<span class="sourceLineNo">201</span> */<a name="line.201"></a>
+<span class="sourceLineNo">202</span> public void registerListener(final ServerListener listener) {<a name="line.202"></a>
+<span class="sourceLineNo">203</span> this.listeners.add(listener);<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> * Remove the listener from the notification list.<a name="line.207"></a>
+<span class="sourceLineNo">208</span> * @param listener The ServerListener to unregister<a name="line.208"></a>
+<span class="sourceLineNo">209</span> */<a name="line.209"></a>
+<span class="sourceLineNo">210</span> public boolean unregisterListener(final ServerListener listener) {<a name="line.210"></a>
+<span class="sourceLineNo">211</span> return this.listeners.remove(listener);<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> /**<a name="line.214"></a>
+<span class="sourceLineNo">215</span> * Let the server manager know a new regionserver has come online<a name="line.215"></a>
+<span class="sourceLineNo">216</span> * @param request the startup request<a name="line.216"></a>
+<span class="sourceLineNo">217</span> * @param versionNumber the version of the new regionserver<a name="line.217"></a>
+<span class="sourceLineNo">218</span> * @param ia the InetAddress from which request is received<a name="line.218"></a>
+<span class="sourceLineNo">219</span> * @return The ServerName we know this server as.<a name="line.219"></a>
+<span class="sourceLineNo">220</span> * @throws IOException<a name="line.220"></a>
+<span class="sourceLineNo">221</span> */<a name="line.221"></a>
+<span class="sourceLineNo">222</span> ServerName regionServerStartup(RegionServerStartupRequest request, int versionNumber,<a name="line.222"></a>
+<span class="sourceLineNo">223</span> InetAddress ia) throws IOException {<a name="line.223"></a>
+<span class="sourceLineNo">224</span> // Test for case where we get a region startup message from a regionserver<a name="line.224"></a>
+<span class="sourceLineNo">225</span> // that has been quickly restarted but whose znode expiration handler has<a name="line.225"></a>
+<span class="sourceLineNo">226</span> // not yet run, or from a server whose fail we are currently processing.<a name="line.226"></a>
+<span class="sourceLineNo">227</span> // Test its host+port combo is present in serverAddressToServerInfo. If it<a name="line.227"></a>
+<span class="sourceLineNo">228</span> // is, reject the server and trigger its expiration. The next time it comes<a name="line.228"></a>
+<span class="sourceLineNo">229</span> // in, it should have been removed from serverAddressToServerInfo and queued<a name="line.229"></a>
+<span class="sourceLineNo">230</span> // for processing by ProcessServerShutdown.<a name="line.230"></a>
+<span class="sourceLineNo">231</span><a name="line.231"></a>
+<span class="sourceLineNo">232</span> final String hostname = request.hasUseThisHostnameInstead() ?<a name="line.232"></a>
+<span class="sourceLineNo">233</span> request.getUseThisHostnameInstead() :ia.getHostName();<a name="line.233"></a>
+<span class="sourceLineNo">234</span> ServerName sn = ServerName.valueOf(hostname, request.getPort(),<a name="line.234"></a>
+<span class="sourceLineNo">235</span> request.getServerStartCode());<a name="line.235"></a>
+<span class="sourceLineNo">236</span> checkClockSkew(sn, request.getServerCurrentTime());<a name="line.236"></a>
+<span class="sourceLineNo">237</span> checkIsDead(sn, "STARTUP");<a name="line.237"></a>
+<span class="sourceLineNo">238</span> if (!checkAndRecordNewServer(sn, ServerMetricsBuilder.of(sn, versionNumber))) {<a name="line.238"></a>
+<span class="sourceLineNo">239</span> LOG.warn("THIS SHOULD NOT HAPPEN, RegionServerStartup"<a name="line.239"></a>
+<span class="sourceLineNo">240</span> + " could not record the server: " + sn);<a name="line.240"></a>
+<span class="sourceLineNo">241</span> }<a name="line.241"></a>
+<span class="sourceLineNo">242</span> return sn;<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> * Updates last flushed sequence Ids for the regions on server sn<a name="line.246"></a>
+<span class="sourceLineNo">247</span> * @param sn<a name="line.247"></a>
+<span class="sourceLineNo">248</span> * @param hsl<a name="line.248"></a>
+<span class="sourceLineNo">249</span> */<a name="line.249"></a>
+<span class="sourceLineNo">250</span> private void updateLastFlushedSequenceIds(ServerName sn, ServerMetrics hsl) {<a name="line.250"></a>
+<span class="sourceLineNo">251</span> for (Entry<byte[], RegionMetrics> entry : hsl.getRegionMetrics().entrySet()) {<a name="line.251"></a>
+<span class="sourceLineNo">252</span> byte[] encodedRegionName = Bytes.toBytes(RegionInfo.encodeRegionName(entry.getKey()));<a name="line.252"></a>
+<span class="sourceLineNo">253</span> Long existingValue = flushedSequenceIdByRegion.get(encodedRegionName);<a name="line.253"></a>
+<span class="sourceLineNo">254</span> long l = entry.getValue().getCompletedSequenceId();<a name="line.254"></a>
+<span class="sourceLineNo">255</span> // Don't let smaller sequence ids override greater sequence ids.<a name="line.255"></a>
+<span class="sourceLineNo">256</span> if (LOG.isTraceEnabled()) {<a name="line.256"></a>
+<span class="sourceLineNo">257</span> LOG.trace(Bytes.toString(encodedRegionName) + ", existingValue=" + existingValue +<a name="line.257"></a>
+<span class="sourceLineNo">258</span> ", completeSequenceId=" + l);<a name="line.258"></a>
+<span class="sourceLineNo">259</span> }<a name="line.259"></a>
+<span class="sourceLineNo">260</span> if (existingValue == null || (l != HConstants.NO_SEQNUM && l > existingValue)) {<a name="line.260"></a>
+<span class="sourceLineNo">261</span> flushedSequenceIdByRegion.put(encodedRegionName, l);<a name="line.261"></a>
+<span class="sourceLineNo">262</span> } else if (l != HConstants.NO_SEQNUM && l < existingValue) {<a name="line.262"></a>
+<span class="sourceLineNo">263</span> LOG.warn("RegionServer " + sn + " indicates a last flushed sequence id ("<a name="line.263"></a>
+<span class="sourceLineNo">264</span> + l + ") that is less than the previous last flushed sequence id ("<a name="line.264"></a>
+<span class="sourceLineNo">265</span> + existingValue + ") for region " + Bytes.toString(entry.getKey()) + " Ignoring.");<a name="line.265"></a>
+<span class="sourceLineNo">266</span> }<a name="line.266"></a>
+<span class="sourceLineNo">267</span> ConcurrentNavigableMap<byte[], Long> storeFlushedSequenceId =<a name="line.267"></a>
+<span class="sourceLineNo">268</span> computeIfAbsent(storeFlushedSequenceIdsByRegion, encodedRegionName,<a name="line.268"></a>
+<span class="sourceLineNo">269</span> () -> new ConcurrentSkipListMap<>(Bytes.BYTES_COMPARATOR));<a name="line.269"></a>
+<span class="sourceLineNo">270</span> for (Entry<byte[], Long> storeSeqId : entry.getValue().getStoreSequenceId().entrySet()) {<a name="line.270"></a>
+<span class="sourceLineNo">271</span> byte[] family = storeSeqId.getKey();<a name="line.271"></a>
+<span class="sourceLineNo">272</span> existingValue = storeFlushedSequenceId.get(family);<a name="line.272"></a>
+<span class="sourceLineNo">273</span> l = storeSeqId.getValue();<a name="line.273"></a>
+<span class="sourceLineNo">274</span> if (LOG.isTraceEnabled()) {<a name="line.274"></a>
+<span class="sourceLineNo">275</span> LOG.trace(Bytes.toString(encodedRegionName) + ", family=" + Bytes.toString(family) +<a name="line.275"></a>
+<span class="sourceLineNo">276</span> ", existingValue=" + existingValue + ", completeSequenceId=" + l);<a name="line.276"></a>
+<span class="sourceLineNo">277</span> }<a name="line.277"></a>
+<span class="sourceLineNo">278</span> // Don't let smaller sequence ids override greater sequence ids.<a name="line.278"></a>
+<span class="sourceLineNo">279</span> if (existingValue == null || (l != HConstants.NO_SEQNUM && l > existingValue.longValue())) {<a name="line.279"></a>
+<span class="sourceLineNo">280</span> storeFlushedSequenceId.put(family, l);<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> }<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> @VisibleForTesting<a name="line.286"></a>
+<span class="sourceLineNo">287</span> public void regionServerReport(ServerName sn,<a name="line.287"></a>
+<span class="sourceLineNo">288</span> ServerMetrics sl) throws YouAreDeadException {<a name="line.288"></a>
+<span class="sourceLineNo">289</span> checkIsDead(sn, "REPORT");<a name="line.289"></a>
+<span class="sourceLineNo">290</span> if (null == this.onlineServers.replace(sn, sl)) {<a name="line.290"></a>
+<span class="sourceLineNo">291</span> // Already have this host+port combo and its just different start code?<a name="line.291"></a>
+<span class="sourceLineNo">292</span> // Just let the server in. Presume master joining a running cluster.<a name="line.292"></a>
+<span class="sourceLineNo">293</span> // recordNewServer is what happens at the end of reportServerStartup.<a name="line.293"></a>
+<span class="sourceLineNo">294</span> // The only thing we are skipping is passing back to the regionserver<a name="line.294"></a>
+<span class="sourceLineNo">295</span> // the ServerName to use. Here we presume a master has already done<a name="line.295"></a>
+<span class="sourceLineNo">296</span> // that so we'll press on with whatever it gave us for ServerName.<a name="line.296"></a>
+<span class="sourceLineNo">297</span> if (!checkAndRecordNewServer(sn, sl)) {<a name="line.297"></a>
+<span class="sourceLineNo">298</span> LOG.info("RegionServerReport ignored, could not record the server: " + sn);<a name="line.298"></a>
+<span class="sourceLineNo">299</span> return; // Not recorded, so no need to move on<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> updateLastFlushedSequenceIds(sn, sl);<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> /**<a name="line.305"></a>
+<span class="sourceLineNo">306</span> * Check is a server of same host and port already exists,<a name="line.306"></a>
+<span class="sourceLineNo">307</span> * if not, or the existed one got a smaller start code, record it.<a name="line.307"></a>
+<span class="sourceLineNo">308</span> *<a name="line.308"></a>
+<span class="sourceLineNo">309</span> * @param serverName the server to check and record<a name="line.309"></a>
+<span class="sourceLineNo">310</span> * @param sl the server load on the server<a name="line.310"></a>
+<span class="sourceLineNo">311</span> * @return true if the server is recorded, otherwise, false<a name="line.311"></a>
+<span class="sourceLineNo">312</span> */<a name="line.312"></a>
+<span class="sourceLineNo">313</span> boolean checkAndRecordNewServer(final ServerName serverName, final ServerMetrics sl) {<a name="line.313"></a>
+<span class="sourceLineNo">314</span> ServerName existingServer = null;<a name="line.314"></a>
+<span class="sourceLineNo">315</span> synchronized (this.onlineServers) {<a name="line.315"></a>
+<span class="sourceLineNo">316</span> existingServer = findServerWithSameHostnamePortWithLock(serverName);<a name="line.316"></a>
+<span class="sourceLineNo">317</span> if (existingServer != null && (existingServer.getStartcode() > serverName.getStartcode())) {<a name="line.317"></a>
+<span class="sourceLineNo">318</span> LOG.info("Server serverName=" + serverName + " rejected; we already have "<a name="line.318"></a>
+<span class="sourceLineNo">319</span> + existingServer.toString() + " registered with same hostname and port");<a name="line.319"></a>
+<span class="sourceLineNo">320</span> return false;<a name="line.320"></a>
+<span class="sourceLineNo">321</span> }<a name="line.321"></a>
+<span class="sourceLineNo">322</span> recordNewServerWithLock(serverName, sl);<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> // Tell our listeners that a server was added<a name="line.325"></a>
+<span class="sourceLineNo">326</span> if (!this.listeners.isEmpty()) {<a name="line.326"></a>
+<span class="sourceLineNo">327</span> for (ServerListener listener : this.listeners) {<a name="line.327"></a>
+<span class="sourceLineNo">328</span> listener.serverAdded(serverName);<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> // Note that we assume that same ts means same server, and don't expire in that case.<a name="line.332"></a>
+<span class="sourceLineNo">333</span> // TODO: ts can theoretically collide due to clock shifts, so this is a bit hacky.<a name="line.333"></a>
+<span class="sourceLineNo">334</span> if (existingServer != null &&<a name="line.334"></a>
+<span class="sourceLineNo">335</span> (existingServer.getStartcode() < serverName.getStartcode())) {<a name="line.335"></a>
+<span class="sourceLineNo">336</span> LOG.info("Triggering server recovery; existingServer " +<a name="line.336"></a>
+<span class="sourceLineNo">337</span> existingServer + " looks stale, new server:" + serverName);<a name="line.337"></a>
+<span class="sourceLineNo">338</span> expireServer(existingServer);<a name="line.338"></a>
+<span class="sourceLineNo">339</span> }<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> /**<a name="line.343"></a>
+<span class="sourceLineNo">344</span> * Find out the region servers crashed between the crash of the previous master instance and the<a name="line.344"></a>
+<span class="sourceLineNo">345</span> * current master instance and schedule SCP for them.<a name="line.345"></a>
+<span class="sourceLineNo">346</span> * <p/><a name="line.346"></a>
+<span class="sourceLineNo">347</span> * Since the {@code RegionServerTracker} has already helped us to construct the online servers set<a name="line.347"></a>
+<span class="sourceLineNo">348</span> * by scanning zookeeper, now we can compare the online servers with {@code liveServersFromWALDir}<a name="line.348"></a>
+<span class="sourceLineNo">349</span> * to find out whether there are servers which are already dead.<a name="line.349"></a>
+<span class="sourceLineNo">350</span> * <p/><a name="line.350"></a>
+<span class="sourceLineNo">351</span> * Must be called inside the initialization method of {@code RegionServerTracker} to avoid<a name="line.351"></a>
+<span class="sourceLineNo">352</span> * concurrency issue.<a name="line.352"></a>
+<span class="sourceLineNo">353</span> * @param deadServersFromPE the region servers which already have SCP associated.<a name="line.353"></a>
+<span class="sourceLineNo">354</span> * @param liveServersFromWALDir the live region servers from wal directory.<a name="line.354"></a>
+<span class="sourceLineNo">355</span> */<a name="line.355"></a>
+<span class="sourceLineNo">356</span> void findOutDeadServersAndProcess(Set<ServerName> deadServersFromPE,<a name="line.356"></a>
+<span class="sourceLineNo">357</span> Set<ServerName> liveServersFromWALDir) {<a name="line.357"></a>
+<span class="sourceLineNo">358</span> deadServersFromPE.forEach(deadservers::add);<a name="line.358"></a>
+<span class="sourceLineNo">359</span> liveServersFromWALDir.stream().filter(sn -> !onlineServers.containsKey(sn))<a name="line.359"></a>
+<span class="sourceLineNo">360</span> .forEach(this::expireServer);<a name="line.360"></a>
+<span class="sourceLineNo">361</span> }<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> * Checks if the clock skew between the server and the master. If the clock skew exceeds the<a name="line.364"></a>
+<span class="sourceLineNo">365</span> * configured max, it will throw an exception; if it exceeds the configured warning threshold,<a name="line.365"></a>
+<span class="sourceLineNo">366</span> * it will log a warning but start normally.<a name="line.366"></a>
+<span class="sourceLineNo">367</span> * @param serverName Incoming servers's name<a name="line.367"></a>
+<span class="sourceLineNo">368</span> * @param serverCurrentTime<a name="line.368"></a>
+<span class="sourceLineNo">369</span> * @throws ClockOutOfSyncException if the skew exceeds the configured max value<a name="line.369"></a>
+<span class="sourceLineNo">370</span> */<a name="line.370"></a>
+<span class="sourceLineNo">371</span> private void checkClockSkew(final ServerName serverName, final long serverCurrentTime)<a name="line.371"></a>
+<span class="sourceLineNo">372</span> throws ClockOutOfSyncException {<a name="line.372"></a>
+<span class="sourceLineNo">373</span> long skew = Math.abs(System.currentTimeMillis() - serverCurrentTime);<a name="line.373"></a>
+<span class="sourceLineNo">374</span> if (skew > maxSkew) {<a name="line.374"></a>
+<span class="sourceLineNo">375</span> String message = "Server " + serverName + " has been " +<a name="line.375"></a>
+<span class="sourceLineNo">376</span> "rejected; Reported time is too far out of sync with master. " +<a name="line.376"></a>
+<span class="sourceLineNo">377</span> "Time difference of " + skew + "ms > max allowed of " + maxSkew + "ms";<a name="line.377"></a>
+<span class="sourceLineNo">378</span> LOG.warn(message);<a name="line.378"></a>
+<span class="sourceLineNo">379</span> throw new ClockOutOfSyncException(message);<a name="line.379"></a>
+<span class="sourceLineNo">380</span> } else if (skew > warningSkew){<a name="line.380"></a>
+<span class="sourceLineNo">381</span> String message = "Reported time for server " + serverName + " is out of sync with master " +<a name="line.381"></a>
+<span class="sourceLineNo">382</span> "by " + skew + "ms. (Warning threshold is " + warningSkew + "ms; " +<a name="line.382"></a>
+<span class="sourceLineNo">383</span> "error threshold is " + maxSkew + "ms)";<a name="line.383"></a>
+<span class="sourceLineNo">384</span> LOG.warn(message);<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><a name="line.387"></a>
+<span class="sourceLineNo">388</span> /**<a name="line.388"></a>
+<span class="sourceLineNo">389</span> * If this server is on the dead list, reject it with a YouAreDeadException.<a name="line.389"></a>
+<span class="sourceLineNo">390</span> * If it was dead but came back with a new start code, remove the old entry<a name="line.390"></a>
+<span class="sourceLineNo">391</span> * from the dead list.<a name="line.391"></a>
+<span class="sourceLineNo">392</span> * @param what START or REPORT<a name="line.392"></a>
+<span class="sourceLineNo">393</span> */<a name="line.393"></a>
+<span class="sourceLineNo">394</span> private void checkIsDead(final ServerName serverName, final String what)<a name="line.394"></a>
+<span class="sourceLineNo">395</span> throws YouAreDeadException {<a name="line.395"></a>
+<span class="sourceLineNo">396</span> if (this.deadservers.isDeadServer(serverName)) {<a name="line.396"></a>
+<span class="sourceLineNo">397</span> // host name, port and start code all match with existing one of the<a name="line.397"></a>
+<span class="sourceLineNo">398</span> // dead servers. So, this server must be dead.<a name="line.398"></a>
+<span class="sourceLineNo">399</span> String message = "Server " + what + " rejected; currently processing " +<a name="line.399"></a>
+<span class="sourceLineNo">400</span> serverName + " as dead server";<a name="line.400"></a>
+<span class="sourceLineNo">401</span> LOG.debug(message);<a name="line.401"></a>
+<span class="sourceLineNo">402</span> throw new YouAreDeadException(message);<a name="line.402"></a>
+<span class="sourceLineNo">403</span> }<a name="line.403"></a>
+<span class="sourceLineNo">404</span> // remove dead server with same hostname and port of newly checking in rs after master<a name="line.404"></a>
+<span class="sourceLineNo">405</span> // initialization.See HBASE-5916 for more information.<a name="line.405"></a>
+<span class="sourceLineNo">406</span> if ((this.master == null || this.master.isInitialized())<a name="line.406"></a>
+<span class="sourceLineNo">407</span> && this.deadservers.cleanPreviousInstance(serverName)) {<a name="line.407"></a>
+<span class="sourceLineNo">408</span> // This server has now become alive after we marked it as dead.<a name="line.408"></a>
+<span class="sourceLineNo">409</span> // We removed it's previous entry from the dead list to reflect it.<a name="line.409"></a>
+<span class="sourceLineNo">410</span> LOG.debug(what + ":" + " Server " + serverName + " came back up," +<a name="line.410"></a>
+<span class="sourceLineNo">411</span> " removed it from the dead servers list");<a name="line.411"></a>
+<span class="sourceLineNo">412</span> }<a name="line.412"></a>
+<span class="sourceLineNo">413</span> }<a name="line.413"></a>
+<span class="sourceLineNo">414</span><a name="line.414"></a>
+<span class="sourceLineNo">415</span> /**<a name="line.415"></a>
+<span class="sourceLineNo">416</span> * Assumes onlineServers is locked.<a name="line.416"></a>
+<span class="sourceLineNo">417</span> * @return ServerName with matching hostname and port.<a name="line.417"></a>
+<span class="sourceLineNo">418</span> */<a name="line.418"></a>
+<span class="sourceLineNo">419</span> private ServerName findServerWithSameHostnamePortWithLock(<a name="line.419"></a>
+<span class="sourceLineNo">420</span> final ServerName serverName) {<a name="line.420"></a>
+<span class="sourceLineNo">421</span> ServerName end = ServerName.valueOf(serverName.getHostname(), serverName.getPort(),<a name="line.421"></a>
+<span class="sourceLineNo">422</span> Long.MAX_VALUE);<a name="line.422"></a>
+<span class="sourceLineNo">423</span><a name="line.423"></a>
+<span class="sourceLineNo">424</span> ServerName r = onlineServers.lowerKey(end);<a name="line.424"></a>
+<span class="sourceLineNo">425</span> if (r != null) {<a name="line.425"></a>
+<span class="sourceLineNo">426</span> if (ServerName.isSameAddress(r, serverName)) {<a name="line.426"></a>
+<span class="sourceLineNo">427</span> return r;<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> return null;<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> * Adds the onlineServers list. onlineServers should be locked.<a name="line.434"></a>
+<span class="sourceLineNo">435</span> * @param serverName The remote servers name.<a name="line.435"></a>
+<span class="sourceLineNo">436</span> */<a name="line.436"></a>
+<span class="sourceLineNo">437</span> @VisibleForTesting<a name="line.437"></a>
+<span class="sourceLineNo">438</span> void recordNewServerWithLock(final ServerName serverName, final ServerMetrics sl) {<a name="line.438"></a>
+<span class="sourceLineNo">439</span> LOG.info("Registering regionserver=" + serverName);<a name="line.439"></a>
+<span class="sourceLineNo">440</span> this.onlineServers.put(serverName, sl);<a name="line.440"></a>
+<span class="sourceLineNo">441</span> this.rsAdmins.remove(serverName);<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> @VisibleForTesting<a name="line.444"></a>
+<span class="sourceLineNo">445</span> public ConcurrentNavigableMap<byte[], Long> getFlushedSequenceIdByRegion() {<a name="line.445"></a>
+<span class="sourceLineNo">446</span> return flushedSequenceIdByRegion;<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> public RegionStoreSequenceIds getLastFlushedSequenceId(byte[] encodedRegionName) {<a name="line.449"></a>
+<span class="sourceLineNo">450</span> RegionStoreSequenceIds.Builder builder = RegionStoreSequenceIds.newBuilder();<a name="line.450"></a>
+<span class="sourceLineNo">451</span> Long seqId = flushedSequenceIdByRegion.get(encodedRegionName);<a name="line.451"></a>
+<span class="sourceLineNo">452</span> builder.setLastFlushedSequenceId(seqId != null ? seqId.longValue() : HConstants.NO_SEQNUM);<a name="line.452"></a>
+<span class="sourceLineNo">453</span> Map<byte[], Long> storeFlushedSequenceId =<a name="line.453"></a>
+<span class="sourceLineNo">454</span> storeFlushedSequenceIdsByRegion.get(encodedRegionName);<a name="line.454"></a>
+<span class="sourceLineNo">455</span> if (storeFlushedSequenceId != null) {<a name="line.455"></a>
+<span class="sourceLineNo">456</span> for (Map.Entry<byte[], Long> entry : storeFlushedSequenceId.entrySet()) {<a name="line.456"></a>
+<span class="sourceLineNo">457</span> builder.addStoreSequenceId(StoreSequenceId.newBuilder()<a name="line.457"></a>
+<span class="sourceLineNo">458</span> .setFamilyName(UnsafeByteOperations.unsafeWrap(entry.getKey()))<a name="line.458"></a>
+<span class="sourceLineNo">459</span> .setSequenceId(entry.getValue().longValue()).build());<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> return builder.build();<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> /**<a name="line.465"></a>
+<span class="sourceLineNo">466</span> * @param serverName<a name="line.466"></a>
+<span class="sourceLineNo">467</span> * @return ServerMetrics if serverName is known else null<a name="line.467"></a>
+<span class="sourceLineNo">468</span> */<a name="line.468"></a>
+<span class="sourceLineNo">469</span> public ServerMetrics getLoad(final ServerName serverName) {<a name="line.469"></a>
+<span class="sourceLineNo">470</span> return this.onlineServers.get(serverName);<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> /**<a name="line.473"></a>
+<span class="sourceLineNo">474</span> * Compute the average load across all region servers.<a name="line.474"></a>
+<span class="sourceLineNo">475</span> * Currently, this uses a very naive computation - just uses the number of<a name="line.475"></a>
+<span class="sourceLineNo">476</span> * regions being served, ignoring stats about number of requests.<a name="line.476"></a>
+<span class="sourceLineNo">477</span> * @return the average load<a name="line.477"></a>
+<span class="sourceLineNo">478</span> */<a name="line.478"></a>
+<span class="sourceLineNo">479</span> public double getAverageLoad() {<a name="line.479"></a>
+<span class="sourceLineNo">480</span> int totalLoad = 0;<a name="line.480"></a>
+<span class="sourceLineNo">481</span> int numServers = 0;<a name="line.481"></a>
+<span class="sourceLineNo">482</span> for (ServerMetrics sl : this.onlineServers.values()) {<a name="line.482"></a>
+<span class="sourceLineNo">483</span> numServers++;<a name="line.483"></a>
+<span class="sourceLineNo">484</span> totalLoad += sl.getRegionMetrics().size();<a name="line.484"></a>
+<span class="sourceLineNo">485</span> }<a name="line.485"></a>
+<span class="sourceLineNo">486</span> return numServers == 0 ? 0 :<a name="line.486"></a>
+<span class="sourceLineNo">487</span> (double)totalLoad / (double)numServers;<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> /** @return the count of active regionservers */<a name="line.490"></a>
+<span class="sourceLineNo">491</span> public int countOfRegionServers() {<a name="line.491"></a>
+<span class="sourceLineNo">492</span> // Presumes onlineServers is a concurrent map<a name="line.492"></a>
+<span class="sourceLineNo">493</span> return this.onlineServers.size();<a name="line.493"></a>
+<span class="sourceLineNo">494</span> }<a name="line.494"></a>
+<span class="sourceLineNo">495</span><a name="line.495"></a>
+<span class="sourceLineNo">496</span> /**<a name="line.496"></a>
+<span class="sourceLineNo">497</span> * @return Read-only map of servers to serverinfo<a name="line.497"></a>
+<span class="sourceLineNo">498</span> */<a name="line.498"></a>
+<span class="sourceLineNo">499</span> public Map<ServerName, ServerMetrics> getOnlineServers() {<a name="line.499"></a>
+<span class="sourceLineNo">500</span> // Presumption is that iterating the returned Map is OK.<a name="line.500"></a>
+<span class="sourceLineNo">501</span> synchronized (this.onlineServers) {<a name="line.501"></a>
+<span class="sourceLineNo">502</span> return Collections.unmodifiableMap(this.onlineServers);<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><a name="line.505"></a>
+<span class="sourceLineNo">506</span> public DeadServer getDeadServers() {<a name="line.506"></a>
+<span class="sourceLineNo">507</span> return this.deadservers;<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> * Checks if any dead servers are currently in progress.<a name="line.511"></a>
+<span class="sourceLineNo">512</span> * @return true if any RS are being processed as dead, false if not<a name="line.512"></a>
+<span class="sourceLineNo">513</span> */<a name="line.513"></a>
+<span class="sourceLineNo">514</span> public boolean areDeadServersInProgress() {<a name="line.514"></a>
+<span class="sourceLineNo">515</span> return this.deadservers.areDeadServersInProgress();<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> void letRegionServersShutdown() {<a name="line.518"></a>
+<span class="sourceLineNo">519</span> long previousLogTime = 0;<a name="line.519"></a>
+<span class="sourceLineNo">520</span> ServerName sn = master.getServerName();<a name="line.520"></a>
+<span class="sourceLineNo">521</span> ZKWatcher zkw = master.getZooKeeper();<a name="line.521"></a>
+<span class="sourceLineNo">522</span> int onlineServersCt;<a name="line.522"></a>
+<span class="sourceLineNo">523</span> while ((onlineServersCt = onlineServers.size()) > 0){<a name="line.523"></a>
+<span class="sourceLineNo">524</span><a name="line.524"></a>
+<span class="sourceLineNo">525</span> if (System.currentTimeMillis() > (previousLogTime + 1000)) {<a name="line.525"></a>
+<span class="sourceLineNo">526</span> Set<ServerName> remainingServers = onlineServers.keySet();<a name="line.526"></a>
+<span class="sourceLineNo">527</span> synchronized (onlineServers) {<a name="line.527"></a>
+<span class="sourceLineNo">528</span> if (remainingServers.size() == 1 && remainingServers.contains(sn)) {<a name="line.528"></a>
+<span class="sourceLineNo">529</span> // Master will delete itself later.<a name="line.529"></a>
+<span class="sourceLineNo">530</span> return;<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> StringBuilder sb = new StringBuilder();<a name="line.533"></a>
+<span class="sourceLineNo">534</span> // It's ok here to not sync on onlineServers - merely logging<a name="line.534"></a>
+<span class="sourceLineNo">535</span> for (ServerName key : remainingServers) {<a name="line.535"></a>
+<span class="sourceLineNo">536</span> if (sb.length() > 0) {<a name="line.536"></a>
+<span class="sourceLineNo">537</span> sb.append(", ");<a name="line.537"></a>
+<span class="sourceLineNo">538</span> }<a name="line.538"></a>
+<span class="sourceLineNo">539</span> sb.append(key);<a name="line.539"></a>
+<span class="sourceLineNo">540</span> }<a name="line.540"></a>
+<span class="sourceLineNo">541</span> LOG.info("Waiting on regionserver(s) " + sb.toString());<a name="line.541"></a>
+<span class="sourceLineNo">542</span> previousLogTime = System.currentTimeMillis();<a name="line.542"></a>
+<span class="sourceLineNo">543</span> }<a name="line.543"></a>
+<span class="sourceLineNo">544</span><a name="line.544"></a>
+<span class="sourceLineNo">545</span> try {<a name="line.545"></a>
+<span class="sourceLineNo">546</span> List<String> servers = getRegionServersInZK(zkw);<a name="line.546"></a>
+<span class="sourceLineNo">547</span> if (servers == null || servers.isEmpty() || (servers.size() == 1<a name="line.547"></a>
+<span class="sourceLineNo">548</span> && servers.contains(sn.toString()))) {<a name="line.548"></a>
+<span class="sourceLineNo">549</span> LOG.info("ZK shows there is only the master self online, exiting now");<a name="line.549"></a>
+<span class="sourceLineNo">550</span> // Master could have lost some ZK events, no need to wait more.<a name="line.550"></a>
+<span class="sourceLineNo">551</span> break;<a name="line.551"></a>
+<span class="sourceLineNo">552</span> }<a name="line.552"></a>
+<span class="sourceLineNo">553</span> } catch (KeeperException ke) {<a name="line.553"></a>
+<span class="sourceLineNo">554</span> LOG.warn("Failed to list regionservers", ke);<a name="line.554"></a>
+<span class="sourceLineNo">555</span> // ZK is malfunctioning, don't hang here<a name="line.555"></a>
+<span class="sourceLineNo">556</span> break;<a name="line.556"></a>
+<span class="sourceLineNo">557</span> }<a name="line.557"></a>
+<span class="sourceLineNo">558</span> synchronized (onlineServers) {<a name="line.558"></a>
+<span class="sourceLineNo">559</span> try {<a name="line.559"></a>
+<span class="sourceLineNo">560</span> if (onlineServersCt == onlineServers.size()) onlineServers.wait(100);<a name="line.560"></a>
+<span class="sourceLineNo">561</span> } catch (InterruptedException ignored) {<a name="line.561"></a>
+<span class="sourceLineNo">562</span> // continue<a name="line.562"></a>
+<span class="sourceLineNo">563</span> }<a name="line.563"></a>
+<span class="sourceLineNo">564</span> }<a name="line.564"></a>
+<span class="sourceLineNo">565</span> }<a name="line.565"></a>
+<span class="sourceLineNo">566</span> }<a name="line.566"></a>
+<span class="sourceLineNo">567</span><a name="line.567"></a>
+<span class="sourceLineNo">568</span> private List<String> getRegionServersInZK(final ZKWatcher zkw)<a name="line.568"></a>
+<span class="sourceLineNo">569</span> throws KeeperException {<a name="line.569"></a>
+<span class="sourceLineNo">570</span> return ZKUtil.listChildrenNoWatch(zkw, zkw.getZNodePaths().rsZNode);<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> /**<a name="line.573"></a>
+<span class="sourceLineNo">574</span> * Expire the passed server. Add it to list of dead servers and queue a shutdown processing.<a name="line.574"></a>
+<span class="sourceLineNo">575</span> * @return True if we queued a ServerCrashProcedure else false if we did not (could happen for<a name="line.575"></a>
+<span class="sourceLineNo">576</span> * many reasons including the fact that its this server that is going down or we already<a name="line.576"></a>
+<span class="sourceLineNo">577</span> * have queued an SCP for this server or SCP processing is currently disabled because we<a name="line.577"></a>
+<span class="sourceLineNo">578</span> * are in startup phase).<a name="line.578"></a>
+<span class="sourceLineNo">579</span> */<a name="line.579"></a>
+<span class="sourceLineNo">580</span> public synchronized boolean expireServer(final ServerName serverName) {<a name="line.580"></a>
+<span class="sourceLineNo">581</span> // THIS server is going down... can't handle our own expiration.<a name="line.581"></a>
+<span class="sourceLineNo">582</span> if (serverName.equals(master.getServerName())) {<a name="line.582"></a>
+<span class="sourceLineNo">583</span> if (!(master.isAborted() || master.isStopped())) {<a name="line.583"></a>
+<span class="sourceLineNo">584</span> master.stop("We lost our znode?");<a name="line.584"></a>
+<span class="sourceLineNo">585</span> }<a name="line.585"></a>
+<span class="sourceLineNo">586</span> return false;<a name="line.586"></a>
+<span class="sourceLineNo">587</span> }<a name="line.587"></a>
+<span class="sourceLineNo">588</span> if (this.deadservers.isDeadServer(serverName)) {<a name="line.588"></a>
+<span class="sourceLineNo">589</span> LOG.warn("Expiration called on {} but crash processing already in progress", serverName);<a name="line.589"></a>
+<span class="sourceLineNo">590</span> return false;<a name="line.590"></a>
+<span class="sourceLineNo">591</span> }<a name="line.591"></a>
+<span class="sourceLineNo">592</span> moveFromOnlineToDeadServers(serverName);<a name="line.592"></a>
+<span class="sourceLineNo">593</span><a name="line.593"></a>
+<span class="sourceLineNo">594</span> // If cluster is going down, yes, servers are going to be expiring; don't<a name="line.594"></a>
+<span class="sourceLineNo">595</span> // process as a dead server<a name="line.595"></a>
+<span class="sourceLineNo">596</span> if (isClusterShutdown()) {<a name="line.596"></a>
+<span class="sourceLineNo">597</span> LOG.info("Cluster shutdown set; " + serverName +<a name="line.597"></a>
+<span class="sourceLineNo">598</span> " expired; onlineServers=" + this.onlineServers.size());<a name="line.598"></a>
+<span class="sourceLineNo">599</span> if (this.onlineServers.isEmpty()) {<a name="line.599"></a>
+<span class="sourceLineNo">600</span> master.stop("Cluster shutdown set; onlineServer=0");<a name="line.600"></a>
+<span class="sourceLineNo">601</span> }<a name="line.601"></a>
+<span class="sourceLineNo">602</span> return false;<a name="line.602"></a>
+<span class="sourceLineNo">603</span> }<a name="line.603"></a>
+<span class="sourceLineNo">604</span> LOG.info("Processing expiration of " + serverName + " on " + this.master.getServerName());<a name="line.604"></a>
+<span class="sourceLineNo">605</span> master.getAssignmentManager().submitServerCrash(serverName, true);<a name="line.605"></a>
+<span class="sourceLineNo">606</span><a name="line.606"></a>
+<span class="sourceLineNo">607</span> // Tell our listeners that a server was removed<a name="line.607"></a>
+<span class="sourceLineNo">608</span> if (!this.listeners.isEmpty()) {<a name="line.608"></a>
+<span class="sourceLineNo">609</span> for (ServerListener listener : this.listeners) {<a name="line.609"></a>
+<span class="sourceLineNo">610</span> listener.serverRemoved(serverName);<a name="line.610"></a>
+<span class="sourceLineNo">611</span> }<a name="line.611"></a>
+<span class="sourceLineNo">612</span> }<a name="line.612"></a>
+<span class="sourceLineNo">613</span> // trigger a persist of flushedSeqId<a name="line.613"></a>
+<span class="sourceLineNo">614</span> if (flushedSeqIdFlusher != null) {<a name="line.614"></a>
+<span class="sourceLineNo">615</span> flushedSeqIdFlusher.triggerNow();<a name="line.615"></a>
+<span class="sourceLineNo">616</span> }<a name="line.616"></a>
+<span class="sourceLineNo">617</span> return true;<a name="line.617"></a>
+<span class="sourceLineNo">618</span> }<a name="line.618"></a>
+<span class="sourceLineNo">619</span><a name="line.619"></a>
+<span class="sourceLineNo">620</span> @VisibleForTesting<a name="line.620"></a>
+<span class="sourceLineNo">621</span> public void moveFromOnlineToDeadServers(final ServerName sn) {<a name="line.621"></a>
+<span class="sourceLineNo">622</span> synchronized (onlineServers) {<a name="line.622"></a>
+<span class="sourceLineNo">623</span> if (!this.onlineServers.containsKey(sn)) {<a name="line.623"></a>
+<span class="sourceLineNo">624</span> LOG.warn("Expiration of " + sn + " but server not online");<a name="line.624"></a>
+<span class="sourceLineNo">625</span> }<a name="line.625"></a>
+<span class="sourceLineNo">626</span> // Remove the server from the known servers lists and update load info BUT<a name="line.626"></a>
+<span class="sourceLineNo">627</span> // add to deadservers first; do this so it'll show in dead servers list if<a name="line.627"></a>
+<span class="sourceLineNo">628</span> // not in online servers list.<a name="line.628"></a>
+<span class="sourceLineNo">629</span> this.deadservers.add(sn);<a name="line.629"></a>
+<span class="sourceLineNo">630</span> this.onlineServers.remove(sn);<a name="line.630"></a>
+<span class="sourceLineNo">631</span> onlineServers.notifyAll();<a name="line.631"></a>
+<span class="sourceLineNo">632</span> }<a name="line.632"></a>
+<span class="sourceLineNo">633</span> this.rsAdmins.remove(sn);<a name="line.633"></a>
+<span class="sourceLineNo">634</span> }<a name="line.634"></a>
+<span class="sourceLineNo">635</span><a name="line.635"></a>
+<span class="sourceLineNo">636</span> /*<a name="line.636"></a>
+<span class="sourceLineNo">637</span> * Remove the server from the drain list.<a name="line.637"></a>
+<span class="sourceLineNo">638</span> */<a name="line.638"></a>
+<span class="sourceLineNo">639</span> public synchronized boolean removeServerFromDrainList(final ServerName sn) {<a name="line.639"></a>
+<span class="sourceLineNo">640</span> // Warn if the server (sn) is not online. ServerName is of the form:<a name="line.640"></a>
+<span class="sourceLineNo">641</span> // <hostname> , <port> , <startcode><a name="line.641"></a>
+<span class="sourceLineNo">642</span><a name="line.642"></a>
+<span class="sourceLineNo">643</span> if (!this.isServerOnline(sn)) {<a name="line.643"></a>
+<span class="sourceLineNo">644</span> LOG.warn("Server " + sn + " is not currently online. " +<a name="line.644"></a>
+<span class="sourceLineNo">645</span> "Removing from draining list anyway, as requested.");<a name="line.645"></a>
+<span class="sourceLineNo">646</span> }<a name="line.646"></a>
+<span class="sourceLineNo">647</span> // Remove the server from the draining servers lists.<a name="line.647"></a>
+<span class="sourceLineNo">648</span> return this.drainingServers.remove(sn);<a name="line.648"></a>
+<span class="sourceLineNo">649</span> }<a name="line.649"></a>
+<span class="sourceLineNo">650</span><a name="line.650"></a>
+<span class="sourceLineNo">651</span> /**<a name="line.651"></a>
+<span class="sourceLineNo">652</span> * Add the server to the drain list.<a name="line.652"></a>
+<span class="sourceLineNo">653</span> * @param sn<a name="line.653"></a>
+<span class="sourceLineNo">654</span> * @return True if the server is added or the server is already on the drain list.<a name="line.654"></a>
+<span class="sourceLineNo">655</span> */<a name="line.655"></a>
+<span class="sourceLineNo">656</span> public synchronized boolean addServerToDrainList(final ServerName sn) {<a name="line.656"></a>
+<span class="sourceLineNo">657</span> // Warn if the server (sn) is not online. ServerName is of the form:<a name="line.657"></a>
+<span class="sourceLineNo">658</span> // <hostname> , <port> , <startcode><a name="line.658"></a>
+<span class="sourceLineNo">659</span><a name="line.659"></a>
+<span class="sourceLineNo">660</span> if (!this.isServerOnline(sn)) {<a name="line.660"></a>
+<span class="sourceLineNo">661</span> LOG.warn("Server " + sn + " is not currently online. " +<a name="line.661"></a>
+<span class="sourceLineNo">662</span> "Ignoring request to add it to draining list.");<a name="line.662"></a>
+<span class="sourceLineNo">663</span> return false;<a name="line.663"></a>
+<span class="sourceLineNo">664</span> }<a name="line.664"></a>
+<span class="sourceLineNo">665</span> // Add the server to the draining servers lists, if it's not already in<a name="line.665"></a>
+<span class="sourceLineNo">666</span> // it.<a name="line.666"></a>
+<span class="sourceLineNo">667</span> if (this.drainingServers.contains(sn)) {<a name="line.667"></a>
+<span class="sourceLineNo">668</span> LOG.warn("Server " + sn + " is already in the draining server list." +<a name="line.668"></a>
+<span class="sourceLineNo">669</span> "Ignoring request to add it again.");<a name="line.669"></a>
+<span class="sourceLineNo">670</span> return true;<a name="line.670"></a>
+<span class="sourceLineNo">671</span> }<a name="line.671"></a>
+<span class="sourceLineNo">672</span> LOG.info("Server " + sn + " added to draining server list.");<a name="line.672"></a>
+<span class="sourceLineNo">673</span> return this.drainingServers.add(sn);<a name="line.673"></a>
+<span class="sourceLineNo">674</span> }<a name="line.674"></a>
+<span class="sourceLineNo">675</span><a name="line.675"></a>
+<span class="sourceLineNo">676</span> // RPC methods to region servers<a name="line.676"></a>
+<span class="sourceLineNo">677</span><a name="line.677"></a>
+<span class="sourceLineNo">678</span> private HBaseRpcController newRpcController() {<a name="line.678"></a>
+<span class="sourceLineNo">679</span> return rpcControllerFactory == null ? null : rpcControllerFactory.newController();<a name="line.679"></a>
+<span class="sourceLineNo">680</span> }<a name="line.680"></a>
+<span class="sourceLineNo">681</span><a name="line.681"></a>
+<span class="sourceLineNo">682</span> /**<a name="line.682"></a>
+<span class="sourceLineNo">683</span> * Sends a WARMUP RPC to the specified server to warmup the specified region.<a name="line.683"></a>
+<span class="sourceLineNo">684</span> * <p><a name="line.684"></a>
+<span class="sourceLineNo">685</span> * A region server could reject the close request because it either does not<a name="line.685"></a>
+<span class="sourceLineNo">686</span> * have the specified region or the region is being split.<a name="line.686"></a>
+<span class="sourceLineNo">687</span> * @param server server to warmup a region<a name="line.687"></a>
+<span class="sourceLineNo">688</span> * @param region region to warmup<a name="line.688"></a>
+<span class="sourceLineNo">689</span> */<a name="line.689"></a>
+<span class="sourceLineNo">690</span> public void sendRegionWarmup(ServerName server,<a name="line.690"></a>
+<span class="sourceLineNo">691</span> RegionInfo region) {<a name="line.691"></a>
+<span class="sourceLineNo">692</span> if (server == null) return;<a name="line.692"></a>
+<span class="sourceLineNo">693</span> try {<a name="line.693"></a>
+<span class="sourceLineNo">694</span> AdminService.BlockingInterface admin = getRsAdmin(server);<a name="line.694"></a>
+<span class="sourceLineNo">695</span> HBaseRpcController controller = newRpcController();<a name="line.695"></a>
+<span class="sourceLineNo">696</span> ProtobufUtil.warmupRegion(controller, admin, region);<a name="line.696"></a>
+<span class="sourceLineNo">697</span> } catch (IOException e) {<a name="line.697"></a>
+<span class="sourceLineNo">698</span> LOG.error("Received exception in RPC for warmup server:" +<a name="line.698"></a>
+<span class="sourceLineNo">699</span> server + "region: " + region +<a name="line.699"></a>
+<span class="sourceLineNo">700</span> "exception: " + e);<a name="line.700"></a>
+<span class="sourceLineNo">701</span> }<a name="line.701"></a>
+<span class="sourceLineNo">702</span> }<a name="line.702"></a>
+<span class="sourceLineNo">703</span><a name="line.703"></a>
+<span class="sourceLineNo">704</span> /**<a name="line.704"></a>
+<span class="sourceLineNo">705</span> * Contacts a region server and waits up to timeout ms<a name="line.705"></a>
+<span class="sourceLineNo">706</span> * to close the region. This bypasses the active hmaster.<a name="line.706"></a>
+<span class="sourceLineNo">707</span> */<a name="line.707"></a>
+<span class="sourceLineNo">708</span> public static void closeRegionSilentlyAndWait(ClusterConnection connection,<a name="line.708"></a>
+<span class="sourceLineNo">709</span> ServerName server, RegionInfo region, long timeout) throws IOException, InterruptedException {<a name="line.709"></a>
+<span class="sourceLineNo">710</span> AdminService.BlockingInterface rs = connection.getAdmin(server);<a name="line.710"></a>
+<span class="sourceLineNo">711</span> HBaseRpcController controller = connection.getRpcControllerFactory().newController();<a name="line.711"></a>
+<span class="sourceLineNo">712</span> try {<a name="line.712"></a>
+<span class="sourceLineNo">713</span> ProtobufUtil.closeRegion(controller, rs, server, region.getRegionName());<a name="line.713"></a>
+<span class="sourceLineNo">714</span> } catch (IOException e) {<a name="line.714"></a>
+<span class="sourceLineNo">715</span> LOG.warn("Exception when closing region: " + region.getRegionNameAsString(), e);<a name="line.715"></a>
+<span class="sourceLineNo">716</span> }<a name="line.716"></a>
+<span class="sourceLineNo">717</span> long expiration = timeout + System.currentTimeMillis();<a name="line.717"></a>
+<span class="sourceLineNo">718</span> while (System.currentTimeMillis() < expiration) {<a name="line.718"></a>
+<span class="sourceLineNo">719</span> controller.reset();<a name="line.719"></a>
+<span class="sourceLineNo">720</span> try {<a name="line.720"></a>
+<span class="sourceLineNo">721</span> RegionInfo rsRegion =<a name="line.721"></a>
+<span class="sourceLineNo">722</span> ProtobufUtil.getRegionInfo(controller, rs, region.getRegionName());<a name="line.722"></a>
+<span class="sourceLineNo">723</span> if (rsRegion == null) return;<a name="line.723"></a>
+<span class="sourceLineNo">724</span> } catch (IOException ioe) {<a name="line.724"></a>
+<span class="sourceLineNo">725</span> if (ioe instanceof NotServingRegionException) // no need to retry again<a name="line.725"></a>
+<span class="sourceLineNo">726</span> return;<a name="line.726"></a>
+<span class="sourceLineNo">727</span> LOG.warn("Exception when retrieving regioninfo from: "<a name="line.727"></a>
+<span class="sourceLineNo">728</span> + region.getRegionNameAsString(), ioe);<a name="line.728"></a>
+<span class="sourceLineNo">729</span> }<a name="line.729"></a>
+<span class="sourceLineNo">730</span> Thread.sleep(1000);<a name="line.730"></a>
+<span class="sourceLineNo">731</span> }<a name="line.731"></a>
+<span class="sourceLineNo">732</span> throw new IOException("Region " + region + " failed to close within"<a name="line.732"></a>
+<span class="sourceLineNo">733</span> + " timeout " + timeout);<a name="line.733"></a>
+<span class="sourceLineNo">734</span> }<a name="line.734"></a>
+<span class="sourceLineNo">735</span><a name="line.735"></a>
+<span class="sourceLineNo">736</span> /**<a name="line.736"></a>
+<span class="sourceLineNo">737</span> * @param sn<a name="line.737"></a>
+<span class="sourceLineNo">738</span> * @return Admin interface for the remote regionserver named <code>sn</code><a name="line.738"></a>
+<span class="sourceLineNo">739</span> * @throws IOException<a name="line.739"></a>
+<span class="sourceLineNo">740</span> * @throws RetriesExhaustedException wrapping a ConnectException if failed<a name="line.740"></a>
+<span class="sourceLineNo">741</span> */<a name="line.741"></a>
+<span class="sourceLineNo">742</span> public AdminService.BlockingInterface getRsAdmin(final ServerName sn)<a name="line.742"></a>
+<span class="sourceLineNo">743</span> throws IOException {<a name="line.743"></a>
+<span class="sourceLineNo">744</span> AdminService.BlockingInterface admin = this.rsAdmins.get(sn);<a name="line.744"></a>
+<span class="sourceLineNo">745</span> if (admin == null) {<a name="line.745"></a>
+<span class="sourceLineNo">746</span> LOG.debug("New admin connection to " + sn.toString());<a name="line.746"></a>
+<span class="sourceLineNo">747</span> if (sn.equals(master.getServerName()) && master instanceof HRegionServer) {<a name="line.747"></a>
+<span class="sourceLineNo">748</span> // A master is also a region server now, see HBASE-10569 for details<a name="line.748"></a>
+<span class="sourceLineNo">749</span> admin = ((HRegionServer)master).getRSRpcServices();<a name="line.749"></a>
+<span class="sourceLineNo">750</span> } else {<a name="line.750"></a>
+<span class="sourceLineNo">751</span> admin = this.connection.getAdmin(sn);<a name="line.751"></a>
+<span class="sourceLineNo">752</span> }<a name="line.752"></a>
+<span class="sourceLineNo">753</span> this.rsAdmins.put(sn, admin);<a name="line.753"></a>
+<span class="sourceLineNo">754</span> }<a name="line.754"></a>
+<span class="sourceLineNo">755</span> return admin;<a name="line.755"></a>
+<span class="sourceLineNo">756</span> }<a name="line.756"></a>
+<span class="sourceLineNo">757</span><a name="line.757"></a>
+<span class="sourceLineNo">758</span> /**<a name="line.758"></a>
+<span class="sourceLineNo">759</span> * Calculate min necessary to start. This is not an absolute. It is just<a name="line.759"></a>
+<span class="sourceLineNo">760</span> * a friction that will cause us hang around a bit longer waiting on<a name="line.760"></a>
+<span class="sourceLineNo">761</span> * RegionServers to check-in.<a name="line.761"></a>
+<span class="sourceLineNo">762</span> */<a name="line.762"></a>
+<span class="sourceLineNo">763</span> private int getMinToStart() {<a name="line.763"></a>
+<span class="sourceLineNo">764</span> // One server should be enough to get us off the ground.<a name="line.764"></a>
+<span class="sourceLineNo">765</span> int requiredMinToStart = 1;<a name="line.765"></a>
+<span class="sourceLineNo">766</span> if (LoadBalancer.isTablesOnMaster(master.getConfiguration())) {<a name="line.766"></a>
+<span class="sourceLineNo">767</span> if (LoadBalancer.isSystemTablesOnlyOnMaster(master.getConfiguration())) {<a name="line.767"></a>
+<span class="sourceLineNo">768</span> // If Master is carrying regions but NOT user-space regions, it<a name="line.768"></a>
+<span class="sourceLineNo">769</span> // still shows as a 'server'. We need at least one more server to check<a name="line.769"></a>
+<span class="sourceLineNo">770</span> // in before we can start up so set defaultMinToStart to 2.<a name="line.770"></a>
+<span class="sourceLineNo">771</span> requiredMinToStart = requiredMinToStart + 1;<a name="line.771"></a>
+<span class="sourceLineNo">772</span> }<a name="line.772"></a>
+<span class="sourceLineNo">773</span> }<a name="line.773"></a>
+<span class="sourceLineNo">774</span> int minToStart = this.master.getConfiguration().getInt(WAIT_ON_REGIONSERVERS_MINTOSTART, -1);<a name="line.774"></a>
+<span class="sourceLineNo">775</span> // Ensure we are never less than requiredMinToStart else stuff won't work.<a name="line.775"></a>
+<span class="sourceLineNo">776</span> return minToStart == -1 || minToStart < requiredMinToStart? requiredMinToStart: minToStart;<a name="line.776"></a>
+<span class="sourceLineNo">777</span> }<a name="line.777"></a>
+<span class="sourceLineNo">778</span><a name="line.778"></a>
+<span class="sourceLineNo">779</span> /**<a name="line.779"></a>
+<span class="sourceLineNo">780</span> * Wait for the region servers to report in.<a name="line.780"></a>
+<span class="sourceLineNo">781</span> * We will wait until one of this condition is met:<a name="line.781"></a>
+<span class="sourceLineNo">782</span> * - the master is stopped<a name="line.782"></a>
+<span class="sourceLineNo">783</span> * - the 'hbase.master.wait.on.regionservers.maxtostart' number of<a name="line.783"></a>
+<span class="sourceLineNo">784</span> * region servers is reached<a name="line.784"></a>
+<span class="sourceLineNo">785</span> * - the 'hbase.master.wait.on.regionservers.mintostart' is reached AND<a name="line.785"></a>
+<span class="sourceLineNo">786</span> * there have been no new region server in for<a name="line.786"></a>
+<span class="sourceLineNo">787</span> * 'hbase.master.wait.on.regionservers.interval' time AND<a name="line.787"></a>
+<span class="sourceLineNo">788</span> * the 'hbase.master.wait.on.regionservers.timeout' is reached<a name="line.788"></a>
+<span class="sourceLineNo">789</span> *<a name="line.789"></a>
+<span class="sourceLineNo">790</span> * @throws InterruptedException<a name="line.790"></a>
+<span class="sourceLineNo">791</span> */<a name="line.791"></a>
+<span class="sourceLineNo">792</span> public void waitForRegionServers(MonitoredTask status) throws InterruptedException {<a name="line.792"></a>
+<span class="sourceLineNo">793</span> final long interval = this.master.getConfiguration().<a name="line.793"></a>
+<span class="sourceLineNo">794</span> getLong(WAIT_ON_REGIONSERVERS_INTERVAL, 1500);<a name="line.794"></a>
+<span class="sourceLineNo">795</span> final long timeout = this.master.getConfiguration().<a name="line.795"></a>
+<span class="sourceLineNo">796</span> getLong(WAIT_ON_REGIONSERVERS_TIMEOUT, 4500);<a name="line.796"></a>
+<span class="sourceLineNo">797</span> // Min is not an absolute; just a friction making us wait longer on server checkin.<a name="line.797"></a>
+<span class="sourceLineNo">798</span> int minToStart = getMinToStart();<a name="line.798"></a>
+<span class="sourceLineNo">799</span> int maxToStart = this.master.getConfiguration().<a name="line.799"></a>
+<span class="sourceLineNo">800</span> getInt(WAIT_ON_REGIONSERVERS_MAXTOSTART, Integer.MAX_VALUE);<a name="line.800"></a>
+<span class="sourceLineNo">801</span> if (maxToStart < minToStart) {<a name="line.801"></a>
+<span class="sourceLineNo">802</span> LOG.warn(String.format("The value of '%s' (%d) is set less than '%s' (%d), ignoring.",<a name="line.802"></a>
+<span class="sourceLineNo">803</span> WAIT_ON_REGIONSERVERS_MAXTOSTART, maxToStart,<a name="line.803"></a>
+<span class="sourceLineNo">804</span> WAIT_ON_REGIONSERVERS_MINTOSTART, minToStart));<a name="line.804"></a>
+<span class="sourceLineNo">805</span> maxToStart = Integer.MAX_VALUE;<a name="line.805"></a>
+<span class="sourceLineNo">806</span> }<a name="line.806"></a>
+<span class="sourceLineNo">807</span><a name="line.807"></a>
+<span class="sourceLineNo">808</span> long now = System.currentTimeMillis();<a name="line.808"></a>
+<span class="sourceLineNo">809</span> final long startTime = now;<a name="line.809"></a>
+<span class="sourceLineNo">810</span> long slept = 0;<a name="line.810"></a>
+<span class="sourceLineNo">811</span> long lastLogTime = 0;<a name="line.811"></a>
+<span class="sourceLineNo">812</span> long lastCountChange = startTime;<a name="line.812"></a>
+<span class="sourceLineNo">813</span> int count = countOfRegionServers();<a name="line.813"></a>
+<span class="sourceLineNo">814</span> int oldCount = 0;<a name="line.814"></a>
+<span class="sourceLineNo">815</span> // This while test is a little hard to read. We try to comment it in below but in essence:<a name="line.815"></a>
+<span class="sourceLineNo">816</span> // Wait if Master is not stopped and the number of regionservers that have checked-in is<a name="line.816"></a>
+<span class="sourceLineNo">817</span> // less than the maxToStart. Both of these conditions will be true near universally.<a name="line.817"></a>
+<span class="sourceLineNo">818</span> // Next, we will keep cycling if ANY of the following three conditions are true:<a name="line.818"></a>
+<span class="sourceLineNo">819</span> // 1. The time since a regionserver registered is < interval (means servers are actively checking in).<a name="line.819"></a>
+<span class="sourceLineNo">820</span> // 2. We are under the total timeout.<a name="line.820"></a>
+<span class="sourceLineNo">821</span> // 3. The count of servers is < minimum.<a name="line.821"></a>
+<span class="sourceLineNo">822</span> for (ServerListener listener: this.listeners) {<a name="line.822"></a>
+<span class="sourceLineNo">823</span> listener.waiting();<a name="line.823"></a>
+<span class="sourceLineNo">824</span> }<a name="line.824"></a>
+<span class="sourceLineNo">825</span> while (!this.master.isStopped() && !isClusterShutdown() && count < maxToStart &&<a name="line.825"></a>
+<span class="sourceLineNo">826</span> ((lastCountChange + interval) > now || timeout > slept || count < minToStart)) {<a name="line.826"></a>
+<span class="sourceLineNo">827</span> // Log some info at every interval time or if there is a change<a name="line.827"></a>
+<span class="sourceLineNo">828</span> if (oldCount != count || lastLogTime + interval < now) {<a name="line.828"></a>
+<span class="sourceLineNo">829</span> lastLogTime = now;<a name="line.829"></a>
+<span class="sourceLineNo">830</span> String msg =<a name="line.830"></a>
+<span class="sourceLineNo">831</span> "Waiting on regionserver count=" + count + "; waited="+<a name="line.831"></a>
+<span class="sourceLineNo">832</span> slept + "ms, expecting min=" + minToStart + " server(s), max="+ getStrForMax(maxToStart) +<a name="line.832"></a>
+<span class="sourceLineNo">833</span> " server(s), " + "timeout=" + timeout + "ms, lastChange=" + (lastCountChange - now) + "ms";<a name="line.833"></a>
+<span class="sourceLineNo">834</span> LOG.info(msg);<a name="line.834"></a>
+<span class="sourceLineNo">835</span> status.setStatus(msg);<a name="line.835"></a>
+<span class="sourceLineNo">836</span> }<a name="line.836"></a>
+<span class="sourceLineNo">837</span><a name="line.837"></a>
+<span class="sourceLineNo">838</span> // We sleep for some time<a name="line.838"></a>
+<span class="sourceLineNo">839</span> final long sleepTime = 50;<a name="line.839"></a>
+<span class="sourceLineNo">840</span> Thread.sleep(sleepTime);<a name="line.840"></a>
+<span class="sourceLineNo">841</span> now = System.currentTimeMillis();<a name="line.841"></a>
+<span class="sourceLineNo">842</span> slept = now - startTime;<a name="line.842"></a>
+<span class="sourceLineNo">843</span><a name="line.843"></a>
+<span class="sourceLineNo">844</span> oldCount = count;<a name="line.844"></a>
+<span class="sourceLineNo">845</span> count = countOfRegionServers();<a name="line.845"></a>
+<span class="sourceLineNo">846</span> if (count != oldCount) {<a name="line.846"></a>
+<span class="sourceLineNo">847</span> lastCountChange = now;<a name="line.847"></a>
+<span class="sourceLineNo">848</span> }<a name="line.848"></a>
+<span class="sourceLineNo">849</span> }<a name="line.849"></a>
+<span class="sourceLineNo">850</span> // Did we exit the loop because cluster is going down?<a name="line.850"></a>
+<span class="sourceLineNo">851</span> if (isClusterShutdown()) {<a name="line.851"></a>
+<span class="sourceLineNo">852</span> this.master.stop("Cluster shutdown");<a name="line.852"></a>
+<span class="sourceLineNo">853</span> }<a name="line.853"></a>
+<span class="sourceLineNo">854</span> LOG.info("Finished waiting on RegionServer count=" + count + "; waited=" + slept + "ms," +<a name="line.854"></a>
+<span class="sourceLineNo">855</span> " expected min=" + minToStart + " server(s), max=" + getStrForMax(maxToStart) + " server(s),"+<a name="line.855"></a>
+<span class="sourceLineNo">856</span> " master is "+ (this.master.isStopped() ? "stopped.": "running"));<a name="line.856"></a>
+<span class="sourceLineNo">857</span> }<a name="line.857"></a>
+<span class="sourceLineNo">858</span><a nam
<TRUNCATED>
[14/51] [partial] hbase-site git commit: Published site at
9101fc246f86445006bfbcdfda5cc495016dc280.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/src-html/org/apache/hadoop/hbase/master/CatalogJanitor.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/CatalogJanitor.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/CatalogJanitor.html
index 4229646..1814633 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/CatalogJanitor.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/CatalogJanitor.html
@@ -119,358 +119,355 @@
<span class="sourceLineNo">111</span> protected void chore() {<a name="line.111"></a>
<span class="sourceLineNo">112</span> try {<a name="line.112"></a>
<span class="sourceLineNo">113</span> AssignmentManager am = this.services.getAssignmentManager();<a name="line.113"></a>
-<span class="sourceLineNo">114</span> if (this.enabled.get()<a name="line.114"></a>
-<span class="sourceLineNo">115</span> && !this.services.isInMaintenanceMode()<a name="line.115"></a>
-<span class="sourceLineNo">116</span> && am != null<a name="line.116"></a>
-<span class="sourceLineNo">117</span> && am.isFailoverCleanupDone()<a name="line.117"></a>
-<span class="sourceLineNo">118</span> && !am.hasRegionsInTransition()) {<a name="line.118"></a>
-<span class="sourceLineNo">119</span> scan();<a name="line.119"></a>
-<span class="sourceLineNo">120</span> } else {<a name="line.120"></a>
-<span class="sourceLineNo">121</span> LOG.warn("CatalogJanitor is disabled! Enabled=" + this.enabled.get() +<a name="line.121"></a>
-<span class="sourceLineNo">122</span> ", maintenanceMode=" + this.services.isInMaintenanceMode() +<a name="line.122"></a>
-<span class="sourceLineNo">123</span> ", am=" + am + ", failoverCleanupDone=" + (am != null && am.isFailoverCleanupDone()) +<a name="line.123"></a>
-<span class="sourceLineNo">124</span> ", hasRIT=" + (am != null && am.hasRegionsInTransition()));<a name="line.124"></a>
-<span class="sourceLineNo">125</span> }<a name="line.125"></a>
-<span class="sourceLineNo">126</span> } catch (IOException e) {<a name="line.126"></a>
-<span class="sourceLineNo">127</span> LOG.warn("Failed scan of catalog table", 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> /**<a name="line.131"></a>
-<span class="sourceLineNo">132</span> * Scans hbase:meta and returns a number of scanned rows, and a map of merged<a name="line.132"></a>
-<span class="sourceLineNo">133</span> * regions, and an ordered map of split parents.<a name="line.133"></a>
-<span class="sourceLineNo">134</span> * @return triple of scanned rows, map of merged regions and map of split<a name="line.134"></a>
-<span class="sourceLineNo">135</span> * parent regioninfos<a name="line.135"></a>
-<span class="sourceLineNo">136</span> * @throws IOException<a name="line.136"></a>
-<span class="sourceLineNo">137</span> */<a name="line.137"></a>
-<span class="sourceLineNo">138</span> Triple<Integer, Map<RegionInfo, Result>, Map<RegionInfo, Result>><a name="line.138"></a>
-<span class="sourceLineNo">139</span> getMergedRegionsAndSplitParents() throws IOException {<a name="line.139"></a>
-<span class="sourceLineNo">140</span> return getMergedRegionsAndSplitParents(null);<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> /**<a name="line.143"></a>
-<span class="sourceLineNo">144</span> * Scans hbase:meta and returns a number of scanned rows, and a map of merged<a name="line.144"></a>
-<span class="sourceLineNo">145</span> * regions, and an ordered map of split parents. if the given table name is<a name="line.145"></a>
-<span class="sourceLineNo">146</span> * null, return merged regions and split parents of all tables, else only the<a name="line.146"></a>
-<span class="sourceLineNo">147</span> * specified table<a name="line.147"></a>
-<span class="sourceLineNo">148</span> * @param tableName null represents all tables<a name="line.148"></a>
-<span class="sourceLineNo">149</span> * @return triple of scanned rows, and map of merged regions, and map of split<a name="line.149"></a>
-<span class="sourceLineNo">150</span> * parent regioninfos<a name="line.150"></a>
-<span class="sourceLineNo">151</span> * @throws IOException<a name="line.151"></a>
-<span class="sourceLineNo">152</span> */<a name="line.152"></a>
-<span class="sourceLineNo">153</span> Triple<Integer, Map<RegionInfo, Result>, Map<RegionInfo, Result>><a name="line.153"></a>
-<span class="sourceLineNo">154</span> getMergedRegionsAndSplitParents(final TableName tableName) throws IOException {<a name="line.154"></a>
-<span class="sourceLineNo">155</span> final boolean isTableSpecified = (tableName != null);<a name="line.155"></a>
-<span class="sourceLineNo">156</span> // TODO: Only works with single hbase:meta region currently. Fix.<a name="line.156"></a>
-<span class="sourceLineNo">157</span> final AtomicInteger count = new AtomicInteger(0);<a name="line.157"></a>
-<span class="sourceLineNo">158</span> // Keep Map of found split parents. There are candidates for cleanup.<a name="line.158"></a>
-<span class="sourceLineNo">159</span> // Use a comparator that has split parents come before its daughters.<a name="line.159"></a>
-<span class="sourceLineNo">160</span> final Map<RegionInfo, Result> splitParents = new TreeMap<>(new SplitParentFirstComparator());<a name="line.160"></a>
-<span class="sourceLineNo">161</span> final Map<RegionInfo, Result> mergedRegions = new TreeMap<>(RegionInfo.COMPARATOR);<a name="line.161"></a>
-<span class="sourceLineNo">162</span> // This visitor collects split parents and counts rows in the hbase:meta table<a name="line.162"></a>
-<span class="sourceLineNo">163</span><a name="line.163"></a>
-<span class="sourceLineNo">164</span> MetaTableAccessor.Visitor visitor = new MetaTableAccessor.Visitor() {<a name="line.164"></a>
-<span class="sourceLineNo">165</span> @Override<a name="line.165"></a>
-<span class="sourceLineNo">166</span> public boolean visit(Result r) throws IOException {<a name="line.166"></a>
-<span class="sourceLineNo">167</span> if (r == null || r.isEmpty()) return true;<a name="line.167"></a>
-<span class="sourceLineNo">168</span> count.incrementAndGet();<a name="line.168"></a>
-<span class="sourceLineNo">169</span> RegionInfo info = MetaTableAccessor.getRegionInfo(r);<a name="line.169"></a>
-<span class="sourceLineNo">170</span> if (info == null) return true; // Keep scanning<a name="line.170"></a>
-<span class="sourceLineNo">171</span> if (isTableSpecified<a name="line.171"></a>
-<span class="sourceLineNo">172</span> && info.getTable().compareTo(tableName) > 0) {<a name="line.172"></a>
-<span class="sourceLineNo">173</span> // Another table, stop scanning<a name="line.173"></a>
-<span class="sourceLineNo">174</span> return false;<a name="line.174"></a>
-<span class="sourceLineNo">175</span> }<a name="line.175"></a>
-<span class="sourceLineNo">176</span> if (LOG.isTraceEnabled()) LOG.trace("" + info + " IS-SPLIT_PARENT=" + info.isSplitParent());<a name="line.176"></a>
-<span class="sourceLineNo">177</span> if (info.isSplitParent()) splitParents.put(info, r);<a name="line.177"></a>
-<span class="sourceLineNo">178</span> if (r.getValue(HConstants.CATALOG_FAMILY, HConstants.MERGEA_QUALIFIER) != null) {<a name="line.178"></a>
-<span class="sourceLineNo">179</span> mergedRegions.put(info, r);<a name="line.179"></a>
-<span class="sourceLineNo">180</span> }<a name="line.180"></a>
-<span class="sourceLineNo">181</span> // Returning true means "keep scanning"<a name="line.181"></a>
-<span class="sourceLineNo">182</span> return true;<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> // Run full scan of hbase:meta catalog table passing in our custom visitor with<a name="line.186"></a>
-<span class="sourceLineNo">187</span> // the start row<a name="line.187"></a>
-<span class="sourceLineNo">188</span> MetaTableAccessor.scanMetaForTableRegions(this.connection, visitor, tableName);<a name="line.188"></a>
+<span class="sourceLineNo">114</span> if (this.enabled.get() && !this.services.isInMaintenanceMode() && am != null &&<a name="line.114"></a>
+<span class="sourceLineNo">115</span> am.isMetaLoaded() && !am.hasRegionsInTransition()) {<a name="line.115"></a>
+<span class="sourceLineNo">116</span> scan();<a name="line.116"></a>
+<span class="sourceLineNo">117</span> } else {<a name="line.117"></a>
+<span class="sourceLineNo">118</span> LOG.warn("CatalogJanitor is disabled! Enabled=" + this.enabled.get() +<a name="line.118"></a>
+<span class="sourceLineNo">119</span> ", maintenanceMode=" + this.services.isInMaintenanceMode() + ", am=" + am +<a name="line.119"></a>
+<span class="sourceLineNo">120</span> ", metaLoaded=" + (am != null && am.isMetaLoaded()) + ", hasRIT=" +<a name="line.120"></a>
+<span class="sourceLineNo">121</span> (am != null && am.hasRegionsInTransition()));<a name="line.121"></a>
+<span class="sourceLineNo">122</span> }<a name="line.122"></a>
+<span class="sourceLineNo">123</span> } catch (IOException e) {<a name="line.123"></a>
+<span class="sourceLineNo">124</span> LOG.warn("Failed scan of catalog table", e);<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> /**<a name="line.128"></a>
+<span class="sourceLineNo">129</span> * Scans hbase:meta and returns a number of scanned rows, and a map of merged<a name="line.129"></a>
+<span class="sourceLineNo">130</span> * regions, and an ordered map of split parents.<a name="line.130"></a>
+<span class="sourceLineNo">131</span> * @return triple of scanned rows, map of merged regions and map of split<a name="line.131"></a>
+<span class="sourceLineNo">132</span> * parent regioninfos<a name="line.132"></a>
+<span class="sourceLineNo">133</span> * @throws IOException<a name="line.133"></a>
+<span class="sourceLineNo">134</span> */<a name="line.134"></a>
+<span class="sourceLineNo">135</span> Triple<Integer, Map<RegionInfo, Result>, Map<RegionInfo, Result>><a name="line.135"></a>
+<span class="sourceLineNo">136</span> getMergedRegionsAndSplitParents() throws IOException {<a name="line.136"></a>
+<span class="sourceLineNo">137</span> return getMergedRegionsAndSplitParents(null);<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> /**<a name="line.140"></a>
+<span class="sourceLineNo">141</span> * Scans hbase:meta and returns a number of scanned rows, and a map of merged<a name="line.141"></a>
+<span class="sourceLineNo">142</span> * regions, and an ordered map of split parents. if the given table name is<a name="line.142"></a>
+<span class="sourceLineNo">143</span> * null, return merged regions and split parents of all tables, else only the<a name="line.143"></a>
+<span class="sourceLineNo">144</span> * specified table<a name="line.144"></a>
+<span class="sourceLineNo">145</span> * @param tableName null represents all tables<a name="line.145"></a>
+<span class="sourceLineNo">146</span> * @return triple of scanned rows, and map of merged regions, and map of split<a name="line.146"></a>
+<span class="sourceLineNo">147</span> * parent regioninfos<a name="line.147"></a>
+<span class="sourceLineNo">148</span> * @throws IOException<a name="line.148"></a>
+<span class="sourceLineNo">149</span> */<a name="line.149"></a>
+<span class="sourceLineNo">150</span> Triple<Integer, Map<RegionInfo, Result>, Map<RegionInfo, Result>><a name="line.150"></a>
+<span class="sourceLineNo">151</span> getMergedRegionsAndSplitParents(final TableName tableName) throws IOException {<a name="line.151"></a>
+<span class="sourceLineNo">152</span> final boolean isTableSpecified = (tableName != null);<a name="line.152"></a>
+<span class="sourceLineNo">153</span> // TODO: Only works with single hbase:meta region currently. Fix.<a name="line.153"></a>
+<span class="sourceLineNo">154</span> final AtomicInteger count = new AtomicInteger(0);<a name="line.154"></a>
+<span class="sourceLineNo">155</span> // Keep Map of found split parents. There are candidates for cleanup.<a name="line.155"></a>
+<span class="sourceLineNo">156</span> // Use a comparator that has split parents come before its daughters.<a name="line.156"></a>
+<span class="sourceLineNo">157</span> final Map<RegionInfo, Result> splitParents = new TreeMap<>(new SplitParentFirstComparator());<a name="line.157"></a>
+<span class="sourceLineNo">158</span> final Map<RegionInfo, Result> mergedRegions = new TreeMap<>(RegionInfo.COMPARATOR);<a name="line.158"></a>
+<span class="sourceLineNo">159</span> // This visitor collects split parents and counts rows in the hbase:meta table<a name="line.159"></a>
+<span class="sourceLineNo">160</span><a name="line.160"></a>
+<span class="sourceLineNo">161</span> MetaTableAccessor.Visitor visitor = new MetaTableAccessor.Visitor() {<a name="line.161"></a>
+<span class="sourceLineNo">162</span> @Override<a name="line.162"></a>
+<span class="sourceLineNo">163</span> public boolean visit(Result r) throws IOException {<a name="line.163"></a>
+<span class="sourceLineNo">164</span> if (r == null || r.isEmpty()) return true;<a name="line.164"></a>
+<span class="sourceLineNo">165</span> count.incrementAndGet();<a name="line.165"></a>
+<span class="sourceLineNo">166</span> RegionInfo info = MetaTableAccessor.getRegionInfo(r);<a name="line.166"></a>
+<span class="sourceLineNo">167</span> if (info == null) return true; // Keep scanning<a name="line.167"></a>
+<span class="sourceLineNo">168</span> if (isTableSpecified<a name="line.168"></a>
+<span class="sourceLineNo">169</span> && info.getTable().compareTo(tableName) > 0) {<a name="line.169"></a>
+<span class="sourceLineNo">170</span> // Another table, stop scanning<a name="line.170"></a>
+<span class="sourceLineNo">171</span> return false;<a name="line.171"></a>
+<span class="sourceLineNo">172</span> }<a name="line.172"></a>
+<span class="sourceLineNo">173</span> if (LOG.isTraceEnabled()) LOG.trace("" + info + " IS-SPLIT_PARENT=" + info.isSplitParent());<a name="line.173"></a>
+<span class="sourceLineNo">174</span> if (info.isSplitParent()) splitParents.put(info, r);<a name="line.174"></a>
+<span class="sourceLineNo">175</span> if (r.getValue(HConstants.CATALOG_FAMILY, HConstants.MERGEA_QUALIFIER) != null) {<a name="line.175"></a>
+<span class="sourceLineNo">176</span> mergedRegions.put(info, r);<a name="line.176"></a>
+<span class="sourceLineNo">177</span> }<a name="line.177"></a>
+<span class="sourceLineNo">178</span> // Returning true means "keep scanning"<a name="line.178"></a>
+<span class="sourceLineNo">179</span> return true;<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> // Run full scan of hbase:meta catalog table passing in our custom visitor with<a name="line.183"></a>
+<span class="sourceLineNo">184</span> // the start row<a name="line.184"></a>
+<span class="sourceLineNo">185</span> MetaTableAccessor.scanMetaForTableRegions(this.connection, visitor, tableName);<a name="line.185"></a>
+<span class="sourceLineNo">186</span><a name="line.186"></a>
+<span class="sourceLineNo">187</span> return new Triple<>(count.get(), mergedRegions, splitParents);<a name="line.187"></a>
+<span class="sourceLineNo">188</span> }<a name="line.188"></a>
<span class="sourceLineNo">189</span><a name="line.189"></a>
-<span class="sourceLineNo">190</span> return new Triple<>(count.get(), mergedRegions, splitParents);<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> * If merged region no longer holds reference to the merge regions, archive<a name="line.194"></a>
-<span class="sourceLineNo">195</span> * merge region on hdfs and perform deleting references in hbase:meta<a name="line.195"></a>
-<span class="sourceLineNo">196</span> * @param mergedRegion<a name="line.196"></a>
-<span class="sourceLineNo">197</span> * @return true if we delete references in merged region on hbase:meta and archive<a name="line.197"></a>
-<span class="sourceLineNo">198</span> * the files on the file system<a name="line.198"></a>
-<span class="sourceLineNo">199</span> * @throws IOException<a name="line.199"></a>
-<span class="sourceLineNo">200</span> */<a name="line.200"></a>
-<span class="sourceLineNo">201</span> boolean cleanMergeRegion(final RegionInfo mergedRegion,<a name="line.201"></a>
-<span class="sourceLineNo">202</span> final RegionInfo regionA, final RegionInfo regionB) throws IOException {<a name="line.202"></a>
-<span class="sourceLineNo">203</span> FileSystem fs = this.services.getMasterFileSystem().getFileSystem();<a name="line.203"></a>
-<span class="sourceLineNo">204</span> Path rootdir = this.services.getMasterFileSystem().getRootDir();<a name="line.204"></a>
-<span class="sourceLineNo">205</span> Path tabledir = FSUtils.getTableDir(rootdir, mergedRegion.getTable());<a name="line.205"></a>
-<span class="sourceLineNo">206</span> TableDescriptor htd = getTableDescriptor(mergedRegion.getTable());<a name="line.206"></a>
-<span class="sourceLineNo">207</span> HRegionFileSystem regionFs = null;<a name="line.207"></a>
-<span class="sourceLineNo">208</span> try {<a name="line.208"></a>
-<span class="sourceLineNo">209</span> regionFs = HRegionFileSystem.openRegionFromFileSystem(<a name="line.209"></a>
-<span class="sourceLineNo">210</span> this.services.getConfiguration(), fs, tabledir, mergedRegion, true);<a name="line.210"></a>
-<span class="sourceLineNo">211</span> } catch (IOException e) {<a name="line.211"></a>
-<span class="sourceLineNo">212</span> LOG.warn("Merged region does not exist: " + mergedRegion.getEncodedName());<a name="line.212"></a>
-<span class="sourceLineNo">213</span> }<a name="line.213"></a>
-<span class="sourceLineNo">214</span> if (regionFs == null || !regionFs.hasReferences(htd)) {<a name="line.214"></a>
-<span class="sourceLineNo">215</span> LOG.debug("Deleting region " + regionA.getShortNameToLog() + " and "<a name="line.215"></a>
-<span class="sourceLineNo">216</span> + regionB.getShortNameToLog()<a name="line.216"></a>
-<span class="sourceLineNo">217</span> + " from fs because merged region no longer holds references");<a name="line.217"></a>
-<span class="sourceLineNo">218</span> ProcedureExecutor<MasterProcedureEnv> pe = this.services.getMasterProcedureExecutor();<a name="line.218"></a>
-<span class="sourceLineNo">219</span> pe.submitProcedure(new GCMergedRegionsProcedure(pe.getEnvironment(),<a name="line.219"></a>
-<span class="sourceLineNo">220</span> mergedRegion, regionA, regionB));<a name="line.220"></a>
-<span class="sourceLineNo">221</span> // Remove from in-memory states<a name="line.221"></a>
-<span class="sourceLineNo">222</span> this.services.getAssignmentManager().getRegionStates().deleteRegion(regionA);<a name="line.222"></a>
-<span class="sourceLineNo">223</span> this.services.getAssignmentManager().getRegionStates().deleteRegion(regionB);<a name="line.223"></a>
-<span class="sourceLineNo">224</span> this.services.getServerManager().removeRegion(regionA);<a name="line.224"></a>
-<span class="sourceLineNo">225</span> this.services.getServerManager().removeRegion(regionB);<a name="line.225"></a>
-<span class="sourceLineNo">226</span> return true;<a name="line.226"></a>
-<span class="sourceLineNo">227</span> }<a name="line.227"></a>
-<span class="sourceLineNo">228</span> return false;<a name="line.228"></a>
-<span class="sourceLineNo">229</span> }<a name="line.229"></a>
-<span class="sourceLineNo">230</span><a name="line.230"></a>
-<span class="sourceLineNo">231</span> /**<a name="line.231"></a>
-<span class="sourceLineNo">232</span> * Run janitorial scan of catalog <code>hbase:meta</code> table looking for<a name="line.232"></a>
-<span class="sourceLineNo">233</span> * garbage to collect.<a name="line.233"></a>
-<span class="sourceLineNo">234</span> * @return number of archiving jobs started.<a name="line.234"></a>
-<span class="sourceLineNo">235</span> * @throws IOException<a name="line.235"></a>
-<span class="sourceLineNo">236</span> */<a name="line.236"></a>
-<span class="sourceLineNo">237</span> int scan() throws IOException {<a name="line.237"></a>
-<span class="sourceLineNo">238</span> int result = 0;<a name="line.238"></a>
-<span class="sourceLineNo">239</span><a name="line.239"></a>
-<span class="sourceLineNo">240</span> try {<a name="line.240"></a>
-<span class="sourceLineNo">241</span> if (!alreadyRunning.compareAndSet(false, true)) {<a name="line.241"></a>
-<span class="sourceLineNo">242</span> LOG.debug("CatalogJanitor already running");<a name="line.242"></a>
-<span class="sourceLineNo">243</span> return result;<a name="line.243"></a>
-<span class="sourceLineNo">244</span> }<a name="line.244"></a>
-<span class="sourceLineNo">245</span> Triple<Integer, Map<RegionInfo, Result>, Map<RegionInfo, Result>> scanTriple =<a name="line.245"></a>
-<span class="sourceLineNo">246</span> getMergedRegionsAndSplitParents();<a name="line.246"></a>
-<span class="sourceLineNo">247</span> /**<a name="line.247"></a>
-<span class="sourceLineNo">248</span> * clean merge regions first<a name="line.248"></a>
-<span class="sourceLineNo">249</span> */<a name="line.249"></a>
-<span class="sourceLineNo">250</span> Map<RegionInfo, Result> mergedRegions = scanTriple.getSecond();<a name="line.250"></a>
-<span class="sourceLineNo">251</span> for (Map.Entry<RegionInfo, Result> e : mergedRegions.entrySet()) {<a name="line.251"></a>
-<span class="sourceLineNo">252</span> if (this.services.isInMaintenanceMode()) {<a name="line.252"></a>
-<span class="sourceLineNo">253</span> // Stop cleaning if the master is in maintenance mode<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> PairOfSameType<RegionInfo> p = MetaTableAccessor.getMergeRegions(e.getValue());<a name="line.257"></a>
-<span class="sourceLineNo">258</span> RegionInfo regionA = p.getFirst();<a name="line.258"></a>
-<span class="sourceLineNo">259</span> RegionInfo regionB = p.getSecond();<a name="line.259"></a>
-<span class="sourceLineNo">260</span> if (regionA == null || regionB == null) {<a name="line.260"></a>
-<span class="sourceLineNo">261</span> LOG.warn("Unexpected references regionA="<a name="line.261"></a>
-<span class="sourceLineNo">262</span> + (regionA == null ? "null" : regionA.getShortNameToLog())<a name="line.262"></a>
-<span class="sourceLineNo">263</span> + ",regionB="<a name="line.263"></a>
-<span class="sourceLineNo">264</span> + (regionB == null ? "null" : regionB.getShortNameToLog())<a name="line.264"></a>
-<span class="sourceLineNo">265</span> + " in merged region " + e.getKey().getShortNameToLog());<a name="line.265"></a>
-<span class="sourceLineNo">266</span> } else {<a name="line.266"></a>
-<span class="sourceLineNo">267</span> if (cleanMergeRegion(e.getKey(), regionA, regionB)) {<a name="line.267"></a>
-<span class="sourceLineNo">268</span> result++;<a name="line.268"></a>
-<span class="sourceLineNo">269</span> }<a name="line.269"></a>
-<span class="sourceLineNo">270</span> }<a name="line.270"></a>
-<span class="sourceLineNo">271</span> }<a name="line.271"></a>
-<span class="sourceLineNo">272</span> /**<a name="line.272"></a>
-<span class="sourceLineNo">273</span> * clean split parents<a name="line.273"></a>
-<span class="sourceLineNo">274</span> */<a name="line.274"></a>
-<span class="sourceLineNo">275</span> Map<RegionInfo, Result> splitParents = scanTriple.getThird();<a name="line.275"></a>
-<span class="sourceLineNo">276</span><a name="line.276"></a>
-<span class="sourceLineNo">277</span> // Now work on our list of found parents. See if any we can clean up.<a name="line.277"></a>
-<span class="sourceLineNo">278</span> // regions whose parents are still around<a name="line.278"></a>
-<span class="sourceLineNo">279</span> HashSet<String> parentNotCleaned = new HashSet<>();<a name="line.279"></a>
-<span class="sourceLineNo">280</span> for (Map.Entry<RegionInfo, Result> e : splitParents.entrySet()) {<a name="line.280"></a>
-<span class="sourceLineNo">281</span> if (this.services.isInMaintenanceMode()) {<a name="line.281"></a>
-<span class="sourceLineNo">282</span> // Stop cleaning if the master is in maintenance mode<a name="line.282"></a>
-<span class="sourceLineNo">283</span> break;<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 (!parentNotCleaned.contains(e.getKey().getEncodedName()) &&<a name="line.286"></a>
-<span class="sourceLineNo">287</span> cleanParent(e.getKey(), e.getValue())) {<a name="line.287"></a>
-<span class="sourceLineNo">288</span> result++;<a name="line.288"></a>
-<span class="sourceLineNo">289</span> } else {<a name="line.289"></a>
-<span class="sourceLineNo">290</span> // We could not clean the parent, so it's daughters should not be<a name="line.290"></a>
-<span class="sourceLineNo">291</span> // cleaned either (HBASE-6160)<a name="line.291"></a>
-<span class="sourceLineNo">292</span> PairOfSameType<RegionInfo> daughters =<a name="line.292"></a>
-<span class="sourceLineNo">293</span> MetaTableAccessor.getDaughterRegions(e.getValue());<a name="line.293"></a>
-<span class="sourceLineNo">294</span> parentNotCleaned.add(daughters.getFirst().getEncodedName());<a name="line.294"></a>
-<span class="sourceLineNo">295</span> parentNotCleaned.add(daughters.getSecond().getEncodedName());<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> return result;<a name="line.298"></a>
-<span class="sourceLineNo">299</span> } finally {<a name="line.299"></a>
-<span class="sourceLineNo">300</span> alreadyRunning.set(false);<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> /**<a name="line.304"></a>
-<span class="sourceLineNo">305</span> * Compare HRegionInfos in a way that has split parents sort BEFORE their<a name="line.305"></a>
-<span class="sourceLineNo">306</span> * daughters.<a name="line.306"></a>
-<span class="sourceLineNo">307</span> */<a name="line.307"></a>
-<span class="sourceLineNo">308</span> static class SplitParentFirstComparator implements Comparator<RegionInfo> {<a name="line.308"></a>
-<span class="sourceLineNo">309</span> Comparator<byte[]> rowEndKeyComparator = new Bytes.RowEndKeyComparator();<a name="line.309"></a>
-<span class="sourceLineNo">310</span> @Override<a name="line.310"></a>
-<span class="sourceLineNo">311</span> public int compare(RegionInfo left, RegionInfo right) {<a name="line.311"></a>
-<span class="sourceLineNo">312</span> // This comparator differs from the one RegionInfo in that it sorts<a name="line.312"></a>
-<span class="sourceLineNo">313</span> // parent before daughters.<a name="line.313"></a>
-<span class="sourceLineNo">314</span> if (left == null) return -1;<a name="line.314"></a>
-<span class="sourceLineNo">315</span> if (right == null) return 1;<a name="line.315"></a>
-<span class="sourceLineNo">316</span> // Same table name.<a name="line.316"></a>
-<span class="sourceLineNo">317</span> int result = left.getTable().compareTo(right.getTable());<a name="line.317"></a>
+<span class="sourceLineNo">190</span> /**<a name="line.190"></a>
+<span class="sourceLineNo">191</span> * If merged region no longer holds reference to the merge regions, archive<a name="line.191"></a>
+<span class="sourceLineNo">192</span> * merge region on hdfs and perform deleting references in hbase:meta<a name="line.192"></a>
+<span class="sourceLineNo">193</span> * @param mergedRegion<a name="line.193"></a>
+<span class="sourceLineNo">194</span> * @return true if we delete references in merged region on hbase:meta and archive<a name="line.194"></a>
+<span class="sourceLineNo">195</span> * the files on the file system<a name="line.195"></a>
+<span class="sourceLineNo">196</span> * @throws IOException<a name="line.196"></a>
+<span class="sourceLineNo">197</span> */<a name="line.197"></a>
+<span class="sourceLineNo">198</span> boolean cleanMergeRegion(final RegionInfo mergedRegion,<a name="line.198"></a>
+<span class="sourceLineNo">199</span> final RegionInfo regionA, final RegionInfo regionB) throws IOException {<a name="line.199"></a>
+<span class="sourceLineNo">200</span> FileSystem fs = this.services.getMasterFileSystem().getFileSystem();<a name="line.200"></a>
+<span class="sourceLineNo">201</span> Path rootdir = this.services.getMasterFileSystem().getRootDir();<a name="line.201"></a>
+<span class="sourceLineNo">202</span> Path tabledir = FSUtils.getTableDir(rootdir, mergedRegion.getTable());<a name="line.202"></a>
+<span class="sourceLineNo">203</span> TableDescriptor htd = getTableDescriptor(mergedRegion.getTable());<a name="line.203"></a>
+<span class="sourceLineNo">204</span> HRegionFileSystem regionFs = null;<a name="line.204"></a>
+<span class="sourceLineNo">205</span> try {<a name="line.205"></a>
+<span class="sourceLineNo">206</span> regionFs = HRegionFileSystem.openRegionFromFileSystem(<a name="line.206"></a>
+<span class="sourceLineNo">207</span> this.services.getConfiguration(), fs, tabledir, mergedRegion, true);<a name="line.207"></a>
+<span class="sourceLineNo">208</span> } catch (IOException e) {<a name="line.208"></a>
+<span class="sourceLineNo">209</span> LOG.warn("Merged region does not exist: " + mergedRegion.getEncodedName());<a name="line.209"></a>
+<span class="sourceLineNo">210</span> }<a name="line.210"></a>
+<span class="sourceLineNo">211</span> if (regionFs == null || !regionFs.hasReferences(htd)) {<a name="line.211"></a>
+<span class="sourceLineNo">212</span> LOG.debug("Deleting region " + regionA.getShortNameToLog() + " and "<a name="line.212"></a>
+<span class="sourceLineNo">213</span> + regionB.getShortNameToLog()<a name="line.213"></a>
+<span class="sourceLineNo">214</span> + " from fs because merged region no longer holds references");<a name="line.214"></a>
+<span class="sourceLineNo">215</span> ProcedureExecutor<MasterProcedureEnv> pe = this.services.getMasterProcedureExecutor();<a name="line.215"></a>
+<span class="sourceLineNo">216</span> pe.submitProcedure(new GCMergedRegionsProcedure(pe.getEnvironment(),<a name="line.216"></a>
+<span class="sourceLineNo">217</span> mergedRegion, regionA, regionB));<a name="line.217"></a>
+<span class="sourceLineNo">218</span> // Remove from in-memory states<a name="line.218"></a>
+<span class="sourceLineNo">219</span> this.services.getAssignmentManager().getRegionStates().deleteRegion(regionA);<a name="line.219"></a>
+<span class="sourceLineNo">220</span> this.services.getAssignmentManager().getRegionStates().deleteRegion(regionB);<a name="line.220"></a>
+<span class="sourceLineNo">221</span> this.services.getServerManager().removeRegion(regionA);<a name="line.221"></a>
+<span class="sourceLineNo">222</span> this.services.getServerManager().removeRegion(regionB);<a name="line.222"></a>
+<span class="sourceLineNo">223</span> return true;<a name="line.223"></a>
+<span class="sourceLineNo">224</span> }<a name="line.224"></a>
+<span class="sourceLineNo">225</span> return false;<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> * Run janitorial scan of catalog <code>hbase:meta</code> table looking for<a name="line.229"></a>
+<span class="sourceLineNo">230</span> * garbage to collect.<a name="line.230"></a>
+<span class="sourceLineNo">231</span> * @return number of archiving jobs started.<a name="line.231"></a>
+<span class="sourceLineNo">232</span> * @throws IOException<a name="line.232"></a>
+<span class="sourceLineNo">233</span> */<a name="line.233"></a>
+<span class="sourceLineNo">234</span> int scan() throws IOException {<a name="line.234"></a>
+<span class="sourceLineNo">235</span> int result = 0;<a name="line.235"></a>
+<span class="sourceLineNo">236</span><a name="line.236"></a>
+<span class="sourceLineNo">237</span> try {<a name="line.237"></a>
+<span class="sourceLineNo">238</span> if (!alreadyRunning.compareAndSet(false, true)) {<a name="line.238"></a>
+<span class="sourceLineNo">239</span> LOG.debug("CatalogJanitor already running");<a name="line.239"></a>
+<span class="sourceLineNo">240</span> return result;<a name="line.240"></a>
+<span class="sourceLineNo">241</span> }<a name="line.241"></a>
+<span class="sourceLineNo">242</span> Triple<Integer, Map<RegionInfo, Result>, Map<RegionInfo, Result>> scanTriple =<a name="line.242"></a>
+<span class="sourceLineNo">243</span> getMergedRegionsAndSplitParents();<a name="line.243"></a>
+<span class="sourceLineNo">244</span> /**<a name="line.244"></a>
+<span class="sourceLineNo">245</span> * clean merge regions first<a name="line.245"></a>
+<span class="sourceLineNo">246</span> */<a name="line.246"></a>
+<span class="sourceLineNo">247</span> Map<RegionInfo, Result> mergedRegions = scanTriple.getSecond();<a name="line.247"></a>
+<span class="sourceLineNo">248</span> for (Map.Entry<RegionInfo, Result> e : mergedRegions.entrySet()) {<a name="line.248"></a>
+<span class="sourceLineNo">249</span> if (this.services.isInMaintenanceMode()) {<a name="line.249"></a>
+<span class="sourceLineNo">250</span> // Stop cleaning if the master is in maintenance mode<a name="line.250"></a>
+<span class="sourceLineNo">251</span> break;<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> PairOfSameType<RegionInfo> p = MetaTableAccessor.getMergeRegions(e.getValue());<a name="line.254"></a>
+<span class="sourceLineNo">255</span> RegionInfo regionA = p.getFirst();<a name="line.255"></a>
+<span class="sourceLineNo">256</span> RegionInfo regionB = p.getSecond();<a name="line.256"></a>
+<span class="sourceLineNo">257</span> if (regionA == null || regionB == null) {<a name="line.257"></a>
+<span class="sourceLineNo">258</span> LOG.warn("Unexpected references regionA="<a name="line.258"></a>
+<span class="sourceLineNo">259</span> + (regionA == null ? "null" : regionA.getShortNameToLog())<a name="line.259"></a>
+<span class="sourceLineNo">260</span> + ",regionB="<a name="line.260"></a>
+<span class="sourceLineNo">261</span> + (regionB == null ? "null" : regionB.getShortNameToLog())<a name="line.261"></a>
+<span class="sourceLineNo">262</span> + " in merged region " + e.getKey().getShortNameToLog());<a name="line.262"></a>
+<span class="sourceLineNo">263</span> } else {<a name="line.263"></a>
+<span class="sourceLineNo">264</span> if (cleanMergeRegion(e.getKey(), regionA, regionB)) {<a name="line.264"></a>
+<span class="sourceLineNo">265</span> result++;<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> /**<a name="line.269"></a>
+<span class="sourceLineNo">270</span> * clean split parents<a name="line.270"></a>
+<span class="sourceLineNo">271</span> */<a name="line.271"></a>
+<span class="sourceLineNo">272</span> Map<RegionInfo, Result> splitParents = scanTriple.getThird();<a name="line.272"></a>
+<span class="sourceLineNo">273</span><a name="line.273"></a>
+<span class="sourceLineNo">274</span> // Now work on our list of found parents. See if any we can clean up.<a name="line.274"></a>
+<span class="sourceLineNo">275</span> // regions whose parents are still around<a name="line.275"></a>
+<span class="sourceLineNo">276</span> HashSet<String> parentNotCleaned = new HashSet<>();<a name="line.276"></a>
+<span class="sourceLineNo">277</span> for (Map.Entry<RegionInfo, Result> e : splitParents.entrySet()) {<a name="line.277"></a>
+<span class="sourceLineNo">278</span> if (this.services.isInMaintenanceMode()) {<a name="line.278"></a>
+<span class="sourceLineNo">279</span> // Stop cleaning if the master is in maintenance mode<a name="line.279"></a>
+<span class="sourceLineNo">280</span> break;<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> if (!parentNotCleaned.contains(e.getKey().getEncodedName()) &&<a name="line.283"></a>
+<span class="sourceLineNo">284</span> cleanParent(e.getKey(), e.getValue())) {<a name="line.284"></a>
+<span class="sourceLineNo">285</span> result++;<a name="line.285"></a>
+<span class="sourceLineNo">286</span> } else {<a name="line.286"></a>
+<span class="sourceLineNo">287</span> // We could not clean the parent, so it's daughters should not be<a name="line.287"></a>
+<span class="sourceLineNo">288</span> // cleaned either (HBASE-6160)<a name="line.288"></a>
+<span class="sourceLineNo">289</span> PairOfSameType<RegionInfo> daughters =<a name="line.289"></a>
+<span class="sourceLineNo">290</span> MetaTableAccessor.getDaughterRegions(e.getValue());<a name="line.290"></a>
+<span class="sourceLineNo">291</span> parentNotCleaned.add(daughters.getFirst().getEncodedName());<a name="line.291"></a>
+<span class="sourceLineNo">292</span> parentNotCleaned.add(daughters.getSecond().getEncodedName());<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> return result;<a name="line.295"></a>
+<span class="sourceLineNo">296</span> } finally {<a name="line.296"></a>
+<span class="sourceLineNo">297</span> alreadyRunning.set(false);<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> /**<a name="line.301"></a>
+<span class="sourceLineNo">302</span> * Compare HRegionInfos in a way that has split parents sort BEFORE their<a name="line.302"></a>
+<span class="sourceLineNo">303</span> * daughters.<a name="line.303"></a>
+<span class="sourceLineNo">304</span> */<a name="line.304"></a>
+<span class="sourceLineNo">305</span> static class SplitParentFirstComparator implements Comparator<RegionInfo> {<a name="line.305"></a>
+<span class="sourceLineNo">306</span> Comparator<byte[]> rowEndKeyComparator = new Bytes.RowEndKeyComparator();<a name="line.306"></a>
+<span class="sourceLineNo">307</span> @Override<a name="line.307"></a>
+<span class="sourceLineNo">308</span> public int compare(RegionInfo left, RegionInfo right) {<a name="line.308"></a>
+<span class="sourceLineNo">309</span> // This comparator differs from the one RegionInfo in that it sorts<a name="line.309"></a>
+<span class="sourceLineNo">310</span> // parent before daughters.<a name="line.310"></a>
+<span class="sourceLineNo">311</span> if (left == null) return -1;<a name="line.311"></a>
+<span class="sourceLineNo">312</span> if (right == null) return 1;<a name="line.312"></a>
+<span class="sourceLineNo">313</span> // Same table name.<a name="line.313"></a>
+<span class="sourceLineNo">314</span> int result = left.getTable().compareTo(right.getTable());<a name="line.314"></a>
+<span class="sourceLineNo">315</span> if (result != 0) return result;<a name="line.315"></a>
+<span class="sourceLineNo">316</span> // Compare start keys.<a name="line.316"></a>
+<span class="sourceLineNo">317</span> result = Bytes.compareTo(left.getStartKey(), right.getStartKey());<a name="line.317"></a>
<span class="sourceLineNo">318</span> if (result != 0) return result;<a name="line.318"></a>
-<span class="sourceLineNo">319</span> // Compare start keys.<a name="line.319"></a>
-<span class="sourceLineNo">320</span> result = Bytes.compareTo(left.getStartKey(), right.getStartKey());<a name="line.320"></a>
-<span class="sourceLineNo">321</span> if (result != 0) return result;<a name="line.321"></a>
-<span class="sourceLineNo">322</span> // Compare end keys, but flip the operands so parent comes first<a name="line.322"></a>
-<span class="sourceLineNo">323</span> result = rowEndKeyComparator.compare(right.getEndKey(), left.getEndKey());<a name="line.323"></a>
-<span class="sourceLineNo">324</span><a name="line.324"></a>
-<span class="sourceLineNo">325</span> return result;<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> /**<a name="line.329"></a>
-<span class="sourceLineNo">330</span> * If daughters no longer hold reference to the parents, delete the parent.<a name="line.330"></a>
-<span class="sourceLineNo">331</span> * @param parent RegionInfo of split offlined parent<a name="line.331"></a>
-<span class="sourceLineNo">332</span> * @param rowContent Content of <code>parent</code> row in<a name="line.332"></a>
-<span class="sourceLineNo">333</span> * <code>metaRegionName</code><a name="line.333"></a>
-<span class="sourceLineNo">334</span> * @return True if we removed <code>parent</code> from meta table and from<a name="line.334"></a>
-<span class="sourceLineNo">335</span> * the filesystem.<a name="line.335"></a>
-<span class="sourceLineNo">336</span> * @throws IOException<a name="line.336"></a>
-<span class="sourceLineNo">337</span> */<a name="line.337"></a>
-<span class="sourceLineNo">338</span> boolean cleanParent(final RegionInfo parent, Result rowContent)<a name="line.338"></a>
-<span class="sourceLineNo">339</span> throws IOException {<a name="line.339"></a>
-<span class="sourceLineNo">340</span> // Check whether it is a merged region and not clean reference<a name="line.340"></a>
-<span class="sourceLineNo">341</span> // No necessary to check MERGEB_QUALIFIER because these two qualifiers will<a name="line.341"></a>
-<span class="sourceLineNo">342</span> // be inserted/deleted together<a name="line.342"></a>
-<span class="sourceLineNo">343</span> if (rowContent.getValue(HConstants.CATALOG_FAMILY, HConstants.MERGEA_QUALIFIER) != null) {<a name="line.343"></a>
-<span class="sourceLineNo">344</span> // wait cleaning merge region first<a name="line.344"></a>
-<span class="sourceLineNo">345</span> return false;<a name="line.345"></a>
-<span class="sourceLineNo">346</span> }<a name="line.346"></a>
-<span class="sourceLineNo">347</span> // Run checks on each daughter split.<a name="line.347"></a>
-<span class="sourceLineNo">348</span> PairOfSameType<RegionInfo> daughters = MetaTableAccessor.getDaughterRegions(rowContent);<a name="line.348"></a>
-<span class="sourceLineNo">349</span> Pair<Boolean, Boolean> a = checkDaughterInFs(parent, daughters.getFirst());<a name="line.349"></a>
-<span class="sourceLineNo">350</span> Pair<Boolean, Boolean> b = checkDaughterInFs(parent, daughters.getSecond());<a name="line.350"></a>
-<span class="sourceLineNo">351</span> if (hasNoReferences(a) && hasNoReferences(b)) {<a name="line.351"></a>
-<span class="sourceLineNo">352</span> String daughterA = daughters.getFirst() != null?<a name="line.352"></a>
-<span class="sourceLineNo">353</span> daughters.getFirst().getShortNameToLog(): "null";<a name="line.353"></a>
-<span class="sourceLineNo">354</span> String daughterB = daughters.getSecond() != null?<a name="line.354"></a>
-<span class="sourceLineNo">355</span> daughters.getSecond().getShortNameToLog(): "null";<a name="line.355"></a>
-<span class="sourceLineNo">356</span> LOG.debug("Deleting region " + parent.getShortNameToLog() +<a name="line.356"></a>
-<span class="sourceLineNo">357</span> " because daughters -- " + daughterA + ", " + daughterB +<a name="line.357"></a>
-<span class="sourceLineNo">358</span> " -- no longer hold references");<a name="line.358"></a>
-<span class="sourceLineNo">359</span> ProcedureExecutor<MasterProcedureEnv> pe = this.services.getMasterProcedureExecutor();<a name="line.359"></a>
-<span class="sourceLineNo">360</span> pe.submitProcedure(new GCRegionProcedure(pe.getEnvironment(), parent));<a name="line.360"></a>
-<span class="sourceLineNo">361</span> // Remove from in-memory states<a name="line.361"></a>
-<span class="sourceLineNo">362</span> this.services.getAssignmentManager().getRegionStates().deleteRegion(parent);<a name="line.362"></a>
-<span class="sourceLineNo">363</span> this.services.getServerManager().removeRegion(parent);<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> return false;<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> /**<a name="line.369"></a>
-<span class="sourceLineNo">370</span> * @param p A pair where the first boolean says whether or not the daughter<a name="line.370"></a>
-<span class="sourceLineNo">371</span> * region directory exists in the filesystem and then the second boolean says<a name="line.371"></a>
-<span class="sourceLineNo">372</span> * whether the daughter has references to the parent.<a name="line.372"></a>
-<span class="sourceLineNo">373</span> * @return True the passed <code>p</code> signifies no references.<a name="line.373"></a>
-<span class="sourceLineNo">374</span> */<a name="line.374"></a>
-<span class="sourceLineNo">375</span> private boolean hasNoReferences(final Pair<Boolean, Boolean> p) {<a name="line.375"></a>
-<span class="sourceLineNo">376</span> return !p.getFirst() || !p.getSecond();<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> /**<a name="line.379"></a>
-<span class="sourceLineNo">380</span> * Checks if a daughter region -- either splitA or splitB -- still holds<a name="line.380"></a>
-<span class="sourceLineNo">381</span> * references to parent.<a name="line.381"></a>
-<span class="sourceLineNo">382</span> * @param parent Parent region<a name="line.382"></a>
-<span class="sourceLineNo">383</span> * @param daughter Daughter region<a name="line.383"></a>
-<span class="sourceLineNo">384</span> * @return A pair where the first boolean says whether or not the daughter<a name="line.384"></a>
-<span class="sourceLineNo">385</span> * region directory exists in the filesystem and then the second boolean says<a name="line.385"></a>
-<span class="sourceLineNo">386</span> * whether the daughter has references to the parent.<a name="line.386"></a>
-<span class="sourceLineNo">387</span> * @throws IOException<a name="line.387"></a>
-<span class="sourceLineNo">388</span> */<a name="line.388"></a>
-<span class="sourceLineNo">389</span> Pair<Boolean, Boolean> checkDaughterInFs(final RegionInfo parent, final RegionInfo daughter)<a name="line.389"></a>
-<span class="sourceLineNo">390</span> throws IOException {<a name="line.390"></a>
-<span class="sourceLineNo">391</span> if (daughter == null) {<a name="line.391"></a>
-<span class="sourceLineNo">392</span> return new Pair<>(Boolean.FALSE, Boolean.FALSE);<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> FileSystem fs = this.services.getMasterFileSystem().getFileSystem();<a name="line.395"></a>
-<span class="sourceLineNo">396</span> Path rootdir = this.services.getMasterFileSystem().getRootDir();<a name="line.396"></a>
-<span class="sourceLineNo">397</span> Path tabledir = FSUtils.getTableDir(rootdir, daughter.getTable());<a name="line.397"></a>
-<span class="sourceLineNo">398</span><a name="line.398"></a>
-<span class="sourceLineNo">399</span> Path daughterRegionDir = new Path(tabledir, daughter.getEncodedName());<a name="line.399"></a>
-<span class="sourceLineNo">400</span><a name="line.400"></a>
-<span class="sourceLineNo">401</span> HRegionFileSystem regionFs = null;<a name="line.401"></a>
-<span class="sourceLineNo">402</span><a name="line.402"></a>
-<span class="sourceLineNo">403</span> try {<a name="line.403"></a>
-<span class="sourceLineNo">404</span> if (!FSUtils.isExists(fs, daughterRegionDir)) {<a name="line.404"></a>
-<span class="sourceLineNo">405</span> return new Pair<>(Boolean.FALSE, Boolean.FALSE);<a name="line.405"></a>
-<span class="sourceLineNo">406</span> }<a name="line.406"></a>
-<span class="sourceLineNo">407</span> } catch (IOException ioe) {<a name="line.407"></a>
-<span class="sourceLineNo">408</span> LOG.error("Error trying to determine if daughter region exists, " +<a name="line.408"></a>
-<span class="sourceLineNo">409</span> "assuming exists and has references", ioe);<a name="line.409"></a>
-<span class="sourceLineNo">410</span> return new Pair<>(Boolean.TRUE, Boolean.TRUE);<a name="line.410"></a>
-<span class="sourceLineNo">411</span> }<a name="line.411"></a>
-<span class="sourceLineNo">412</span><a name="line.412"></a>
-<span class="sourceLineNo">413</span> boolean references = false;<a name="line.413"></a>
-<span class="sourceLineNo">414</span> TableDescriptor parentDescriptor = getTableDescriptor(parent.getTable());<a name="line.414"></a>
-<span class="sourceLineNo">415</span> try {<a name="line.415"></a>
-<span class="sourceLineNo">416</span> regionFs = HRegionFileSystem.openRegionFromFileSystem(<a name="line.416"></a>
-<span class="sourceLineNo">417</span> this.services.getConfiguration(), fs, tabledir, daughter, true);<a name="line.417"></a>
-<span class="sourceLineNo">418</span><a name="line.418"></a>
-<span class="sourceLineNo">419</span> for (ColumnFamilyDescriptor family: parentDescriptor.getColumnFamilies()) {<a name="line.419"></a>
-<span class="sourceLineNo">420</span> if ((references = regionFs.hasReferences(family.getNameAsString()))) {<a name="line.420"></a>
-<span class="sourceLineNo">421</span> break;<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> } catch (IOException e) {<a name="line.424"></a>
-<span class="sourceLineNo">425</span> LOG.error("Error trying to determine referenced files from : " + daughter.getEncodedName()<a name="line.425"></a>
-<span class="sourceLineNo">426</span> + ", to: " + parent.getEncodedName() + " assuming has references", e);<a name="line.426"></a>
-<span class="sourceLineNo">427</span> return new Pair<>(Boolean.TRUE, Boolean.TRUE);<a name="line.427"></a>
-<span class="sourceLineNo">428</span> }<a name="line.428"></a>
-<span class="sourceLineNo">429</span> return new Pair<>(Boolean.TRUE, Boolean.valueOf(references));<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> private TableDescriptor getTableDescriptor(final TableName tableName)<a name="line.432"></a>
-<span class="sourceLineNo">433</span> throws FileNotFoundException, IOException {<a name="line.433"></a>
-<span class="sourceLineNo">434</span> return this.services.getTableDescriptors().get(tableName);<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> * Checks if the specified region has merge qualifiers, if so, try to clean<a name="line.438"></a>
-<span class="sourceLineNo">439</span> * them<a name="line.439"></a>
-<span class="sourceLineNo">440</span> * @param region<a name="line.440"></a>
-<span class="sourceLineNo">441</span> * @return true if the specified region doesn't have merge qualifier now<a name="line.441"></a>
-<span class="sourceLineNo">442</span> * @throws IOException<a name="line.442"></a>
-<span class="sourceLineNo">443</span> */<a name="line.443"></a>
-<span class="sourceLineNo">444</span> public boolean cleanMergeQualifier(final RegionInfo region)<a name="line.444"></a>
-<span class="sourceLineNo">445</span> throws IOException {<a name="line.445"></a>
-<span class="sourceLineNo">446</span> // Get merge regions if it is a merged region and already has merge<a name="line.446"></a>
-<span class="sourceLineNo">447</span> // qualifier<a name="line.447"></a>
-<span class="sourceLineNo">448</span> Pair<RegionInfo, RegionInfo> mergeRegions = MetaTableAccessor<a name="line.448"></a>
-<span class="sourceLineNo">449</span> .getRegionsFromMergeQualifier(this.services.getConnection(),<a name="line.449"></a>
-<span class="sourceLineNo">450</span> region.getRegionName());<a name="line.450"></a>
-<span class="sourceLineNo">451</span> if (mergeRegions == null<a name="line.451"></a>
-<span class="sourceLineNo">452</span> || (mergeRegions.getFirst() == null && mergeRegions.getSecond() == null)) {<a name="line.452"></a>
-<span class="sourceLineNo">453</span> // It doesn't have merge qualifier, no need to clean<a name="line.453"></a>
-<span class="sourceLineNo">454</span> return true;<a name="line.454"></a>
-<span class="sourceLineNo">455</span> }<a name="line.455"></a>
-<span class="sourceLineNo">456</span> // It shouldn't happen, we must insert/delete these two qualifiers together<a name="line.456"></a>
-<span class="sourceLineNo">457</span> if (mergeRegions.getFirst() == null || mergeRegions.getSecond() == null) {<a name="line.457"></a>
-<span class="sourceLineNo">458</span> LOG.error("Merged region " + region.getRegionNameAsString()<a name="line.458"></a>
-<span class="sourceLineNo">459</span> + " has only one merge qualifier in META.");<a name="line.459"></a>
-<span class="sourceLineNo">460</span> return false;<a name="line.460"></a>
-<span class="sourceLineNo">461</span> }<a name="line.461"></a>
-<span class="sourceLineNo">462</span> return cleanMergeRegion(region, mergeRegions.getFirst(),<a name="line.462"></a>
-<span class="sourceLineNo">463</span> mergeRegions.getSecond());<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">319</span> // Compare end keys, but flip the operands so parent comes first<a name="line.319"></a>
+<span class="sourceLineNo">320</span> result = rowEndKeyComparator.compare(right.getEndKey(), left.getEndKey());<a name="line.320"></a>
+<span class="sourceLineNo">321</span><a name="line.321"></a>
+<span class="sourceLineNo">322</span> return result;<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> /**<a name="line.326"></a>
+<span class="sourceLineNo">327</span> * If daughters no longer hold reference to the parents, delete the parent.<a name="line.327"></a>
+<span class="sourceLineNo">328</span> * @param parent RegionInfo of split offlined parent<a name="line.328"></a>
+<span class="sourceLineNo">329</span> * @param rowContent Content of <code>parent</code> row in<a name="line.329"></a>
+<span class="sourceLineNo">330</span> * <code>metaRegionName</code><a name="line.330"></a>
+<span class="sourceLineNo">331</span> * @return True if we removed <code>parent</code> from meta table and from<a name="line.331"></a>
+<span class="sourceLineNo">332</span> * the filesystem.<a name="line.332"></a>
+<span class="sourceLineNo">333</span> * @throws IOException<a name="line.333"></a>
+<span class="sourceLineNo">334</span> */<a name="line.334"></a>
+<span class="sourceLineNo">335</span> boolean cleanParent(final RegionInfo parent, Result rowContent)<a name="line.335"></a>
+<span class="sourceLineNo">336</span> throws IOException {<a name="line.336"></a>
+<span class="sourceLineNo">337</span> // Check whether it is a merged region and not clean reference<a name="line.337"></a>
+<span class="sourceLineNo">338</span> // No necessary to check MERGEB_QUALIFIER because these two qualifiers will<a name="line.338"></a>
+<span class="sourceLineNo">339</span> // be inserted/deleted together<a name="line.339"></a>
+<span class="sourceLineNo">340</span> if (rowContent.getValue(HConstants.CATALOG_FAMILY, HConstants.MERGEA_QUALIFIER) != null) {<a name="line.340"></a>
+<span class="sourceLineNo">341</span> // wait cleaning merge region first<a name="line.341"></a>
+<span class="sourceLineNo">342</span> return false;<a name="line.342"></a>
+<span class="sourceLineNo">343</span> }<a name="line.343"></a>
+<span class="sourceLineNo">344</span> // Run checks on each daughter split.<a name="line.344"></a>
+<span class="sourceLineNo">345</span> PairOfSameType<RegionInfo> daughters = MetaTableAccessor.getDaughterRegions(rowContent);<a name="line.345"></a>
+<span class="sourceLineNo">346</span> Pair<Boolean, Boolean> a = checkDaughterInFs(parent, daughters.getFirst());<a name="line.346"></a>
+<span class="sourceLineNo">347</span> Pair<Boolean, Boolean> b = checkDaughterInFs(parent, daughters.getSecond());<a name="line.347"></a>
+<span class="sourceLineNo">348</span> if (hasNoReferences(a) && hasNoReferences(b)) {<a name="line.348"></a>
+<span class="sourceLineNo">349</span> String daughterA = daughters.getFirst() != null?<a name="line.349"></a>
+<span class="sourceLineNo">350</span> daughters.getFirst().getShortNameToLog(): "null";<a name="line.350"></a>
+<span class="sourceLineNo">351</span> String daughterB = daughters.getSecond() != null?<a name="line.351"></a>
+<span class="sourceLineNo">352</span> daughters.getSecond().getShortNameToLog(): "null";<a name="line.352"></a>
+<span class="sourceLineNo">353</span> LOG.debug("Deleting region " + parent.getShortNameToLog() +<a name="line.353"></a>
+<span class="sourceLineNo">354</span> " because daughters -- " + daughterA + ", " + daughterB +<a name="line.354"></a>
+<span class="sourceLineNo">355</span> " -- no longer hold references");<a name="line.355"></a>
+<span class="sourceLineNo">356</span> ProcedureExecutor<MasterProcedureEnv> pe = this.services.getMasterProcedureExecutor();<a name="line.356"></a>
+<span class="sourceLineNo">357</span> pe.submitProcedure(new GCRegionProcedure(pe.getEnvironment(), parent));<a name="line.357"></a>
+<span class="sourceLineNo">358</span> // Remove from in-memory states<a name="line.358"></a>
+<span class="sourceLineNo">359</span> this.services.getAssignmentManager().getRegionStates().deleteRegion(parent);<a name="line.359"></a>
+<span class="sourceLineNo">360</span> this.services.getServerManager().removeRegion(parent);<a name="line.360"></a>
+<span class="sourceLineNo">361</span> return true;<a name="line.361"></a>
+<span class="sourceLineNo">362</span> }<a name="line.362"></a>
+<span class="sourceLineNo">363</span> return false;<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> /**<a name="line.366"></a>
+<span class="sourceLineNo">367</span> * @param p A pair where the first boolean says whether or not the daughter<a name="line.367"></a>
+<span class="sourceLineNo">368</span> * region directory exists in the filesystem and then the second boolean says<a name="line.368"></a>
+<span class="sourceLineNo">369</span> * whether the daughter has references to the parent.<a name="line.369"></a>
+<span class="sourceLineNo">370</span> * @return True the passed <code>p</code> signifies no references.<a name="line.370"></a>
+<span class="sourceLineNo">371</span> */<a name="line.371"></a>
+<span class="sourceLineNo">372</span> private boolean hasNoReferences(final Pair<Boolean, Boolean> p) {<a name="line.372"></a>
+<span class="sourceLineNo">373</span> return !p.getFirst() || !p.getSecond();<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> /**<a name="line.376"></a>
+<span class="sourceLineNo">377</span> * Checks if a daughter region -- either splitA or splitB -- still holds<a name="line.377"></a>
+<span class="sourceLineNo">378</span> * references to parent.<a name="line.378"></a>
+<span class="sourceLineNo">379</span> * @param parent Parent region<a name="line.379"></a>
+<span class="sourceLineNo">380</span> * @param daughter Daughter region<a name="line.380"></a>
+<span class="sourceLineNo">381</span> * @return A pair where the first boolean says whether or not the daughter<a name="line.381"></a>
+<span class="sourceLineNo">382</span> * region directory exists in the filesystem and then the second boolean says<a name="line.382"></a>
+<span class="sourceLineNo">383</span> * whether the daughter has references to the parent.<a name="line.383"></a>
+<span class="sourceLineNo">384</span> * @throws IOException<a name="line.384"></a>
+<span class="sourceLineNo">385</span> */<a name="line.385"></a>
+<span class="sourceLineNo">386</span> Pair<Boolean, Boolean> checkDaughterInFs(final RegionInfo parent, final RegionInfo daughter)<a name="line.386"></a>
+<span class="sourceLineNo">387</span> throws IOException {<a name="line.387"></a>
+<span class="sourceLineNo">388</span> if (daughter == null) {<a name="line.388"></a>
+<span class="sourceLineNo">389</span> return new Pair<>(Boolean.FALSE, Boolean.FALSE);<a name="line.389"></a>
+<span class="sourceLineNo">390</span> }<a name="line.390"></a>
+<span class="sourceLineNo">391</span><a name="line.391"></a>
+<span class="sourceLineNo">392</span> FileSystem fs = this.services.getMasterFileSystem().getFileSystem();<a name="line.392"></a>
+<span class="sourceLineNo">393</span> Path rootdir = this.services.getMasterFileSystem().getRootDir();<a name="line.393"></a>
+<span class="sourceLineNo">394</span> Path tabledir = FSUtils.getTableDir(rootdir, daughter.getTable());<a name="line.394"></a>
+<span class="sourceLineNo">395</span><a name="line.395"></a>
+<span class="sourceLineNo">396</span> Path daughterRegionDir = new Path(tabledir, daughter.getEncodedName());<a name="line.396"></a>
+<span class="sourceLineNo">397</span><a name="line.397"></a>
+<span class="sourceLineNo">398</span> HRegionFileSystem regionFs = null;<a name="line.398"></a>
+<span class="sourceLineNo">399</span><a name="line.399"></a>
+<span class="sourceLineNo">400</span> try {<a name="line.400"></a>
+<span class="sourceLineNo">401</span> if (!FSUtils.isExists(fs, daughterRegionDir)) {<a name="line.401"></a>
+<span class="sourceLineNo">402</span> return new Pair<>(Boolean.FALSE, Boolean.FALSE);<a name="line.402"></a>
+<span class="sourceLineNo">403</span> }<a name="line.403"></a>
+<span class="sourceLineNo">404</span> } catch (IOException ioe) {<a name="line.404"></a>
+<span class="sourceLineNo">405</span> LOG.error("Error trying to determine if daughter region exists, " +<a name="line.405"></a>
+<span class="sourceLineNo">406</span> "assuming exists and has references", ioe);<a name="line.406"></a>
+<span class="sourceLineNo">407</span> return new Pair<>(Boolean.TRUE, Boolean.TRUE);<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> boolean references = false;<a name="line.410"></a>
+<span class="sourceLineNo">411</span> TableDescriptor parentDescriptor = getTableDescriptor(parent.getTable());<a name="line.411"></a>
+<span class="sourceLineNo">412</span> try {<a name="line.412"></a>
+<span class="sourceLineNo">413</span> regionFs = HRegionFileSystem.openRegionFromFileSystem(<a name="line.413"></a>
+<span class="sourceLineNo">414</span> this.services.getConfiguration(), fs, tabledir, daughter, true);<a name="line.414"></a>
+<span class="sourceLineNo">415</span><a name="line.415"></a>
+<span class="sourceLineNo">416</span> for (ColumnFamilyDescriptor family: parentDescriptor.getColumnFamilies()) {<a name="line.416"></a>
+<span class="sourceLineNo">417</span> if ((references = regionFs.hasReferences(family.getNameAsString()))) {<a name="line.417"></a>
+<span class="sourceLineNo">418</span> break;<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> } catch (IOException e) {<a name="line.421"></a>
+<span class="sourceLineNo">422</span> LOG.error("Error trying to determine referenced files from : " + daughter.getEncodedName()<a name="line.422"></a>
+<span class="sourceLineNo">423</span> + ", to: " + parent.getEncodedName() + " assuming has references", e);<a name="line.423"></a>
+<span class="sourceLineNo">424</span> return new Pair<>(Boolean.TRUE, Boolean.TRUE);<a name="line.424"></a>
+<span class="sourceLineNo">425</span> }<a name="line.425"></a>
+<span class="sourceLineNo">426</span> return new Pair<>(Boolean.TRUE, Boolean.valueOf(references));<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> private TableDescriptor getTableDescriptor(final TableName tableName)<a name="line.429"></a>
+<span class="sourceLineNo">430</span> throws FileNotFoundException, IOException {<a name="line.430"></a>
+<span class="sourceLineNo">431</span> return this.services.getTableDescriptors().get(tableName);<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> /**<a name="line.434"></a>
+<span class="sourceLineNo">435</span> * Checks if the specified region has merge qualifiers, if so, try to clean<a name="line.435"></a>
+<span class="sourceLineNo">436</span> * them<a name="line.436"></a>
+<span class="sourceLineNo">437</span> * @param region<a name="line.437"></a>
+<span class="sourceLineNo">438</span> * @return true if the specified region doesn't have merge qualifier now<a name="line.438"></a>
+<span class="sourceLineNo">439</span> * @throws IOException<a name="line.439"></a>
+<span class="sourceLineNo">440</span> */<a name="line.440"></a>
+<span class="sourceLineNo">441</span> public boolean cleanMergeQualifier(final RegionInfo region)<a name="line.441"></a>
+<span class="sourceLineNo">442</span> throws IOException {<a name="line.442"></a>
+<span class="sourceLineNo">443</span> // Get merge regions if it is a merged region and already has merge<a name="line.443"></a>
+<span class="sourceLineNo">444</span> // qualifier<a name="line.444"></a>
+<span class="sourceLineNo">445</span> Pair<RegionInfo, RegionInfo> mergeRegions = MetaTableAccessor<a name="line.445"></a>
+<span class="sourceLineNo">446</span> .getRegionsFromMergeQualifier(this.services.getConnection(),<a name="line.446"></a>
+<span class="sourceLineNo">447</span> region.getRegionName());<a name="line.447"></a>
+<span class="sourceLineNo">448</span> if (mergeRegions == null<a name="line.448"></a>
+<span class="sourceLineNo">449</span> || (mergeRegions.getFirst() == null && mergeRegions.getSecond() == null)) {<a name="line.449"></a>
+<span class="sourceLineNo">450</span> // It doesn't have merge qualifier, no need to clean<a name="line.450"></a>
+<span class="sourceLineNo">451</span> return true;<a name="line.451"></a>
+<span class="sourceLineNo">452</span> }<a name="line.452"></a>
+<span class="sourceLineNo">453</span> // It shouldn't happen, we must insert/delete these two qualifiers together<a name="line.453"></a>
+<span class="sourceLineNo">454</span> if (mergeRegions.getFirst() == null || mergeRegions.getSecond() == null) {<a name="line.454"></a>
+<span class="sourceLineNo">455</span> LOG.error("Merged region " + region.getRegionNameAsString()<a name="line.455"></a>
+<span class="sourceLineNo">456</span> + " has only one merge qualifier in META.");<a name="line.456"></a>
+<span class="sourceLineNo">457</span> return false;<a name="line.457"></a>
+<span class="sourceLineNo">458</span> }<a name="line.458"></a>
+<span class="sourceLineNo">459</span> return cleanMergeRegion(region, mergeRegions.getFirst(),<a name="line.459"></a>
+<span class="sourceLineNo">460</span> mergeRegions.getSecond());<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>
[29/51] [partial] hbase-site git commit: Published site at
9101fc246f86445006bfbcdfda5cc495016dc280.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/MasterProcedureEnv.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/MasterProcedureEnv.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/MasterProcedureEnv.html
index b0a820f..15337a1 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/MasterProcedureEnv.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/MasterProcedureEnv.html
@@ -958,7 +958,9 @@
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.LockState.html" title="enum in org.apache.hadoop.hbase.procedure2">Procedure.LockState</a></code></td>
-<td class="colLast"><span class="typeNameLabel">RecoverMetaProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#acquireLock-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">acquireLock</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code> </td>
+<td class="colLast"><span class="typeNameLabel">RecoverMetaProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#acquireLock-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">acquireLock</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
+ </td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.LockState.html" title="enum in org.apache.hadoop.hbase.procedure2">Procedure.LockState</a></code></td>
@@ -985,12 +987,16 @@
<td class="colLast"><span class="typeNameLabel">AbstractStateMachineNamespaceProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/AbstractStateMachineNamespaceProcedure.html#acquireLock-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">acquireLock</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code> </td>
</tr>
<tr class="altColor">
+<td class="colFirst"><code>protected <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.LockState.html" title="enum in org.apache.hadoop.hbase.procedure2">Procedure.LockState</a></code></td>
+<td class="colLast"><span class="typeNameLabel">InitMetaProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html#acquireLock-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">acquireLock</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code> </td>
+</tr>
+<tr class="rowColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><span class="typeNameLabel">CloneSnapshotProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/CloneSnapshotProcedure.html#addRegionsToMeta-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">addRegionsToMeta</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code>
<div class="block">Add regions to hbase:meta table.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>private static void</code></td>
<td class="colLast"><span class="typeNameLabel">CreateTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/CreateTableProcedure.html#addRegionsToMeta-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.client.TableDescriptor-java.util.List-">addRegionsToMeta</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
<a href="../../../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a> tableDescriptor,
@@ -998,48 +1004,48 @@
<div class="block">Add the specified set of regions to the hbase:meta table.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>private static void</code></td>
<td class="colLast"><span class="typeNameLabel">ModifyTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html#addRegionsToMeta-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.client.TableDescriptor-java.util.List-">addRegionsToMeta</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
<a href="../../../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a> tableDescriptor,
<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><<a href="../../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>> regionInfos)</code> </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/util/List.html?is-external=true" title="class or interface in java.util">List</a><<a href="../../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>></code></td>
<td class="colLast"><span class="typeNameLabel">CreateTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/CreateTableProcedure.html#addTableToMeta-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.client.TableDescriptor-java.util.List-">addTableToMeta</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
<a href="../../../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a> tableDescriptor,
<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><<a href="../../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>> regions)</code> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>private static org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.OpenRegionRequest</code></td>
<td class="colLast"><span class="typeNameLabel">RSProcedureDispatcher.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.html#buildOpenRegionRequest-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.ServerName-java.util.List-">buildOpenRegionRequest</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
<a href="../../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName,
<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><<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.RegionOpenOperation.html" title="class in org.apache.hadoop.hbase.master.procedure">RSProcedureDispatcher.RegionOpenOperation</a>> operations)</code> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.OpenRegionRequest.RegionOpenInfo</code></td>
<td class="colLast"><span class="typeNameLabel">RSProcedureDispatcher.RegionOpenOperation.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.RegionOpenOperation.html#buildRegionOpenInfoRequest-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">buildRegionOpenInfoRequest</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>protected static void</code></td>
<td class="colLast"><span class="typeNameLabel">AbstractStateMachineTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.html#checkOnline-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.client.RegionInfo-">checkOnline</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
<a href="../../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> ri)</code>
<div class="block">Check region is online.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><span class="typeNameLabel">AbstractStateMachineRegionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/AbstractStateMachineRegionProcedure.html#checkTableModifiable-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">checkTableModifiable</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code>
<div class="block">Check whether a table is modifiable - exists and either offline or online with config set</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><span class="typeNameLabel">AbstractStateMachineTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.html#checkTableModifiable-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">checkTableModifiable</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code>
<div class="block">Check whether a table is modifiable - exists and either offline or online with config set</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>private static void</code></td>
<td class="colLast"><span class="typeNameLabel">DeleteTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/DeleteTableProcedure.html#cleanAnyRemainingRows-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.TableName-">cleanAnyRemainingRows</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
<a href="../../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> tableName)</code>
@@ -1047,17 +1053,23 @@
info:regioninfo column was empty because of some write error.</div>
</td>
</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><span class="typeNameLabel">RecoverMetaProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#completionCleanup-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">completionCleanup</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
+ </td>
+</tr>
<tr class="altColor">
<td class="colFirst"><code>protected void</code></td>
-<td class="colLast"><span class="typeNameLabel">RecoverMetaProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#completionCleanup-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">completionCleanup</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code> </td>
+<td class="colLast"><span class="typeNameLabel">TruncateTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/TruncateTableProcedure.html#completionCleanup-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">completionCleanup</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected void</code></td>
-<td class="colLast"><span class="typeNameLabel">TruncateTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/TruncateTableProcedure.html#completionCleanup-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">completionCleanup</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code> </td>
+<td class="colLast"><span class="typeNameLabel">ModifyTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html#completionCleanup-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">completionCleanup</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code> </td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected void</code></td>
-<td class="colLast"><span class="typeNameLabel">ModifyTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html#completionCleanup-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">completionCleanup</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code> </td>
+<td class="colLast"><span class="typeNameLabel">InitMetaProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html#completionCleanup-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">completionCleanup</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected static void</code></td>
@@ -1245,107 +1257,115 @@
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2">StateMachineProcedure.Flow</a></code></td>
+<td class="colLast"><span class="typeNameLabel">InitMetaProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html#executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.InitMetaState-">executeFromState</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
+ org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.InitMetaState state)</code> </td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>protected <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2">StateMachineProcedure.Flow</a></code></td>
<td class="colLast"><span class="typeNameLabel">ModifyNamespaceProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/ModifyNamespaceProcedure.html#executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ModifyNamespaceState-">executeFromState</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ModifyNamespaceState state)</code> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>protected <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2">StateMachineProcedure.Flow</a></code></td>
<td class="colLast"><span class="typeNameLabel">ModifyTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html#executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ModifyTableState-">executeFromState</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ModifyTableState state)</code> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>protected <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2">StateMachineProcedure.Flow</a></code></td>
<td class="colLast"><span class="typeNameLabel">RecoverMetaProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RecoverMetaState-">executeFromState</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
- org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RecoverMetaState state)</code> </td>
+ org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RecoverMetaState state)</code>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
+ </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>protected <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2">StateMachineProcedure.Flow</a></code></td>
<td class="colLast"><span class="typeNameLabel">ReopenTableRegionsProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/ReopenTableRegionsProcedure.html#executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ReopenTableRegionsState-">executeFromState</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ReopenTableRegionsState state)</code> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>protected <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2">StateMachineProcedure.Flow</a></code></td>
<td class="colLast"><span class="typeNameLabel">RestoreSnapshotProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html#executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RestoreSnapshotState-">executeFromState</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RestoreSnapshotState state)</code> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>protected <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2">StateMachineProcedure.Flow</a></code></td>
<td class="colLast"><span class="typeNameLabel">ServerCrashProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ServerCrashState-">executeFromState</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ServerCrashState state)</code> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>protected <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2">StateMachineProcedure.Flow</a></code></td>
<td class="colLast"><span class="typeNameLabel">TruncateTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/TruncateTableProcedure.html#executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.TruncateTableState-">executeFromState</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.TruncateTableState state)</code> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>protected static <a href="../../../../../../../org/apache/hadoop/hbase/quotas/MasterQuotaManager.html" title="class in org.apache.hadoop.hbase.quotas">MasterQuotaManager</a></code></td>
<td class="colLast"><span class="typeNameLabel">ProcedureSyncWait.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/ProcedureSyncWait.html#getMasterQuotaManager-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">getMasterQuotaManager</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>protected <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureMetrics.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureMetrics</a></code></td>
<td class="colLast"><span class="typeNameLabel">ServerCrashProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#getProcedureMetrics-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">getProcedureMetrics</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>protected org.apache.hadoop.fs.Path</code></td>
<td class="colLast"><span class="typeNameLabel">AbstractStateMachineTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.html#getRegionDir-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.client.RegionInfo-">getRegionDir</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
<a href="../../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> region)</code> </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/List.html?is-external=true" title="class or interface in java.util">List</a><<a href="../../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>></code></td>
<td class="colLast"><span class="typeNameLabel">ModifyTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html#getRegionInfoList-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">getRegionInfoList</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>private <a href="../../../../../../../org/apache/hadoop/hbase/master/TableNamespaceManager.html" title="class in org.apache.hadoop.hbase.master">TableNamespaceManager</a></code></td>
<td class="colLast"><span class="typeNameLabel">ModifyNamespaceProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/ModifyNamespaceProcedure.html#getTableNamespaceManager-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">getTableNamespaceManager</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>private static <a href="../../../../../../../org/apache/hadoop/hbase/master/TableNamespaceManager.html" title="class in org.apache.hadoop.hbase.master">TableNamespaceManager</a></code></td>
<td class="colLast"><span class="typeNameLabel">CreateNamespaceProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/CreateNamespaceProcedure.html#getTableNamespaceManager-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">getTableNamespaceManager</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>private static <a href="../../../../../../../org/apache/hadoop/hbase/master/TableNamespaceManager.html" title="class in org.apache.hadoop.hbase.master">TableNamespaceManager</a></code></td>
<td class="colLast"><span class="typeNameLabel">DeleteNamespaceProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/DeleteNamespaceProcedure.html#getTableNamespaceManager-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">getTableNamespaceManager</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code> </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/List.html?is-external=true" title="class or interface in java.util">List</a><<a href="../../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>></code></td>
<td class="colLast"><span class="typeNameLabel">ServerCrashProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#handleRIT-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-java.util.List-">handleRIT</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
<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><<a href="../../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>> regions)</code>
<div class="block">Handle any outstanding RIT that are up against this.serverName, the crashed server.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><span class="typeNameLabel">RecoverMetaProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#handleRIT-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.ServerName-">handleRIT</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
<a href="../../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> ri,
<a href="../../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> crashedServerName)</code>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
<div class="block">Is the region stuck assigning to this failedMetaServer? If so, cancel the call
just as we do over in ServerCrashProcedure#handleRIT except less to do here; less context
to carry.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>protected boolean</code></td>
<td class="colLast"><span class="typeNameLabel">AbstractStateMachineRegionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/AbstractStateMachineRegionProcedure.html#hasLock-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">hasLock</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>protected boolean</code></td>
<td class="colLast"><span class="typeNameLabel">AbstractStateMachineRegionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/AbstractStateMachineRegionProcedure.html#holdLock-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">holdLock</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><span class="typeNameLabel">ModifyNamespaceProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/ModifyNamespaceProcedure.html#insertIntoNSTable-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">insertIntoNSTable</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code>
<div class="block">Insert/update the row into namespace table</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>protected static void</code></td>
<td class="colLast"><span class="typeNameLabel">CreateNamespaceProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/CreateNamespaceProcedure.html#insertIntoNSTable-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.NamespaceDescriptor-">insertIntoNSTable</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
<a href="../../../../../../../org/apache/hadoop/hbase/NamespaceDescriptor.html" title="class in org.apache.hadoop.hbase">NamespaceDescriptor</a> nsDescriptor)</code>
<div class="block">Insert the row into ns table</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>protected boolean</code></td>
<td class="colLast"><span class="typeNameLabel">ServerCrashProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#isYieldBeforeExecuteFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ServerCrashState-">isYieldBeforeExecuteFromState</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ServerCrashState state)</code>
@@ -1354,288 +1374,296 @@
before we move to the next.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>protected static void</code></td>
<td class="colLast"><span class="typeNameLabel">CreateTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/CreateTableProcedure.html#moveTempDirectoryToHBaseRoot-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.client.TableDescriptor-org.apache.hadoop.fs.Path-">moveTempDirectoryToHBaseRoot</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
<a href="../../../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a> tableDescriptor,
org.apache.hadoop.fs.Path tempTableDir)</code> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><span class="typeNameLabel">CloneSnapshotProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/CloneSnapshotProcedure.html#postCloneSnapshot-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">postCloneSnapshot</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code>
<div class="block">Action after cloning from snapshot.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><span class="typeNameLabel">CreateTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/CreateTableProcedure.html#postCreate-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">postCreate</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><span class="typeNameLabel">DeleteTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/DeleteTableProcedure.html#postDelete-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">postDelete</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><span class="typeNameLabel">DisableTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/DisableTableProcedure.html#postDisable-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.DisableTableState-">postDisable</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.DisableTableState state)</code>
<div class="block">Action after disabling table.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><span class="typeNameLabel">EnableTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/EnableTableProcedure.html#postEnable-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.EnableTableState-">postEnable</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.EnableTableState state)</code>
<div class="block">Action after enabling table.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><span class="typeNameLabel">ModifyTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html#postModify-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ModifyTableState-">postModify</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ModifyTableState state)</code>
<div class="block">Action after modifying table.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><span class="typeNameLabel">TruncateTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/TruncateTableProcedure.html#postTruncate-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">postTruncate</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><span class="typeNameLabel">CloneSnapshotProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/CloneSnapshotProcedure.html#preCloneSnapshot-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">preCloneSnapshot</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code>
<div class="block">Action before cloning from snapshot.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><span class="typeNameLabel">CreateTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/CreateTableProcedure.html#preCreate-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">preCreate</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>private boolean</code></td>
<td class="colLast"><span class="typeNameLabel">DeleteTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/DeleteTableProcedure.html#preDelete-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">preDelete</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><span class="typeNameLabel">DisableTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/DisableTableProcedure.html#preDisable-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.DisableTableState-">preDisable</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.DisableTableState state)</code>
<div class="block">Action before disabling table.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><span class="typeNameLabel">EnableTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/EnableTableProcedure.html#preEnable-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.EnableTableState-">preEnable</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.EnableTableState state)</code>
<div class="block">Action before enabling table.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><span class="typeNameLabel">AbstractStateMachineTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.html#preflightChecks-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-java.lang.Boolean-">preflightChecks</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a> enabled)</code>
<div class="block">Check that cluster is up and master is running.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><span class="typeNameLabel">ModifyTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html#preModify-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ModifyTableState-">preModify</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ModifyTableState state)</code>
<div class="block">Action before modifying table.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><span class="typeNameLabel">RecoverMetaProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#prepare-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">prepare</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
<div class="block">Prepare for execution</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><span class="typeNameLabel">CloneSnapshotProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/CloneSnapshotProcedure.html#prepareClone-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">prepareClone</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code>
<div class="block">Action before any real action of cloning from snapshot.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>private boolean</code></td>
<td class="colLast"><span class="typeNameLabel">CreateTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/CreateTableProcedure.html#prepareCreate-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">prepareCreate</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>private boolean</code></td>
<td class="colLast"><span class="typeNameLabel">CreateNamespaceProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/CreateNamespaceProcedure.html#prepareCreate-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">prepareCreate</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code>
<div class="block">Action before any real action of creating namespace.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>private boolean</code></td>
<td class="colLast"><span class="typeNameLabel">DeleteTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/DeleteTableProcedure.html#prepareDelete-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">prepareDelete</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>private boolean</code></td>
<td class="colLast"><span class="typeNameLabel">DeleteNamespaceProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/DeleteNamespaceProcedure.html#prepareDelete-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">prepareDelete</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code>
<div class="block">Action before any real action of deleting namespace.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>private boolean</code></td>
<td class="colLast"><span class="typeNameLabel">DisableTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/DisableTableProcedure.html#prepareDisable-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">prepareDisable</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code>
<div class="block">Action before any real action of disabling table.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>private boolean</code></td>
<td class="colLast"><span class="typeNameLabel">EnableTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/EnableTableProcedure.html#prepareEnable-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">prepareEnable</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code>
<div class="block">Action before any real action of enabling table.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>private boolean</code></td>
<td class="colLast"><span class="typeNameLabel">ModifyNamespaceProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/ModifyNamespaceProcedure.html#prepareModify-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">prepareModify</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code>
<div class="block">Action before any real action of adding namespace.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><span class="typeNameLabel">ModifyTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html#prepareModify-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">prepareModify</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code>
<div class="block">Check conditions before any real action of modifying a table.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><span class="typeNameLabel">RestoreSnapshotProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html#prepareRestore-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">prepareRestore</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code>
<div class="block">Action before any real action of restoring from snapshot.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>private boolean</code></td>
<td class="colLast"><span class="typeNameLabel">TruncateTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/TruncateTableProcedure.html#prepareTruncate-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">prepareTruncate</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>private boolean</code></td>
<td class="colLast"><span class="typeNameLabel">TruncateTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/TruncateTableProcedure.html#preTruncate-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">preTruncate</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><span class="typeNameLabel">ServerCrashProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#processMeta-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">processMeta</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>protected void</code></td>
-<td class="colLast"><span class="typeNameLabel">RecoverMetaProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#releaseLock-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">releaseLock</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code> </td>
+<td class="colLast"><span class="typeNameLabel">RecoverMetaProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#releaseLock-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">releaseLock</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
+ </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><span class="typeNameLabel">AbstractStateMachineRegionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/AbstractStateMachineRegionProcedure.html#releaseLock-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">releaseLock</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><span class="typeNameLabel">AbstractStateMachineTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.html#releaseLock-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">releaseLock</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><span class="typeNameLabel">ServerCrashProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#releaseLock-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">releaseLock</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><span class="typeNameLabel">AbstractStateMachineNamespaceProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/AbstractStateMachineNamespaceProcedure.html#releaseLock-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">releaseLock</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><span class="typeNameLabel">RSProcedureDispatcher.CloseRegionRemoteCall.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.CloseRegionRemoteCall.html#remoteCallCompleted-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.CloseRegionResponse-">remoteCallCompleted</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.CloseRegionResponse response)</code> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><span class="typeNameLabel">RSProcedureDispatcher.ExecuteProceduresRemoteCall.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.ExecuteProceduresRemoteCall.html#remoteCallFailed-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-java.io.IOException-">remoteCallFailed</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
<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> e)</code> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><span class="typeNameLabel">RSProcedureDispatcher.OpenRegionRemoteCall.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.OpenRegionRemoteCall.html#remoteCallFailed-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-java.io.IOException-">remoteCallFailed</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
<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> e)</code> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><span class="typeNameLabel">RSProcedureDispatcher.CloseRegionRemoteCall.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.CloseRegionRemoteCall.html#remoteCallFailed-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-java.io.IOException-">remoteCallFailed</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
<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> e)</code> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>protected static void</code></td>
<td class="colLast"><span class="typeNameLabel">DeleteNamespaceProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/DeleteNamespaceProcedure.html#removeFromZKNamespaceManager-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-java.lang.String-">removeFromZKNamespaceManager</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> namespaceName)</code>
<div class="block">remove from ZooKeeper.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>protected static void</code></td>
<td class="colLast"><span class="typeNameLabel">DeleteNamespaceProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/DeleteNamespaceProcedure.html#removeNamespaceQuota-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-java.lang.String-">removeNamespaceQuota</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> namespaceName)</code>
<div class="block">remove quota for the namespace</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><span class="typeNameLabel">RestoreSnapshotProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html#restoreSnapshot-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">restoreSnapshot</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code>
<div class="block">Execute the on-disk Restore</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><span class="typeNameLabel">RestoreSnapshotProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html#restoreSnapshotAcl-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">restoreSnapshotAcl</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><span class="typeNameLabel">CloneSnapshotProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/CloneSnapshotProcedure.html#restoreSnapshotAcl-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">restoreSnapshotAcl</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><span class="typeNameLabel">ModifyTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html#restoreTableDescriptor-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">restoreTableDescriptor</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code>
<div class="block">Undo the descriptor change (for rollback)</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><span class="typeNameLabel">DeleteNamespaceProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/DeleteNamespaceProcedure.html#rollbackDeleteDirectory-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">rollbackDeleteDirectory</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code>
<div class="block">undo delete directory</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><span class="typeNameLabel">CreateNamespaceProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/CreateNamespaceProcedure.html#rollbackSetNamespaceQuota-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">rollbackSetNamespaceQuota</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code>
<div class="block">remove quota for the namespace if exists</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><span class="typeNameLabel">CloneSnapshotProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/CloneSnapshotProcedure.html#rollbackState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.CloneSnapshotState-">rollbackState</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.CloneSnapshotState state)</code> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><span class="typeNameLabel">CreateNamespaceProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/CreateNamespaceProcedure.html#rollbackState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.CreateNamespaceState-">rollbackState</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.CreateNamespaceState state)</code> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><span class="typeNameLabel">CreateTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/CreateTableProcedure.html#rollbackState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.CreateTableState-">rollbackState</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.CreateTableState state)</code> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><span class="typeNameLabel">DeleteNamespaceProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/DeleteNamespaceProcedure.html#rollbackState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.DeleteNamespaceState-">rollbackState</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.DeleteNamespaceState state)</code> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><span class="typeNameLabel">DeleteTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/DeleteTableProcedure.html#rollbackState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.DeleteTableState-">rollbackState</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.DeleteTableState state)</code> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><span class="typeNameLabel">DisableTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/DisableTableProcedure.html#rollbackState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.DisableTableState-">rollbackState</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.DisableTableState state)</code> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><span class="typeNameLabel">EnableTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/EnableTableProcedure.html#rollbackState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.EnableTableState-">rollbackState</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.EnableTableState state)</code> </td>
</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><span class="typeNameLabel">InitMetaProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html#rollbackState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.InitMetaState-">rollbackState</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
+ org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.InitMetaState state)</code> </td>
+</tr>
<tr class="altColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><span class="typeNameLabel">ModifyNamespaceProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/ModifyNamespaceProcedure.html#rollbackState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ModifyNamespaceState-">rollbackState</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
@@ -1649,7 +1677,9 @@
<tr class="altColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><span class="typeNameLabel">RecoverMetaProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#rollbackState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RecoverMetaState-">rollbackState</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
- org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RecoverMetaState recoverMetaState)</code> </td>
+ org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RecoverMetaState recoverMetaState)</code>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
+ </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected void</code></td>
@@ -1761,23 +1791,27 @@
</tr>
<tr class="altColor">
<td class="colFirst"><code>private void</code></td>
+<td class="colLast"><span class="typeNameLabel">ServerCrashProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#splitMetaLogs-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">splitMetaLogs</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code> </td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private void</code></td>
<td class="colLast"><span class="typeNameLabel">DeleteNamespaceProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/DeleteNamespaceProcedure.html#undoDeleteFromNSTable-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">undoDeleteFromNSTable</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code>
<div class="block">undo the delete</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><span class="typeNameLabel">DeleteNamespaceProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/DeleteNamespaceProcedure.html#undoRemoveFromZKNamespaceManager-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">undoRemoveFromZKNamespaceManager</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code>
<div class="block">undo the remove from ZooKeeper</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><span class="typeNameLabel">RestoreSnapshotProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html#updateMETA-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">updateMETA</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code>
<div class="block">Apply changes to hbase:meta</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><span class="typeNameLabel">ModifyTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html#updateReplicaColumnsIfNeeded-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.client.TableDescriptor-org.apache.hadoop.hbase.client.TableDescriptor-">updateReplicaColumnsIfNeeded</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
<a href="../../../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a> oldTableDescriptor,
@@ -1785,37 +1819,37 @@
<div class="block">update replica column families if necessary.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>protected static void</code></td>
<td class="colLast"><span class="typeNameLabel">CreateTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/CreateTableProcedure.html#updateTableDescCache-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.TableName-">updateTableDescCache</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
<a href="../../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> tableName)</code> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><span class="typeNameLabel">RestoreSnapshotProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html#updateTableDescriptor-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">updateTableDescriptor</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code>
<div class="block">Update descriptor</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><span class="typeNameLabel">ModifyTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html#updateTableDescriptor-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">updateTableDescriptor</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code>
<div class="block">Update descriptor</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><span class="typeNameLabel">ModifyNamespaceProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/ModifyNamespaceProcedure.html#updateZKNamespaceManager-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">updateZKNamespaceManager</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code>
<div class="block">Update ZooKeeper.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>protected static void</code></td>
<td class="colLast"><span class="typeNameLabel">CreateNamespaceProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/CreateNamespaceProcedure.html#updateZKNamespaceManager-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.NamespaceDescriptor-">updateZKNamespaceManager</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
<a href="../../../../../../../org/apache/hadoop/hbase/NamespaceDescriptor.html" title="class in org.apache.hadoop.hbase">NamespaceDescriptor</a> nsDescriptor)</code>
<div class="block">Update ZooKeeper.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>static <T> T</code></td>
<td class="colLast"><span class="typeNameLabel">ProcedureSyncWait.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/ProcedureSyncWait.html#waitFor-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-long-long-java.lang.String-org.apache.hadoop.hbase.master.procedure.ProcedureSyncWait.Predicate-">waitFor</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
long waitTime,
@@ -1823,17 +1857,17 @@
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> purpose,
<a href="../../../../../../../org/apache/hadoop/hbase/master/p
<TRUNCATED>
[20/51] [partial] hbase-site git commit: Published site at
9101fc246f86445006bfbcdfda5cc495016dc280.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html b/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html
index fea2b5a..c7a6cc4 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html
@@ -1354,816 +1354,824 @@
<span class="sourceLineNo">1346</span> */<a name="line.1346"></a>
<span class="sourceLineNo">1347</span> public static void putsToMetaTable(final Connection connection, final List<Put> ps)<a name="line.1347"></a>
<span class="sourceLineNo">1348</span> throws IOException {<a name="line.1348"></a>
-<span class="sourceLineNo">1349</span> try (Table t = getMetaHTable(connection)) {<a name="line.1349"></a>
-<span class="sourceLineNo">1350</span> debugLogMutations(ps);<a name="line.1350"></a>
-<span class="sourceLineNo">1351</span> t.put(ps);<a name="line.1351"></a>
-<span class="sourceLineNo">1352</span> }<a name="line.1352"></a>
-<span class="sourceLineNo">1353</span> }<a name="line.1353"></a>
-<span class="sourceLineNo">1354</span><a name="line.1354"></a>
-<span class="sourceLineNo">1355</span> /**<a name="line.1355"></a>
-<span class="sourceLineNo">1356</span> * Delete the passed <code>d</code> from the <code>hbase:meta</code> table.<a name="line.1356"></a>
-<span class="sourceLineNo">1357</span> * @param connection connection we're using<a name="line.1357"></a>
-<span class="sourceLineNo">1358</span> * @param d Delete to add to hbase:meta<a name="line.1358"></a>
-<span class="sourceLineNo">1359</span> */<a name="line.1359"></a>
-<span class="sourceLineNo">1360</span> private static void deleteFromMetaTable(final Connection connection, final Delete d)<a name="line.1360"></a>
-<span class="sourceLineNo">1361</span> throws IOException {<a name="line.1361"></a>
-<span class="sourceLineNo">1362</span> List<Delete> dels = new ArrayList<>(1);<a name="line.1362"></a>
-<span class="sourceLineNo">1363</span> dels.add(d);<a name="line.1363"></a>
-<span class="sourceLineNo">1364</span> deleteFromMetaTable(connection, dels);<a name="line.1364"></a>
-<span class="sourceLineNo">1365</span> }<a name="line.1365"></a>
-<span class="sourceLineNo">1366</span><a name="line.1366"></a>
-<span class="sourceLineNo">1367</span> /**<a name="line.1367"></a>
-<span class="sourceLineNo">1368</span> * Delete the passed <code>deletes</code> from the <code>hbase:meta</code> table.<a name="line.1368"></a>
-<span class="sourceLineNo">1369</span> * @param connection connection we're using<a name="line.1369"></a>
-<span class="sourceLineNo">1370</span> * @param deletes Deletes to add to hbase:meta This list should support #remove.<a name="line.1370"></a>
-<span class="sourceLineNo">1371</span> */<a name="line.1371"></a>
-<span class="sourceLineNo">1372</span> private static void deleteFromMetaTable(final Connection connection, final List<Delete> deletes)<a name="line.1372"></a>
-<span class="sourceLineNo">1373</span> throws IOException {<a name="line.1373"></a>
-<span class="sourceLineNo">1374</span> try (Table t = getMetaHTable(connection)) {<a name="line.1374"></a>
-<span class="sourceLineNo">1375</span> debugLogMutations(deletes);<a name="line.1375"></a>
-<span class="sourceLineNo">1376</span> t.delete(deletes);<a name="line.1376"></a>
-<span class="sourceLineNo">1377</span> }<a name="line.1377"></a>
-<span class="sourceLineNo">1378</span> }<a name="line.1378"></a>
-<span class="sourceLineNo">1379</span><a name="line.1379"></a>
-<span class="sourceLineNo">1380</span> /**<a name="line.1380"></a>
-<span class="sourceLineNo">1381</span> * Deletes some replica columns corresponding to replicas for the passed rows<a name="line.1381"></a>
-<span class="sourceLineNo">1382</span> * @param metaRows rows in hbase:meta<a name="line.1382"></a>
-<span class="sourceLineNo">1383</span> * @param replicaIndexToDeleteFrom the replica ID we would start deleting from<a name="line.1383"></a>
-<span class="sourceLineNo">1384</span> * @param numReplicasToRemove how many replicas to remove<a name="line.1384"></a>
-<span class="sourceLineNo">1385</span> * @param connection connection we're using to access meta table<a name="line.1385"></a>
-<span class="sourceLineNo">1386</span> */<a name="line.1386"></a>
-<span class="sourceLineNo">1387</span> public static void removeRegionReplicasFromMeta(Set<byte[]> metaRows,<a name="line.1387"></a>
-<span class="sourceLineNo">1388</span> int replicaIndexToDeleteFrom, int numReplicasToRemove, Connection connection)<a name="line.1388"></a>
-<span class="sourceLineNo">1389</span> throws IOException {<a name="line.1389"></a>
-<span class="sourceLineNo">1390</span> int absoluteIndex = replicaIndexToDeleteFrom + numReplicasToRemove;<a name="line.1390"></a>
-<span class="sourceLineNo">1391</span> for (byte[] row : metaRows) {<a name="line.1391"></a>
-<span class="sourceLineNo">1392</span> long now = EnvironmentEdgeManager.currentTime();<a name="line.1392"></a>
-<span class="sourceLineNo">1393</span> Delete deleteReplicaLocations = new Delete(row);<a name="line.1393"></a>
-<span class="sourceLineNo">1394</span> for (int i = replicaIndexToDeleteFrom; i < absoluteIndex; i++) {<a name="line.1394"></a>
-<span class="sourceLineNo">1395</span> deleteReplicaLocations.addColumns(getCatalogFamily(),<a name="line.1395"></a>
-<span class="sourceLineNo">1396</span> getServerColumn(i), now);<a name="line.1396"></a>
-<span class="sourceLineNo">1397</span> deleteReplicaLocations.addColumns(getCatalogFamily(),<a name="line.1397"></a>
-<span class="sourceLineNo">1398</span> getSeqNumColumn(i), now);<a name="line.1398"></a>
-<span class="sourceLineNo">1399</span> deleteReplicaLocations.addColumns(getCatalogFamily(),<a name="line.1399"></a>
-<span class="sourceLineNo">1400</span> getStartCodeColumn(i), now);<a name="line.1400"></a>
-<span class="sourceLineNo">1401</span> }<a name="line.1401"></a>
-<span class="sourceLineNo">1402</span> deleteFromMetaTable(connection, deleteReplicaLocations);<a name="line.1402"></a>
-<span class="sourceLineNo">1403</span> }<a name="line.1403"></a>
-<span class="sourceLineNo">1404</span> }<a name="line.1404"></a>
-<span class="sourceLineNo">1405</span><a name="line.1405"></a>
-<span class="sourceLineNo">1406</span> /**<a name="line.1406"></a>
-<span class="sourceLineNo">1407</span> * Execute the passed <code>mutations</code> against <code>hbase:meta</code> table.<a name="line.1407"></a>
-<span class="sourceLineNo">1408</span> * @param connection connection we're using<a name="line.1408"></a>
-<span class="sourceLineNo">1409</span> * @param mutations Puts and Deletes to execute on hbase:meta<a name="line.1409"></a>
-<span class="sourceLineNo">1410</span> * @throws IOException<a name="line.1410"></a>
-<span class="sourceLineNo">1411</span> */<a name="line.1411"></a>
-<span class="sourceLineNo">1412</span> public static void mutateMetaTable(final Connection connection,<a name="line.1412"></a>
-<span class="sourceLineNo">1413</span> final List<Mutation> mutations)<a name="line.1413"></a>
-<span class="sourceLineNo">1414</span> throws IOException {<a name="line.1414"></a>
-<span class="sourceLineNo">1415</span> Table t = getMetaHTable(connection);<a name="line.1415"></a>
-<span class="sourceLineNo">1416</span> try {<a name="line.1416"></a>
-<span class="sourceLineNo">1417</span> debugLogMutations(mutations);<a name="line.1417"></a>
-<span class="sourceLineNo">1418</span> t.batch(mutations, null);<a name="line.1418"></a>
-<span class="sourceLineNo">1419</span> } catch (InterruptedException e) {<a name="line.1419"></a>
-<span class="sourceLineNo">1420</span> InterruptedIOException ie = new InterruptedIOException(e.getMessage());<a name="line.1420"></a>
-<span class="sourceLineNo">1421</span> ie.initCause(e);<a name="line.1421"></a>
-<span class="sourceLineNo">1422</span> throw ie;<a name="line.1422"></a>
-<span class="sourceLineNo">1423</span> } finally {<a name="line.1423"></a>
-<span class="sourceLineNo">1424</span> t.close();<a name="line.1424"></a>
-<span class="sourceLineNo">1425</span> }<a name="line.1425"></a>
-<span class="sourceLineNo">1426</span> }<a name="line.1426"></a>
-<span class="sourceLineNo">1427</span><a name="line.1427"></a>
-<span class="sourceLineNo">1428</span> private static void addRegionStateToPut(Put put, RegionState.State state) throws IOException {<a name="line.1428"></a>
-<span class="sourceLineNo">1429</span> put.add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.1429"></a>
-<span class="sourceLineNo">1430</span> .setRow(put.getRow())<a name="line.1430"></a>
-<span class="sourceLineNo">1431</span> .setFamily(HConstants.CATALOG_FAMILY)<a name="line.1431"></a>
-<span class="sourceLineNo">1432</span> .setQualifier(getRegionStateColumn())<a name="line.1432"></a>
-<span class="sourceLineNo">1433</span> .setTimestamp(put.getTimestamp())<a name="line.1433"></a>
-<span class="sourceLineNo">1434</span> .setType(Cell.Type.Put)<a name="line.1434"></a>
-<span class="sourceLineNo">1435</span> .setValue(Bytes.toBytes(state.name()))<a name="line.1435"></a>
-<span class="sourceLineNo">1436</span> .build());<a name="line.1436"></a>
-<span class="sourceLineNo">1437</span> }<a name="line.1437"></a>
-<span class="sourceLineNo">1438</span><a name="line.1438"></a>
-<span class="sourceLineNo">1439</span> /**<a name="line.1439"></a>
-<span class="sourceLineNo">1440</span> * Adds daughter region infos to hbase:meta row for the specified region. Note that this does not<a name="line.1440"></a>
-<span class="sourceLineNo">1441</span> * add its daughter's as different rows, but adds information about the daughters in the same row<a name="line.1441"></a>
-<span class="sourceLineNo">1442</span> * as the parent. Use<a name="line.1442"></a>
-<span class="sourceLineNo">1443</span> * {@link #splitRegion(Connection, RegionInfo, long, RegionInfo, RegionInfo, ServerName, int)}<a name="line.1443"></a>
-<span class="sourceLineNo">1444</span> * if you want to do that.<a name="line.1444"></a>
-<span class="sourceLineNo">1445</span> * @param connection connection we're using<a name="line.1445"></a>
-<span class="sourceLineNo">1446</span> * @param regionInfo RegionInfo of parent region<a name="line.1446"></a>
-<span class="sourceLineNo">1447</span> * @param splitA first split daughter of the parent regionInfo<a name="line.1447"></a>
-<span class="sourceLineNo">1448</span> * @param splitB second split daughter of the parent regionInfo<a name="line.1448"></a>
-<span class="sourceLineNo">1449</span> * @throws IOException if problem connecting or updating meta<a name="line.1449"></a>
-<span class="sourceLineNo">1450</span> */<a name="line.1450"></a>
-<span class="sourceLineNo">1451</span> public static void addSplitsToParent(Connection connection, RegionInfo regionInfo,<a name="line.1451"></a>
-<span class="sourceLineNo">1452</span> RegionInfo splitA, RegionInfo splitB) throws IOException {<a name="line.1452"></a>
-<span class="sourceLineNo">1453</span> Table meta = getMetaHTable(connection);<a name="line.1453"></a>
-<span class="sourceLineNo">1454</span> try {<a name="line.1454"></a>
-<span class="sourceLineNo">1455</span> Put put = makePutFromRegionInfo(regionInfo, EnvironmentEdgeManager.currentTime());<a name="line.1455"></a>
-<span class="sourceLineNo">1456</span> addDaughtersToPut(put, splitA, splitB);<a name="line.1456"></a>
-<span class="sourceLineNo">1457</span> meta.put(put);<a name="line.1457"></a>
-<span class="sourceLineNo">1458</span> debugLogMutation(put);<a name="line.1458"></a>
-<span class="sourceLineNo">1459</span> LOG.debug("Added region {}", regionInfo.getRegionNameAsString());<a name="line.1459"></a>
-<span class="sourceLineNo">1460</span> } finally {<a name="line.1460"></a>
-<span class="sourceLineNo">1461</span> meta.close();<a name="line.1461"></a>
-<span class="sourceLineNo">1462</span> }<a name="line.1462"></a>
-<span class="sourceLineNo">1463</span> }<a name="line.1463"></a>
-<span class="sourceLineNo">1464</span><a name="line.1464"></a>
-<span class="sourceLineNo">1465</span> /**<a name="line.1465"></a>
-<span class="sourceLineNo">1466</span> * Adds a (single) hbase:meta row for the specified new region and its daughters. Note that this<a name="line.1466"></a>
-<span class="sourceLineNo">1467</span> * does not add its daughter's as different rows, but adds information about the daughters<a name="line.1467"></a>
-<span class="sourceLineNo">1468</span> * in the same row as the parent. Use<a name="line.1468"></a>
-<span class="sourceLineNo">1469</span> * {@link #splitRegion(Connection, RegionInfo, long, RegionInfo, RegionInfo, ServerName, int)}<a name="line.1469"></a>
-<span class="sourceLineNo">1470</span> * if you want to do that.<a name="line.1470"></a>
-<span class="sourceLineNo">1471</span> * @param connection connection we're using<a name="line.1471"></a>
-<span class="sourceLineNo">1472</span> * @param regionInfo region information<a name="line.1472"></a>
-<span class="sourceLineNo">1473</span> * @throws IOException if problem connecting or updating meta<a name="line.1473"></a>
-<span class="sourceLineNo">1474</span> */<a name="line.1474"></a>
-<span class="sourceLineNo">1475</span> @VisibleForTesting<a name="line.1475"></a>
-<span class="sourceLineNo">1476</span> public static void addRegionToMeta(Connection connection, RegionInfo regionInfo)<a name="line.1476"></a>
-<span class="sourceLineNo">1477</span> throws IOException {<a name="line.1477"></a>
-<span class="sourceLineNo">1478</span> addRegionsToMeta(connection, Collections.singletonList(regionInfo), 1);<a name="line.1478"></a>
-<span class="sourceLineNo">1479</span> }<a name="line.1479"></a>
-<span class="sourceLineNo">1480</span><a name="line.1480"></a>
-<span class="sourceLineNo">1481</span> /**<a name="line.1481"></a>
-<span class="sourceLineNo">1482</span> * Adds a hbase:meta row for each of the specified new regions. Initial state for new regions<a name="line.1482"></a>
-<span class="sourceLineNo">1483</span> * is CLOSED.<a name="line.1483"></a>
-<span class="sourceLineNo">1484</span> * @param connection connection we're using<a name="line.1484"></a>
-<span class="sourceLineNo">1485</span> * @param regionInfos region information list<a name="line.1485"></a>
-<span class="sourceLineNo">1486</span> * @throws IOException if problem connecting or updating meta<a name="line.1486"></a>
-<span class="sourceLineNo">1487</span> */<a name="line.1487"></a>
-<span class="sourceLineNo">1488</span> public static void addRegionsToMeta(Connection connection, List<RegionInfo> regionInfos,<a name="line.1488"></a>
-<span class="sourceLineNo">1489</span> int regionReplication) throws IOException {<a name="line.1489"></a>
-<span class="sourceLineNo">1490</span> addRegionsToMeta(connection, regionInfos, regionReplication,<a name="line.1490"></a>
-<span class="sourceLineNo">1491</span> EnvironmentEdgeManager.currentTime());<a name="line.1491"></a>
-<span class="sourceLineNo">1492</span> }<a name="line.1492"></a>
-<span class="sourceLineNo">1493</span><a name="line.1493"></a>
-<span class="sourceLineNo">1494</span> /**<a name="line.1494"></a>
-<span class="sourceLineNo">1495</span> * Adds a hbase:meta row for each of the specified new regions. Initial state for new regions<a name="line.1495"></a>
-<span class="sourceLineNo">1496</span> * is CLOSED.<a name="line.1496"></a>
-<span class="sourceLineNo">1497</span> * @param connection connection we're using<a name="line.1497"></a>
-<span class="sourceLineNo">1498</span> * @param regionInfos region information list<a name="line.1498"></a>
-<span class="sourceLineNo">1499</span> * @param regionReplication<a name="line.1499"></a>
-<span class="sourceLineNo">1500</span> * @param ts desired timestamp<a name="line.1500"></a>
-<span class="sourceLineNo">1501</span> * @throws IOException if problem connecting or updating meta<a name="line.1501"></a>
-<span class="sourceLineNo">1502</span> */<a name="line.1502"></a>
-<span class="sourceLineNo">1503</span> private static void addRegionsToMeta(Connection connection, List<RegionInfo> regionInfos,<a name="line.1503"></a>
-<span class="sourceLineNo">1504</span> int regionReplication, long ts) throws IOException {<a name="line.1504"></a>
-<span class="sourceLineNo">1505</span> List<Put> puts = new ArrayList<>();<a name="line.1505"></a>
-<span class="sourceLineNo">1506</span> for (RegionInfo regionInfo : regionInfos) {<a name="line.1506"></a>
-<span class="sourceLineNo">1507</span> if (RegionReplicaUtil.isDefaultReplica(regionInfo)) {<a name="line.1507"></a>
-<span class="sourceLineNo">1508</span> Put put = makePutFromRegionInfo(regionInfo, ts);<a name="line.1508"></a>
-<span class="sourceLineNo">1509</span> // New regions are added with initial state of CLOSED.<a name="line.1509"></a>
-<span class="sourceLineNo">1510</span> addRegionStateToPut(put, RegionState.State.CLOSED);<a name="line.1510"></a>
-<span class="sourceLineNo">1511</span> // Add empty locations for region replicas so that number of replicas can be cached<a name="line.1511"></a>
-<span class="sourceLineNo">1512</span> // whenever the primary region is looked up from meta<a name="line.1512"></a>
-<span class="sourceLineNo">1513</span> for (int i = 1; i < regionReplication; i++) {<a name="line.1513"></a>
-<span class="sourceLineNo">1514</span> addEmptyLocation(put, i);<a name="line.1514"></a>
-<span class="sourceLineNo">1515</span> }<a name="line.1515"></a>
-<span class="sourceLineNo">1516</span> puts.add(put);<a name="line.1516"></a>
-<span class="sourceLineNo">1517</span> }<a name="line.1517"></a>
-<span class="sourceLineNo">1518</span> }<a name="line.1518"></a>
-<span class="sourceLineNo">1519</span> putsToMetaTable(connection, puts);<a name="line.1519"></a>
-<span class="sourceLineNo">1520</span> LOG.info("Added {} regions to meta.", puts.size());<a name="line.1520"></a>
-<span class="sourceLineNo">1521</span> }<a name="line.1521"></a>
-<span class="sourceLineNo">1522</span><a name="line.1522"></a>
-<span class="sourceLineNo">1523</span> /**<a name="line.1523"></a>
-<span class="sourceLineNo">1524</span> * Merge the two regions into one in an atomic operation. Deletes the two merging regions in<a name="line.1524"></a>
-<span class="sourceLineNo">1525</span> * hbase:meta and adds the merged region with the information of two merging regions.<a name="line.1525"></a>
-<span class="sourceLineNo">1526</span> * @param connection connection we're using<a name="line.1526"></a>
-<span class="sourceLineNo">1527</span> * @param mergedRegion the merged region<a name="line.1527"></a>
-<span class="sourceLineNo">1528</span> * @param regionA merge parent region A<a name="line.1528"></a>
-<span class="sourceLineNo">1529</span> * @param regionAOpenSeqNum the next open sequence id for region A, used by serial replication. -1<a name="line.1529"></a>
-<span class="sourceLineNo">1530</span> * if not necessary.<a name="line.1530"></a>
-<span class="sourceLineNo">1531</span> * @param regionB merge parent region B<a name="line.1531"></a>
-<span class="sourceLineNo">1532</span> * @param regionBOpenSeqNum the next open sequence id for region B, used by serial replication. -1<a name="line.1532"></a>
-<span class="sourceLineNo">1533</span> * if not necessary.<a name="line.1533"></a>
-<span class="sourceLineNo">1534</span> * @param sn the location of the region<a name="line.1534"></a>
-<span class="sourceLineNo">1535</span> */<a name="line.1535"></a>
-<span class="sourceLineNo">1536</span> public static void mergeRegions(Connection connection, RegionInfo mergedRegion,<a name="line.1536"></a>
-<span class="sourceLineNo">1537</span> RegionInfo regionA, long regionAOpenSeqNum, RegionInfo regionB, long regionBOpenSeqNum,<a name="line.1537"></a>
-<span class="sourceLineNo">1538</span> ServerName sn, int regionReplication) throws IOException {<a name="line.1538"></a>
-<span class="sourceLineNo">1539</span> try (Table meta = getMetaHTable(connection)) {<a name="line.1539"></a>
-<span class="sourceLineNo">1540</span> long time = EnvironmentEdgeManager.currentTime();<a name="line.1540"></a>
-<span class="sourceLineNo">1541</span> List<Mutation> mutations = new ArrayList<>();<a name="line.1541"></a>
-<span class="sourceLineNo">1542</span><a name="line.1542"></a>
-<span class="sourceLineNo">1543</span> List<RegionInfo> replicationParents = new ArrayList<>(2);<a name="line.1543"></a>
-<span class="sourceLineNo">1544</span> // Deletes for merging regions<a name="line.1544"></a>
-<span class="sourceLineNo">1545</span> mutations.add(makeDeleteFromRegionInfo(regionA, time));<a name="line.1545"></a>
-<span class="sourceLineNo">1546</span> if (regionAOpenSeqNum > 0) {<a name="line.1546"></a>
-<span class="sourceLineNo">1547</span> mutations.add(makePutForReplicationBarrier(regionA, regionAOpenSeqNum, time));<a name="line.1547"></a>
-<span class="sourceLineNo">1548</span> replicationParents.add(regionA);<a name="line.1548"></a>
-<span class="sourceLineNo">1549</span> }<a name="line.1549"></a>
-<span class="sourceLineNo">1550</span> mutations.add(makeDeleteFromRegionInfo(regionB, time));<a name="line.1550"></a>
-<span class="sourceLineNo">1551</span> if (regionBOpenSeqNum > 0) {<a name="line.1551"></a>
-<span class="sourceLineNo">1552</span> mutations.add(makePutForReplicationBarrier(regionB, regionBOpenSeqNum, time));<a name="line.1552"></a>
-<span class="sourceLineNo">1553</span> replicationParents.add(regionB);<a name="line.1553"></a>
-<span class="sourceLineNo">1554</span> }<a name="line.1554"></a>
-<span class="sourceLineNo">1555</span><a name="line.1555"></a>
-<span class="sourceLineNo">1556</span> // Put for parent<a name="line.1556"></a>
-<span class="sourceLineNo">1557</span> Put putOfMerged = makePutFromRegionInfo(mergedRegion, time);<a name="line.1557"></a>
-<span class="sourceLineNo">1558</span> putOfMerged.add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.1558"></a>
-<span class="sourceLineNo">1559</span> .setRow(putOfMerged.getRow())<a name="line.1559"></a>
-<span class="sourceLineNo">1560</span> .setFamily(HConstants.CATALOG_FAMILY)<a name="line.1560"></a>
-<span class="sourceLineNo">1561</span> .setQualifier(HConstants.MERGEA_QUALIFIER)<a name="line.1561"></a>
-<span class="sourceLineNo">1562</span> .setTimestamp(putOfMerged.getTimestamp())<a name="line.1562"></a>
-<span class="sourceLineNo">1563</span> .setType(Type.Put)<a name="line.1563"></a>
-<span class="sourceLineNo">1564</span> .setValue(RegionInfo.toByteArray(regionA))<a name="line.1564"></a>
-<span class="sourceLineNo">1565</span> .build())<a name="line.1565"></a>
-<span class="sourceLineNo">1566</span> .add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.1566"></a>
+<span class="sourceLineNo">1349</span> if (ps.isEmpty()) {<a name="line.1349"></a>
+<span class="sourceLineNo">1350</span> return;<a name="line.1350"></a>
+<span class="sourceLineNo">1351</span> }<a name="line.1351"></a>
+<span class="sourceLineNo">1352</span> try (Table t = getMetaHTable(connection)) {<a name="line.1352"></a>
+<span class="sourceLineNo">1353</span> debugLogMutations(ps);<a name="line.1353"></a>
+<span class="sourceLineNo">1354</span> // the implementation for putting a single Put is much simpler so here we do a check first.<a name="line.1354"></a>
+<span class="sourceLineNo">1355</span> if (ps.size() == 1) {<a name="line.1355"></a>
+<span class="sourceLineNo">1356</span> t.put(ps.get(0));<a name="line.1356"></a>
+<span class="sourceLineNo">1357</span> } else {<a name="line.1357"></a>
+<span class="sourceLineNo">1358</span> t.put(ps);<a name="line.1358"></a>
+<span class="sourceLineNo">1359</span> }<a name="line.1359"></a>
+<span class="sourceLineNo">1360</span> }<a name="line.1360"></a>
+<span class="sourceLineNo">1361</span> }<a name="line.1361"></a>
+<span class="sourceLineNo">1362</span><a name="line.1362"></a>
+<span class="sourceLineNo">1363</span> /**<a name="line.1363"></a>
+<span class="sourceLineNo">1364</span> * Delete the passed <code>d</code> from the <code>hbase:meta</code> table.<a name="line.1364"></a>
+<span class="sourceLineNo">1365</span> * @param connection connection we're using<a name="line.1365"></a>
+<span class="sourceLineNo">1366</span> * @param d Delete to add to hbase:meta<a name="line.1366"></a>
+<span class="sourceLineNo">1367</span> */<a name="line.1367"></a>
+<span class="sourceLineNo">1368</span> private static void deleteFromMetaTable(final Connection connection, final Delete d)<a name="line.1368"></a>
+<span class="sourceLineNo">1369</span> throws IOException {<a name="line.1369"></a>
+<span class="sourceLineNo">1370</span> List<Delete> dels = new ArrayList<>(1);<a name="line.1370"></a>
+<span class="sourceLineNo">1371</span> dels.add(d);<a name="line.1371"></a>
+<span class="sourceLineNo">1372</span> deleteFromMetaTable(connection, dels);<a name="line.1372"></a>
+<span class="sourceLineNo">1373</span> }<a name="line.1373"></a>
+<span class="sourceLineNo">1374</span><a name="line.1374"></a>
+<span class="sourceLineNo">1375</span> /**<a name="line.1375"></a>
+<span class="sourceLineNo">1376</span> * Delete the passed <code>deletes</code> from the <code>hbase:meta</code> table.<a name="line.1376"></a>
+<span class="sourceLineNo">1377</span> * @param connection connection we're using<a name="line.1377"></a>
+<span class="sourceLineNo">1378</span> * @param deletes Deletes to add to hbase:meta This list should support #remove.<a name="line.1378"></a>
+<span class="sourceLineNo">1379</span> */<a name="line.1379"></a>
+<span class="sourceLineNo">1380</span> private static void deleteFromMetaTable(final Connection connection, final List<Delete> deletes)<a name="line.1380"></a>
+<span class="sourceLineNo">1381</span> throws IOException {<a name="line.1381"></a>
+<span class="sourceLineNo">1382</span> try (Table t = getMetaHTable(connection)) {<a name="line.1382"></a>
+<span class="sourceLineNo">1383</span> debugLogMutations(deletes);<a name="line.1383"></a>
+<span class="sourceLineNo">1384</span> t.delete(deletes);<a name="line.1384"></a>
+<span class="sourceLineNo">1385</span> }<a name="line.1385"></a>
+<span class="sourceLineNo">1386</span> }<a name="line.1386"></a>
+<span class="sourceLineNo">1387</span><a name="line.1387"></a>
+<span class="sourceLineNo">1388</span> /**<a name="line.1388"></a>
+<span class="sourceLineNo">1389</span> * Deletes some replica columns corresponding to replicas for the passed rows<a name="line.1389"></a>
+<span class="sourceLineNo">1390</span> * @param metaRows rows in hbase:meta<a name="line.1390"></a>
+<span class="sourceLineNo">1391</span> * @param replicaIndexToDeleteFrom the replica ID we would start deleting from<a name="line.1391"></a>
+<span class="sourceLineNo">1392</span> * @param numReplicasToRemove how many replicas to remove<a name="line.1392"></a>
+<span class="sourceLineNo">1393</span> * @param connection connection we're using to access meta table<a name="line.1393"></a>
+<span class="sourceLineNo">1394</span> */<a name="line.1394"></a>
+<span class="sourceLineNo">1395</span> public static void removeRegionReplicasFromMeta(Set<byte[]> metaRows,<a name="line.1395"></a>
+<span class="sourceLineNo">1396</span> int replicaIndexToDeleteFrom, int numReplicasToRemove, Connection connection)<a name="line.1396"></a>
+<span class="sourceLineNo">1397</span> throws IOException {<a name="line.1397"></a>
+<span class="sourceLineNo">1398</span> int absoluteIndex = replicaIndexToDeleteFrom + numReplicasToRemove;<a name="line.1398"></a>
+<span class="sourceLineNo">1399</span> for (byte[] row : metaRows) {<a name="line.1399"></a>
+<span class="sourceLineNo">1400</span> long now = EnvironmentEdgeManager.currentTime();<a name="line.1400"></a>
+<span class="sourceLineNo">1401</span> Delete deleteReplicaLocations = new Delete(row);<a name="line.1401"></a>
+<span class="sourceLineNo">1402</span> for (int i = replicaIndexToDeleteFrom; i < absoluteIndex; i++) {<a name="line.1402"></a>
+<span class="sourceLineNo">1403</span> deleteReplicaLocations.addColumns(getCatalogFamily(),<a name="line.1403"></a>
+<span class="sourceLineNo">1404</span> getServerColumn(i), now);<a name="line.1404"></a>
+<span class="sourceLineNo">1405</span> deleteReplicaLocations.addColumns(getCatalogFamily(),<a name="line.1405"></a>
+<span class="sourceLineNo">1406</span> getSeqNumColumn(i), now);<a name="line.1406"></a>
+<span class="sourceLineNo">1407</span> deleteReplicaLocations.addColumns(getCatalogFamily(),<a name="line.1407"></a>
+<span class="sourceLineNo">1408</span> getStartCodeColumn(i), now);<a name="line.1408"></a>
+<span class="sourceLineNo">1409</span> }<a name="line.1409"></a>
+<span class="sourceLineNo">1410</span> deleteFromMetaTable(connection, deleteReplicaLocations);<a name="line.1410"></a>
+<span class="sourceLineNo">1411</span> }<a name="line.1411"></a>
+<span class="sourceLineNo">1412</span> }<a name="line.1412"></a>
+<span class="sourceLineNo">1413</span><a name="line.1413"></a>
+<span class="sourceLineNo">1414</span> /**<a name="line.1414"></a>
+<span class="sourceLineNo">1415</span> * Execute the passed <code>mutations</code> against <code>hbase:meta</code> table.<a name="line.1415"></a>
+<span class="sourceLineNo">1416</span> * @param connection connection we're using<a name="line.1416"></a>
+<span class="sourceLineNo">1417</span> * @param mutations Puts and Deletes to execute on hbase:meta<a name="line.1417"></a>
+<span class="sourceLineNo">1418</span> * @throws IOException<a name="line.1418"></a>
+<span class="sourceLineNo">1419</span> */<a name="line.1419"></a>
+<span class="sourceLineNo">1420</span> public static void mutateMetaTable(final Connection connection,<a name="line.1420"></a>
+<span class="sourceLineNo">1421</span> final List<Mutation> mutations)<a name="line.1421"></a>
+<span class="sourceLineNo">1422</span> throws IOException {<a name="line.1422"></a>
+<span class="sourceLineNo">1423</span> Table t = getMetaHTable(connection);<a name="line.1423"></a>
+<span class="sourceLineNo">1424</span> try {<a name="line.1424"></a>
+<span class="sourceLineNo">1425</span> debugLogMutations(mutations);<a name="line.1425"></a>
+<span class="sourceLineNo">1426</span> t.batch(mutations, null);<a name="line.1426"></a>
+<span class="sourceLineNo">1427</span> } catch (InterruptedException e) {<a name="line.1427"></a>
+<span class="sourceLineNo">1428</span> InterruptedIOException ie = new InterruptedIOException(e.getMessage());<a name="line.1428"></a>
+<span class="sourceLineNo">1429</span> ie.initCause(e);<a name="line.1429"></a>
+<span class="sourceLineNo">1430</span> throw ie;<a name="line.1430"></a>
+<span class="sourceLineNo">1431</span> } finally {<a name="line.1431"></a>
+<span class="sourceLineNo">1432</span> t.close();<a name="line.1432"></a>
+<span class="sourceLineNo">1433</span> }<a name="line.1433"></a>
+<span class="sourceLineNo">1434</span> }<a name="line.1434"></a>
+<span class="sourceLineNo">1435</span><a name="line.1435"></a>
+<span class="sourceLineNo">1436</span> private static void addRegionStateToPut(Put put, RegionState.State state) throws IOException {<a name="line.1436"></a>
+<span class="sourceLineNo">1437</span> put.add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.1437"></a>
+<span class="sourceLineNo">1438</span> .setRow(put.getRow())<a name="line.1438"></a>
+<span class="sourceLineNo">1439</span> .setFamily(HConstants.CATALOG_FAMILY)<a name="line.1439"></a>
+<span class="sourceLineNo">1440</span> .setQualifier(getRegionStateColumn())<a name="line.1440"></a>
+<span class="sourceLineNo">1441</span> .setTimestamp(put.getTimestamp())<a name="line.1441"></a>
+<span class="sourceLineNo">1442</span> .setType(Cell.Type.Put)<a name="line.1442"></a>
+<span class="sourceLineNo">1443</span> .setValue(Bytes.toBytes(state.name()))<a name="line.1443"></a>
+<span class="sourceLineNo">1444</span> .build());<a name="line.1444"></a>
+<span class="sourceLineNo">1445</span> }<a name="line.1445"></a>
+<span class="sourceLineNo">1446</span><a name="line.1446"></a>
+<span class="sourceLineNo">1447</span> /**<a name="line.1447"></a>
+<span class="sourceLineNo">1448</span> * Adds daughter region infos to hbase:meta row for the specified region. Note that this does not<a name="line.1448"></a>
+<span class="sourceLineNo">1449</span> * add its daughter's as different rows, but adds information about the daughters in the same row<a name="line.1449"></a>
+<span class="sourceLineNo">1450</span> * as the parent. Use<a name="line.1450"></a>
+<span class="sourceLineNo">1451</span> * {@link #splitRegion(Connection, RegionInfo, long, RegionInfo, RegionInfo, ServerName, int)}<a name="line.1451"></a>
+<span class="sourceLineNo">1452</span> * if you want to do that.<a name="line.1452"></a>
+<span class="sourceLineNo">1453</span> * @param connection connection we're using<a name="line.1453"></a>
+<span class="sourceLineNo">1454</span> * @param regionInfo RegionInfo of parent region<a name="line.1454"></a>
+<span class="sourceLineNo">1455</span> * @param splitA first split daughter of the parent regionInfo<a name="line.1455"></a>
+<span class="sourceLineNo">1456</span> * @param splitB second split daughter of the parent regionInfo<a name="line.1456"></a>
+<span class="sourceLineNo">1457</span> * @throws IOException if problem connecting or updating meta<a name="line.1457"></a>
+<span class="sourceLineNo">1458</span> */<a name="line.1458"></a>
+<span class="sourceLineNo">1459</span> public static void addSplitsToParent(Connection connection, RegionInfo regionInfo,<a name="line.1459"></a>
+<span class="sourceLineNo">1460</span> RegionInfo splitA, RegionInfo splitB) throws IOException {<a name="line.1460"></a>
+<span class="sourceLineNo">1461</span> Table meta = getMetaHTable(connection);<a name="line.1461"></a>
+<span class="sourceLineNo">1462</span> try {<a name="line.1462"></a>
+<span class="sourceLineNo">1463</span> Put put = makePutFromRegionInfo(regionInfo, EnvironmentEdgeManager.currentTime());<a name="line.1463"></a>
+<span class="sourceLineNo">1464</span> addDaughtersToPut(put, splitA, splitB);<a name="line.1464"></a>
+<span class="sourceLineNo">1465</span> meta.put(put);<a name="line.1465"></a>
+<span class="sourceLineNo">1466</span> debugLogMutation(put);<a name="line.1466"></a>
+<span class="sourceLineNo">1467</span> LOG.debug("Added region {}", regionInfo.getRegionNameAsString());<a name="line.1467"></a>
+<span class="sourceLineNo">1468</span> } finally {<a name="line.1468"></a>
+<span class="sourceLineNo">1469</span> meta.close();<a name="line.1469"></a>
+<span class="sourceLineNo">1470</span> }<a name="line.1470"></a>
+<span class="sourceLineNo">1471</span> }<a name="line.1471"></a>
+<span class="sourceLineNo">1472</span><a name="line.1472"></a>
+<span class="sourceLineNo">1473</span> /**<a name="line.1473"></a>
+<span class="sourceLineNo">1474</span> * Adds a (single) hbase:meta row for the specified new region and its daughters. Note that this<a name="line.1474"></a>
+<span class="sourceLineNo">1475</span> * does not add its daughter's as different rows, but adds information about the daughters<a name="line.1475"></a>
+<span class="sourceLineNo">1476</span> * in the same row as the parent. Use<a name="line.1476"></a>
+<span class="sourceLineNo">1477</span> * {@link #splitRegion(Connection, RegionInfo, long, RegionInfo, RegionInfo, ServerName, int)}<a name="line.1477"></a>
+<span class="sourceLineNo">1478</span> * if you want to do that.<a name="line.1478"></a>
+<span class="sourceLineNo">1479</span> * @param connection connection we're using<a name="line.1479"></a>
+<span class="sourceLineNo">1480</span> * @param regionInfo region information<a name="line.1480"></a>
+<span class="sourceLineNo">1481</span> * @throws IOException if problem connecting or updating meta<a name="line.1481"></a>
+<span class="sourceLineNo">1482</span> */<a name="line.1482"></a>
+<span class="sourceLineNo">1483</span> @VisibleForTesting<a name="line.1483"></a>
+<span class="sourceLineNo">1484</span> public static void addRegionToMeta(Connection connection, RegionInfo regionInfo)<a name="line.1484"></a>
+<span class="sourceLineNo">1485</span> throws IOException {<a name="line.1485"></a>
+<span class="sourceLineNo">1486</span> addRegionsToMeta(connection, Collections.singletonList(regionInfo), 1);<a name="line.1486"></a>
+<span class="sourceLineNo">1487</span> }<a name="line.1487"></a>
+<span class="sourceLineNo">1488</span><a name="line.1488"></a>
+<span class="sourceLineNo">1489</span> /**<a name="line.1489"></a>
+<span class="sourceLineNo">1490</span> * Adds a hbase:meta row for each of the specified new regions. Initial state for new regions<a name="line.1490"></a>
+<span class="sourceLineNo">1491</span> * is CLOSED.<a name="line.1491"></a>
+<span class="sourceLineNo">1492</span> * @param connection connection we're using<a name="line.1492"></a>
+<span class="sourceLineNo">1493</span> * @param regionInfos region information list<a name="line.1493"></a>
+<span class="sourceLineNo">1494</span> * @throws IOException if problem connecting or updating meta<a name="line.1494"></a>
+<span class="sourceLineNo">1495</span> */<a name="line.1495"></a>
+<span class="sourceLineNo">1496</span> public static void addRegionsToMeta(Connection connection, List<RegionInfo> regionInfos,<a name="line.1496"></a>
+<span class="sourceLineNo">1497</span> int regionReplication) throws IOException {<a name="line.1497"></a>
+<span class="sourceLineNo">1498</span> addRegionsToMeta(connection, regionInfos, regionReplication,<a name="line.1498"></a>
+<span class="sourceLineNo">1499</span> EnvironmentEdgeManager.currentTime());<a name="line.1499"></a>
+<span class="sourceLineNo">1500</span> }<a name="line.1500"></a>
+<span class="sourceLineNo">1501</span><a name="line.1501"></a>
+<span class="sourceLineNo">1502</span> /**<a name="line.1502"></a>
+<span class="sourceLineNo">1503</span> * Adds a hbase:meta row for each of the specified new regions. Initial state for new regions<a name="line.1503"></a>
+<span class="sourceLineNo">1504</span> * is CLOSED.<a name="line.1504"></a>
+<span class="sourceLineNo">1505</span> * @param connection connection we're using<a name="line.1505"></a>
+<span class="sourceLineNo">1506</span> * @param regionInfos region information list<a name="line.1506"></a>
+<span class="sourceLineNo">1507</span> * @param regionReplication<a name="line.1507"></a>
+<span class="sourceLineNo">1508</span> * @param ts desired timestamp<a name="line.1508"></a>
+<span class="sourceLineNo">1509</span> * @throws IOException if problem connecting or updating meta<a name="line.1509"></a>
+<span class="sourceLineNo">1510</span> */<a name="line.1510"></a>
+<span class="sourceLineNo">1511</span> private static void addRegionsToMeta(Connection connection, List<RegionInfo> regionInfos,<a name="line.1511"></a>
+<span class="sourceLineNo">1512</span> int regionReplication, long ts) throws IOException {<a name="line.1512"></a>
+<span class="sourceLineNo">1513</span> List<Put> puts = new ArrayList<>();<a name="line.1513"></a>
+<span class="sourceLineNo">1514</span> for (RegionInfo regionInfo : regionInfos) {<a name="line.1514"></a>
+<span class="sourceLineNo">1515</span> if (RegionReplicaUtil.isDefaultReplica(regionInfo)) {<a name="line.1515"></a>
+<span class="sourceLineNo">1516</span> Put put = makePutFromRegionInfo(regionInfo, ts);<a name="line.1516"></a>
+<span class="sourceLineNo">1517</span> // New regions are added with initial state of CLOSED.<a name="line.1517"></a>
+<span class="sourceLineNo">1518</span> addRegionStateToPut(put, RegionState.State.CLOSED);<a name="line.1518"></a>
+<span class="sourceLineNo">1519</span> // Add empty locations for region replicas so that number of replicas can be cached<a name="line.1519"></a>
+<span class="sourceLineNo">1520</span> // whenever the primary region is looked up from meta<a name="line.1520"></a>
+<span class="sourceLineNo">1521</span> for (int i = 1; i < regionReplication; i++) {<a name="line.1521"></a>
+<span class="sourceLineNo">1522</span> addEmptyLocation(put, i);<a name="line.1522"></a>
+<span class="sourceLineNo">1523</span> }<a name="line.1523"></a>
+<span class="sourceLineNo">1524</span> puts.add(put);<a name="line.1524"></a>
+<span class="sourceLineNo">1525</span> }<a name="line.1525"></a>
+<span class="sourceLineNo">1526</span> }<a name="line.1526"></a>
+<span class="sourceLineNo">1527</span> putsToMetaTable(connection, puts);<a name="line.1527"></a>
+<span class="sourceLineNo">1528</span> LOG.info("Added {} regions to meta.", puts.size());<a name="line.1528"></a>
+<span class="sourceLineNo">1529</span> }<a name="line.1529"></a>
+<span class="sourceLineNo">1530</span><a name="line.1530"></a>
+<span class="sourceLineNo">1531</span> /**<a name="line.1531"></a>
+<span class="sourceLineNo">1532</span> * Merge the two regions into one in an atomic operation. Deletes the two merging regions in<a name="line.1532"></a>
+<span class="sourceLineNo">1533</span> * hbase:meta and adds the merged region with the information of two merging regions.<a name="line.1533"></a>
+<span class="sourceLineNo">1534</span> * @param connection connection we're using<a name="line.1534"></a>
+<span class="sourceLineNo">1535</span> * @param mergedRegion the merged region<a name="line.1535"></a>
+<span class="sourceLineNo">1536</span> * @param regionA merge parent region A<a name="line.1536"></a>
+<span class="sourceLineNo">1537</span> * @param regionAOpenSeqNum the next open sequence id for region A, used by serial replication. -1<a name="line.1537"></a>
+<span class="sourceLineNo">1538</span> * if not necessary.<a name="line.1538"></a>
+<span class="sourceLineNo">1539</span> * @param regionB merge parent region B<a name="line.1539"></a>
+<span class="sourceLineNo">1540</span> * @param regionBOpenSeqNum the next open sequence id for region B, used by serial replication. -1<a name="line.1540"></a>
+<span class="sourceLineNo">1541</span> * if not necessary.<a name="line.1541"></a>
+<span class="sourceLineNo">1542</span> * @param sn the location of the region<a name="line.1542"></a>
+<span class="sourceLineNo">1543</span> */<a name="line.1543"></a>
+<span class="sourceLineNo">1544</span> public static void mergeRegions(Connection connection, RegionInfo mergedRegion,<a name="line.1544"></a>
+<span class="sourceLineNo">1545</span> RegionInfo regionA, long regionAOpenSeqNum, RegionInfo regionB, long regionBOpenSeqNum,<a name="line.1545"></a>
+<span class="sourceLineNo">1546</span> ServerName sn, int regionReplication) throws IOException {<a name="line.1546"></a>
+<span class="sourceLineNo">1547</span> try (Table meta = getMetaHTable(connection)) {<a name="line.1547"></a>
+<span class="sourceLineNo">1548</span> long time = EnvironmentEdgeManager.currentTime();<a name="line.1548"></a>
+<span class="sourceLineNo">1549</span> List<Mutation> mutations = new ArrayList<>();<a name="line.1549"></a>
+<span class="sourceLineNo">1550</span><a name="line.1550"></a>
+<span class="sourceLineNo">1551</span> List<RegionInfo> replicationParents = new ArrayList<>(2);<a name="line.1551"></a>
+<span class="sourceLineNo">1552</span> // Deletes for merging regions<a name="line.1552"></a>
+<span class="sourceLineNo">1553</span> mutations.add(makeDeleteFromRegionInfo(regionA, time));<a name="line.1553"></a>
+<span class="sourceLineNo">1554</span> if (regionAOpenSeqNum > 0) {<a name="line.1554"></a>
+<span class="sourceLineNo">1555</span> mutations.add(makePutForReplicationBarrier(regionA, regionAOpenSeqNum, time));<a name="line.1555"></a>
+<span class="sourceLineNo">1556</span> replicationParents.add(regionA);<a name="line.1556"></a>
+<span class="sourceLineNo">1557</span> }<a name="line.1557"></a>
+<span class="sourceLineNo">1558</span> mutations.add(makeDeleteFromRegionInfo(regionB, time));<a name="line.1558"></a>
+<span class="sourceLineNo">1559</span> if (regionBOpenSeqNum > 0) {<a name="line.1559"></a>
+<span class="sourceLineNo">1560</span> mutations.add(makePutForReplicationBarrier(regionB, regionBOpenSeqNum, time));<a name="line.1560"></a>
+<span class="sourceLineNo">1561</span> replicationParents.add(regionB);<a name="line.1561"></a>
+<span class="sourceLineNo">1562</span> }<a name="line.1562"></a>
+<span class="sourceLineNo">1563</span><a name="line.1563"></a>
+<span class="sourceLineNo">1564</span> // Put for parent<a name="line.1564"></a>
+<span class="sourceLineNo">1565</span> Put putOfMerged = makePutFromRegionInfo(mergedRegion, time);<a name="line.1565"></a>
+<span class="sourceLineNo">1566</span> putOfMerged.add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.1566"></a>
<span class="sourceLineNo">1567</span> .setRow(putOfMerged.getRow())<a name="line.1567"></a>
<span class="sourceLineNo">1568</span> .setFamily(HConstants.CATALOG_FAMILY)<a name="line.1568"></a>
-<span class="sourceLineNo">1569</span> .setQualifier(HConstants.MERGEB_QUALIFIER)<a name="line.1569"></a>
+<span class="sourceLineNo">1569</span> .setQualifier(HConstants.MERGEA_QUALIFIER)<a name="line.1569"></a>
<span class="sourceLineNo">1570</span> .setTimestamp(putOfMerged.getTimestamp())<a name="line.1570"></a>
<span class="sourceLineNo">1571</span> .setType(Type.Put)<a name="line.1571"></a>
-<span class="sourceLineNo">1572</span> .setValue(RegionInfo.toByteArray(regionB))<a name="line.1572"></a>
-<span class="sourceLineNo">1573</span> .build());<a name="line.1573"></a>
-<span class="sourceLineNo">1574</span> // Set initial state to CLOSED<a name="line.1574"></a>
-<span class="sourceLineNo">1575</span> // NOTE: If initial state is not set to CLOSED then merged region gets added with the<a name="line.1575"></a>
-<span class="sourceLineNo">1576</span> // default OFFLINE state. If Master gets restarted after this step, start up sequence of<a name="line.1576"></a>
-<span class="sourceLineNo">1577</span> // master tries to assign this offline region. This is followed by re-assignments of the<a name="line.1577"></a>
-<span class="sourceLineNo">1578</span> // merged region from resumed {@link MergeTableRegionsProcedure}<a name="line.1578"></a>
-<span class="sourceLineNo">1579</span> addRegionStateToPut(putOfMerged, RegionState.State.CLOSED);<a name="line.1579"></a>
-<span class="sourceLineNo">1580</span> mutations.add(putOfMerged);<a name="line.1580"></a>
-<span class="sourceLineNo">1581</span> // The merged is a new region, openSeqNum = 1 is fine. ServerName may be null<a name="line.1581"></a>
-<span class="sourceLineNo">1582</span> // if crash after merge happened but before we got to here.. means in-memory<a name="line.1582"></a>
-<span class="sourceLineNo">1583</span> // locations of offlined merged, now-closed, regions is lost. Should be ok. We<a name="line.1583"></a>
-<span class="sourceLineNo">1584</span> // assign the merged region later.<a name="line.1584"></a>
-<span class="sourceLineNo">1585</span> if (sn != null) {<a name="line.1585"></a>
-<span class="sourceLineNo">1586</span> addLocation(putOfMerged, sn, 1, mergedRegion.getReplicaId());<a name="line.1586"></a>
-<span class="sourceLineNo">1587</span> }<a name="line.1587"></a>
-<span class="sourceLineNo">1588</span><a name="line.1588"></a>
-<span class="sourceLineNo">1589</span> // Add empty locations for region replicas of the merged region so that number of replicas can<a name="line.1589"></a>
-<span class="sourceLineNo">1590</span> // be cached whenever the primary region is looked up from meta<a name="line.1590"></a>
-<span class="sourceLineNo">1591</span> for (int i = 1; i < regionReplication; i++) {<a name="line.1591"></a>
-<span class="sourceLineNo">1592</span> addEmptyLocation(putOfMerged, i);<a name="line.1592"></a>
-<span class="sourceLineNo">1593</span> }<a name="line.1593"></a>
-<span class="sourceLineNo">1594</span> // add parent reference for serial replication<a name="line.1594"></a>
-<span class="sourceLineNo">1595</span> if (!replicationParents.isEmpty()) {<a name="line.1595"></a>
-<span class="sourceLineNo">1596</span> addReplicationParent(putOfMerged, replicationParents);<a name="line.1596"></a>
-<span class="sourceLineNo">1597</span> }<a name="line.1597"></a>
-<span class="sourceLineNo">1598</span> byte[] tableRow = Bytes.toBytes(mergedRegion.getRegionNameAsString() + HConstants.DELIMITER);<a name="line.1598"></a>
-<span class="sourceLineNo">1599</span> multiMutate(connection, meta, tableRow, mutations);<a name="line.1599"></a>
-<span class="sourceLineNo">1600</span> }<a name="line.1600"></a>
-<span class="sourceLineNo">1601</span> }<a name="line.1601"></a>
-<span class="sourceLineNo">1602</span><a name="line.1602"></a>
-<span class="sourceLineNo">1603</span> /**<a name="line.1603"></a>
-<span class="sourceLineNo">1604</span> * Splits the region into two in an atomic operation. Offlines the parent region with the<a name="line.1604"></a>
-<span class="sourceLineNo">1605</span> * information that it is split into two, and also adds the daughter regions. Does not add the<a name="line.1605"></a>
-<span class="sourceLineNo">1606</span> * location information to the daughter regions since they are not open yet.<a name="line.1606"></a>
-<span class="sourceLineNo">1607</span> * @param connection connection we're using<a name="line.1607"></a>
-<span class="sourceLineNo">1608</span> * @param parent the parent region which is split<a name="line.1608"></a>
-<span class="sourceLineNo">1609</span> * @param parentOpenSeqNum the next open sequence id for parent region, used by serial<a name="line.1609"></a>
-<span class="sourceLineNo">1610</span> * replication. -1 if not necessary.<a name="line.1610"></a>
-<span class="sourceLineNo">1611</span> * @param splitA Split daughter region A<a name="line.1611"></a>
-<span class="sourceLineNo">1612</span> * @param splitB Split daughter region B<a name="line.1612"></a>
-<span class="sourceLineNo">1613</span> * @param sn the location of the region<a name="line.1613"></a>
-<span class="sourceLineNo">1614</span> */<a name="line.1614"></a>
-<span class="sourceLineNo">1615</span> public static void splitRegion(Connection connection, RegionInfo parent, long parentOpenSeqNum,<a name="line.1615"></a>
-<span class="sourceLineNo">1616</span> RegionInfo splitA, RegionInfo splitB, ServerName sn, int regionReplication)<a name="line.1616"></a>
-<span class="sourceLineNo">1617</span> throws IOException {<a name="line.1617"></a>
-<span class="sourceLineNo">1618</span> try (Table meta = getMetaHTable(connection)) {<a name="line.1618"></a>
-<span class="sourceLineNo">1619</span> long time = EnvironmentEdgeManager.currentTime();<a name="line.1619"></a>
-<span class="sourceLineNo">1620</span> // Put for parent<a name="line.1620"></a>
-<span class="sourceLineNo">1621</span> Put putParent = makePutFromRegionInfo(RegionInfoBuilder.newBuilder(parent)<a name="line.1621"></a>
-<span class="sourceLineNo">1622</span> .setOffline(true)<a name="line.1622"></a>
-<span class="sourceLineNo">1623</span> .setSplit(true).build(), time);<a name="line.1623"></a>
-<span class="sourceLineNo">1624</span> addDaughtersToPut(putParent, splitA, splitB);<a name="line.1624"></a>
-<span class="sourceLineNo">1625</span><a name="line.1625"></a>
-<span class="sourceLineNo">1626</span> // Puts for daughters<a name="line.1626"></a>
-<span class="sourceLineNo">1627</span> Put putA = makePutFromRegionInfo(splitA, time);<a name="line.1627"></a>
-<span class="sourceLineNo">1628</span> Put putB = makePutFromRegionInfo(splitB, time);<a name="line.1628"></a>
-<span class="sourceLineNo">1629</span> if (parentOpenSeqNum > 0) {<a name="line.1629"></a>
-<span class="sourceLineNo">1630</span> addReplicationBarrier(putParent, parentOpenSeqNum);<a name="line.1630"></a>
-<span class="sourceLineNo">1631</span> addReplicationParent(putA, Collections.singletonList(parent));<a name="line.1631"></a>
-<span class="sourceLineNo">1632</span> addReplicationParent(putB, Collections.singletonList(parent));<a name="line.1632"></a>
-<span class="sourceLineNo">1633</span> }<a name="line.1633"></a>
-<span class="sourceLineNo">1634</span> // Set initial state to CLOSED<a name="line.1634"></a>
-<span class="sourceLineNo">1635</span> // NOTE: If initial state is not set to CLOSED then daughter regions get added with the<a name="line.1635"></a>
-<span class="sourceLineNo">1636</span> // default OFFLINE state. If Master gets restarted after this step, start up sequence of<a name="line.1636"></a>
-<span class="sourceLineNo">1637</span> // master tries to assign these offline regions. This is followed by re-assignments of the<a name="line.1637"></a>
-<span class="sourceLineNo">1638</span> // daughter regions from resumed {@link SplitTableRegionProcedure}<a name="line.1638"></a>
-<span class="sourceLineNo">1639</span> addRegionStateToPut(putA, RegionState.State.CLOSED);<a name="line.1639"></a>
-<span class="sourceLineNo">1640</span> addRegionStateToPut(putB, RegionState.State.CLOSED);<a name="line.1640"></a>
-<span class="sourceLineNo">1641</span><a name="line.1641"></a>
-<span class="sourceLineNo">1642</span> addSequenceNum(putA, 1, splitA.getReplicaId()); // new regions, openSeqNum = 1 is fine.<a name="line.1642"></a>
-<span class="sourceLineNo">1643</span> addSequenceNum(putB, 1, splitB.getReplicaId());<a name="line.1643"></a>
-<span class="sourceLineNo">1644</span><a name="line.1644"></a>
-<span class="sourceLineNo">1645</span> // Add empty locations for region replicas of daughters so that number of replicas can be<a name="line.1645"></a>
-<span class="sourceLineNo">1646</span> // cached whenever the primary region is looked up from meta<a name="line.1646"></a>
-<span class="sourceLineNo">1647</span> for (int i = 1; i < regionReplication; i++) {<a name="line.1647"></a>
-<span class="sourceLineNo">1648</span> addEmptyLocation(putA, i);<a name="line.1648"></a>
-<span class="sourceLineNo">1649</span> addEmptyLocation(putB, i);<a name="line.1649"></a>
-<span class="sourceLineNo">1650</span> }<a name="line.1650"></a>
-<span class="sourceLineNo">1651</span><a name="line.1651"></a>
-<span class="sourceLineNo">1652</span> byte[] tableRow = Bytes.toBytes(parent.getRegionNameAsString() + HConstants.DELIMITER);<a name="line.1652"></a>
-<span class="sourceLineNo">1653</span> multiMutate(connection, meta, tableRow, putParent, putA, putB);<a name="line.1653"></a>
-<span class="sourceLineNo">1654</span> }<a name="line.1654"></a>
-<span class="sourceLineNo">1655</span> }<a name="line.1655"></a>
-<span class="sourceLineNo">1656</span><a name="line.1656"></a>
-<span class="sourceLineNo">1657</span> /**<a name="line.1657"></a>
-<span class="sourceLineNo">1658</span> * Update state of the table in meta.<a name="line.1658"></a>
-<span class="sourceLineNo">1659</span> * @param connection what we use for update<a name="line.1659"></a>
-<span class="sourceLineNo">1660</span> * @param state new state<a name="line.1660"></a>
-<span class="sourceLineNo">1661</span> */<a name="line.1661"></a>
-<span class="sourceLineNo">1662</span> private static void updateTableState(Connection connection, TableState state) throws IOException {<a name="line.1662"></a>
-<span class="sourceLineNo">1663</span> Put put = makePutFromTableState(state, EnvironmentEdgeManager.currentTime());<a name="line.1663"></a>
-<span class="sourceLineNo">1664</span> putToMetaTable(connection, put);<a name="line.1664"></a>
-<span class="sourceLineNo">1665</span> LOG.info("Updated {} in hbase:meta", state);<a name="line.1665"></a>
-<span class="sourceLineNo">1666</span> }<a name="line.1666"></a>
-<span class="sourceLineNo">1667</span><a name="line.1667"></a>
-<span class="sourceLineNo">1668</span> /**<a name="line.1668"></a>
-<span class="sourceLineNo">1669</span> * Construct PUT for given state<a name="line.1669"></a>
-<span class="sourceLineNo">1670</span> * @param state new state<a name="line.1670"></a>
-<span class="sourceLineNo">1671</span> */<a name="line.1671"></a>
-<span class="sourceLineNo">1672</span> public static Put makePutFromTableState(TableState state, long ts) {<a name="line.1672"></a>
-<span class="sourceLineNo">1673</span> Put put = new Put(state.getTableName().getName(), ts);<a name="line.1673"></a>
-<span class="sourceLineNo">1674</span> put.addColumn(getTableFamily(), getTableStateColumn(), state.convert().toByteArray());<a name="line.1674"></a>
-<span class="sourceLineNo">1675</span> return put;<a name="line.1675"></a>
-<span class="sourceLineNo">1676</span> }<a name="line.1676"></a>
-<span class="sourceLineNo">1677</span><a name="line.1677"></a>
-<span class="sourceLineNo">1678</span> /**<a name="line.1678"></a>
-<span class="sourceLineNo">1679</span> * Remove state for table from meta<a name="line.1679"></a>
-<span class="sourceLineNo">1680</span> * @param connection to use for deletion<a name="line.1680"></a>
-<span class="sourceLineNo">1681</span> * @param table to delete state for<a name="line.1681"></a>
-<span class="sourceLineNo">1682</span> */<a name="line.1682"></a>
-<span class="sourceLineNo">1683</span> public static void deleteTableState(Connection connection, TableName table)<a name="line.1683"></a>
-<span class="sourceLineNo">1684</span> throws IOException {<a name="line.1684"></a>
-<span class="sourceLineNo">1685</span> long time = EnvironmentEdgeManager.currentTime();<a name="line.1685"></a>
-<span class="sourceLineNo">1686</span> Delete delete = new Delete(table.getName());<a name="line.1686"></a>
-<span class="sourceLineNo">1687</span> delete.addColumns(getTableFamily(), getTableStateColumn(), time);<a name="line.1687"></a>
-<span class="sourceLineNo">1688</span> deleteFromMetaTable(connection, delete);<a name="line.1688"></a>
-<span class="sourceLineNo">1689</span> LOG.info("Deleted table " + table + " state from META");<a name="line.1689"></a>
-<span class="sourceLineNo">1690</span> }<a name="line.1690"></a>
-<span class="sourceLineNo">1691</span><a name="line.1691"></a>
-<span class="sourceLineNo">1692</span> private static void multiMutate(Connection connection, Table table, byte[] row,<a name="line.1692"></a>
-<span class="sourceLineNo">1693</span> Mutation... mutations) throws IOException {<a name="line.1693"></a>
-<span class="sourceLineNo">1694</span> multiMutate(connection, table, row, Arrays.asList(mutations));<a name="line.1694"></a>
-<span class="sourceLineNo">1695</span> }<a name="line.1695"></a>
-<span class="sourceLineNo">1696</span><a name="line.1696"></a>
-<span class="sourceLineNo">1697</span> /**<a name="line.1697"></a>
-<span class="sourceLineNo">1698</span> * Performs an atomic multi-mutate operation against the given table.<a name="line.1698"></a>
-<span class="sourceLineNo">1699</span> */<a name="line.1699"></a>
-<span class="sourceLineNo">1700</span> private static void multiMutate(Connection connection, final Table table, byte[] row,<a name="line.1700"></a>
-<span class="sourceLineNo">1701</span> final List<Mutation> mutations) throws IOException {<a name="line.1701"></a>
-<span class="sourceLineNo">1702</span> debugLogMutations(mutations);<a name="line.1702"></a>
-<span class="sourceLineNo">1703</span> // TODO: Need rollback!!!!<a name="line.1703"></a>
-<span class="sourceLineNo">1704</span> // TODO: Need Retry!!!<a name="line.1704"></a>
-<span class="sourceLineNo">1705</span> // TODO: What for a timeout? Default write timeout? GET FROM HTABLE?<a name="line.1705"></a>
-<span class="sourceLineNo">1706</span> // TODO: Review when we come through with ProcedureV2.<a name="line.1706"></a>
-<span class="sourceLineNo">1707</span> RegionServerCallable<MutateRowsResponse,<a name="line.1707"></a>
-<span class="sourceLineNo">1708</span> MultiRowMutationProtos.MultiRowMutationService.BlockingInterface> callable =<a name="line.1708"></a>
-<span class="sourceLineNo">1709</span> new RegionServerCallable<MutateRowsResponse,<a name="line.1709"></a>
-<span class="sourceLineNo">1710</span> MultiRowMutationProtos.MultiRowMutationService.BlockingInterface>(<a name="line.1710"></a>
-<span class="sourceLineNo">1711</span> connection, table.getName(), row, null/*RpcController not used in this CPEP!*/) {<a name="line.1711"></a>
-<span class="sourceLineNo">1712</span> @Override<a name="line.1712"></a>
-<span class="sourceLineNo">1713</span> protected MutateRowsResponse rpcCall() throws Exception {<a name="line.1713"></a>
-<span class="sourceLineNo">1714</span> final MutateRowsRequest.Builder builder = MutateRowsRequest.newBuilder();<a name="line.1714"></a>
-<span class="sourceLineNo">1715</span> for (Mutation mutation : mutations) {<a name="line.1715"></a>
-<span class="sourceLineNo">1716</span> if (mutation instanceof Put) {<a name="line.1716"></a>
-<span class="sourceLineNo">1717</span> builder.addMutationRequest(ProtobufUtil.toMutation(<a name="line.1717"></a>
-<span class="sourceLineNo">1718</span> ClientProtos.MutationProto.MutationType.PUT, mutation));<a name="line.1718"></a>
-<span class="sourceLineNo">1719</span> } else if (mutation instanceof Delete) {<a name="line.1719"></a>
-<span class="sourceLineNo">1720</span> builder.addMutationRequest(ProtobufUtil.toMutation(<a name="line.1720"></a>
-<span class="sourceLineNo">1721</span> ClientProtos.MutationProto.MutationType.DELETE, mutation));<a name="line.1721"></a>
-<span class="sourceLineNo">1722</span> } else {<a name="line.1722"></a>
-<span class="sourceLineNo">1723</span> throw new DoNotRetryIOException("multi in MetaEditor doesn't support "<a name="line.1723"></a>
-<span class="sourceLineNo">1724</span> + mutation.getClass().getName());<a name="line.1724"></a>
-<span class="sourceLineNo">1725</span> }<a name="line.1725"></a>
-<span class="sourceLineNo">1726</span> }<a name="line.1726"></a>
-<span class="sourceLineNo">1727</span> // The call to #prepare that ran before this invocation will have populated HRegionLocation.<a name="line.1727"></a>
-<span class="sourceLineNo">1728</span> HRegionLocation hrl = getLocation();<a name="line.1728"></a>
-<span class="sourceLineNo">1729</span> RegionSpecifier region = ProtobufUtil.buildRegionSpecifier(<a name="line.1729"></a>
-<span class="sourceLineNo">1730</span> RegionSpecifierType.REGION_NAME, hrl.getRegion().getRegionName());<a name="line.1730"></a>
-<span class="sourceLineNo">1731</span> builder.setRegion(region);<a name="line.1731"></a>
-<span class="sourceLineNo">1732</span> // The rpcController here is awkward. The Coprocessor Endpoint wants an instance of a<a name="line.1732"></a>
-<span class="sourceLineNo">1733</span> // com.google.protobuf but we are going over an rpc that is all shaded protobuf so it<a name="line.1733"></a>
-<span class="sourceLineNo">1734</span> // wants a org.apache.h.h.shaded.com.google.protobuf.RpcController. Set up a factory<a name="line.1734"></a>
-<span class="sourceLineNo">1735</span> // that makes com.google.protobuf.RpcController and then copy into it configs.<a name="line.1735"></a>
-<span class="sourceLineNo">1736</span> return getStub().mutateRows(null, builder.build());<a name="line.1736"></a>
-<span class="sourceLineNo">1737</span> }<a name="line.1737"></a>
-<span class="sourceLineNo">1738</span><a name="line.1738"></a>
-<span class="sourceLineNo">1739</span> @Override<a name="line.1739"></a>
-<span class="sourceLineNo">1740</span> // Called on the end of the super.prepare call. Set the stub.<a name="line.1740"></a>
-<span class="sourceLineNo">1741</span> protected void setStubByServiceName(ServerName serviceName/*Ignored*/) throws IOException {<a name="line.1741"></a>
-<span class="sourceLineNo">1742</span> CoprocessorRpcChannel channel = table.coprocessorService(getRow());<a name="line.1742"></a>
-<span class="sourceLineNo">1743</span> setStub(MultiRowMutationProtos.MultiRowMutationService.newBlockingStub(channel));<a name="line.1743"></a>
-<span class="sourceLineNo">1744</span> }<a name="line.1744"></a>
-<span class="sourceLineNo">1745</span> };<a name="line.1745"></a>
-<span class="sourceLineNo">1746</span> int writeTimeout = connection.getConfiguration().getInt(HConstants.HBASE_RPC_WRITE_TIMEOUT_KEY,<a name="line.1746"></a>
-<span class="sourceLineNo">1747</span> connection.getConfiguration().getInt(HConstants.HBASE_RPC_TIMEOUT_KEY,<a name="line.1747"></a>
-<span class="sourceLineNo">1748</span> HConstants.DEFAULT_HBASE_RPC_TIMEOUT));<a name="line.1748"></a>
-<span class="sourceLineNo">1749</span> // The region location should be cached in connection. Call prepare so this callable picks<a name="line.1749"></a>
-<span class="sourceLineNo">1750</span> // up the region location (see super.prepare method).<a name="line.1750"></a>
-<span class="sourceLineNo">1751</span> callable.prepare(false);<a name="line.1751"></a>
-<span class="sourceLineNo">1752</span> callable.call(writeTimeout);<a name="line.1752"></a>
-<span class="sourceLineNo">1753</span> }<a name="line.1753"></a>
-<span class="sourceLineNo">1754</span><a name="line.1754"></a>
-<span class="sourceLineNo">1755</span> /**<a name="line.1755"></a>
-<span class="sourceLineNo">1756</span> * Updates the location of the specified region in hbase:meta to be the specified server hostname<a name="line.1756"></a>
-<span class="sourceLineNo">1757</span> * and startcode.<a name="line.1757"></a>
-<span class="sourceLineNo">1758</span> * <p><a name="line.1758"></a>
-<span class="sourceLineNo">1759</span> * Uses passed catalog tracker to get a connection to the server hosting hbase:meta and makes<a name="line.1759"></a>
-<span class="sourceLineNo">1760</span> * edits to that region.<a name="line.1760"></a>
-<span class="sourceLineNo">1761</span> * @param connection connection we're using<a name="line.1761"></a>
-<span class="sourceLineNo">1762</span> * @param regionInfo region to update location of<a name="line.1762"></a>
-<span class="sourceLineNo">1763</span> * @param openSeqNum the latest sequence number obtained when the region was open<a name="line.1763"></a>
-<span class="sourceLineNo">1764</span> * @param sn Server name<a name="line.1764"></a>
-<span class="sourceLineNo">1765</span> * @param masterSystemTime wall clock time from master if passed in the open region RPC<a name="line.1765"></a>
-<span class="sourceLineNo">1766</span> */<a name="line.1766"></a>
-<span class="sourceLineNo">1767</span> @VisibleForTesting<a name="line.1767"></a>
-<span class="sourceLineNo">1768</span> public static void updateRegionLocation(Connection connection, RegionInfo regionInfo,<a name="line.1768"></a>
-<span class="sourceLineNo">1769</span> ServerName sn, long openSeqNum, long masterSystemTime) throws IOException {<a name="line.1769"></a>
-<span class="sourceLineNo">1770</span> updateLocation(connection, regionInfo, sn, openSeqNum, masterSystemTime);<a name="line.1770"></a>
-<span class="sourceLineNo">1771</span> }<a name="line.1771"></a>
-<span class="sourceLineNo">1772</span><a name="line.1772"></a>
-<span class="sourceLineNo">1773</span> /**<a name="line.1773"></a>
-<span class="sourceLineNo">1774</span> * Updates the location of the specified region to be the specified server.<a name="line.1774"></a>
-<span class="sourceLineNo">1775</span> * <p><a name="line.1775"></a>
-<span class="sourceLineNo">1776</span> * Connects to the specified server which should be hosting the specified catalog region name to<a name="line.1776"></a>
-<span class="sourceLineNo">1777</span> * perform the edit.<a name="line.1777"></a>
-<span class="sourceLineNo">1778</span> * @param connection connection we're using<a name="line.1778"></a>
-<span class="sourceLineNo">1779</span> * @param regionInfo region to update location of<a name="line.1779"></a>
-<span class="sourceLineNo">1780</span> * @param sn Server name<a name="line.1780"></a>
-<span class="sourceLineNo">1781</span> * @param openSeqNum the latest sequence number obtained when the region was open<a name="line.1781"></a>
-<span class="sourceLineNo">1782</span> * @param masterSystemTime wall clock time from master if passed in the open region RPC<a name="line.1782"></a>
-<span class="sourceLineNo">1783</span> * @throws IOException In particular could throw {@link java.net.ConnectException} if the server<a name="line.1783"></a>
-<span class="sourceLineNo">1784</span> * is down on other end.<a name="line.1784"></a>
-<span class="sourceLineNo">1785</span> */<a name="line.1785"></a>
-<span class="sourceLineNo">1786</span> private static void updateLocation(Connection connection, RegionInfo regionInfo, ServerName sn,<a name="line.1786"></a>
-<span class="sourceLineNo">1787</span> long openSeqNum, long masterSystemTime) throws IOException {<a name="line.1787"></a>
-<span class="sourceLineNo">1788</span> // region replicas are kept in the primary region's row<a name="line.1788"></a>
-<span class="sourceLineNo">1789</span> Put put = new Put(getMetaKeyForRegion(regionInfo), masterSystemTime);<a name="line.1789"></a>
-<span class="sourceLineNo">1790</span> addRegionInfo(put, regionInfo);<a name="line.1790"></a>
-<span class="sourceLineNo">1791</span> addLocation(put, sn, openSeqNum, regionInfo.getReplicaId());<a name="line.1791"></a>
-<span class="sourceLineNo">1792</span> putToMetaTable(connection, put);<a name="line.1792"></a>
-<span class="sourceLineNo">1793</span> LOG.info("Updated row {} with server=", regionInfo.getRegionNameAsString(), sn);<a name="line.1793"></a>
-<span class="sourceLineNo">1794</span> }<a name="line.1794"></a>
-<span class="sourceLineNo">1795</span><a name="line.1795"></a>
-<span class="sourceLineNo">1796</span> /**<a name="line.1796"></a>
-<span class="sourceLineNo">1797</span> * Deletes the specified region from META.<a name="line.1797"></a>
-<span class="sourceLineNo">1798</span> * @param connection connection we're using<a name="line.1798"></a>
-<span class="sourceLineNo">1799</span> * @param regionInfo region to be deleted from META<a name="line.1799"></a>
-<span class="sourceLineNo">1800</span> * @throws IOException<a name="line.1800"></a>
-<span class="sourceLineNo">1801</span> */<a name="line.1801"></a>
-<span class="sourceLineNo">1802</span> public static void deleteRegion(Connection connection, RegionInfo regionInfo) throws IOException {<a name="line.1802"></a>
-<span class="sourceLineNo">1803</span> long time = EnvironmentEdgeManager.currentTime();<a name="line.1803"></a>
-<span class="sourceLineNo">1804</span> Delete delete = new Delete(regionInfo.getRegionName());<a name="line.1804"></a>
-<span class="sourceLineNo">1805</span> delete.addFamily(getCatalogFamily(), time);<a name="line.1805"></a>
-<span class="sourceLineNo">1806</span> deleteFromMetaTable(connection, delete);<a name="line.1806"></a>
-<span class="sourceLineNo">1807</span> LOG.info("Deleted " + regionInfo.getRegionNameAsString());<a name="line.1807"></a>
-<span class="sourceLineNo">1808</span> }<a name="line.1808"></a>
-<span class="sourceLineNo">1809</span><a name="line.1809"></a>
-<span class="sourceLineNo">1810</span> /**<a name="line.1810"></a>
-<span class="sourceLineNo">1811</span> * Deletes the specified regions from META.<a name="line.1811"></a>
-<span class="sourceLineNo">1812</span> * @param connection connection we're using<a name="line.1812"></a>
-<span class="sourceLineNo">1813</span> * @param regionsInfo list of regions to be deleted from META<a name="line.1813"></a>
-<span class="sourceLineNo">1814</span> */<a name="line.1814"></a>
-<span class="sourceLineNo">1815</span> public static void deleteRegions(Connection connection, List<RegionInfo> regionsInfo)<a name="line.1815"></a>
-<span class="sourceLineNo">1816</span> throws IOException {<a name="line.1816"></a>
-<span class="sourceLineNo">1817</span> deleteRegions(connection, regionsInfo, EnvironmentEdgeManager.currentTime());<a name="line.1817"></a>
-<span class="sourceLineNo">1818</span> }<a name="line.1818"></a>
-<span class="sourceLineNo">1819</span> /**<a name="line.1819"></a>
-<span class="sourceLineNo">1820</span> * Deletes the specified regions from META.<a name="line.1820"></a>
-<span class="sourceLineNo">1821</span> * @param connection connection we're using<a name="line.1821"></a>
-<span class="sourceLineNo">1822</span> * @param regionsInfo list of regions to be deleted from META<a name="line.1822"></a>
-<span class="sourceLineNo">1823</span> */<a name="line.1823"></a>
-<span class="sourceLineNo">1824</span> public static void deleteRegions(Connection connection, List<RegionInfo> regionsInfo, long ts)<a name="line.1824"></a>
-<span class="sourceLineNo">1825</span> throws IOException {<a name="line.1825"></a>
-<span class="sourceLineNo">1826</span> List<Delete> deletes = new ArrayList<>(regionsInfo.size());<a name="line.1826"></a>
-<span class="sourceLineNo">1827</span> for (RegionInfo hri : regionsInfo) {<a name="line.1827"></a>
-<span class="sourceLineNo">1828</span> Delete e = new Delete(hri.getRegionName());<a name="line.1828"></a>
-<span class="sourceLineNo">1829</span> e.addFamily(getCatalogFamily(), ts);<a name="line.1829"></a>
-<span class="sourceLineNo">1830</span> deletes.add(e);<a name="line.1830"></a>
-<span class="sourceLineNo">1831</span> }<a name="line.1831"></a>
-<span class="sourceLineNo">1832</span> deleteFromMetaTable(connection, deletes);<a name="line.1832"></a>
-<span class="sourceLineNo">1833</span> LOG.info("Deleted {} regions from META", regionsInfo.size());<a name="line.1833"></a>
-<span class="sourceLineNo">1834</span> LOG.debug("Deleted regions: {}", regionsInfo);<a name="line.1834"></a>
-<span class="sourceLineNo">1835</span> }<a name="line.1835"></a>
-<span class="sourceLineNo">1836</span><a name="line.1836"></a>
-<span class="sourceLineNo">1837</span> /**<a name="line.1837"></a>
-<span class="sourceLineNo">1838</span> * Overwrites the specified regions from hbase:meta. Deletes old rows for the given regions and<a name="line.1838"></a>
-<span class="sourceLineNo">1839</span> * adds new ones. Regions added back have state CLOSED.<a name="line.1839"></a>
-<span class="sourceLineNo">1840</span> * @param connection connection we're using<a name="line.1840"></a>
-<span class="sourceLineNo">1841</span> * @param regionInfos list of regions to be added to META<a name="line.1841"></a>
-<span class="sourceLineNo">1842</span> */<a name="line.1842"></a>
-<span class="sourceLineNo">1843</span> public static void overwriteRegions(Connection connection,<a name="line.1843"></a>
-<span class="sourceLineNo">1844</span> List<RegionInfo> regionInfos, int regionReplication) throws IOException {<a name="line.1844"></a>
-<span class="sourceLineNo">1845</span> // use master time for delete marker and the Put<a name="line.1845"></a>
-<span class="sourceLineNo">1846</span> long now = EnvironmentEdgeManager.currentTime();<a name="line.1846"></a>
-<span class="sourceLineNo">1847</span> deleteRegions(connection, regionInfos, now);<a name="line.1847"></a>
-<span class="sourceLineNo">1848</span> // Why sleep? This is the easiest way to ensure that the previous deletes does not<a name="line.1848"></a>
-<span class="sourceLineNo">1849</span> // eclipse the following puts, that might happen in the same ts from the server.<a name="line.1849"></a>
-<span class="sourceLineNo">1850</span> // See HBASE-9906, and HBASE-9879. Once either HBASE-9879, HBASE-8770 is fixed,<a name="line.1850"></a>
-<span class="sourceLineNo">1851</span> // or HBASE-9905 is fixed and meta uses seqIds, we do not need the sleep.<a name="line.1851"></a>
-<span class="sourceLineNo">1852</span> //<a name="line.1852"></a>
-<span class="sourceLineNo">1853</span> // HBASE-13875 uses master timestamp for the mutations. The 20ms sleep is not needed<a name="line.1853"></a>
-<span class="sourceLineNo">1854</span> addRegionsToMeta(connection, regionInfos, regionReplication, now + 1);<a name="line.1854"></a>
-<span class="sourceLineNo">1855</span> LOG.info("Overwritten " + regionInfos.size() + " regions to Meta");<a name="line.1855"></a>
-<span class="sourceLineNo">1856</span> LOG.debug("Overwritten regions: {} ", regionInfos);<a name="line.1856"></a>
-<span class="sourceLineNo">1857</span> }<a name="line.1857"></a>
-<span class="sourceLineNo">1858</span><a name="line.1858"></a>
-<span class="sourceLineNo">1859</span> /**<a name="line.1859"></a>
-<span class="sourceLineNo">1860</span> * Deletes merge qualifiers for the specified merged region.<a name="line.1860"></a>
-<span class="sourceLineNo">1861</span> * @param connection connection we're using<a name="line.1861"></a>
-<span class="sourceLineNo">1862</span> * @param mergedRegion the merged region<a name="line.1862"></a>
-<span class="sourceLineNo">1863</span> */<a name="line.1863"></a>
-<span class="sourceLineNo">1864</span> public static void deleteMergeQualifiers(Connection connection, final RegionInfo mergedRegion)<a name="line.1864"></a>
-<span class="sourceLineNo">1865</span> throws IOException {<a name="line.1865"></a>
-<span class="sourceLineNo">1866</span> long time = EnvironmentEdgeManager.currentTime();<a name="line.1866"></a>
-<span class="sourceLineNo">1867</span> Delete delete = new Delete(mergedRegion.getRegionName());<a name="line.1867"></a>
-<span class="sourceLineNo">1868</span> delete.addColumns(getCatalogFamily(), HConstants.MERGEA_QUALIFIER, time);<a name="line.1868"></a>
-<span class="sourceLineNo">1869</span> delete.addColumns(getCatalogFamily(), HConstants.MERGEB_QUALIFIER, time);<a name="line.1869"></a>
-<span class="sourceLineNo">1870</span> deleteFromMetaTable(connection, delete);<a name="line.1870"></a>
-<span class="sourceLineNo">1871</span> LOG.info("Deleted references in merged region "<a name="line.1871"></a>
-<span class="sourceLineNo">1872</span> + mergedRegion.getRegionNameAsString() + ", qualifier="<a name="line.1872"></a>
-<span class="sourceLineNo">1873</span> + Bytes.toStringBinary(HConstants.MERGEA_QUALIFIER) + " and qualifier="<a name="line.1873"></a>
-<span class="sourceLineNo">1874</span> + Bytes.toStringBinary(HConstants.MERGEB_QUALIFIER));<a name="line.1874"></a>
-<span class="sourceLineNo">1875</span> }<a name="line.1875"></a>
-<span class="sourceLineNo">1876</span><a name="line.1876"></a>
-<span class="sourceLineNo">1877</span> public static Put addRegionInfo(final Put p, final RegionInfo hri)<a name="line.1877"></a>
-<span class="sourceLineNo">1878</span> throws IOException {<a name="line.1878"></a>
-<span class="sourceLineNo">1879</span> p.add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.1879"></a>
-<span class="sourceLineNo">1880</span> .setRow(p.getRow())<a name="line.1880"></a>
-<span class="sourceLineNo">1881</span> .setFamily(getCatalogFamily())<a name="line.1881"></a>
-<span class="sourceLineNo">1882</span> .setQualifier(HConstants.REGIONINFO_QUALIFIER)<a name="line.1882"></a>
-<span class="sourceLineNo">1883</span> .setTimestamp(p.getTimestamp())<a name="line.1883"></a>
-<span class="sourceLineNo">1884</span> .setType(Type.Put)<a name="line.1884"></a>
-<span class="sourceLineNo">1885</span> .setValue(RegionInfo.toByteArray(hri))<a name="line.1885"></a>
-<span class="sourceLineNo">1886</span> .build());<a name="line.1886"></a>
-<span class="sourceLineNo">1887</span> return p;<a name="line.1887"></a>
-<span class="sourceLineNo">1888</span> }<a name="line.1888"></a>
-<span class="sourceLineNo">1889</span><a name="line.1889"></a>
-<span class="sourceLineNo">1890</span> public static Put addLocation(Put p, ServerName sn, long openSeqNum, int replicaId)<a name="line.1890"></a>
-<span class="sourceLineNo">1891</span> throws IOException {<a name="line.1891"></a>
-<span class="sourceLineNo">1892</span> CellBuilder builder = CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY);<a name="line.1892"></a>
-<span class="sourceLineNo">1893</span> return p.add(builder.clear()<a name="line.1893"></a>
-<span class="sourceLineNo">1894</span> .setRow(p.getRow())<a name="line.1894"></a>
-<span class="sourceLineNo">1895</span> .setFamily(getCatalogFamily())<a name="line.1895"></a>
-<span class="sourceLineNo">1896</span> .setQualifier(getServerColumn(replicaId))<a name="line.1896"></a>
-<span class="sourceLineNo">1897</span> .setTimestamp(p.getTimestamp())<a name="line.1897"></a>
-<span class="sourceLineNo">1898</span> .setType(Cell.Type.Put)<a name="line.1898"></a>
-<span class="sourceLineNo">1899</span> .setValue(Bytes.toBytes(sn.getAddress().toString()))<a name="line.1899"></a>
-<span class="sourceLineNo">1900</span> .build())<a name="line.1900"></a>
-<span class="sourceLineNo">1901</span> .add(builder.clear()<a name="line.1901"></a>
+<span class="sourceLineNo">1572</span> .setValue(RegionInfo.toByteArray(regionA))<a name="line.1572"></a>
+<span class="sourceLineNo">1573</span> .build())<a name="line.1573"></a>
+<span class="sourceLineNo">1574</span> .add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.1574"></a>
+<span class="sourceLineNo">1575</span> .setRow(putOfMerged.getRow())<a name="line.1575"></a>
+<span class="sourceLineNo">1576</span> .setFamily(HConstants.CATALOG_FAMILY)<a name="line.1576"></a>
+<span class="sourceLineNo">1577</span> .setQualifier(HConstants.MERGEB_QUALIFIER)<a name="line.1577"></a>
+<span class="sourceLineNo">1578</span> .setTimestamp(putOfMerged.getTimestamp())<a name="line.1578"></a>
+<span class="sourceLineNo">1579</span> .setType(Type.Put)<a name="line.1579"></a>
+<span class="sourceLineNo">1580</span> .setValue(RegionInfo.toByteArray(regionB))<a name="line.1580"></a>
+<span class="sourceLineNo">1581</span> .build());<a name="line.1581"></a>
+<span class="sourceLineNo">1582</span> // Set initial state to CLOSED<a name="line.1582"></a>
+<span class="sourceLineNo">1583</span> // NOTE: If initial state is not set to CLOSED then merged region gets added with the<a name="line.1583"></a>
+<span class="sourceLineNo">1584</span> // default OFFLINE state. If Master gets restarted after this step, start up sequence of<a name="line.1584"></a>
+<span class="sourceLineNo">1585</span> // master tries to assign this offline region. This is followed by re-assignments of the<a name="line.1585"></a>
+<span class="sourceLineNo">1586</span> // merged region from resumed {@link MergeTableRegionsProcedure}<a name="line.1586"></a>
+<span class="sourceLineNo">1587</span> addRegionStateToPut(putOfMerged, RegionState.State.CLOSED);<a name="line.1587"></a>
+<span class="sourceLineNo">1588</span> mutations.add(putOfMerged);<a name="line.1588"></a>
+<span class="sourceLineNo">1589</span> // The merged is a new region, openSeqNum = 1 is fine. ServerName may be null<a name="line.1589"></a>
+<span class="sourceLineNo">1590</span> // if crash after merge happened but before we got to here.. means in-memory<a name="line.1590"></a>
+<span class="sourceLineNo">1591</span> // locations of offlined merged, now-closed, regions is lost. Should be ok. We<a name="line.1591"></a>
+<span class="sourceLineNo">1592</span> // assign the merged region later.<a name="line.1592"></a>
+<span class="sourceLineNo">1593</span> if (sn != null) {<a name="line.1593"></a>
+<span class="sourceLineNo">1594</span> addLocation(putOfMerged, sn, 1, mergedRegion.getReplicaId());<a name="line.1594"></a>
+<span class="sourceLineNo">1595</span> }<a name="line.1595"></a>
+<span class="sourceLineNo">1596</span><a name="line.1596"></a>
+<span class="sourceLineNo">1597</span> // Add empty locations for region replicas of the merged region so that number of replicas can<a name="line.1597"></a>
+<span class="sourceLineNo">1598</span> // be cached whenever the primary region is looked up from meta<a name="line.1598"></a>
+<span class="sourceLineNo">1599</span> for (int i = 1; i < regionReplication; i++) {<a name="line.1599"></a>
+<span class="sourceLineNo">1600</span> addEmptyLocation(putOfMerged, i);<a name="line.1600"></a>
+<span class="sourceLineNo">1601</span> }<a name="line.1601"></a>
+<span class="sourceLineNo">1602</span> // add parent reference for serial replication<a name="line.1602"></a>
+<span class="sourceLineNo">1603</span> if (!replicationParents.isEmpty()) {<a name="line.1603"></a>
+<span class="sourceLineNo">1604</span> addReplicationParent(putOfMerged, replicationParents);<a name="line.1604"></a>
+<span class="sourceLineNo">1605</span> }<a name="line.1605"></a>
+<span class="sourceLineNo">1606</span> byte[] tableRow = Bytes.toBytes(mergedRegion.getRegionNameAsString() + HConstants.DELIMITER);<a name="line.1606"></a>
+<span class="sourceLineNo">1607</span> multiMutate(connection, meta, tableRow, mutations);<a name="line.1607"></a>
+<span class="sourceLineNo">1608</span> }<a name="line.1608"></a>
+<span class="sourceLineNo">1609</span> }<a name="line.1609"></a>
+<span class="sourceLineNo">1610</span><a name="line.1610"></a>
+<span class="sourceLineNo">1611</span> /**<a name="line.1611"></a>
+<span class="sourceLineNo">1612</span> * Splits the region into two in an atomic operation. Offlines the parent region with the<a name="line.1612"></a>
+<span class="sourceLineNo">1613</span> * information that it is split into two, and also adds the daughter regions. Does not add the<a name="line.1613"></a>
+<span class="sourceLineNo">1614</span> * location information to the daughter regions since they are not open yet.<a name="line.1614"></a>
+<span class="sourceLineNo">1615</span> * @param connection connection we're using<a name="line.1615"></a>
+<span class="sourceLineNo">1616</span> * @param parent the parent region which is split<a name="line.1616"></a>
+<span class="sourceLineNo">1617</span> * @param parentOpenSeqNum the next open sequence id for parent region, used by serial<a name="line.1617"></a>
+<span class="sourceLineNo">1618</span> * replication. -1 if not necessary.<a name="line.1618"></a>
+<span class="sourceLineNo">1619</span> * @param split
<TRUNCATED>
[35/51] [partial] hbase-site git commit: Published site at
9101fc246f86445006bfbcdfda5cc495016dc280.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html b/devapidocs/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html
index c5fbd58..48146a9 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html
@@ -263,8 +263,9 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
</tr>
<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/assignment/RegionStateStore.html#updateMetaLocation-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.ServerName-">updateMetaLocation</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo,
- <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName)</code> </td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#updateMetaLocation-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.ServerName-org.apache.hadoop.hbase.master.RegionState.State-">updateMetaLocation</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo,
+ <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName,
+ <a href="../../../../../../org/apache/hadoop/hbase/master/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master">RegionState.State</a> state)</code> </td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code>private void</code></td>
@@ -416,14 +417,15 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
</dl>
</li>
</ul>
-<a name="updateMetaLocation-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.ServerName-">
+<a name="updateMetaLocation-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.ServerName-org.apache.hadoop.hbase.master.RegionState.State-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>updateMetaLocation</h4>
-<pre>private void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.143">updateMetaLocation</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo,
- <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName)
+<pre>private void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.144">updateMetaLocation</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo,
+ <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName,
+ <a href="../../../../../../org/apache/hadoop/hbase/master/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master">RegionState.State</a> state)
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>
@@ -437,7 +439,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>updateUserRegionLocation</h4>
-<pre>private void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.153">updateUserRegionLocation</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo,
+<pre>private void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.154">updateUserRegionLocation</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo,
<a href="../../../../../../org/apache/hadoop/hbase/master/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master">RegionState.State</a> state,
<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> regionLocation,
<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> lastHost,
@@ -456,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>updateRegionLocation</h4>
-<pre>private void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.201">updateRegionLocation</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo,
+<pre>private void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.202">updateRegionLocation</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo,
<a href="../../../../../../org/apache/hadoop/hbase/master/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master">RegionState.State</a> state,
<a href="../../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a> put)
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>
@@ -472,7 +474,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>getOpenSeqNumForParentRegion</h4>
-<pre>private long <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.216">getOpenSeqNumForParentRegion</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> region)
+<pre>private long <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.217">getOpenSeqNumForParentRegion</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> region)
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>
@@ -486,7 +488,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>splitRegion</h4>
-<pre>public void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.226">splitRegion</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> parent,
+<pre>public void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.227">splitRegion</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> parent,
<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> hriA,
<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> hriB,
<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName)
@@ -503,7 +505,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>mergeRegions</h4>
-<pre>public void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.240">mergeRegions</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> child,
+<pre>public void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.241">mergeRegions</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> child,
<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> hriA,
<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> hriB,
<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName)
@@ -520,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>deleteRegion</h4>
-<pre>public void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.256">deleteRegion</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo)
+<pre>public void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.257">deleteRegion</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo)
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>
@@ -534,7 +536,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>deleteRegions</h4>
-<pre>public void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.260">deleteRegions</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><<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>> regions)
+<pre>public void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.261">deleteRegions</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><<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>> regions)
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>
@@ -548,7 +550,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>hasGlobalReplicationScope</h4>
-<pre>private boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.267">hasGlobalReplicationScope</a>(<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> tableName)
+<pre>private boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.268">hasGlobalReplicationScope</a>(<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> tableName)
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>
@@ -562,7 +564,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>hasGlobalReplicationScope</h4>
-<pre>private boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.271">hasGlobalReplicationScope</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a> htd)</pre>
+<pre>private boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.272">hasGlobalReplicationScope</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a> htd)</pre>
</li>
</ul>
<a name="getRegionReplication-org.apache.hadoop.hbase.client.TableDescriptor-">
@@ -571,7 +573,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>getRegionReplication</h4>
-<pre>private int <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.275">getRegionReplication</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a> htd)</pre>
+<pre>private int <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.276">getRegionReplication</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a> htd)</pre>
</li>
</ul>
<a name="getTableDescriptor-org.apache.hadoop.hbase.TableName-">
@@ -580,7 +582,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>getTableDescriptor</h4>
-<pre>private <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/master/assignment/RegionStateStore.html#line.279">getTableDescriptor</a>(<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> tableName)
+<pre>private <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/master/assignment/RegionStateStore.html#line.280">getTableDescriptor</a>(<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> tableName)
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>
@@ -594,7 +596,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>getRegionServer</h4>
-<pre>static <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.295">getRegionServer</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a> r,
+<pre>static <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.296">getRegionServer</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a> r,
int replicaId)</pre>
<div class="block">Returns the <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase"><code>ServerName</code></a> from catalog table <a href="../../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client"><code>Result</code></a>
where the region is transitioning. It should be the same as
@@ -614,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>getServerNameColumn</h4>
-<pre>private static byte[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.312">getServerNameColumn</a>(int replicaId)</pre>
+<pre>private static byte[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.313">getServerNameColumn</a>(int replicaId)</pre>
</li>
</ul>
<a name="getRegionState-org.apache.hadoop.hbase.client.Result-int-">
@@ -623,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>getRegionState</h4>
-<pre>public static <a href="../../../../../../org/apache/hadoop/hbase/master/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master">RegionState.State</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.329">getRegionState</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a> r,
+<pre>public static <a href="../../../../../../org/apache/hadoop/hbase/master/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master">RegionState.State</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.330">getRegionState</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a> r,
int replicaId)</pre>
<div class="block">Pull the region state from a catalog table <a href="../../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client"><code>Result</code></a>.</div>
<dl>
@@ -640,7 +642,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockListLast">
<li class="blockList">
<h4>getStateColumn</h4>
-<pre>private static byte[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.338">getStateColumn</a>(int replicaId)</pre>
+<pre>private static byte[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#line.339">getStateColumn</a>(int replicaId)</pre>
</li>
</ul>
</li>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html b/devapidocs/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html
index 988a49b..0db34de 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html
@@ -1087,7 +1087,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/T
<ul class="blockList">
<li class="blockList">
<h4>releaseLock</h4>
-<pre>protected void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.445">releaseLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</pre>
+<pre>protected void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.446">releaseLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class: <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#releaseLock-TEnvironment-">Procedure</a></code></span></div>
<div class="block">The user should override this method, and release lock if necessary.</div>
<dl>
@@ -1102,7 +1102,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/T
<ul class="blockList">
<li class="blockList">
<h4>holdLock</h4>
-<pre>protected boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.451">holdLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</pre>
+<pre>protected boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.452">holdLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class: <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#holdLock-TEnvironment-">Procedure</a></code></span></div>
<div class="block">Used to keep the procedure lock even when the procedure is yielding or suspended.
Must implement <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#hasLock-TEnvironment-"><code>Procedure.hasLock(Object)</code></a> if you want to hold the lock for life
@@ -1123,7 +1123,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/T
<ul class="blockList">
<li class="blockList">
<h4>hasLock</h4>
-<pre>protected boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.456">hasLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</pre>
+<pre>protected boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.457">hasLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class: <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#hasLock-TEnvironment-">Procedure</a></code></span></div>
<div class="block">This is used in conjunction with <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#holdLock-TEnvironment-"><code>Procedure.holdLock(Object)</code></a>. If <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#holdLock-TEnvironment-"><code>Procedure.holdLock(Object)</code></a>
returns true, the procedure executor will call acquireLock() once and thereafter
@@ -1145,7 +1145,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/T
<ul class="blockList">
<li class="blockList">
<h4>shouldWaitClientAck</h4>
-<pre>protected boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.461">shouldWaitClientAck</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</pre>
+<pre>protected boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.462">shouldWaitClientAck</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class: <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#shouldWaitClientAck-TEnvironment-">Procedure</a></code></span></div>
<div class="block">By default, the executor will keep the procedure result around util
the eviction TTL is expired. The client can cut down the waiting time
@@ -1168,7 +1168,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/T
<ul class="blockList">
<li class="blockList">
<h4>getServer</h4>
-<pre>public abstract <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.471">getServer</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</pre>
+<pre>public abstract <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.472">getServer</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</pre>
<div class="block">Used by ServerCrashProcedure to see if this Assign/Unassign needs processing.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
@@ -1182,7 +1182,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/T
<ul class="blockList">
<li class="blockList">
<h4>remoteOperationCompleted</h4>
-<pre>public void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.474">remoteOperationCompleted</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</pre>
+<pre>public void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.475">remoteOperationCompleted</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface: <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/RemoteProcedureDispatcher.RemoteProcedure.html#remoteOperationCompleted-TEnv-">RemoteProcedureDispatcher.RemoteProcedure</a></code></span></div>
<div class="block">Called when RS tells the remote procedure is succeeded through the
<code>reportProcedureDone</code> method.</div>
@@ -1198,7 +1198,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/T
<ul class="blockListLast">
<li class="blockList">
<h4>remoteOperationFailed</h4>
-<pre>public void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.480">remoteOperationFailed</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
+<pre>public void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#line.481">remoteOperationFailed</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
<a href="../../../../../../org/apache/hadoop/hbase/procedure2/RemoteProcedureException.html" title="class in org.apache.hadoop.hbase.procedure2">RemoteProcedureException</a> error)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface: <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/RemoteProcedureDispatcher.RemoteProcedure.html#remoteOperationFailed-TEnv-org.apache.hadoop.hbase.procedure2.RemoteProcedureException-">RemoteProcedureDispatcher.RemoteProcedure</a></code></span></div>
<div class="block">Called when RS tells the remote procedure is failed through the <code>reportProcedureDone</code>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/master/class-use/MasterServices.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/class-use/MasterServices.html b/devapidocs/org/apache/hadoop/hbase/master/class-use/MasterServices.html
index 559c744..e4a3e9b 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/class-use/MasterServices.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/class-use/MasterServices.html
@@ -646,7 +646,9 @@
<tbody>
<tr class="altColor">
<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/master/MasterServices.html" title="interface in org.apache.hadoop.hbase.master">MasterServices</a></code></td>
-<td class="colLast"><span class="typeNameLabel">RecoverMetaProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#master">master</a></span></code> </td>
+<td class="colLast"><span class="typeNameLabel">RecoverMetaProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#master">master</a></span></code>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
+ </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/master/MasterServices.html" title="interface in org.apache.hadoop.hbase.master">MasterServices</a></code></td>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/master/class-use/RegionState.State.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/class-use/RegionState.State.html b/devapidocs/org/apache/hadoop/hbase/master/class-use/RegionState.State.html
index 00ef43c..69a3eee 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/class-use/RegionState.State.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/class-use/RegionState.State.html
@@ -390,16 +390,22 @@ the order they are declared.</div>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private void</code></td>
+<td class="colLast"><span class="typeNameLabel">RegionStateStore.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#updateMetaLocation-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.ServerName-org.apache.hadoop.hbase.master.RegionState.State-">updateMetaLocation</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo,
+ <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName,
+ <a href="../../../../../../org/apache/hadoop/hbase/master/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master">RegionState.State</a> state)</code> </td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private void</code></td>
<td class="colLast"><span class="typeNameLabel">RegionStateStore.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#updateRegionLocation-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.master.RegionState.State-org.apache.hadoop.hbase.client.Put-">updateRegionLocation</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo,
<a href="../../../../../../org/apache/hadoop/hbase/master/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master">RegionState.State</a> state,
<a href="../../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a> put)</code> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><span class="typeNameLabel">RegionStates.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.html#updateRegionState-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.master.RegionState.State-">updateRegionState</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo,
<a href="../../../../../../org/apache/hadoop/hbase/master/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master">RegionState.State</a> state)</code> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><span class="typeNameLabel">RegionStateStore.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#updateUserRegionLocation-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.master.RegionState.State-org.apache.hadoop.hbase.ServerName-org.apache.hadoop.hbase.ServerName-long-long-">updateUserRegionLocation</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo,
<a href="../../../../../../org/apache/hadoop/hbase/master/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master">RegionState.State</a> state,
@@ -408,7 +414,7 @@ the order they are declared.</div>
long openSeqNum,
long pid)</code> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><span class="typeNameLabel">RegionStateStore.RegionStateVisitor.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStateStore.RegionStateVisitor.html#visitRegionState-org.apache.hadoop.hbase.client.Result-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.master.RegionState.State-org.apache.hadoop.hbase.ServerName-org.apache.hadoop.hbase.ServerName-long-">visitRegionState</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a> result,
<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo,
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/master/class-use/ServerManager.FlushedSequenceIdFlusher.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/class-use/ServerManager.FlushedSequenceIdFlusher.html b/devapidocs/org/apache/hadoop/hbase/master/class-use/ServerManager.FlushedSequenceIdFlusher.html
new file mode 100644
index 0000000..f5ebc9f
--- /dev/null
+++ b/devapidocs/org/apache/hadoop/hbase/master/class-use/ServerManager.FlushedSequenceIdFlusher.html
@@ -0,0 +1,165 @@
+<!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.master.ServerManager.FlushedSequenceIdFlusher (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.master.ServerManager.FlushedSequenceIdFlusher (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/master/ServerManager.FlushedSequenceIdFlusher.html" title="class in org.apache.hadoop.hbase.master">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/master/class-use/ServerManager.FlushedSequenceIdFlusher.html" target="_top">Frames</a></li>
+<li><a href="ServerManager.FlushedSequenceIdFlusher.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../allclasses-noframe.html">All 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.master.ServerManager.FlushedSequenceIdFlusher" class="title">Uses of Class<br>org.apache.hadoop.hbase.master.ServerManager.FlushedSequenceIdFlusher</h2>
+</div>
+<div class="classUseContainer">
+<ul class="blockList">
+<li class="blockList">
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing packages, and an explanation">
+<caption><span>Packages that use <a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.FlushedSequenceIdFlusher.html" title="class in org.apache.hadoop.hbase.master">ServerManager.FlushedSequenceIdFlusher</a></span><span class="tabEnd"> </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.master">org.apache.hadoop.hbase.master</a></td>
+<td class="colLast"> </td>
+</tr>
+</tbody>
+</table>
+</li>
+<li class="blockList">
+<ul class="blockList">
+<li class="blockList"><a name="org.apache.hadoop.hbase.master">
+<!-- -->
+</a>
+<h3>Uses of <a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.FlushedSequenceIdFlusher.html" title="class in org.apache.hadoop.hbase.master">ServerManager.FlushedSequenceIdFlusher</a> in <a href="../../../../../../org/apache/hadoop/hbase/master/package-summary.html">org.apache.hadoop.hbase.master</a></h3>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing fields, and an explanation">
+<caption><span>Fields in <a href="../../../../../../org/apache/hadoop/hbase/master/package-summary.html">org.apache.hadoop.hbase.master</a> declared as <a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.FlushedSequenceIdFlusher.html" title="class in org.apache.hadoop.hbase.master">ServerManager.FlushedSequenceIdFlusher</a></span><span class="tabEnd"> </span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.FlushedSequenceIdFlusher.html" title="class in org.apache.hadoop.hbase.master">ServerManager.FlushedSequenceIdFlusher</a></code></td>
+<td class="colLast"><span class="typeNameLabel">ServerManager.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html#flushedSeqIdFlusher">flushedSeqIdFlusher</a></span></code> </td>
+</tr>
+</tbody>
+</table>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!-- -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!-- -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.FlushedSequenceIdFlusher.html" title="class in org.apache.hadoop.hbase.master">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/master/class-use/ServerManager.FlushedSequenceIdFlusher.html" target="_top">Frames</a></li>
+<li><a href="ServerManager.FlushedSequenceIdFlusher.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../allclasses-noframe.html">All 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 © 2007–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/65565d77/devapidocs/org/apache/hadoop/hbase/master/normalizer/class-use/RegionNormalizer.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/normalizer/class-use/RegionNormalizer.html b/devapidocs/org/apache/hadoop/hbase/master/normalizer/class-use/RegionNormalizer.html
index d8fb2f6..35befc0 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/normalizer/class-use/RegionNormalizer.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/normalizer/class-use/RegionNormalizer.html
@@ -87,10 +87,6 @@
<td class="colLast"> </td>
</tr>
<tr class="rowColor">
-<td class="colFirst"><a href="#org.apache.hadoop.hbase.master.assignment">org.apache.hadoop.hbase.master.assignment</a></td>
-<td class="colLast"> </td>
-</tr>
-<tr class="altColor">
<td class="colFirst"><a href="#org.apache.hadoop.hbase.master.normalizer">org.apache.hadoop.hbase.master.normalizer</a></td>
<td class="colLast"> </td>
</tr>
@@ -134,50 +130,6 @@
</tbody>
</table>
</li>
-<li class="blockList"><a name="org.apache.hadoop.hbase.master.assignment">
-<!-- -->
-</a>
-<h3>Uses of <a href="../../../../../../../org/apache/hadoop/hbase/master/normalizer/RegionNormalizer.html" title="interface in org.apache.hadoop.hbase.master.normalizer">RegionNormalizer</a> in <a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/package-summary.html">org.apache.hadoop.hbase.master.assignment</a></h3>
-<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing fields, and an explanation">
-<caption><span>Fields in <a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/package-summary.html">org.apache.hadoop.hbase.master.assignment</a> declared as <a href="../../../../../../../org/apache/hadoop/hbase/master/normalizer/RegionNormalizer.html" title="interface in org.apache.hadoop.hbase.master.normalizer">RegionNormalizer</a></span><span class="tabEnd"> </span></caption>
-<tr>
-<th class="colFirst" scope="col">Modifier and Type</th>
-<th class="colLast" scope="col">Field and Description</th>
-</tr>
-<tbody>
-<tr class="altColor">
-<td class="colFirst"><code>private <a href="../../../../../../../org/apache/hadoop/hbase/master/normalizer/RegionNormalizer.html" title="interface in org.apache.hadoop.hbase.master.normalizer">RegionNormalizer</a></code></td>
-<td class="colLast"><span class="typeNameLabel">AssignmentManager.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#regionNormalizer">regionNormalizer</a></span></code> </td>
-</tr>
-</tbody>
-</table>
-<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing methods, and an explanation">
-<caption><span>Methods in <a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/package-summary.html">org.apache.hadoop.hbase.master.assignment</a> that return <a href="../../../../../../../org/apache/hadoop/hbase/master/normalizer/RegionNormalizer.html" title="interface in org.apache.hadoop.hbase.master.normalizer">RegionNormalizer</a></span><span class="tabEnd"> </span></caption>
-<tr>
-<th class="colFirst" scope="col">Modifier and Type</th>
-<th class="colLast" scope="col">Method and Description</th>
-</tr>
-<tbody>
-<tr class="altColor">
-<td class="colFirst"><code><a href="../../../../../../../org/apache/hadoop/hbase/master/normalizer/RegionNormalizer.html" title="interface in org.apache.hadoop.hbase.master.normalizer">RegionNormalizer</a></code></td>
-<td class="colLast"><span class="typeNameLabel">AssignmentManager.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#getRegionNormalizer--">getRegionNormalizer</a></span>()</code> </td>
-</tr>
-</tbody>
-</table>
-<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing methods, and an explanation">
-<caption><span>Methods in <a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/package-summary.html">org.apache.hadoop.hbase.master.assignment</a> with parameters of type <a href="../../../../../../../org/apache/hadoop/hbase/master/normalizer/RegionNormalizer.html" title="interface in org.apache.hadoop.hbase.master.normalizer">RegionNormalizer</a></span><span class="tabEnd"> </span></caption>
-<tr>
-<th class="colFirst" scope="col">Modifier and Type</th>
-<th class="colLast" scope="col">Method and Description</th>
-</tr>
-<tbody>
-<tr class="altColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><span class="typeNameLabel">AssignmentManager.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#setRegionNormalizer-org.apache.hadoop.hbase.master.normalizer.RegionNormalizer-">setRegionNormalizer</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/normalizer/RegionNormalizer.html" title="interface in org.apache.hadoop.hbase.master.normalizer">RegionNormalizer</a> normalizer)</code> </td>
-</tr>
-</tbody>
-</table>
-</li>
<li class="blockList"><a name="org.apache.hadoop.hbase.master.normalizer">
<!-- -->
</a>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/master/normalizer/package-use.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/normalizer/package-use.html b/devapidocs/org/apache/hadoop/hbase/master/normalizer/package-use.html
index e5beaef..f921439 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/normalizer/package-use.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/normalizer/package-use.html
@@ -87,10 +87,6 @@
<td class="colLast"> </td>
</tr>
<tr class="rowColor">
-<td class="colFirst"><a href="#org.apache.hadoop.hbase.master.assignment">org.apache.hadoop.hbase.master.assignment</a></td>
-<td class="colLast"> </td>
-</tr>
-<tr class="altColor">
<td class="colFirst"><a href="#org.apache.hadoop.hbase.master.normalizer">org.apache.hadoop.hbase.master.normalizer</a></td>
<td class="colLast"> </td>
</tr>
@@ -122,25 +118,6 @@
</tbody>
</table>
</li>
-<li class="blockList"><a name="org.apache.hadoop.hbase.master.assignment">
-<!-- -->
-</a>
-<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing classes, and an explanation">
-<caption><span>Classes in <a href="../../../../../../org/apache/hadoop/hbase/master/normalizer/package-summary.html">org.apache.hadoop.hbase.master.normalizer</a> used by <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/package-summary.html">org.apache.hadoop.hbase.master.assignment</a></span><span class="tabEnd"> </span></caption>
-<tr>
-<th class="colOne" scope="col">Class and Description</th>
-</tr>
-<tbody>
-<tr class="altColor">
-<td class="colOne"><a href="../../../../../../org/apache/hadoop/hbase/master/normalizer/class-use/RegionNormalizer.html#org.apache.hadoop.hbase.master.assignment">RegionNormalizer</a>
-<div class="block">Performs "normalization" of regions on the cluster, making sure that suboptimal
- choice of split keys doesn't leave cluster in a situation when some regions are
- substantially larger than others for considerable amount of time.</div>
-</td>
-</tr>
-</tbody>
-</table>
-</li>
<li class="blockList"><a name="org.apache.hadoop.hbase.master.normalizer">
<!-- -->
</a>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/master/package-summary.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/package-summary.html b/devapidocs/org/apache/hadoop/hbase/master/package-summary.html
index 46e06a9..d25f638 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/package-summary.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/package-summary.html
@@ -477,8 +477,7 @@
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/master/RegionServerTracker.html" title="class in org.apache.hadoop.hbase.master">RegionServerTracker</a></td>
<td class="colLast">
-<div class="block">
- Tracks the online region servers via ZK.</div>
+<div class="block">Tracks the online region servers via ZK.</div>
</td>
</tr>
<tr class="altColor">
@@ -493,49 +492,49 @@
<div class="block">The ServerManager class manages info about region servers.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/master/SnapshotOfRegionAssignmentFromMeta.html" title="class in org.apache.hadoop.hbase.master">SnapshotOfRegionAssignmentFromMeta</a></td>
<td class="colLast">
<div class="block">Used internally for reading meta and constructing datastructures that are
then queried, for things like regions to regionservers, table to regions, etc.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/master/SplitLogManager.html" title="class in org.apache.hadoop.hbase.master">SplitLogManager</a></td>
<td class="colLast">
<div class="block">Distributes the task of log splitting to the available region servers.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/master/SplitLogManager.Task.html" title="class in org.apache.hadoop.hbase.master">SplitLogManager.Task</a></td>
<td class="colLast">
<div class="block">in memory state of an active task.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/master/SplitLogManager.TaskBatch.html" title="class in org.apache.hadoop.hbase.master">SplitLogManager.TaskBatch</a></td>
<td class="colLast">
<div class="block">Keeps track of the batch of tasks submitted together by a caller in splitLogDistributed().</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/master/SplitOrMergeTracker.html" title="class in org.apache.hadoop.hbase.master">SplitOrMergeTracker</a></td>
<td class="colLast">
<div class="block">Tracks the switch of split and merge states in ZK</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/master/SplitOrMergeTracker.SwitchStateTracker.html" title="class in org.apache.hadoop.hbase.master">SplitOrMergeTracker.SwitchStateTracker</a></td>
<td class="colLast"> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/master/TableNamespaceManager.html" title="class in org.apache.hadoop.hbase.master">TableNamespaceManager</a></td>
<td class="colLast">
<div class="block">This is a helper class used internally to manage the namespace metadata that is stored in
TableName.NAMESPACE_TABLE_NAME.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/master/TableStateManager.html" title="class in org.apache.hadoop.hbase.master">TableStateManager</a></td>
<td class="colLast">
<div class="block">This is a helper class used to manage table states.</div>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/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 fd83326..93a541b 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/package-tree.html
@@ -214,6 +214,7 @@
<li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/ClusterStatusPublisher.html" title="class in org.apache.hadoop.hbase.master"><span class="typeNameLink">ClusterStatusPublisher</span></a></li>
<li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/ExpiredMobFileCleanerChore.html" title="class in org.apache.hadoop.hbase.master"><span class="typeNameLink">ExpiredMobFileCleanerChore</span></a></li>
<li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/MobCompactionChore.html" title="class in org.apache.hadoop.hbase.master"><span class="typeNameLink">MobCompactionChore</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.FlushedSequenceIdFlusher.html" title="class in org.apache.hadoop.hbase.master"><span class="typeNameLink">ServerManager.FlushedSequenceIdFlusher</span></a></li>
<li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/SplitLogManager.TimeoutMonitor.html" title="class in org.apache.hadoop.hbase.master"><span class="typeNameLink">SplitLogManager.TimeoutMonitor</span></a></li>
</ul>
</li>
@@ -347,10 +348,10 @@
<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><E> (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><T>, 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/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/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/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/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">RegionState.State</span></a></li>
<li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/SplitLogManager.ResubmitDirective.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">SplitLogManager.ResubmitDirective</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">MetricsMasterSourceFactoryImpl.FactoryStorage</span></a></li>
+<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>
</ul>
</li>
</ul>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/master/package-use.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/package-use.html b/devapidocs/org/apache/hadoop/hbase/master/package-use.html
index 6c12d0f..336625a 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/package-use.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/package-use.html
@@ -529,8 +529,7 @@
</tr>
<tr class="altColor">
<td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/master/class-use/RegionServerTracker.html#org.apache.hadoop.hbase.master">RegionServerTracker</a>
-<div class="block">
- Tracks the online region servers via ZK.</div>
+<div class="block">Tracks the online region servers via ZK.</div>
</td>
</tr>
<tr class="rowColor">
@@ -552,52 +551,55 @@
</td>
</tr>
<tr class="rowColor">
+<td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/master/class-use/ServerManager.FlushedSequenceIdFlusher.html#org.apache.hadoop.hbase.master">ServerManager.FlushedSequenceIdFlusher</a> </td>
+</tr>
+<tr class="altColor">
<td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/master/class-use/SnapshotOfRegionAssignmentFromMeta.html#org.apache.hadoop.hbase.master">SnapshotOfRegionAssignmentFromMeta</a>
<div class="block">Used internally for reading meta and constructing datastructures that are
then queried, for things like regions to regionservers, table to regions, etc.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/master/class-use/SplitLogManager.html#org.apache.hadoop.hbase.master">SplitLogManager</a>
<div class="block">Distributes the task of log splitting to the available region servers.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/master/class-use/SplitLogManager.ResubmitDirective.html#org.apache.hadoop.hbase.master">SplitLogManager.ResubmitDirective</a> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/master/class-use/SplitLogManager.Task.html#org.apache.hadoop.hbase.master">SplitLogManager.Task</a>
<div class="block">in memory state of an active task.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/master/class-use/SplitLogManager.TaskBatch.html#org.apache.hadoop.hbase.master">SplitLogManager.TaskBatch</a>
<div class="block">Keeps track of the batch of tasks submitted together by a caller in splitLogDistributed().</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/master/class-use/SplitLogManager.TerminationStatus.html#org.apache.hadoop.hbase.master">SplitLogManager.TerminationStatus</a> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/master/class-use/SplitLogManager.TimeoutMonitor.html#org.apache.hadoop.hbase.master">SplitLogManager.TimeoutMonitor</a>
<div class="block">Periodically checks all active tasks and resubmits the ones that have timed out</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/master/class-use/SplitOrMergeTracker.html#org.apache.hadoop.hbase.master">SplitOrMergeTracker</a>
<div class="block">Tracks the switch of split and merge states in ZK</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/master/class-use/SplitOrMergeTracker.SwitchStateTracker.html#org.apache.hadoop.hbase.master">SplitOrMergeTracker.SwitchStateTracker</a> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/master/class-use/TableNamespaceManager.html#org.apache.hadoop.hbase.master">TableNamespaceManager</a>
<div class="block">This is a helper class used internally to manage the namespace metadata that is stored in
TableName.NAMESPACE_TABLE_NAME.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/master/class-use/TableStateManager.html#org.apache.hadoop.hbase.master">TableStateManager</a>
<div class="block">This is a helper class used to manage table states.</div>
</td>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.html
index cd2bbe6..7090a6c 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.html
@@ -123,12 +123,12 @@ var activeTableTab = "activeTableTab";
</dl>
<dl>
<dt>Direct Known Subclasses:</dt>
-<dd><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/AbstractStateMachineRegionProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">AbstractStateMachineRegionProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/CloneSnapshotProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">CloneSnapshotProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/CreateTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">CreateTableProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/DeleteTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">DeleteTableProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/DisableTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">DisableTableProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/proc
edure/EnableTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">EnableTableProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/GCMergedRegionsProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">GCMergedRegionsProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">MergeTableRegionsProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ModifyTableProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ReopenTableRegionsProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ReopenTableRegionsProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html" title="class in org.apache.
hadoop.hbase.master.procedure">RestoreSnapshotProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TruncateTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">TruncateTableProcedure</a></dd>
+<dd><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/AbstractStateMachineRegionProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">AbstractStateMachineRegionProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/CloneSnapshotProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">CloneSnapshotProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/CreateTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">CreateTableProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/DeleteTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">DeleteTableProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/DisableTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">DisableTableProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/proc
edure/EnableTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">EnableTableProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/GCMergedRegionsProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">GCMergedRegionsProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">InitMetaProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">MergeTableRegionsProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ModifyTableProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ReopenTableRegionsProcedure.html" title="class in org.apache.hadoop.hbase.mast
er.procedure">ReopenTableRegionsProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RestoreSnapshotProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TruncateTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">TruncateTableProcedure</a></dd>
</dl>
<hr>
<br>
<pre>@InterfaceAudience.Private
-public abstract class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.html#line.48">AbstractStateMachineTableProcedure</a><TState>
+public abstract class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.html#line.46">AbstractStateMachineTableProcedure</a><TState>
extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">StateMachineProcedure</a><<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>,TState>
implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.html" title="interface in org.apache.hadoop.hbase.master.procedure">TableProcedureInterface</a></pre>
<div class="block">Base class for all the Table procedures that want to use a StateMachineProcedure.
@@ -346,7 +346,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/T
<ul class="blockList">
<li class="blockList">
<h4>syncLatch</h4>
-<pre>private final <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ProcedurePrepareLatch.html" title="class in org.apache.hadoop.hbase.master.procedure">ProcedurePrepareLatch</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.html#line.53">syncLatch</a></pre>
+<pre>private final <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ProcedurePrepareLatch.html" title="class in org.apache.hadoop.hbase.master.procedure">ProcedurePrepareLatch</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.html#line.51">syncLatch</a></pre>
</li>
</ul>
<a name="user">
@@ -355,7 +355,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/T
<ul class="blockListLast">
<li class="blockList">
<h4>user</h4>
-<pre>private <a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.html#line.55">user</a></pre>
+<pre>private <a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.html#line.53">user</a></pre>
</li>
</ul>
</li>
@@ -372,7 +372,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/T
<ul class="blockList">
<li class="blockList">
<h4>AbstractStateMachineTableProcedure</h4>
-<pre>protected <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.html#line.57">AbstractStateMachineTableProcedure</a>()</pre>
+<pre>protected <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.html#line.55">AbstractStateMachineTableProcedure</a>()</pre>
</li>
</ul>
<a name="AbstractStateMachineTableProcedure-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">
@@ -381,7 +381,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/T
<ul class="blockList">
<li class="blockList">
<h4>AbstractStateMachineTableProcedure</h4>
-<pre>protected <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.html#line.62">AbstractStateMachineTableProcedure</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</pre>
+<pre>protected <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.html#line.60">AbstractStateMachineTableProcedure</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</pre>
</li>
</ul>
<a name="AbstractStateMachineTableProcedure-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.master.procedure.ProcedurePrepareLatch-">
@@ -390,7 +390,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/T
<ul class="blockListLast">
<li class="blockList">
<h4>AbstractStateMachineTableProcedure</h4>
-<pre>protected <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.html#line.69">AbstractStateMachineTableProcedure</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
+<pre>protected <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.html#line.67">AbstractStateMachineTableProcedure</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ProcedurePrepareLatch.html" title="class in org.apache.hadoop.hbase.master.procedure">ProcedurePrepareLatch</a> latch)</pre>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
@@ -412,7 +412,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/T
<ul class="blockList">
<li class="blockList">
<h4>getTableName</h4>
-<pre>public abstract <a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.html#line.81">getTableName</a>()</pre>
+<pre>public abstract <a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.html#line.79">getTableName</a>()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.html#getTableName--">getTableName</a></code> in interface <code><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.html" title="interface in org.apache.hadoop.hbase.master.procedure">TableProcedureInterface</a></code></dd>
@@ -427,7 +427,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/T
<ul class="blockList">
<li class="blockList">
<h4>getTableOperationType</h4>
-<pre>public abstract <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.TableOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure">TableProcedureInterface.TableOperationType</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.html#line.84">getTableOperationType</a>()</pre>
+<pre>public abstract <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.TableOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure">TableProcedureInterface.TableOperationType</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.html#line.82">getTableOperationType</a>()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface: <code><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.html#getTableOperationType--">TableProcedureInterface</a></code></span></div>
<div class="block">Given an operation type we can take decisions about what to do with pending operations.
e.g. if we get a delete and we have some table operation pending (e.g. add column)
@@ -446,7 +446,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/T
<ul class="blockList">
<li class="blockList">
<h4>toStringClassDetails</h4>
-<pre>public void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.html#line.87">toStringClassDetails</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html?is-external=true" title="class or interface in java.lang">StringBuilder</a> sb)</pre>
+<pre>public void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.html#line.85">toStringClassDetails</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html?is-external=true" title="class or interface in java.lang">StringBuilder</a> sb)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class: <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#toStringClassDetails-java.lang.StringBuilder-">Procedure</a></code></span></div>
<div class="block">Extend the toString() information with the procedure details
e.g. className and parameters</div>
@@ -464,7 +464,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/T
<ul class="blockList">
<li class="blockList">
<h4>acquireLock</h4>
-<pre>protected <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.LockState.html" title="enum in org.apache.hadoop.hbase.procedure2">Procedure.LockState</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.html#line.94">acquireLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</pre>
+<pre>protected <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.LockState.html" title="enum in org.apache.hadoop.hbase.procedure2">Procedure.LockState</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.html#line.92">acquireLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class: <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#acquireLock-TEnvironment-">Procedure</a></code></span></div>
<div class="block">The user should override this method if they need a lock on an Entity.
A lock can be anything, and it is up to the implementor. The Procedure
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/master/procedure/FairQueue.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/FairQueue.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/FairQueue.html
index de8d873..855bc18 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/FairQueue.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/FairQueue.html
@@ -50,7 +50,7 @@ var activeTableTab = "activeTableTab";
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/EnableTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">Prev Class</span></a></li>
-<li><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterDDLOperationHelper.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">Next Class</span></a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/master/procedure/FairQueue.html" target="_top">Frames</a></li>
@@ -316,7 +316,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/master/procedure/EnableTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">Prev Class</span></a></li>
-<li><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterDDLOperationHelper.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">Next Class</span></a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/master/procedure/FairQueue.html" target="_top">Frames</a></li>
[30/51] [partial] hbase-site git commit: Published site at
9101fc246f86445006bfbcdfda5cc495016dc280.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/master/procedure/SchemaLocking.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/SchemaLocking.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/SchemaLocking.html
index 2153167..29b58bc 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/SchemaLocking.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/SchemaLocking.html
@@ -18,8 +18,8 @@
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};
-var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":42,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":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";
var tableTab = "tableTab";
@@ -188,7 +188,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
</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"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </span></span></caption>
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </span></span><span id="t6" class="tableTab"><span><a href="javascript:show(32);">Deprecated Methods</a></span><span class="tabEnd"> </span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
@@ -234,7 +234,12 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>(package private) <a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockAndQueue.html" title="class in org.apache.hadoop.hbase.procedure2">LockAndQueue</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/SchemaLocking.html#getMetaLock--">getMetaLock</a></span>()</code> </td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/SchemaLocking.html#getMetaLock--">getMetaLock</a></span>()</code>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span>
+<div class="block"><span class="deprecationComment">only used for <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>RecoverMetaProcedure</code></a>. Should be removed along with
+ <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>RecoverMetaProcedure</code></a>.</span></div>
+</div>
+</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>(package private) <a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockAndQueue.html" title="class in org.apache.hadoop.hbase.procedure2">LockAndQueue</a></code></td>
@@ -427,7 +432,10 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>getMetaLock</h4>
-<pre><a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockAndQueue.html" title="class in org.apache.hadoop.hbase.procedure2">LockAndQueue</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SchemaLocking.html#line.81">getMetaLock</a>()</pre>
+<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>
+<a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockAndQueue.html" title="class in org.apache.hadoop.hbase.procedure2">LockAndQueue</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SchemaLocking.html#line.86">getMetaLock</a>()</pre>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> <span class="deprecationComment">only used for <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>RecoverMetaProcedure</code></a>. Should be removed along with
+ <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>RecoverMetaProcedure</code></a>.</span></div>
</li>
</ul>
<a name="removeRegionLock-java.lang.String-">
@@ -436,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>removeRegionLock</h4>
-<pre><a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockAndQueue.html" title="class in org.apache.hadoop.hbase.procedure2">LockAndQueue</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SchemaLocking.html#line.85">removeRegionLock</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> encodedRegionName)</pre>
+<pre><a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockAndQueue.html" title="class in org.apache.hadoop.hbase.procedure2">LockAndQueue</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SchemaLocking.html#line.90">removeRegionLock</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> encodedRegionName)</pre>
</li>
</ul>
<a name="getServerLock-org.apache.hadoop.hbase.ServerName-">
@@ -445,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>getServerLock</h4>
-<pre><a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockAndQueue.html" title="class in org.apache.hadoop.hbase.procedure2">LockAndQueue</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SchemaLocking.html#line.89">getServerLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName)</pre>
+<pre><a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockAndQueue.html" title="class in org.apache.hadoop.hbase.procedure2">LockAndQueue</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SchemaLocking.html#line.94">getServerLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName)</pre>
</li>
</ul>
<a name="getPeerLock-java.lang.String-">
@@ -454,7 +462,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>getPeerLock</h4>
-<pre><a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockAndQueue.html" title="class in org.apache.hadoop.hbase.procedure2">LockAndQueue</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SchemaLocking.html#line.93">getPeerLock</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> peerId)</pre>
+<pre><a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockAndQueue.html" title="class in org.apache.hadoop.hbase.procedure2">LockAndQueue</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SchemaLocking.html#line.98">getPeerLock</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> peerId)</pre>
</li>
</ul>
<a name="removePeerLock-java.lang.String-">
@@ -463,7 +471,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>removePeerLock</h4>
-<pre><a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockAndQueue.html" title="class in org.apache.hadoop.hbase.procedure2">LockAndQueue</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SchemaLocking.html#line.97">removePeerLock</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> peerId)</pre>
+<pre><a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockAndQueue.html" title="class in org.apache.hadoop.hbase.procedure2">LockAndQueue</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SchemaLocking.html#line.102">removePeerLock</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> peerId)</pre>
</li>
</ul>
<a name="createLockedResource-org.apache.hadoop.hbase.procedure2.LockedResourceType-java.lang.String-org.apache.hadoop.hbase.procedure2.LockAndQueue-">
@@ -472,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>createLockedResource</h4>
-<pre>private <a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockedResource.html" title="class in org.apache.hadoop.hbase.procedure2">LockedResource</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SchemaLocking.html#line.101">createLockedResource</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockedResourceType.html" title="enum in org.apache.hadoop.hbase.procedure2">LockedResourceType</a> resourceType,
+<pre>private <a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockedResource.html" title="class in org.apache.hadoop.hbase.procedure2">LockedResource</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SchemaLocking.html#line.106">createLockedResource</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockedResourceType.html" title="enum in org.apache.hadoop.hbase.procedure2">LockedResourceType</a> resourceType,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> resourceName,
<a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockAndQueue.html" title="class in org.apache.hadoop.hbase.procedure2">LockAndQueue</a> queue)</pre>
</li>
@@ -483,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>addToLockedResources</h4>
-<pre>private <T> void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SchemaLocking.html#line.131">addToLockedResources</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><<a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockedResource.html" title="class in org.apache.hadoop.hbase.procedure2">LockedResource</a>> lockedResources,
+<pre>private <T> void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SchemaLocking.html#line.136">addToLockedResources</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><<a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockedResource.html" title="class in org.apache.hadoop.hbase.procedure2">LockedResource</a>> lockedResources,
<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><T,<a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockAndQueue.html" title="class in org.apache.hadoop.hbase.procedure2">LockAndQueue</a>> locks,
<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><T,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>> keyTransformer,
<a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockedResourceType.html" title="enum in org.apache.hadoop.hbase.procedure2">LockedResourceType</a> resourcesType)</pre>
@@ -495,7 +503,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>getLocks</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><<a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockedResource.html" title="class in org.apache.hadoop.hbase.procedure2">LockedResource</a>> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SchemaLocking.html#line.143">getLocks</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><<a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockedResource.html" title="class in org.apache.hadoop.hbase.procedure2">LockedResource</a>> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SchemaLocking.html#line.148">getLocks</a>()</pre>
<div class="block">List lock queues.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
@@ -509,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>getLockResource</h4>
-<pre><a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockedResource.html" title="class in org.apache.hadoop.hbase.procedure2">LockedResource</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SchemaLocking.html#line.163">getLockResource</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockedResourceType.html" title="enum in org.apache.hadoop.hbase.procedure2">LockedResourceType</a> resourceType,
+<pre><a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockedResource.html" title="class in org.apache.hadoop.hbase.procedure2">LockedResource</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SchemaLocking.html#line.168">getLockResource</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockedResourceType.html" title="enum in org.apache.hadoop.hbase.procedure2">LockedResourceType</a> resourceType,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> resourceName)</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
@@ -524,7 +532,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>clear</h4>
-<pre>void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SchemaLocking.html#line.194">clear</a>()</pre>
+<pre>void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SchemaLocking.html#line.199">clear</a>()</pre>
<div class="block">Removes all locks by clearing the maps. Used when procedure executor is stopped for failure and
recovery testing.</div>
</li>
@@ -535,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>toString</h4>
-<pre>public <a href="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/procedure/SchemaLocking.html#line.203">toString</a>()</pre>
+<pre>public <a href="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/procedure/SchemaLocking.html#line.208">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> in class <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>
@@ -548,7 +556,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockListLast">
<li class="blockList">
<h4>filterUnlocked</h4>
-<pre>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> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SchemaLocking.html#line.211">filterUnlocked</a>(<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><?,<a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockAndQueue.html" title="class in org.apache.hadoop.hbase.procedure2">LockAndQueue</a>> locks)</pre>
+<pre>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> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/SchemaLocking.html#line.216">filterUnlocked</a>(<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><?,<a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockAndQueue.html" title="class in org.apache.hadoop.hbase.procedure2">LockAndQueue</a>> locks)</pre>
</li>
</ul>
</li>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html
index f2ae0a5..ad95213 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.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};
+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};
var tabs = {65535:["t0","All 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.Private
-public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.57">ServerCrashProcedure</a>
+public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.59">ServerCrashProcedure</a>
extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">StateMachineProcedure</a><<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>,org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ServerCrashState>
implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerProcedureInterface.html" title="interface in org.apache.hadoop.hbase.master.procedure">ServerProcedureInterface</a></pre>
<div class="block">Handle crashed server. This is a port to ProcedureV2 of what used to be euphemistically called
@@ -388,6 +388,10 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/S
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#splitLogs-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">splitLogs</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code> </td>
</tr>
<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/procedure/ServerCrashProcedure.html#splitMetaLogs-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">splitMetaLogs</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code> </td>
+</tr>
+<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/procedure/ServerCrashProcedure.html#toStringClassDetails-java.lang.StringBuilder-">toStringClassDetails</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html?is-external=true" title="class or interface in java.lang">StringBuilder</a> sb)</code>
<div class="block">Extend the toString() information with the procedure details
@@ -436,7 +440,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/S
<ul class="blockList">
<li class="blockList">
<h4>LOG</h4>
-<pre>private static final org.slf4j.Logger <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.60">LOG</a></pre>
+<pre>private static final org.slf4j.Logger <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.62">LOG</a></pre>
</li>
</ul>
<a name="serverName">
@@ -445,7 +449,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/S
<ul class="blockList">
<li class="blockList">
<h4>serverName</h4>
-<pre>private <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.65">serverName</a></pre>
+<pre>private <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.67">serverName</a></pre>
<div class="block">Name of the crashed server to process.</div>
</li>
</ul>
@@ -455,7 +459,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/S
<ul class="blockList">
<li class="blockList">
<h4>notifiedDeadServer</h4>
-<pre>private boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.70">notifiedDeadServer</a></pre>
+<pre>private boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.72">notifiedDeadServer</a></pre>
<div class="block">Whether DeadServer knows that we are processing it.</div>
</li>
</ul>
@@ -465,7 +469,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/S
<ul class="blockList">
<li class="blockList">
<h4>regionsOnCrashedServer</h4>
-<pre>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><<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.75">regionsOnCrashedServer</a></pre>
+<pre>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><<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.77">regionsOnCrashedServer</a></pre>
<div class="block">Regions that were on the crashed server.</div>
</li>
</ul>
@@ -475,7 +479,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/S
<ul class="blockList">
<li class="blockList">
<h4>carryingMeta</h4>
-<pre>private boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.77">carryingMeta</a></pre>
+<pre>private boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.79">carryingMeta</a></pre>
</li>
</ul>
<a name="shouldSplitWal">
@@ -484,7 +488,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/S
<ul class="blockListLast">
<li class="blockList">
<h4>shouldSplitWal</h4>
-<pre>private boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.78">shouldSplitWal</a></pre>
+<pre>private boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.80">shouldSplitWal</a></pre>
</li>
</ul>
</li>
@@ -501,7 +505,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/S
<ul class="blockList">
<li class="blockList">
<h4>ServerCrashProcedure</h4>
-<pre>public <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.86">ServerCrashProcedure</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
+<pre>public <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.88">ServerCrashProcedure</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName,
boolean shouldSplitWal,
boolean carryingMeta)</pre>
@@ -520,7 +524,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/S
<ul class="blockListLast">
<li class="blockList">
<h4>ServerCrashProcedure</h4>
-<pre>public <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.101">ServerCrashProcedure</a>()</pre>
+<pre>public <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.100">ServerCrashProcedure</a>()</pre>
<div class="block">Used when deserializing from a procedure store; we'll construct one of these then call
#deserializeStateData(InputStream). Do not use directly.</div>
</li>
@@ -539,7 +543,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/S
<ul class="blockList">
<li class="blockList">
<h4>executeFromState</h4>
-<pre>protected <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2">StateMachineProcedure.Flow</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.106">executeFromState</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
+<pre>protected <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2">StateMachineProcedure.Flow</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.105">executeFromState</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ServerCrashState state)
throws <a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureSuspendedException.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureSuspendedException</a>,
<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureYieldException.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureYieldException</a></pre>
@@ -564,11 +568,9 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/S
<ul class="blockList">
<li class="blockList">
<h4>processMeta</h4>
-<pre>private void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.206">processMeta</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)
+<pre>private void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.204">processMeta</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)
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>
-<dd><code>env</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>
@@ -580,7 +582,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/S
<ul class="blockList">
<li class="blockList">
<h4>filterDefaultMetaRegions</h4>
-<pre>private boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.219">filterDefaultMetaRegions</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><<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>> regions)</pre>
+<pre>private boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.217">filterDefaultMetaRegions</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><<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>> regions)</pre>
</li>
</ul>
<a name="isDefaultMetaRegion-org.apache.hadoop.hbase.client.RegionInfo-">
@@ -589,7 +591,21 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/S
<ul class="blockList">
<li class="blockList">
<h4>isDefaultMetaRegion</h4>
-<pre>private boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.225">isDefaultMetaRegion</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> hri)</pre>
+<pre>private boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.223">isDefaultMetaRegion</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> hri)</pre>
+</li>
+</ul>
+<a name="splitMetaLogs-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">
+<!-- -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>splitMetaLogs</h4>
+<pre>private void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.228">splitMetaLogs</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)
+ 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="splitLogs-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">
@@ -598,7 +614,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/S
<ul class="blockList">
<li class="blockList">
<h4>splitLogs</h4>
-<pre>private void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.230">splitLogs</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)
+<pre>private void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.238">splitLogs</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)
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>
@@ -612,7 +628,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/S
<ul class="blockList">
<li class="blockList">
<h4>rollbackState</h4>
-<pre>protected void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.245">rollbackState</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
+<pre>protected void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.251">rollbackState</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ServerCrashState state)
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: <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#rollbackState-TEnvironment-TState-">StateMachineProcedure</a></code></span></div>
@@ -632,7 +648,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/S
<ul class="blockList">
<li class="blockList">
<h4>getState</h4>
-<pre>protected org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ServerCrashState <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.252">getState</a>(int stateId)</pre>
+<pre>protected org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ServerCrashState <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.258">getState</a>(int stateId)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class: <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getState-int-">StateMachineProcedure</a></code></span></div>
<div class="block">Convert an ordinal (or state id) to an Enum (or more descriptive) state object.</div>
<dl>
@@ -651,7 +667,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/S
<ul class="blockList">
<li class="blockList">
<h4>getStateId</h4>
-<pre>protected int <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.257">getStateId</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ServerCrashState state)</pre>
+<pre>protected int <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.263">getStateId</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ServerCrashState state)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class: <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getStateId-TState-">StateMachineProcedure</a></code></span></div>
<div class="block">Convert the Enum (or more descriptive) state object to an ordinal (or state id).</div>
<dl>
@@ -670,7 +686,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/S
<ul class="blockList">
<li class="blockList">
<h4>getInitialState</h4>
-<pre>protected org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ServerCrashState <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.262">getInitialState</a>()</pre>
+<pre>protected org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ServerCrashState <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.268">getInitialState</a>()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class: <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getInitialState--">StateMachineProcedure</a></code></span></div>
<div class="block">Return the initial state object that will be used for the first call to executeFromState().</div>
<dl>
@@ -687,7 +703,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/S
<ul class="blockList">
<li class="blockList">
<h4>abort</h4>
-<pre>protected boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.267">abort</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</pre>
+<pre>protected boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.273">abort</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class: <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#abort-TEnvironment-">Procedure</a></code></span></div>
<div class="block">The abort() call is asynchronous and each procedure must decide how to deal
with it, if they want to be abortable. The simplest implementation
@@ -710,7 +726,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/S
<ul class="blockList">
<li class="blockList">
<h4>acquireLock</h4>
-<pre>protected <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.LockState.html" title="enum in org.apache.hadoop.hbase.procedure2">Procedure.LockState</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.273">acquireLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</pre>
+<pre>protected <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.LockState.html" title="enum in org.apache.hadoop.hbase.procedure2">Procedure.LockState</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.279">acquireLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class: <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#acquireLock-TEnvironment-">Procedure</a></code></span></div>
<div class="block">The user should override this method if they need a lock on an Entity.
A lock can be anything, and it is up to the implementor. The Procedure
@@ -747,7 +763,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/S
<ul class="blockList">
<li class="blockList">
<h4>releaseLock</h4>
-<pre>protected void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.284">releaseLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</pre>
+<pre>protected void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.287">releaseLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class: <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#releaseLock-TEnvironment-">Procedure</a></code></span></div>
<div class="block">The user should override this method, and release lock if necessary.</div>
<dl>
@@ -762,7 +778,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/S
<ul class="blockList">
<li class="blockList">
<h4>toStringClassDetails</h4>
-<pre>public void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.289">toStringClassDetails</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html?is-external=true" title="class or interface in java.lang">StringBuilder</a> sb)</pre>
+<pre>public void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.292">toStringClassDetails</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html?is-external=true" title="class or interface in java.lang">StringBuilder</a> sb)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class: <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#toStringClassDetails-java.lang.StringBuilder-">Procedure</a></code></span></div>
<div class="block">Extend the toString() information with the procedure details
e.g. className and parameters</div>
@@ -780,7 +796,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/S
<ul class="blockList">
<li class="blockList">
<h4>serializeStateData</h4>
-<pre>protected void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.300">serializeStateData</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a> serializer)
+<pre>protected void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.303">serializeStateData</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a> serializer)
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: <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#serializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">Procedure</a></code></span></div>
<div class="block">The user-level code of the procedure may have some state to
@@ -802,7 +818,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/S
<ul class="blockList">
<li class="blockList">
<h4>deserializeStateData</h4>
-<pre>protected void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.318">deserializeStateData</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a> serializer)
+<pre>protected void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.321">deserializeStateData</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a> serializer)
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: <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#deserializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">Procedure</a></code></span></div>
<div class="block">Called on store load to allow the user to decode the previously serialized
@@ -823,7 +839,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/S
<ul class="blockList">
<li class="blockList">
<h4>getServerName</h4>
-<pre>public <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.338">getServerName</a>()</pre>
+<pre>public <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.341">getServerName</a>()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerProcedureInterface.html#getServerName--">getServerName</a></code> in interface <code><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerProcedureInterface.html" title="interface in org.apache.hadoop.hbase.master.procedure">ServerProcedureInterface</a></code></dd>
@@ -838,7 +854,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/S
<ul class="blockList">
<li class="blockList">
<h4>hasMetaTableRegion</h4>
-<pre>public boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.343">hasMetaTableRegion</a>()</pre>
+<pre>public boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.346">hasMetaTableRegion</a>()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerProcedureInterface.html#hasMetaTableRegion--">hasMetaTableRegion</a></code> in interface <code><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerProcedureInterface.html" title="interface in org.apache.hadoop.hbase.master.procedure">ServerProcedureInterface</a></code></dd>
@@ -853,7 +869,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/S
<ul class="blockList">
<li class="blockList">
<h4>getServerOperationType</h4>
-<pre>public <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerProcedureInterface.ServerOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure">ServerProcedureInterface.ServerOperationType</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.348">getServerOperationType</a>()</pre>
+<pre>public <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerProcedureInterface.ServerOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure">ServerProcedureInterface.ServerOperationType</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.351">getServerOperationType</a>()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface: <code><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerProcedureInterface.html#getServerOperationType--">ServerProcedureInterface</a></code></span></div>
<div class="block">Given an operation type we can take decisions about what to do with pending operations.
e.g. if we get a crash handler and we have some assignment operation pending
@@ -872,7 +888,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/S
<ul class="blockList">
<li class="blockList">
<h4>isYieldBeforeExecuteFromState</h4>
-<pre>protected boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.360">isYieldBeforeExecuteFromState</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
+<pre>protected boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.363">isYieldBeforeExecuteFromState</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ServerCrashState state)</pre>
<div class="block">For this procedure, yield at end of each successful flow step so that all crashed servers
can make progress rather than do the default which has each procedure running to completion
@@ -895,7 +911,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/S
<ul class="blockList">
<li class="blockList">
<h4>shouldWaitClientAck</h4>
-<pre>protected boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.365">shouldWaitClientAck</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</pre>
+<pre>protected boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.368">shouldWaitClientAck</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class: <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#shouldWaitClientAck-TEnvironment-">Procedure</a></code></span></div>
<div class="block">By default, the executor will keep the procedure result around util
the eviction TTL is expired. The client can cut down the waiting time
@@ -918,7 +934,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/S
<ul class="blockList">
<li class="blockList">
<h4>handleRIT</h4>
-<pre>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><<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.380">handleRIT</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
+<pre>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><<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.383">handleRIT</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
<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><<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>> regions)</pre>
<div class="block">Handle any outstanding RIT that are up against this.serverName, the crashed server.
Notify them of crash. Remove assign entries from the passed in <code>regions</code>
@@ -939,7 +955,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/S
<ul class="blockListLast">
<li class="blockList">
<h4>getProcedureMetrics</h4>
-<pre>protected <a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureMetrics.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureMetrics</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.423">getProcedureMetrics</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</pre>
+<pre>protected <a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureMetrics.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureMetrics</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#line.426">getProcedureMetrics</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class: <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getProcedureMetrics-TEnvironment-">Procedure</a></code></span></div>
<div class="block">Override this method to provide procedure specific counters for submitted count, failed
count and time histogram.</div>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.html
index 397aaf9..9e5ca1f 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.html
@@ -101,7 +101,7 @@ var activeTableTab = "activeTableTab";
<li class="blockList">
<dl>
<dt>All Known Implementing Classes:</dt>
-<dd><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/AbstractStateMachineNamespaceProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">AbstractStateMachineNamespaceProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/AbstractStateMachineRegionProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">AbstractStateMachineRegionProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">AbstractStateMachineTableProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/CloneSnapshotProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">CloneSnapshotProcedure</a>, <a href=
"../../../../../../org/apache/hadoop/hbase/master/procedure/CreateNamespaceProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">CreateNamespaceProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/CreateTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">CreateTableProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/DeleteNamespaceProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">DeleteNamespaceProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/DeleteTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">DeleteTableProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/DisableTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">DisableTableProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/EnableTableProcedure.htm
l" title="class in org.apache.hadoop.hbase.master.procedure">EnableTableProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/GCMergedRegionsProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">GCMergedRegionsProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/GCRegionProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">GCRegionProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/locking/LockProcedure.html" title="class in org.apache.hadoop.hbase.master.locking">LockProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">MergeTableRegionsProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ModifyNamespaceProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ModifyNamespaceProcedure</a>, <a hr
ef="../../../../../../org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ModifyTableProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/MoveRegionProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">MoveRegionProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionTransitionProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ReopenTableRegionsProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ReopenTableRegionsProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RestoreSnapshotProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/Spli
tTableRegionProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">SplitTableRegionProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TruncateTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">TruncateTableProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/UnassignProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">UnassignProcedure</a></dd>
+<dd><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/AbstractStateMachineNamespaceProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">AbstractStateMachineNamespaceProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/AbstractStateMachineRegionProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">AbstractStateMachineRegionProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">AbstractStateMachineTableProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/CloneSnapshotProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">CloneSnapshotProcedure</a>, <a href=
"../../../../../../org/apache/hadoop/hbase/master/procedure/CreateNamespaceProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">CreateNamespaceProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/CreateTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">CreateTableProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/DeleteNamespaceProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">DeleteNamespaceProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/DeleteTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">DeleteTableProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/DisableTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">DisableTableProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/EnableTableProcedure.htm
l" title="class in org.apache.hadoop.hbase.master.procedure">EnableTableProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/GCMergedRegionsProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">GCMergedRegionsProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/GCRegionProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">GCRegionProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">InitMetaProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/locking/LockProcedure.html" title="class in org.apache.hadoop.hbase.master.locking">LockProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">MergeTableRegionsProcedure</a>, <a href="../../../.
./../../org/apache/hadoop/hbase/master/procedure/ModifyNamespaceProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ModifyNamespaceProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ModifyTableProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/MoveRegionProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">MoveRegionProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionTransitionProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ReopenTableRegionsProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ReopenTableRegionsProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProc
edure.html" title="class in org.apache.hadoop.hbase.master.procedure">RestoreSnapshotProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">SplitTableRegionProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TruncateTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">TruncateTableProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/UnassignProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">UnassignProcedure</a></dd>
</dl>
<hr>
<br>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/AbstractStateMachineTableProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/AbstractStateMachineTableProcedure.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/AbstractStateMachineTableProcedure.html
index 93e7109..cd0f0c3 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/AbstractStateMachineTableProcedure.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/AbstractStateMachineTableProcedure.html
@@ -178,19 +178,25 @@
</tr>
<tr class="altColor">
<td class="colFirst"><code>class </code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ModifyTableProcedure</a></span></code> </td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">InitMetaProcedure</a></span></code>
+<div class="block">This procedure is used to initialize meta table for a new hbase deploy.</div>
+</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>class </code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ModifyTableProcedure</a></span></code> </td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>class </code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/ReopenTableRegionsProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ReopenTableRegionsProcedure</a></span></code>
<div class="block">Used for non table procedures to reopen the regions for a table.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>class </code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RestoreSnapshotProcedure</a></span></code> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>class </code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/TruncateTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">TruncateTableProcedure</a></span></code> </td>
</tr>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/InitMetaProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/InitMetaProcedure.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/InitMetaProcedure.html
new file mode 100644
index 0000000..6564665
--- /dev/null
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/InitMetaProcedure.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.master.procedure.InitMetaProcedure (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.master.procedure.InitMetaProcedure (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/master/procedure/InitMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">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/master/procedure/class-use/InitMetaProcedure.html" target="_top">Frames</a></li>
+<li><a href="InitMetaProcedure.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../../allclasses-noframe.html">All 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.master.procedure.InitMetaProcedure" class="title">Uses of Class<br>org.apache.hadoop.hbase.master.procedure.InitMetaProcedure</h2>
+</div>
+<div class="classUseContainer">No usage of org.apache.hadoop.hbase.master.procedure.InitMetaProcedure</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/master/procedure/InitMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">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/master/procedure/class-use/InitMetaProcedure.html" target="_top">Frames</a></li>
+<li><a href="InitMetaProcedure.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../../allclasses-noframe.html">All 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 © 2007–2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>
[10/51] [partial] hbase-site git commit: Published site at
9101fc246f86445006bfbcdfda5cc495016dc280.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/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 eb16038..74bacd8 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.html
@@ -6,7 +6,7 @@
</head>
<body>
<div class="sourceContainer">
-<pre><span class="sourceLineNo">001</span>/*<a name="line.1"></a>
+<pre><span class="sourceLineNo">001</span>/**<a name="line.1"></a>
<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
<span class="sourceLineNo">003</span> * or more contributor license agreements. See the NOTICE file<a name="line.3"></a>
<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
@@ -48,692 +48,692 @@
<span class="sourceLineNo">040</span>import java.util.Map;<a name="line.40"></a>
<span class="sourceLineNo">041</span>import java.util.Map.Entry;<a name="line.41"></a>
<span class="sourceLineNo">042</span>import java.util.Objects;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import java.util.Set;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import java.util.concurrent.ExecutionException;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import java.util.concurrent.Future;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import java.util.concurrent.TimeUnit;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import java.util.concurrent.TimeoutException;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import java.util.concurrent.atomic.AtomicInteger;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import java.util.concurrent.atomic.AtomicReference;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import java.util.function.Function;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import java.util.regex.Pattern;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import java.util.stream.Collectors;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import javax.servlet.ServletException;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import javax.servlet.http.HttpServlet;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import javax.servlet.http.HttpServletRequest;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import javax.servlet.http.HttpServletResponse;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.commons.lang3.StringUtils;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.conf.Configuration;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.fs.Path;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.ClusterId;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.ClusterMetrics;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.ClusterMetrics.Option;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.ClusterMetricsBuilder;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.HBaseIOException;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.HBaseInterfaceAudience;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.HConstants;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.InvalidFamilyOperationException;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.MasterNotRunningException;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.MetaTableAccessor;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.PleaseHoldException;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.ReplicationPeerNotFoundException;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.ScheduledChore;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.ServerName;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.TableDescriptors;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.TableName;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.TableNotDisabledException;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.TableNotFoundException;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.UnknownRegionException;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.client.MasterSwitchType;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.client.Result;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.client.TableState;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.client.VersionInfoUtil;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.coprocessor.CoprocessorHost;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.exceptions.MergeRegionException;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.executor.ExecutorType;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.favored.FavoredNodesManager;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.favored.FavoredNodesPromoter;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.http.InfoServer;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcUtils;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.ipc.ServerNotRunningYetException;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.log.HBaseMarkers;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.master.MasterRpcServices.BalanceSwitchMode;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.master.assignment.AssignmentManager;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.master.assignment.MergeTableRegionsProcedure;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.master.assignment.RegionStates;<a name="line.104"></a>
-<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.master.assignment.RegionStates.RegionStateNode;<a name="line.105"></a>
-<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.master.balancer.BalancerChore;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.master.balancer.BaseLoadBalancer;<a name="line.107"></a>
-<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.master.balancer.ClusterStatusChore;<a name="line.108"></a>
-<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.master.balancer.LoadBalancerFactory;<a name="line.109"></a>
-<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.master.cleaner.CleanerChore;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.master.cleaner.HFileCleaner;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.master.cleaner.LogCleaner;<a name="line.112"></a>
-<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.master.cleaner.ReplicationBarrierCleaner;<a name="line.113"></a>
-<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.master.locking.LockManager;<a name="line.114"></a>
-<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.master.normalizer.NormalizationPlan;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.master.normalizer.NormalizationPlan.PlanType;<a name="line.116"></a>
-<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizer;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizerChore;<a name="line.118"></a>
-<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizerFactory;<a name="line.119"></a>
-<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.master.procedure.CreateTableProcedure;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.master.procedure.DeleteNamespaceProcedure;<a name="line.121"></a>
-<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.master.procedure.DeleteTableProcedure;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.master.procedure.DisableTableProcedure;<a name="line.123"></a>
-<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.master.procedure.EnableTableProcedure;<a name="line.124"></a>
-<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureConstants;<a name="line.125"></a>
-<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv;<a name="line.126"></a>
-<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureScheduler;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureUtil;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.master.procedure.ModifyTableProcedure;<a name="line.129"></a>
-<span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.master.procedure.ProcedurePrepareLatch;<a name="line.130"></a>
-<span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.master.procedure.RecoverMetaProcedure;<a name="line.131"></a>
-<span class="sourceLineNo">132</span>import org.apache.hadoop.hbase.master.procedure.TruncateTableProcedure;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>import org.apache.hadoop.hbase.master.replication.AddPeerProcedure;<a name="line.133"></a>
-<span class="sourceLineNo">134</span>import org.apache.hadoop.hbase.master.replication.DisablePeerProcedure;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>import org.apache.hadoop.hbase.master.replication.EnablePeerProcedure;<a name="line.135"></a>
-<span class="sourceLineNo">136</span>import org.apache.hadoop.hbase.master.replication.ModifyPeerProcedure;<a name="line.136"></a>
-<span class="sourceLineNo">137</span>import org.apache.hadoop.hbase.master.replication.RemovePeerProcedure;<a name="line.137"></a>
-<span class="sourceLineNo">138</span>import org.apache.hadoop.hbase.master.replication.ReplicationPeerManager;<a name="line.138"></a>
-<span class="sourceLineNo">139</span>import org.apache.hadoop.hbase.master.replication.UpdatePeerConfigProcedure;<a name="line.139"></a>
-<span class="sourceLineNo">140</span>import org.apache.hadoop.hbase.master.snapshot.SnapshotManager;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.master.zksyncer.MasterAddressSyncer;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.master.zksyncer.MetaLocationSyncer;<a name="line.142"></a>
-<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.mob.MobConstants;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.monitoring.MemoryBoundedLogMessageBuffer;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.146"></a>
-<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.procedure.MasterProcedureManagerHost;<a name="line.147"></a>
-<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.procedure.flush.MasterFlushTableProcedureManager;<a name="line.148"></a>
-<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.procedure2.LockedResource;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.procedure2.Procedure;<a name="line.150"></a>
-<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.procedure2.ProcedureEvent;<a name="line.151"></a>
-<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.procedure2.ProcedureExecutor;<a name="line.152"></a>
-<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureDispatcher.RemoteProcedure;<a name="line.153"></a>
-<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureException;<a name="line.154"></a>
-<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.procedure2.store.wal.WALProcedureStore;<a name="line.155"></a>
-<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.quotas.MasterQuotaManager;<a name="line.156"></a>
-<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.quotas.MasterSpaceQuotaObserver;<a name="line.157"></a>
-<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.quotas.QuotaObserverChore;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.159"></a>
-<span class="sourceLineNo">160</span>import org.apache.hadoop.hbase.quotas.SnapshotQuotaObserverChore;<a name="line.160"></a>
-<span class="sourceLineNo">161</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifier;<a name="line.161"></a>
-<span class="sourceLineNo">162</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifierFactory;<a name="line.162"></a>
-<span class="sourceLineNo">163</span>import org.apache.hadoop.hbase.regionserver.DefaultStoreEngine;<a name="line.163"></a>
-<span class="sourceLineNo">164</span>import org.apache.hadoop.hbase.regionserver.HRegionServer;<a name="line.164"></a>
-<span class="sourceLineNo">165</span>import org.apache.hadoop.hbase.regionserver.HStore;<a name="line.165"></a>
-<span class="sourceLineNo">166</span>import org.apache.hadoop.hbase.regionserver.RSRpcServices;<a name="line.166"></a>
-<span class="sourceLineNo">167</span>import org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost;<a name="line.167"></a>
-<span class="sourceLineNo">168</span>import org.apache.hadoop.hbase.regionserver.RegionSplitPolicy;<a name="line.168"></a>
-<span class="sourceLineNo">169</span>import org.apache.hadoop.hbase.regionserver.compactions.ExploringCompactionPolicy;<a name="line.169"></a>
-<span class="sourceLineNo">170</span>import org.apache.hadoop.hbase.regionserver.compactions.FIFOCompactionPolicy;<a name="line.170"></a>
-<span class="sourceLineNo">171</span>import org.apache.hadoop.hbase.replication.ReplicationException;<a name="line.171"></a>
-<span class="sourceLineNo">172</span>import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;<a name="line.172"></a>
-<span class="sourceLineNo">173</span>import org.apache.hadoop.hbase.replication.ReplicationPeerDescription;<a name="line.173"></a>
-<span class="sourceLineNo">174</span>import org.apache.hadoop.hbase.replication.ReplicationUtils;<a name="line.174"></a>
-<span class="sourceLineNo">175</span>import org.apache.hadoop.hbase.replication.master.ReplicationHFileCleaner;<a name="line.175"></a>
-<span class="sourceLineNo">176</span>import org.apache.hadoop.hbase.replication.master.ReplicationLogCleaner;<a name="line.176"></a>
-<span class="sourceLineNo">177</span>import org.apache.hadoop.hbase.replication.master.ReplicationPeerConfigUpgrader;<a name="line.177"></a>
-<span class="sourceLineNo">178</span>import org.apache.hadoop.hbase.security.AccessDeniedException;<a name="line.178"></a>
-<span class="sourceLineNo">179</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.179"></a>
-<span class="sourceLineNo">180</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.180"></a>
-<span class="sourceLineNo">181</span>import org.apache.hadoop.hbase.util.Addressing;<a name="line.181"></a>
-<span class="sourceLineNo">182</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.182"></a>
-<span class="sourceLineNo">183</span>import org.apache.hadoop.hbase.util.CompressionTest;<a name="line.183"></a>
-<span class="sourceLineNo">184</span>import org.apache.hadoop.hbase.util.EncryptionTest;<a name="line.184"></a>
-<span class="sourceLineNo">185</span>import org.apache.hadoop.hbase.util.HFileArchiveUtil;<a name="line.185"></a>
-<span class="sourceLineNo">186</span>import org.apache.hadoop.hbase.util.HasThread;<a name="line.186"></a>
-<span class="sourceLineNo">187</span>import org.apache.hadoop.hbase.util.IdLock;<a name="line.187"></a>
-<span class="sourceLineNo">188</span>import org.apache.hadoop.hbase.util.ModifyRegionUtils;<a name="line.188"></a>
-<span class="sourceLineNo">189</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.189"></a>
-<span class="sourceLineNo">190</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.190"></a>
-<span class="sourceLineNo">191</span>import org.apache.hadoop.hbase.util.VersionInfo;<a name="line.191"></a>
-<span class="sourceLineNo">192</span>import org.apache.hadoop.hbase.zookeeper.LoadBalancerTracker;<a name="line.192"></a>
-<span class="sourceLineNo">193</span>import org.apache.hadoop.hbase.zookeeper.MasterAddressTracker;<a name="line.193"></a>
-<span class="sourceLineNo">194</span>import org.apache.hadoop.hbase.zookeeper.MasterMaintenanceModeTracker;<a name="line.194"></a>
-<span class="sourceLineNo">195</span>import org.apache.hadoop.hbase.zookeeper.RegionNormalizerTracker;<a name="line.195"></a>
-<span class="sourceLineNo">196</span>import org.apache.hadoop.hbase.zookeeper.ZKClusterId;<a name="line.196"></a>
-<span class="sourceLineNo">197</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.197"></a>
-<span class="sourceLineNo">198</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.198"></a>
-<span class="sourceLineNo">199</span>import org.apache.hadoop.hbase.zookeeper.ZNodePaths;<a name="line.199"></a>
-<span class="sourceLineNo">200</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.200"></a>
-<span class="sourceLineNo">201</span>import org.apache.zookeeper.KeeperException;<a name="line.201"></a>
-<span class="sourceLineNo">202</span>import org.eclipse.jetty.server.Server;<a name="line.202"></a>
-<span class="sourceLineNo">203</span>import org.eclipse.jetty.server.ServerConnector;<a name="line.203"></a>
-<span class="sourceLineNo">204</span>import org.eclipse.jetty.servlet.ServletHolder;<a name="line.204"></a>
-<span class="sourceLineNo">205</span>import org.eclipse.jetty.webapp.WebAppContext;<a name="line.205"></a>
-<span class="sourceLineNo">206</span>import org.slf4j.Logger;<a name="line.206"></a>
-<span class="sourceLineNo">207</span>import org.slf4j.LoggerFactory;<a name="line.207"></a>
-<span class="sourceLineNo">208</span><a name="line.208"></a>
-<span class="sourceLineNo">209</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.209"></a>
-<span class="sourceLineNo">210</span>import org.apache.hbase.thirdparty.com.google.common.collect.Lists;<a name="line.210"></a>
-<span class="sourceLineNo">211</span>import org.apache.hbase.thirdparty.com.google.common.collect.Maps;<a name="line.211"></a>
-<span class="sourceLineNo">212</span><a name="line.212"></a>
-<span class="sourceLineNo">213</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.213"></a>
-<span class="sourceLineNo">214</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoResponse.CompactionState;<a name="line.214"></a>
-<span class="sourceLineNo">215</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.Quotas;<a name="line.215"></a>
-<span class="sourceLineNo">216</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.SpaceViolationPolicy;<a name="line.216"></a>
-<span class="sourceLineNo">217</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;<a name="line.217"></a>
-<span class="sourceLineNo">218</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos;<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">221</span> * HMaster is the "master server" for HBase. An HBase cluster has one active<a name="line.221"></a>
-<span class="sourceLineNo">222</span> * master. If many masters are started, all compete. Whichever wins goes on to<a name="line.222"></a>
-<span class="sourceLineNo">223</span> * run the cluster. All others park themselves in their constructor until<a name="line.223"></a>
-<span class="sourceLineNo">224</span> * master or cluster shutdown or until the active master loses its lease in<a name="line.224"></a>
-<span class="sourceLineNo">225</span> * zookeeper. Thereafter, all running master jostle to take over master role.<a name="line.225"></a>
-<span class="sourceLineNo">226</span> *<a name="line.226"></a>
-<span class="sourceLineNo">227</span> * <p>The Master can be asked shutdown the cluster. See {@link #shutdown()}. In<a name="line.227"></a>
-<span class="sourceLineNo">228</span> * this case it will tell all regionservers to go down and then wait on them<a name="line.228"></a>
-<span class="sourceLineNo">229</span> * all reporting in that they are down. This master will then shut itself down.<a name="line.229"></a>
-<span class="sourceLineNo">230</span> *<a name="line.230"></a>
-<span class="sourceLineNo">231</span> * <p>You can also shutdown just this master. Call {@link #stopMaster()}.<a name="line.231"></a>
-<span class="sourceLineNo">232</span> *<a name="line.232"></a>
-<span class="sourceLineNo">233</span> * @see org.apache.zookeeper.Watcher<a name="line.233"></a>
-<span class="sourceLineNo">234</span> */<a name="line.234"></a>
-<span class="sourceLineNo">235</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS)<a name="line.235"></a>
-<span class="sourceLineNo">236</span>@SuppressWarnings("deprecation")<a name="line.236"></a>
-<span class="sourceLineNo">237</span>public class HMaster extends HRegionServer implements MasterServices {<a name="line.237"></a>
-<span class="sourceLineNo">238</span> private static Logger LOG = LoggerFactory.getLogger(HMaster.class.getName());<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> * Protection against zombie master. Started once Master accepts active responsibility and<a name="line.241"></a>
-<span class="sourceLineNo">242</span> * starts taking over responsibilities. Allows a finite time window before giving up ownership.<a name="line.242"></a>
-<span class="sourceLineNo">243</span> */<a name="line.243"></a>
-<span class="sourceLineNo">244</span> private static class InitializationMonitor extends HasThread {<a name="line.244"></a>
-<span class="sourceLineNo">245</span> /** The amount of time in milliseconds to sleep before checking initialization status. */<a name="line.245"></a>
-<span class="sourceLineNo">246</span> public static final String TIMEOUT_KEY = "hbase.master.initializationmonitor.timeout";<a name="line.246"></a>
-<span class="sourceLineNo">247</span> public static final long TIMEOUT_DEFAULT = TimeUnit.MILLISECONDS.convert(15, TimeUnit.MINUTES);<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> * When timeout expired and initialization has not complete, call {@link System#exit(int)} when<a name="line.250"></a>
-<span class="sourceLineNo">251</span> * true, do nothing otherwise.<a name="line.251"></a>
-<span class="sourceLineNo">252</span> */<a name="line.252"></a>
-<span class="sourceLineNo">253</span> public static final String HALT_KEY = "hbase.master.initializationmonitor.haltontimeout";<a name="line.253"></a>
-<span class="sourceLineNo">254</span> public static final boolean HALT_DEFAULT = false;<a name="line.254"></a>
-<span class="sourceLineNo">255</span><a name="line.255"></a>
-<span class="sourceLineNo">256</span> private final HMaster master;<a name="line.256"></a>
-<span class="sourceLineNo">257</span> private final long timeout;<a name="line.257"></a>
-<span class="sourceLineNo">258</span> private final boolean haltOnTimeout;<a name="line.258"></a>
-<span class="sourceLineNo">259</span><a name="line.259"></a>
-<span class="sourceLineNo">260</span> /** Creates a Thread that monitors the {@link #isInitialized()} state. */<a name="line.260"></a>
-<span class="sourceLineNo">261</span> InitializationMonitor(HMaster master) {<a name="line.261"></a>
-<span class="sourceLineNo">262</span> super("MasterInitializationMonitor");<a name="line.262"></a>
-<span class="sourceLineNo">263</span> this.master = master;<a name="line.263"></a>
-<span class="sourceLineNo">264</span> this.timeout = master.getConfiguration().getLong(TIMEOUT_KEY, TIMEOUT_DEFAULT);<a name="line.264"></a>
-<span class="sourceLineNo">265</span> this.haltOnTimeout = master.getConfiguration().getBoolean(HALT_KEY, HALT_DEFAULT);<a name="line.265"></a>
-<span class="sourceLineNo">266</span> this.setDaemon(true);<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> @Override<a name="line.269"></a>
-<span class="sourceLineNo">270</span> public void run() {<a name="line.270"></a>
-<span class="sourceLineNo">271</span> try {<a name="line.271"></a>
-<span class="sourceLineNo">272</span> while (!master.isStopped() && master.isActiveMaster()) {<a name="line.272"></a>
-<span class="sourceLineNo">273</span> Thread.sleep(timeout);<a name="line.273"></a>
-<span class="sourceLineNo">274</span> if (master.isInitialized()) {<a name="line.274"></a>
-<span class="sourceLineNo">275</span> LOG.debug("Initialization completed within allotted tolerance. Monitor exiting.");<a name="line.275"></a>
-<span class="sourceLineNo">276</span> } else {<a name="line.276"></a>
-<span class="sourceLineNo">277</span> LOG.error("Master failed to complete initialization after " + timeout + "ms. Please"<a name="line.277"></a>
-<span class="sourceLineNo">278</span> + " consider submitting a bug report including a thread dump of this process.");<a name="line.278"></a>
-<span class="sourceLineNo">279</span> if (haltOnTimeout) {<a name="line.279"></a>
-<span class="sourceLineNo">280</span> LOG.error("Zombie Master exiting. Thread dump to stdout");<a name="line.280"></a>
-<span class="sourceLineNo">281</span> Threads.printThreadInfo(System.out, "Zombie HMaster");<a name="line.281"></a>
-<span class="sourceLineNo">282</span> System.exit(-1);<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> } catch (InterruptedException ie) {<a name="line.286"></a>
-<span class="sourceLineNo">287</span> LOG.trace("InitMonitor thread interrupted. Existing.");<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> }<a name="line.290"></a>
-<span class="sourceLineNo">291</span><a name="line.291"></a>
-<span class="sourceLineNo">292</span> // MASTER is name of the webapp and the attribute name used stuffing this<a name="line.292"></a>
-<span class="sourceLineNo">293</span> //instance into web context.<a name="line.293"></a>
-<span class="sourceLineNo">294</span> public static final String MASTER = "master";<a name="line.294"></a>
-<span class="sourceLineNo">295</span><a name="line.295"></a>
-<span class="sourceLineNo">296</span> // Manager and zk listener for master election<a name="line.296"></a>
-<span class="sourceLineNo">297</span> private final ActiveMasterManager activeMasterManager;<a name="line.297"></a>
-<span class="sourceLineNo">298</span> // Region server tracker<a name="line.298"></a>
-<span class="sourceLineNo">299</span> private RegionServerTracker regionServerTracker;<a name="line.299"></a>
-<span class="sourceLineNo">300</span> // Draining region server tracker<a name="line.300"></a>
-<span class="sourceLineNo">301</span> private DrainingServerTracker drainingServerTracker;<a name="line.301"></a>
-<span class="sourceLineNo">302</span> // Tracker for load balancer state<a name="line.302"></a>
-<span class="sourceLineNo">303</span> LoadBalancerTracker loadBalancerTracker;<a name="line.303"></a>
-<span class="sourceLineNo">304</span> // Tracker for meta location, if any client ZK quorum specified<a name="line.304"></a>
-<span class="sourceLineNo">305</span> MetaLocationSyncer metaLocationSyncer;<a name="line.305"></a>
-<span class="sourceLineNo">306</span> // Tracker for active master location, if any client ZK quorum specified<a name="line.306"></a>
-<span class="sourceLineNo">307</span> MasterAddressSyncer masterAddressSyncer;<a name="line.307"></a>
-<span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span> // Tracker for split and merge state<a name="line.309"></a>
-<span class="sourceLineNo">310</span> private SplitOrMergeTracker splitOrMergeTracker;<a name="line.310"></a>
+<span class="sourceLineNo">043</span>import java.util.Optional;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import java.util.Set;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import java.util.concurrent.ExecutionException;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import java.util.concurrent.Future;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import java.util.concurrent.TimeUnit;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import java.util.concurrent.TimeoutException;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import java.util.concurrent.atomic.AtomicInteger;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import java.util.concurrent.atomic.AtomicReference;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import java.util.function.Function;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import java.util.regex.Pattern;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import java.util.stream.Collectors;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import javax.servlet.ServletException;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import javax.servlet.http.HttpServlet;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import javax.servlet.http.HttpServletRequest;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import javax.servlet.http.HttpServletResponse;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.commons.lang3.StringUtils;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.conf.Configuration;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.fs.Path;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.ClusterId;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.ClusterMetrics;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.ClusterMetrics.Option;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.ClusterMetricsBuilder;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.HBaseIOException;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.HBaseInterfaceAudience;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.HConstants;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.InvalidFamilyOperationException;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.MasterNotRunningException;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.MetaTableAccessor;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.PleaseHoldException;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.ReplicationPeerNotFoundException;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.ScheduledChore;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.ServerName;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.TableDescriptors;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.TableName;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.TableNotDisabledException;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.TableNotFoundException;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.UnknownRegionException;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.client.MasterSwitchType;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.client.RegionInfoBuilder;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.client.Result;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.client.TableState;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.client.VersionInfoUtil;<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.AssignmentManager;<a name="line.104"></a>
+<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.master.assignment.MergeTableRegionsProcedure;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.master.assignment.RegionStates;<a name="line.106"></a>
+<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.master.assignment.RegionStates.RegionStateNode;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.master.balancer.BalancerChore;<a name="line.108"></a>
+<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.master.balancer.BaseLoadBalancer;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.master.balancer.ClusterStatusChore;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.master.balancer.LoadBalancerFactory;<a name="line.111"></a>
+<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.master.cleaner.CleanerChore;<a name="line.112"></a>
+<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.master.cleaner.HFileCleaner;<a name="line.113"></a>
+<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.master.cleaner.LogCleaner;<a name="line.114"></a>
+<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.master.cleaner.ReplicationBarrierCleaner;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.master.locking.LockManager;<a name="line.116"></a>
+<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.master.normalizer.NormalizationPlan;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.master.normalizer.NormalizationPlan.PlanType;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizer;<a name="line.119"></a>
+<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizerChore;<a name="line.120"></a>
+<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizerFactory;<a name="line.121"></a>
+<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.master.procedure.CreateTableProcedure;<a name="line.122"></a>
+<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.master.procedure.DeleteNamespaceProcedure;<a name="line.123"></a>
+<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.master.procedure.DeleteTableProcedure;<a name="line.124"></a>
+<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.master.procedure.DisableTableProcedure;<a name="line.125"></a>
+<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.master.procedure.EnableTableProcedure;<a name="line.126"></a>
+<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.master.procedure.InitMetaProcedure;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureConstants;<a name="line.128"></a>
+<span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv;<a name="line.129"></a>
+<span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureScheduler;<a name="line.130"></a>
+<span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureUtil;<a name="line.131"></a>
+<span class="sourceLineNo">132</span>import org.apache.hadoop.hbase.master.procedure.ModifyTableProcedure;<a name="line.132"></a>
+<span class="sourceLineNo">133</span>import org.apache.hadoop.hbase.master.procedure.ProcedurePrepareLatch;<a name="line.133"></a>
+<span class="sourceLineNo">134</span>import org.apache.hadoop.hbase.master.procedure.ServerCrashProcedure;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>import org.apache.hadoop.hbase.master.procedure.TruncateTableProcedure;<a name="line.135"></a>
+<span class="sourceLineNo">136</span>import org.apache.hadoop.hbase.master.replication.AddPeerProcedure;<a name="line.136"></a>
+<span class="sourceLineNo">137</span>import org.apache.hadoop.hbase.master.replication.DisablePeerProcedure;<a name="line.137"></a>
+<span class="sourceLineNo">138</span>import org.apache.hadoop.hbase.master.replication.EnablePeerProcedure;<a name="line.138"></a>
+<span class="sourceLineNo">139</span>import org.apache.hadoop.hbase.master.replication.ModifyPeerProcedure;<a name="line.139"></a>
+<span class="sourceLineNo">140</span>import org.apache.hadoop.hbase.master.replication.RemovePeerProcedure;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.master.replication.ReplicationPeerManager;<a name="line.141"></a>
+<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.master.replication.UpdatePeerConfigProcedure;<a name="line.142"></a>
+<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.master.snapshot.SnapshotManager;<a name="line.143"></a>
+<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.master.zksyncer.MasterAddressSyncer;<a name="line.144"></a>
+<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.master.zksyncer.MetaLocationSyncer;<a name="line.145"></a>
+<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.mob.MobConstants;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.monitoring.MemoryBoundedLogMessageBuffer;<a name="line.147"></a>
+<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.148"></a>
+<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.procedure.MasterProcedureManagerHost;<a name="line.150"></a>
+<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.procedure.flush.MasterFlushTableProcedureManager;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.procedure2.LockedResource;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.procedure2.Procedure;<a name="line.153"></a>
+<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.procedure2.ProcedureEvent;<a name="line.154"></a>
+<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.procedure2.ProcedureExecutor;<a name="line.155"></a>
+<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureDispatcher.RemoteProcedure;<a name="line.156"></a>
+<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureException;<a name="line.157"></a>
+<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.procedure2.store.wal.WALProcedureStore;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.quotas.MasterQuotaManager;<a name="line.159"></a>
+<span class="sourceLineNo">160</span>import org.apache.hadoop.hbase.quotas.MasterSpaceQuotaObserver;<a name="line.160"></a>
+<span class="sourceLineNo">161</span>import org.apache.hadoop.hbase.quotas.QuotaObserverChore;<a name="line.161"></a>
+<span class="sourceLineNo">162</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.162"></a>
+<span class="sourceLineNo">163</span>import org.apache.hadoop.hbase.quotas.SnapshotQuotaObserverChore;<a name="line.163"></a>
+<span class="sourceLineNo">164</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifier;<a name="line.164"></a>
+<span class="sourceLineNo">165</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifierFactory;<a name="line.165"></a>
+<span class="sourceLineNo">166</span>import org.apache.hadoop.hbase.regionserver.DefaultStoreEngine;<a name="line.166"></a>
+<span class="sourceLineNo">167</span>import org.apache.hadoop.hbase.regionserver.HRegionServer;<a name="line.167"></a>
+<span class="sourceLineNo">168</span>import org.apache.hadoop.hbase.regionserver.HStore;<a name="line.168"></a>
+<span class="sourceLineNo">169</span>import org.apache.hadoop.hbase.regionserver.RSRpcServices;<a name="line.169"></a>
+<span class="sourceLineNo">170</span>import org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost;<a name="line.170"></a>
+<span class="sourceLineNo">171</span>import org.apache.hadoop.hbase.regionserver.RegionSplitPolicy;<a name="line.171"></a>
+<span class="sourceLineNo">172</span>import org.apache.hadoop.hbase.regionserver.compactions.ExploringCompactionPolicy;<a name="line.172"></a>
+<span class="sourceLineNo">173</span>import org.apache.hadoop.hbase.regionserver.compactions.FIFOCompactionPolicy;<a name="line.173"></a>
+<span class="sourceLineNo">174</span>import org.apache.hadoop.hbase.replication.ReplicationException;<a name="line.174"></a>
+<span class="sourceLineNo">175</span>import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;<a name="line.175"></a>
+<span class="sourceLineNo">176</span>import org.apache.hadoop.hbase.replication.ReplicationPeerDescription;<a name="line.176"></a>
+<span class="sourceLineNo">177</span>import org.apache.hadoop.hbase.replication.ReplicationUtils;<a name="line.177"></a>
+<span class="sourceLineNo">178</span>import org.apache.hadoop.hbase.replication.master.ReplicationHFileCleaner;<a name="line.178"></a>
+<span class="sourceLineNo">179</span>import org.apache.hadoop.hbase.replication.master.ReplicationLogCleaner;<a name="line.179"></a>
+<span class="sourceLineNo">180</span>import org.apache.hadoop.hbase.replication.master.ReplicationPeerConfigUpgrader;<a name="line.180"></a>
+<span class="sourceLineNo">181</span>import org.apache.hadoop.hbase.security.AccessDeniedException;<a name="line.181"></a>
+<span class="sourceLineNo">182</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.182"></a>
+<span class="sourceLineNo">183</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.183"></a>
+<span class="sourceLineNo">184</span>import org.apache.hadoop.hbase.util.Addressing;<a name="line.184"></a>
+<span class="sourceLineNo">185</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.185"></a>
+<span class="sourceLineNo">186</span>import org.apache.hadoop.hbase.util.CompressionTest;<a name="line.186"></a>
+<span class="sourceLineNo">187</span>import org.apache.hadoop.hbase.util.EncryptionTest;<a name="line.187"></a>
+<span class="sourceLineNo">188</span>import org.apache.hadoop.hbase.util.HFileArchiveUtil;<a name="line.188"></a>
+<span class="sourceLineNo">189</span>import org.apache.hadoop.hbase.util.HasThread;<a name="line.189"></a>
+<span class="sourceLineNo">190</span>import org.apache.hadoop.hbase.util.IdLock;<a name="line.190"></a>
+<span class="sourceLineNo">191</span>import org.apache.hadoop.hbase.util.ModifyRegionUtils;<a name="line.191"></a>
+<span class="sourceLineNo">192</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.192"></a>
+<span class="sourceLineNo">193</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.193"></a>
+<span class="sourceLineNo">194</span>import org.apache.hadoop.hbase.util.VersionInfo;<a name="line.194"></a>
+<span class="sourceLineNo">195</span>import org.apache.hadoop.hbase.zookeeper.LoadBalancerTracker;<a name="line.195"></a>
+<span class="sourceLineNo">196</span>import org.apache.hadoop.hbase.zookeeper.MasterAddressTracker;<a name="line.196"></a>
+<span class="sourceLineNo">197</span>import org.apache.hadoop.hbase.zookeeper.MasterMaintenanceModeTracker;<a name="line.197"></a>
+<span class="sourceLineNo">198</span>import org.apache.hadoop.hbase.zookeeper.RegionNormalizerTracker;<a name="line.198"></a>
+<span class="sourceLineNo">199</span>import org.apache.hadoop.hbase.zookeeper.ZKClusterId;<a name="line.199"></a>
+<span class="sourceLineNo">200</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.200"></a>
+<span class="sourceLineNo">201</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.201"></a>
+<span class="sourceLineNo">202</span>import org.apache.hadoop.hbase.zookeeper.ZNodePaths;<a name="line.202"></a>
+<span class="sourceLineNo">203</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.203"></a>
+<span class="sourceLineNo">204</span>import org.apache.zookeeper.KeeperException;<a name="line.204"></a>
+<span class="sourceLineNo">205</span>import org.eclipse.jetty.server.Server;<a name="line.205"></a>
+<span class="sourceLineNo">206</span>import org.eclipse.jetty.server.ServerConnector;<a name="line.206"></a>
+<span class="sourceLineNo">207</span>import org.eclipse.jetty.servlet.ServletHolder;<a name="line.207"></a>
+<span class="sourceLineNo">208</span>import org.eclipse.jetty.webapp.WebAppContext;<a name="line.208"></a>
+<span class="sourceLineNo">209</span>import org.slf4j.Logger;<a name="line.209"></a>
+<span class="sourceLineNo">210</span>import org.slf4j.LoggerFactory;<a name="line.210"></a>
+<span class="sourceLineNo">211</span><a name="line.211"></a>
+<span class="sourceLineNo">212</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.212"></a>
+<span class="sourceLineNo">213</span>import org.apache.hbase.thirdparty.com.google.common.collect.Lists;<a name="line.213"></a>
+<span class="sourceLineNo">214</span>import org.apache.hbase.thirdparty.com.google.common.collect.Maps;<a name="line.214"></a>
+<span class="sourceLineNo">215</span><a name="line.215"></a>
+<span class="sourceLineNo">216</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.216"></a>
+<span class="sourceLineNo">217</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoResponse.CompactionState;<a name="line.217"></a>
+<span class="sourceLineNo">218</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.Quotas;<a name="line.218"></a>
+<span class="sourceLineNo">219</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.SpaceViolationPolicy;<a name="line.219"></a>
+<span class="sourceLineNo">220</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;<a name="line.220"></a>
+<span class="sourceLineNo">221</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos;<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> * HMaster is the "master server" for HBase. An HBase cluster has one active<a name="line.224"></a>
+<span class="sourceLineNo">225</span> * master. If many masters are started, all compete. Whichever wins goes on to<a name="line.225"></a>
+<span class="sourceLineNo">226</span> * run the cluster. All others park themselves in their constructor until<a name="line.226"></a>
+<span class="sourceLineNo">227</span> * master or cluster shutdown or until the active master loses its lease in<a name="line.227"></a>
+<span class="sourceLineNo">228</span> * zookeeper. Thereafter, all running master jostle to take over master role.<a name="line.228"></a>
+<span class="sourceLineNo">229</span> *<a name="line.229"></a>
+<span class="sourceLineNo">230</span> * <p>The Master can be asked shutdown the cluster. See {@link #shutdown()}. In<a name="line.230"></a>
+<span class="sourceLineNo">231</span> * this case it will tell all regionservers to go down and then wait on them<a name="line.231"></a>
+<span class="sourceLineNo">232</span> * all reporting in that they are down. This master will then shut itself down.<a name="line.232"></a>
+<span class="sourceLineNo">233</span> *<a name="line.233"></a>
+<span class="sourceLineNo">234</span> * <p>You can also shutdown just this master. Call {@link #stopMaster()}.<a name="line.234"></a>
+<span class="sourceLineNo">235</span> *<a name="line.235"></a>
+<span class="sourceLineNo">236</span> * @see org.apache.zookeeper.Watcher<a name="line.236"></a>
+<span class="sourceLineNo">237</span> */<a name="line.237"></a>
+<span class="sourceLineNo">238</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS)<a name="line.238"></a>
+<span class="sourceLineNo">239</span>@SuppressWarnings("deprecation")<a name="line.239"></a>
+<span class="sourceLineNo">240</span>public class HMaster extends HRegionServer implements MasterServices {<a name="line.240"></a>
+<span class="sourceLineNo">241</span> private static Logger LOG = LoggerFactory.getLogger(HMaster.class);<a name="line.241"></a>
+<span class="sourceLineNo">242</span><a name="line.242"></a>
+<span class="sourceLineNo">243</span> /**<a name="line.243"></a>
+<span class="sourceLineNo">244</span> * Protection against zombie master. Started once Master accepts active responsibility and<a name="line.244"></a>
+<span class="sourceLineNo">245</span> * starts taking over responsibilities. Allows a finite time window before giving up ownership.<a name="line.245"></a>
+<span class="sourceLineNo">246</span> */<a name="line.246"></a>
+<span class="sourceLineNo">247</span> private static class InitializationMonitor extends HasThread {<a name="line.247"></a>
+<span class="sourceLineNo">248</span> /** The amount of time in milliseconds to sleep before checking initialization status. */<a name="line.248"></a>
+<span class="sourceLineNo">249</span> public static final String TIMEOUT_KEY = "hbase.master.initializationmonitor.timeout";<a name="line.249"></a>
+<span class="sourceLineNo">250</span> public static final long TIMEOUT_DEFAULT = TimeUnit.MILLISECONDS.convert(15, TimeUnit.MINUTES);<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> * When timeout expired and initialization has not complete, call {@link System#exit(int)} when<a name="line.253"></a>
+<span class="sourceLineNo">254</span> * true, do nothing otherwise.<a name="line.254"></a>
+<span class="sourceLineNo">255</span> */<a name="line.255"></a>
+<span class="sourceLineNo">256</span> public static final String HALT_KEY = "hbase.master.initializationmonitor.haltontimeout";<a name="line.256"></a>
+<span class="sourceLineNo">257</span> public static final boolean HALT_DEFAULT = false;<a name="line.257"></a>
+<span class="sourceLineNo">258</span><a name="line.258"></a>
+<span class="sourceLineNo">259</span> private final HMaster master;<a name="line.259"></a>
+<span class="sourceLineNo">260</span> private final long timeout;<a name="line.260"></a>
+<span class="sourceLineNo">261</span> private final boolean haltOnTimeout;<a name="line.261"></a>
+<span class="sourceLineNo">262</span><a name="line.262"></a>
+<span class="sourceLineNo">263</span> /** Creates a Thread that monitors the {@link #isInitialized()} state. */<a name="line.263"></a>
+<span class="sourceLineNo">264</span> InitializationMonitor(HMaster master) {<a name="line.264"></a>
+<span class="sourceLineNo">265</span> super("MasterInitializationMonitor");<a name="line.265"></a>
+<span class="sourceLineNo">266</span> this.master = master;<a name="line.266"></a>
+<span class="sourceLineNo">267</span> this.timeout = master.getConfiguration().getLong(TIMEOUT_KEY, TIMEOUT_DEFAULT);<a name="line.267"></a>
+<span class="sourceLineNo">268</span> this.haltOnTimeout = master.getConfiguration().getBoolean(HALT_KEY, HALT_DEFAULT);<a name="line.268"></a>
+<span class="sourceLineNo">269</span> this.setDaemon(true);<a name="line.269"></a>
+<span class="sourceLineNo">270</span> }<a name="line.270"></a>
+<span class="sourceLineNo">271</span><a name="line.271"></a>
+<span class="sourceLineNo">272</span> @Override<a name="line.272"></a>
+<span class="sourceLineNo">273</span> public void run() {<a name="line.273"></a>
+<span class="sourceLineNo">274</span> try {<a name="line.274"></a>
+<span class="sourceLineNo">275</span> while (!master.isStopped() && master.isActiveMaster()) {<a name="line.275"></a>
+<span class="sourceLineNo">276</span> Thread.sleep(timeout);<a name="line.276"></a>
+<span class="sourceLineNo">277</span> if (master.isInitialized()) {<a name="line.277"></a>
+<span class="sourceLineNo">278</span> LOG.debug("Initialization completed within allotted tolerance. Monitor exiting.");<a name="line.278"></a>
+<span class="sourceLineNo">279</span> } else {<a name="line.279"></a>
+<span class="sourceLineNo">280</span> LOG.error("Master failed to complete initialization after " + timeout + "ms. Please"<a name="line.280"></a>
+<span class="sourceLineNo">281</span> + " consider submitting a bug report including a thread dump of this process.");<a name="line.281"></a>
+<span class="sourceLineNo">282</span> if (haltOnTimeout) {<a name="line.282"></a>
+<span class="sourceLineNo">283</span> LOG.error("Zombie Master exiting. Thread dump to stdout");<a name="line.283"></a>
+<span class="sourceLineNo">284</span> Threads.printThreadInfo(System.out, "Zombie HMaster");<a name="line.284"></a>
+<span class="sourceLineNo">285</span> System.exit(-1);<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> } catch (InterruptedException ie) {<a name="line.289"></a>
+<span class="sourceLineNo">290</span> LOG.trace("InitMonitor thread interrupted. Existing.");<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> }<a name="line.293"></a>
+<span class="sourceLineNo">294</span><a name="line.294"></a>
+<span class="sourceLineNo">295</span> // MASTER is name of the webapp and the attribute name used stuffing this<a name="line.295"></a>
+<span class="sourceLineNo">296</span> //instance into web context.<a name="line.296"></a>
+<span class="sourceLineNo">297</span> public static final String MASTER = "master";<a name="line.297"></a>
+<span class="sourceLineNo">298</span><a name="line.298"></a>
+<span class="sourceLineNo">299</span> // Manager and zk listener for master election<a name="line.299"></a>
+<span class="sourceLineNo">300</span> private final ActiveMasterManager activeMasterManager;<a name="line.300"></a>
+<span class="sourceLineNo">301</span> // Region server tracker<a name="line.301"></a>
+<span class="sourceLineNo">302</span> private RegionServerTracker regionServerTracker;<a name="line.302"></a>
+<span class="sourceLineNo">303</span> // Draining region server tracker<a name="line.303"></a>
+<span class="sourceLineNo">304</span> private DrainingServerTracker drainingServerTracker;<a name="line.304"></a>
+<span class="sourceLineNo">305</span> // Tracker for load balancer state<a name="line.305"></a>
+<span class="sourceLineNo">306</span> LoadBalancerTracker loadBalancerTracker;<a name="line.306"></a>
+<span class="sourceLineNo">307</span> // Tracker for meta location, if any client ZK quorum specified<a name="line.307"></a>
+<span class="sourceLineNo">308</span> MetaLocationSyncer metaLocationSyncer;<a name="line.308"></a>
+<span class="sourceLineNo">309</span> // Tracker for active master location, if any client ZK quorum specified<a name="line.309"></a>
+<span class="sourceLineNo">310</span> MasterAddressSyncer masterAddressSyncer;<a name="line.310"></a>
<span class="sourceLineNo">311</span><a name="line.311"></a>
-<span class="sourceLineNo">312</span> // Tracker for region normalizer state<a name="line.312"></a>
-<span class="sourceLineNo">313</span> private RegionNormalizerTracker regionNormalizerTracker;<a name="line.313"></a>
+<span class="sourceLineNo">312</span> // Tracker for split and merge state<a name="line.312"></a>
+<span class="sourceLineNo">313</span> private SplitOrMergeTracker splitOrMergeTracker;<a name="line.313"></a>
<span class="sourceLineNo">314</span><a name="line.314"></a>
-<span class="sourceLineNo">315</span> //Tracker for master maintenance mode setting<a name="line.315"></a>
-<span class="sourceLineNo">316</span> private MasterMaintenanceModeTracker maintenanceModeTracker;<a name="line.316"></a>
+<span class="sourceLineNo">315</span> // Tracker for region normalizer state<a name="line.315"></a>
+<span class="sourceLineNo">316</span> private RegionNormalizerTracker regionNormalizerTracker;<a name="line.316"></a>
<span class="sourceLineNo">317</span><a name="line.317"></a>
-<span class="sourceLineNo">318</span> private ClusterSchemaService clusterSchemaService;<a name="line.318"></a>
-<span class="sourceLineNo">319</span><a name="line.319"></a>
-<span class="sourceLineNo">320</span> public static final String HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS =<a name="line.320"></a>
-<span class="sourceLineNo">321</span> "hbase.master.wait.on.service.seconds";<a name="line.321"></a>
-<span class="sourceLineNo">322</span> public static final int DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS = 5 * 60;<a name="line.322"></a>
-<span class="sourceLineNo">323</span><a name="line.323"></a>
-<span class="sourceLineNo">324</span> // Metrics for the HMaster<a name="line.324"></a>
-<span class="sourceLineNo">325</span> final MetricsMaster metricsMaster;<a name="line.325"></a>
-<span class="sourceLineNo">326</span> // file system manager for the master FS operations<a name="line.326"></a>
-<span class="sourceLineNo">327</span> private MasterFileSystem fileSystemManager;<a name="line.327"></a>
-<span class="sourceLineNo">328</span> private MasterWalManager walManager;<a name="line.328"></a>
-<span class="sourceLineNo">329</span><a name="line.329"></a>
-<span class="sourceLineNo">330</span> // server manager to deal with region server info<a name="line.330"></a>
-<span class="sourceLineNo">331</span> private volatile ServerManager serverManager;<a name="line.331"></a>
+<span class="sourceLineNo">318</span> //Tracker for master maintenance mode setting<a name="line.318"></a>
+<span class="sourceLineNo">319</span> private MasterMaintenanceModeTracker maintenanceModeTracker;<a name="line.319"></a>
+<span class="sourceLineNo">320</span><a name="line.320"></a>
+<span class="sourceLineNo">321</span> private ClusterSchemaService clusterSchemaService;<a name="line.321"></a>
+<span class="sourceLineNo">322</span><a name="line.322"></a>
+<span class="sourceLineNo">323</span> public static final String HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS =<a name="line.323"></a>
+<span class="sourceLineNo">324</span> "hbase.master.wait.on.service.seconds";<a name="line.324"></a>
+<span class="sourceLineNo">325</span> public static final int DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS = 5 * 60;<a name="line.325"></a>
+<span class="sourceLineNo">326</span><a name="line.326"></a>
+<span class="sourceLineNo">327</span> // Metrics for the HMaster<a name="line.327"></a>
+<span class="sourceLineNo">328</span> final MetricsMaster metricsMaster;<a name="line.328"></a>
+<span class="sourceLineNo">329</span> // file system manager for the master FS operations<a name="line.329"></a>
+<span class="sourceLineNo">330</span> private MasterFileSystem fileSystemManager;<a name="line.330"></a>
+<span class="sourceLineNo">331</span> private MasterWalManager walManager;<a name="line.331"></a>
<span class="sourceLineNo">332</span><a name="line.332"></a>
-<span class="sourceLineNo">333</span> // manager of assignment nodes in zookeeper<a name="line.333"></a>
-<span class="sourceLineNo">334</span> private AssignmentManager assignmentManager;<a name="line.334"></a>
+<span class="sourceLineNo">333</span> // server manager to deal with region server info<a name="line.333"></a>
+<span class="sourceLineNo">334</span> private volatile ServerManager serverManager;<a name="line.334"></a>
<span class="sourceLineNo">335</span><a name="line.335"></a>
-<span class="sourceLineNo">336</span> // manager of replication<a name="line.336"></a>
-<span class="sourceLineNo">337</span> private ReplicationPeerManager replicationPeerManager;<a name="line.337"></a>
+<span class="sourceLineNo">336</span> // manager of assignment nodes in zookeeper<a name="line.336"></a>
+<span class="sourceLineNo">337</span> private AssignmentManager assignmentManager;<a name="line.337"></a>
<span class="sourceLineNo">338</span><a name="line.338"></a>
-<span class="sourceLineNo">339</span> // buffer for "fatal error" notices from region servers<a name="line.339"></a>
-<span class="sourceLineNo">340</span> // in the cluster. This is only used for assisting<a name="line.340"></a>
-<span class="sourceLineNo">341</span> // operations/debugging.<a name="line.341"></a>
-<span class="sourceLineNo">342</span> MemoryBoundedLogMessageBuffer rsFatals;<a name="line.342"></a>
-<span class="sourceLineNo">343</span><a name="line.343"></a>
-<span class="sourceLineNo">344</span> // flag set after we become the active master (used for testing)<a name="line.344"></a>
-<span class="sourceLineNo">345</span> private volatile boolean activeMaster = false;<a name="line.345"></a>
+<span class="sourceLineNo">339</span> // manager of replication<a name="line.339"></a>
+<span class="sourceLineNo">340</span> private ReplicationPeerManager replicationPeerManager;<a name="line.340"></a>
+<span class="sourceLineNo">341</span><a name="line.341"></a>
+<span class="sourceLineNo">342</span> // buffer for "fatal error" notices from region servers<a name="line.342"></a>
+<span class="sourceLineNo">343</span> // in the cluster. This is only used for assisting<a name="line.343"></a>
+<span class="sourceLineNo">344</span> // operations/debugging.<a name="line.344"></a>
+<span class="sourceLineNo">345</span> MemoryBoundedLogMessageBuffer rsFatals;<a name="line.345"></a>
<span class="sourceLineNo">346</span><a name="line.346"></a>
-<span class="sourceLineNo">347</span> // flag set after we complete initialization once active<a name="line.347"></a>
-<span class="sourceLineNo">348</span> private final ProcedureEvent<?> initialized = new ProcedureEvent<>("master initialized");<a name="line.348"></a>
+<span class="sourceLineNo">347</span> // flag set after we become the active master (used for testing)<a name="line.347"></a>
+<span class="sourceLineNo">348</span> private volatile boolean activeMaster = false;<a name="line.348"></a>
<span class="sourceLineNo">349</span><a name="line.349"></a>
-<span class="sourceLineNo">350</span> // flag set after master services are started,<a name="line.350"></a>
-<span class="sourceLineNo">351</span> // initialization may have not completed yet.<a name="line.351"></a>
-<span class="sourceLineNo">352</span> volatile boolean serviceStarted = false;<a name="line.352"></a>
-<span class="sourceLineNo">353</span><a name="line.353"></a>
-<span class="sourceLineNo">354</span> // flag set after we complete assignMeta.<a name="line.354"></a>
-<span class="sourceLineNo">355</span> private final ProcedureEvent<?> serverCrashProcessingEnabled =<a name="line.355"></a>
-<span class="sourceLineNo">356</span> new ProcedureEvent<>("server crash processing");<a name="line.356"></a>
-<span class="sourceLineNo">357</span><a name="line.357"></a>
-<span class="sourceLineNo">358</span> // Maximum time we should run balancer for<a name="line.358"></a>
-<span class="sourceLineNo">359</span> private final int maxBlancingTime;<a name="line.359"></a>
-<span class="sourceLineNo">360</span> // Maximum percent of regions in transition when balancing<a name="line.360"></a>
-<span class="sourceLineNo">361</span> private final double maxRitPercent;<a name="line.361"></a>
-<span class="sourceLineNo">362</span><a name="line.362"></a>
-<span class="sourceLineNo">363</span> private final LockManager lockManager = new LockManager(this);<a name="line.363"></a>
-<span class="sourceLineNo">364</span><a name="line.364"></a>
-<span class="sourceLineNo">365</span> private LoadBalancer balancer;<a name="line.365"></a>
-<span class="sourceLineNo">366</span> private RegionNormalizer normalizer;<a name="line.366"></a>
-<span class="sourceLineNo">367</span> private BalancerChore balancerChore;<a name="line.367"></a>
-<span class="sourceLineNo">368</span> private RegionNormalizerChore normalizerChore;<a name="line.368"></a>
-<span class="sourceLineNo">369</span> private ClusterStatusChore clusterStatusChore;<a name="line.369"></a>
-<span class="sourceLineNo">370</span> private ClusterStatusPublisher clusterStatusPublisherChore = null;<a name="line.370"></a>
-<span class="sourceLineNo">371</span><a name="line.371"></a>
-<span class="sourceLineNo">372</span> CatalogJanitor catalogJanitorChore;<a name="line.372"></a>
-<span class="sourceLineNo">373</span> private LogCleaner logCleaner;<a name="line.373"></a>
-<span class="sourceLineNo">374</span> private HFileCleaner hfileCleaner;<a name="line.374"></a>
-<span class="sourceLineNo">375</span> private ReplicationBarrierCleaner replicationBarrierCleaner;<a name="line.375"></a>
-<span class="sourceLineNo">376</span> private ExpiredMobFileCleanerChore expiredMobFileCleanerChore;<a name="line.376"></a>
-<span class="sourceLineNo">377</span> private MobCompactionChore mobCompactChore;<a name="line.377"></a>
-<span class="sourceLineNo">378</span> private MasterMobCompactionThread mobCompactThread;<a name="line.378"></a>
-<span class="sourceLineNo">379</span> // used to synchronize the mobCompactionStates<a name="line.379"></a>
-<span class="sourceLineNo">380</span> private final IdLock mobCompactionLock = new IdLock();<a name="line.380"></a>
-<span class="sourceLineNo">381</span> // save the information of mob compactions in tables.<a name="line.381"></a>
-<span class="sourceLineNo">382</span> // the key is table name, the value is the number of compactions in that table.<a name="line.382"></a>
-<span class="sourceLineNo">383</span> private Map<TableName, AtomicInteger> mobCompactionStates = Maps.newConcurrentMap();<a name="line.383"></a>
-<span class="sourceLineNo">384</span><a name="line.384"></a>
-<span class="sourceLineNo">385</span> MasterCoprocessorHost cpHost;<a name="line.385"></a>
-<span class="sourceLineNo">386</span><a name="line.386"></a>
-<span class="sourceLineNo">387</span> private final boolean preLoadTableDescriptors;<a name="line.387"></a>
-<span class="sourceLineNo">388</span><a name="line.388"></a>
-<span class="sourceLineNo">389</span> // Time stamps for when a hmaster became active<a name="line.389"></a>
-<span class="sourceLineNo">390</span> private long masterActiveTime;<a name="line.390"></a>
-<span class="sourceLineNo">391</span><a name="line.391"></a>
-<span class="sourceLineNo">392</span> // Time stamp for when HMaster finishes becoming Active Master<a name="line.392"></a>
-<span class="sourceLineNo">393</span> private long masterFinishedInitializationTime;<a name="line.393"></a>
-<span class="sourceLineNo">394</span><a name="line.394"></a>
-<span class="sourceLineNo">395</span> //should we check the compression codec type at master side, default true, HBASE-6370<a name="line.395"></a>
-<span class="sourceLineNo">396</span> private final boolean masterCheckCompression;<a name="line.396"></a>
-<span class="sourceLineNo">397</span><a name="line.397"></a>
-<span class="sourceLineNo">398</span> //should we check encryption settings at master side, default true<a name="line.398"></a>
-<span class="sourceLineNo">399</span> private final boolean masterCheckEncryption;<a name="line.399"></a>
-<span class="sourceLineNo">400</span><a name="line.400"></a>
-<span class="sourceLineNo">401</span> Map<String, Service> coprocessorServiceHandlers = Maps.newHashMap();<a name="line.401"></a>
-<span class="sourceLineNo">402</span><a name="line.402"></a>
-<span class="sourceLineNo">403</span> // monitor for snapshot of hbase tables<a name="line.403"></a>
-<span class="sourceLineNo">404</span> SnapshotManager snapshotManager;<a name="line.404"></a>
-<span class="sourceLineNo">405</span> // monitor for distributed procedures<a name="line.405"></a>
-<span class="sourceLineNo">406</span> private MasterProcedureManagerHost mpmHost;<a name="line.406"></a>
-<span class="sourceLineNo">407</span><a name="line.407"></a>
-<span class="sourceLineNo">408</span> // it is assigned after 'initialized' guard set to true, so should be volatile<a name="line.408"></a>
-<span class="sourceLineNo">409</span> private volatile MasterQuotaManager quotaManager;<a name="line.409"></a>
-<span class="sourceLineNo">410</span> private SpaceQuotaSnapshotNotifier spaceQuotaSnapshotNotifier;<a name="line.410"></a>
-<span class="sourceLineNo">411</span> private QuotaObserverChore quotaObserverChore;<a name="line.411"></a>
-<span class="sourceLineNo">412</span> private SnapshotQuotaObserverChore snapshotQuotaChore;<a name="line.412"></a>
-<span class="sourceLineNo">413</span><a name="line.413"></a>
-<span class="sourceLineNo">414</span> private ProcedureExecutor<MasterProcedureEnv> procedureExecutor;<a name="line.414"></a>
-<span class="sourceLineNo">415</span> private WALProcedureStore procedureStore;<a name="line.415"></a>
-<span class="sourceLineNo">416</span><a name="line.416"></a>
-<span class="sourceLineNo">417</span> // handle table states<a name="line.417"></a>
-<span class="sourceLineNo">418</span> private TableStateManager tableStateManager;<a name="line.418"></a>
-<span class="sourceLineNo">419</span><a name="line.419"></a>
-<span class="sourceLineNo">420</span> private long splitPlanCount;<a name="line.420"></a>
-<span class="sourceLineNo">421</span> private long mergePlanCount;<a name="line.421"></a>
-<span class="sourceLineNo">422</span><a name="line.422"></a>
-<span class="sourceLineNo">423</span> /* Handle favored nodes information */<a name="line.423"></a>
-<span class="sourceLineNo">424</span> private FavoredNodesManager favoredNodesManager;<a name="line.424"></a>
-<span class="sourceLineNo">425</span><a name="line.425"></a>
-<span class="sourceLineNo">426</span> /** jetty server for master to redirect requests to regionserver infoServer */<a name="line.426"></a>
-<span class="sourceLineNo">427</span> private Server masterJettyServer;<a name="line.427"></a>
-<span class="sourceLineNo">428</span><a name="line.428"></a>
-<span class="sourceLineNo">429</span> public static class RedirectServlet extends HttpServlet {<a name="line.429"></a>
-<span class="sourceLineNo">430</span> private static final long serialVersionUID = 2894774810058302473L;<a name="line.430"></a>
-<span class="sourceLineNo">431</span> private final int regionServerInfoPort;<a name="line.431"></a>
-<span class="sourceLineNo">432</span> private final String regionServerHostname;<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> * @param infoServer that we're trying to send all requests to<a name="line.435"></a>
-<span class="sourceLineNo">436</span> * @param hostname may be null. if given, will be used for redirects instead of host from client.<a name="line.436"></a>
-<span class="sourceLineNo">437</span> */<a name="line.437"></a>
-<span class="sourceLineNo">438</span> public RedirectServlet(InfoServer infoServer, String hostname) {<a name="line.438"></a>
-<span class="sourceLineNo">439</span> regionServerInfoPort = infoServer.getPort();<a name="line.439"></a>
-<span class="sourceLineNo">440</span> regionServerHostname = hostname;<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> @Override<a name="line.443"></a>
-<span class="sourceLineNo">444</span> public void doGet(HttpServletRequest request,<a name="line.444"></a>
-<span class="sourceLineNo">445</span> HttpServletResponse response) throws ServletException, IOException {<a name="line.445"></a>
-<span class="sourceLineNo">446</span> String redirectHost = regionServerHostname;<a name="line.446"></a>
-<span class="sourceLineNo">447</span> if(redirectHost == null) {<a name="line.447"></a>
-<span class="sourceLineNo">448</span> redirectHost = request.getServerName();<a name="line.448"></a>
-<span class="sourceLineNo">449</span> if(!Addressing.isLocalAddress(InetAddress.getByName(redirectHost))) {<a name="line.449"></a>
-<span class="sourceLineNo">450</span> LOG.warn("Couldn't resolve '" + redirectHost + "' as an address local to this node and '" +<a name="line.450"></a>
-<span class="sourceLineNo">451</span> MASTER_HOSTNAME_KEY + "' is not set; client will get a HTTP 400 response. If " +<a name="line.451"></a>
-<span class="sourceLineNo">452</span> "your HBase deployment relies on client accessible names that the region server process " +<a name="line.452"></a>
-<span class="sourceLineNo">453</span> "can't resolve locally, then you should set the previously mentioned configuration variable " +<a name="line.453"></a>
-<span class="sourceLineNo">454</span> "to an appropriate hostname.");<a name="line.454"></a>
-<span class="sourceLineNo">455</span> // no sending client provided input back to the client, so the goal host is just in the logs.<a name="line.455"></a>
-<span class="sourceLineNo">456</span> response.sendError(400, "Request was to a host that I can't resolve for any of the network interfaces on " +<a name="line.456"></a>
-<span class="sourceLineNo">457</span> "this node. If this is due to an intermediary such as an HTTP load balancer or other proxy, your HBase " +<a name="line.457"></a>
-<span class="sourceLineNo">458</span> "administrator can set '" + MASTER_HOSTNAME_KEY + "' to point to the correct hostname.");<a name="line.458"></a>
-<span class="sourceLineNo">459</span> return;<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> // TODO this scheme should come from looking at the scheme registered in the infoserver's http server for the<a name="line.462"></a>
-<span class="sourceLineNo">463</span> // host and port we're using, but it's buried way too deep to do that ATM.<a name="line.463"></a>
-<span class="sourceLineNo">464</span> String redirectUrl = request.getScheme() + "://"<a name="line.464"></a>
-<span class="sourceLineNo">465</span> + redirectHost + ":" + regionServerInfoPort<a name="line.465"></a>
-<span class="sourceLineNo">466</span> + request.getRequestURI();<a name="line.466"></a>
-<span class="sourceLineNo">467</span> response.sendRedirect(redirectUrl);<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><a name="line.470"></a>
-<span class="sourceLineNo">471</span> /**<a name="line.471"></a>
-<span class="sourceLineNo">472</span> * Initializes the HMaster. The steps are as follows:<a name="line.472"></a>
-<span class="sourceLineNo">473</span> * <p><a name="line.473"></a>
-<span class="sourceLineNo">474</span> * <ol><a name="line.474"></a>
-<span class="sourceLineNo">475</span> * <li>Initialize the local HRegionServer<a name="line.475"></a>
-<span class="sourceLineNo">476</span> * <li>Start the ActiveMasterManager.<a name="line.476"></a>
-<span class="sourceLineNo">477</span> * </ol><a name="line.477"></a>
-<span class="sourceLineNo">478</span> * <p><a name="line.478"></a>
-<span class="sourceLineNo">479</span> * Remaining steps of initialization occur in<a name="line.479"></a>
-<span class="sourceLineNo">480</span> * #finishActiveMasterInitialization(MonitoredTask) after<a name="line.480"></a>
-<span class="sourceLineNo">481</span> * the master becomes the active one.<a name="line.481"></a>
-<span class="sourceLineNo">482</span> */<a name="line.482"></a>
-<span class="sourceLineNo">483</span> public HMaster(final Configuration conf)<a name="line.483"></a>
-<span class="sourceLineNo">484</span> throws IOException, KeeperException {<a name="line.484"></a>
-<span class="sourceLineNo">485</span> super(conf);<a name="line.485"></a>
-<span class="sourceLineNo">486</span> TraceUtil.initTracer(conf);<a name="line.486"></a>
-<span class="sourceLineNo">487</span> try {<a name="line.487"></a>
-<span class="sourceLineNo">488</span> this.rsFatals = new MemoryBoundedLogMessageBuffer(<a name="line.488"></a>
-<span class="sourceLineNo">489</span> conf.getLong("hbase.master.buffer.for.rs.fatals", 1 * 1024 * 1024));<a name="line.489"></a>
-<span class="sourceLineNo">490</span> LOG.info("hbase.rootdir=" + getRootDir() +<a name="line.490"></a>
-<span class="sourceLineNo">491</span> ", hbase.cluster.distributed=" + this.conf.getBoolean(HConstants.CLUSTER_DISTRIBUTED, false));<a name="line.491"></a>
-<span class="sourceLineNo">492</span><a name="line.492"></a>
-<span class="sourceLineNo">493</span> // Disable usage of meta replicas in the master<a name="line.493"></a>
-<span class="sourceLineNo">494</span> this.conf.setBoolean(HConstants.USE_META_REPLICAS, false);<a name="line.494"></a>
-<span class="sourceLineNo">495</span><a name="line.495"></a>
-<span class="sourceLineNo">496</span> decorateMasterConfiguration(this.conf);<a name="line.496"></a>
-<span class="sourceLineNo">497</span><a name="line.497"></a>
-<span class="sourceLineNo">498</span> // Hack! Maps DFSClient => Master for logs. HDFS made this<a name="line.498"></a>
-<span class="sourceLineNo">499</span> // config param for task trackers, but we can piggyback off of it.<a name="line.499"></a>
-<span class="sourceLineNo">500</span> if (this.conf.get("mapreduce.task.attempt.id") == null) {<a name="line.500"></a>
-<span class="sourceLineNo">501</span> this.conf.set("mapreduce.task.attempt.id", "hb_m_" + this.serverName.toString());<a name="line.501"></a>
-<span class="sourceLineNo">502</span> }<a name="line.502"></a>
-<span class="sourceLineNo">503</span><a name="line.503"></a>
-<span class="sourceLineNo">504</span> // should we check the compression codec type at master side, default true, HBASE-6370<a name="line.504"></a>
-<span class="sourceLineNo">505</span> this.masterCheckCompression = conf.getBoolean("hbase.master.check.compression", true);<a name="line.505"></a>
-<span class="sourceLineNo">506</span><a name="line.506"></a>
-<span class="sourceLineNo">507</span> // should we check encryption settings at master side, default true<a name="line.507"></a>
-<span class="sourceLineNo">508</span> this.masterCheckEncryption = conf.getBoolean("hbase.master.check.encryption", true);<a name="line.508"></a>
-<span class="sourceLineNo">509</span><a name="line.509"></a>
-<span class="sourceLineNo">510</span> this.metricsMaster = new MetricsMaster(new MetricsMasterWrapperImpl(this));<a name="line.510"></a>
-<span class="sourceLineNo">511</span><a name="line.511"></a>
-<span class="sourceLineNo">512</span> // preload table descriptor at startup<a name="line.512"></a>
-<span class="sourceLineNo">513</span> this.preLoadTableDescriptors = conf.getBoolean("hbase.master.preload.tabledescriptors", true);<a name="line.513"></a>
-<span class="sourceLineNo">514</span><a name="line.514"></a>
-<span class="sourceLineNo">515</span> this.maxBlancingTime = getMaxBalancingTime();<a name="line.515"></a>
-<span class="sourceLineNo">516</span> this.maxRitPercent = conf.getDouble(HConstants.HBASE_MASTER_BALANCER_MAX_RIT_PERCENT,<a name="line.516"></a>
-<span class="sourceLineNo">517</span> HConstants.DEFAULT_HBASE_MASTER_BALANCER_MAX_RIT_PERCENT);<a name="line.517"></a>
-<span class="sourceLineNo">518</span><a name="line.518"></a>
-<span class="sourceLineNo">519</span> // Do we publish the status?<a name="line.519"></a>
-<span class="sourceLineNo">520</span><a name="line.520"></a>
-<span class="sourceLineNo">521</span> boolean shouldPublish = conf.getBoolean(HConstants.STATUS_PUBLISHED,<a name="line.521"></a>
-<span class="sourceLineNo">522</span> HConstants.STATUS_PUBLISHED_DEFAULT);<a name="line.522"></a>
-<span class="sourceLineNo">523</span> Class<? extends ClusterStatusPublisher.Publisher> publisherClass =<a name="line.523"></a>
-<span class="sourceLineNo">524</span> conf.getClass(ClusterStatusPublisher.STATUS_PUBLISHER_CLASS,<a name="line.524"></a>
-<span class="sourceLineNo">525</span> ClusterStatusPublisher.DEFAULT_STATUS_PUBLISHER_CLASS,<a name="line.525"></a>
-<span class="sourceLineNo">526</span> ClusterStatusPublisher.Publisher.class);<a name="line.526"></a>
-<span class="sourceLineNo">527</span><a name="line.527"></a>
-<span class="sourceLineNo">528</span> if (shouldPublish) {<a name="line.528"></a>
-<span class="sourceLineNo">529</span> if (publisherClass == null) {<a name="line.529"></a>
-<span class="sourceLineNo">530</span> LOG.warn(HConstants.STATUS_PUBLISHED + " is true, but " +<a name="line.530"></a>
-<span class="sourceLineNo">531</span> ClusterStatusPublisher.DEFAULT_STATUS_PUBLISHER_CLASS +<a name="line.531"></a>
-<span class="sourceLineNo">532</span> " is not set - not publishing status");<a name="line.532"></a>
-<span class="sourceLineNo">533</span> } else {<a name="line.533"></a>
-<span class="sourceLineNo">534</span> clusterStatusPublisherChore = new ClusterStatusPublisher(this, conf, publisherClass);<a name="line.534"></a>
-<span class="sourceLineNo">535</span> getChoreService().scheduleChore(clusterStatusPublisherChore);<a name="line.535"></a>
<TRUNCATED>
[33/51] [partial] hbase-site git commit: Published site at
9101fc246f86445006bfbcdfda5cc495016dc280.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html
index d9f116c..39e672d 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.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};
+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};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
@@ -115,7 +115,7 @@ var activeTableTab = "activeTableTab";
<br>
<pre>@InterfaceAudience.Private
@InterfaceStability.Evolving
-public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html#line.48">MasterProcedureEnv</a>
+public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html#line.46">MasterProcedureEnv</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/conf/ConfigurationObserver.html" title="interface in org.apache.hadoop.hbase.conf">ConfigurationObserver</a></pre>
</li>
@@ -265,16 +265,8 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/conf/Configuration
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code>boolean</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html#waitFailoverCleanup-org.apache.hadoop.hbase.procedure2.Procedure-">waitFailoverCleanup</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> proc)</code> </td>
-</tr>
-<tr id="i13" class="rowColor">
-<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html#waitInitialized-org.apache.hadoop.hbase.procedure2.Procedure-">waitInitialized</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> proc)</code> </td>
</tr>
-<tr id="i14" class="altColor">
-<td class="colFirst"><code>boolean</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html#waitServerCrashProcessingEnabled-org.apache.hadoop.hbase.procedure2.Procedure-">waitServerCrashProcessingEnabled</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> proc)</code> </td>
-</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
@@ -303,7 +295,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/conf/Configuration
<ul class="blockList">
<li class="blockList">
<h4>LOG</h4>
-<pre>private static final org.slf4j.Logger <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html#line.49">LOG</a></pre>
+<pre>private static final org.slf4j.Logger <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html#line.47">LOG</a></pre>
</li>
</ul>
<a name="remoteDispatcher">
@@ -312,7 +304,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/conf/Configuration
<ul class="blockList">
<li class="blockList">
<h4>remoteDispatcher</h4>
-<pre>private final <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.html" title="class in org.apache.hadoop.hbase.master.procedure">RSProcedureDispatcher</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html#line.98">remoteDispatcher</a></pre>
+<pre>private final <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.html" title="class in org.apache.hadoop.hbase.master.procedure">RSProcedureDispatcher</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html#line.95">remoteDispatcher</a></pre>
</li>
</ul>
<a name="procSched">
@@ -321,7 +313,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/conf/Configuration
<ul class="blockList">
<li class="blockList">
<h4>procSched</h4>
-<pre>private final <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureScheduler</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html#line.99">procSched</a></pre>
+<pre>private final <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureScheduler</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html#line.96">procSched</a></pre>
</li>
</ul>
<a name="master">
@@ -330,7 +322,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/conf/Configuration
<ul class="blockListLast">
<li class="blockList">
<h4>master</h4>
-<pre>private final <a href="../../../../../../org/apache/hadoop/hbase/master/MasterServices.html" title="interface in org.apache.hadoop.hbase.master">MasterServices</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html#line.100">master</a></pre>
+<pre>private final <a href="../../../../../../org/apache/hadoop/hbase/master/MasterServices.html" title="interface in org.apache.hadoop.hbase.master">MasterServices</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html#line.97">master</a></pre>
</li>
</ul>
</li>
@@ -347,7 +339,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/conf/Configuration
<ul class="blockList">
<li class="blockList">
<h4>MasterProcedureEnv</h4>
-<pre>public <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html#line.102">MasterProcedureEnv</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/MasterServices.html" title="interface in org.apache.hadoop.hbase.master">MasterServices</a> master)</pre>
+<pre>public <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html#line.99">MasterProcedureEnv</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/MasterServices.html" title="interface in org.apache.hadoop.hbase.master">MasterServices</a> master)</pre>
</li>
</ul>
<a name="MasterProcedureEnv-org.apache.hadoop.hbase.master.MasterServices-org.apache.hadoop.hbase.master.procedure.RSProcedureDispatcher-">
@@ -356,7 +348,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/conf/Configuration
<ul class="blockListLast">
<li class="blockList">
<h4>MasterProcedureEnv</h4>
-<pre>public <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html#line.106">MasterProcedureEnv</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/MasterServices.html" title="interface in org.apache.hadoop.hbase.master">MasterServices</a> master,
+<pre>public <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html#line.103">MasterProcedureEnv</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/MasterServices.html" title="interface in org.apache.hadoop.hbase.master">MasterServices</a> master,
<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.html" title="class in org.apache.hadoop.hbase.master.procedure">RSProcedureDispatcher</a> remoteDispatcher)</pre>
</li>
</ul>
@@ -374,7 +366,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/conf/Configuration
<ul class="blockList">
<li class="blockList">
<h4>getRequestUser</h4>
-<pre>public <a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html#line.113">getRequestUser</a>()</pre>
+<pre>public <a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html#line.110">getRequestUser</a>()</pre>
</li>
</ul>
<a name="getMasterServices--">
@@ -383,7 +375,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/conf/Configuration
<ul class="blockList">
<li class="blockList">
<h4>getMasterServices</h4>
-<pre>public <a href="../../../../../../org/apache/hadoop/hbase/master/MasterServices.html" title="interface in org.apache.hadoop.hbase.master">MasterServices</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html#line.117">getMasterServices</a>()</pre>
+<pre>public <a href="../../../../../../org/apache/hadoop/hbase/master/MasterServices.html" title="interface in org.apache.hadoop.hbase.master">MasterServices</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html#line.114">getMasterServices</a>()</pre>
</li>
</ul>
<a name="getMasterConfiguration--">
@@ -392,7 +384,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/conf/Configuration
<ul class="blockList">
<li class="blockList">
<h4>getMasterConfiguration</h4>
-<pre>public org.apache.hadoop.conf.Configuration <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html#line.121">getMasterConfiguration</a>()</pre>
+<pre>public org.apache.hadoop.conf.Configuration <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html#line.118">getMasterConfiguration</a>()</pre>
</li>
</ul>
<a name="getAssignmentManager--">
@@ -401,7 +393,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/conf/Configuration
<ul class="blockList">
<li class="blockList">
<h4>getAssignmentManager</h4>
-<pre>public <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignmentManager</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html#line.125">getAssignmentManager</a>()</pre>
+<pre>public <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignmentManager</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html#line.122">getAssignmentManager</a>()</pre>
</li>
</ul>
<a name="getMasterCoprocessorHost--">
@@ -410,7 +402,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/conf/Configuration
<ul class="blockList">
<li class="blockList">
<h4>getMasterCoprocessorHost</h4>
-<pre>public <a href="../../../../../../org/apache/hadoop/hbase/master/MasterCoprocessorHost.html" title="class in org.apache.hadoop.hbase.master">MasterCoprocessorHost</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html#line.129">getMasterCoprocessorHost</a>()</pre>
+<pre>public <a href="../../../../../../org/apache/hadoop/hbase/master/MasterCoprocessorHost.html" title="class in org.apache.hadoop.hbase.master">MasterCoprocessorHost</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html#line.126">getMasterCoprocessorHost</a>()</pre>
</li>
</ul>
<a name="getProcedureScheduler--">
@@ -419,7 +411,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/conf/Configuration
<ul class="blockList">
<li class="blockList">
<h4>getProcedureScheduler</h4>
-<pre>public <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureScheduler</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html#line.133">getProcedureScheduler</a>()</pre>
+<pre>public <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureScheduler</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html#line.130">getProcedureScheduler</a>()</pre>
</li>
</ul>
<a name="getRemoteDispatcher--">
@@ -428,7 +420,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/conf/Configuration
<ul class="blockList">
<li class="blockList">
<h4>getRemoteDispatcher</h4>
-<pre>public <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.html" title="class in org.apache.hadoop.hbase.master.procedure">RSProcedureDispatcher</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html#line.137">getRemoteDispatcher</a>()</pre>
+<pre>public <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.html" title="class in org.apache.hadoop.hbase.master.procedure">RSProcedureDispatcher</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html#line.134">getRemoteDispatcher</a>()</pre>
</li>
</ul>
<a name="getReplicationPeerManager--">
@@ -437,7 +429,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/conf/Configuration
<ul class="blockList">
<li class="blockList">
<h4>getReplicationPeerManager</h4>
-<pre>public <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ReplicationPeerManager.html" title="class in org.apache.hadoop.hbase.master.replication">ReplicationPeerManager</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html#line.141">getReplicationPeerManager</a>()</pre>
+<pre>public <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ReplicationPeerManager.html" title="class in org.apache.hadoop.hbase.master.replication">ReplicationPeerManager</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html#line.138">getReplicationPeerManager</a>()</pre>
</li>
</ul>
<a name="isRunning--">
@@ -446,7 +438,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/conf/Configuration
<ul class="blockList">
<li class="blockList">
<h4>isRunning</h4>
-<pre>public boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html#line.145">isRunning</a>()</pre>
+<pre>public boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html#line.142">isRunning</a>()</pre>
</li>
</ul>
<a name="isInitialized--">
@@ -455,7 +447,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/conf/Configuration
<ul class="blockList">
<li class="blockList">
<h4>isInitialized</h4>
-<pre>public boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html#line.150">isInitialized</a>()</pre>
+<pre>public boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html#line.147">isInitialized</a>()</pre>
</li>
</ul>
<a name="waitInitialized-org.apache.hadoop.hbase.procedure2.Procedure-">
@@ -464,25 +456,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/conf/Configuration
<ul class="blockList">
<li class="blockList">
<h4>waitInitialized</h4>
-<pre>public boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html#line.154">waitInitialized</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> proc)</pre>
-</li>
-</ul>
-<a name="waitServerCrashProcessingEnabled-org.apache.hadoop.hbase.procedure2.Procedure-">
-<!-- -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>waitServerCrashProcessingEnabled</h4>
-<pre>public boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html#line.158">waitServerCrashProcessingEnabled</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> proc)</pre>
-</li>
-</ul>
-<a name="waitFailoverCleanup-org.apache.hadoop.hbase.procedure2.Procedure-">
-<!-- -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>waitFailoverCleanup</h4>
-<pre>public boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html#line.165">waitFailoverCleanup</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> proc)</pre>
+<pre>public boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html#line.151">waitInitialized</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> proc)</pre>
</li>
</ul>
<a name="setEventReady-org.apache.hadoop.hbase.procedure2.ProcedureEvent-boolean-">
@@ -491,7 +465,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/conf/Configuration
<ul class="blockList">
<li class="blockList">
<h4>setEventReady</h4>
-<pre>public void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html#line.169">setEventReady</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureEvent.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureEvent</a><?> event,
+<pre>public void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html#line.155">setEventReady</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureEvent.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureEvent</a><?> event,
boolean isReady)</pre>
</li>
</ul>
@@ -501,7 +475,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/conf/Configuration
<ul class="blockListLast">
<li class="blockList">
<h4>onConfigurationChange</h4>
-<pre>public void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html#line.178">onConfigurationChange</a>(org.apache.hadoop.conf.Configuration conf)</pre>
+<pre>public void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html#line.164">onConfigurationChange</a>(org.apache.hadoop.conf.Configuration conf)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface: <code><a href="../../../../../../org/apache/hadoop/hbase/conf/ConfigurationObserver.html#onConfigurationChange-org.apache.hadoop.conf.Configuration-">ConfigurationObserver</a></code></span></div>
<div class="block">This method would be called by the <a href="../../../../../../org/apache/hadoop/hbase/conf/ConfigurationManager.html" title="class in org.apache.hadoop.hbase.conf"><code>ConfigurationManager</code></a>
object when the <code>Configuration</code> object is reloaded from disk.</div>
[36/51] [partial] hbase-site git commit: Published site at
9101fc246f86445006bfbcdfda5cc495016dc280.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html b/devapidocs/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html
index 77c2ad4..490dd78 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/assignment/AssignmentManager.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":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,"i53":10,"i54":10,"i55":10,"i56":10,"i57":10,"i58":10,"i59":10,"i60":10,"i61":10,"i62":10,"i63":10,"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,"i
109":10,"i110":10,"i111":10,"i112":10,"i113":10,"i114":10,"i115":10,"i116":10,"i117":10,"i118":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":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,"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":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,"i
109":10,"i110":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
@@ -114,7 +114,7 @@ var activeTableTab = "activeTableTab";
<hr>
<br>
<pre>@InterfaceAudience.Private
-public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.112">AssignmentManager</a>
+public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.111">AssignmentManager</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/master/ServerListener.html" title="interface in org.apache.hadoop.hbase.master">ServerListener</a></pre>
<div class="block">The AssignmentManager is the coordinator for region assign/unassign operations.
@@ -236,86 +236,70 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#DEFAULT_RIT_STUCK_WARNING_THRESHOLD">DEFAULT_RIT_STUCK_WARNING_THRESHOLD</a></span></code> </td>
</tr>
<tr class="rowColor">
-<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureEvent.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureEvent</a><?></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#failoverCleanupDone">failoverCleanupDone</a></span></code>
-<div class="block">Indicator that AssignmentManager has recovered the region states so
- that ServerCrashProcedure can be fully enabled and re-assign regions
- of dead servers.</div>
-</td>
-</tr>
-<tr class="altColor">
<td class="colFirst"><code>private <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CopyOnWriteArrayList.html?is-external=true" title="class or interface in java.util.concurrent">CopyOnWriteArrayList</a><<a href="../../../../../../org/apache/hadoop/hbase/master/AssignmentListener.html" title="interface in org.apache.hadoop.hbase.master">AssignmentListener</a>></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#listeners">listeners</a></span></code>
<div class="block">Listeners that are called on assignment events.</div>
</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/master/assignment/AssignmentManager.html#LOG">LOG</a></span></code> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/master/MasterServices.html" title="interface in org.apache.hadoop.hbase.master">MasterServices</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#master">master</a></span></code> </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/util/Set.html?is-external=true" title="class or interface in java.util">Set</a><<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#META_REGION_SET">META_REGION_SET</a></span></code> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureEvent.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureEvent</a><?></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#metaInitializedEvent">metaInitializedEvent</a></span></code> </td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#metaAssignEvent">metaAssignEvent</a></span></code> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureEvent.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureEvent</a><?></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#metaLoadEvent">metaLoadEvent</a></span></code> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/master/MetricsAssignmentManager.html" title="class in org.apache.hadoop.hbase.master">MetricsAssignmentManager</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#metrics">metrics</a></span></code> </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/master/assignment/AssignmentManager.html#METRICS_RIT_STUCK_WARNING_THRESHOLD">METRICS_RIT_STUCK_WARNING_THRESHOLD</a></span></code>
<div class="block">Region in Transition metrics threshold time</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/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a><<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a>></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#pendingAssignQueue">pendingAssignQueue</a></span></code> </td>
</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>private <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/assignment/AssignmentManager.html#regionNormalizer">regionNormalizer</a></span></code> </td>
-</tr>
<tr class="altColor">
-<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/RegionStateListener.html" title="interface in org.apache.hadoop.hbase">RegionStateListener</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#regionStateListener">regionStateListener</a></span></code> </td>
-</tr>
-<tr class="rowColor">
<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#regionStates">regionStates</a></span></code> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStateStore.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStateStore</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#regionStateStore">regionStateStore</a></span></code> </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/master/assignment/AssignmentManager.html#RIT_CHORE_INTERVAL_MSEC_CONF_KEY">RIT_CHORE_INTERVAL_MSEC_CONF_KEY</a></span></code> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionChore.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignmentManager.RegionInTransitionChore</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#ritChore">ritChore</a></span></code> </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/master/assignment/AssignmentManager.html#running">running</a></span></code> </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/master/assignment/AssignmentManager.html#shouldAssignRegionsWithFavoredNodes">shouldAssignRegionsWithFavoredNodes</a></span></code> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>private static <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/UnassignProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">UnassignProcedure</a>[]</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#UNASSIGN_PROCEDURE_ARRAY_TYPE">UNASSIGN_PROCEDURE_ARRAY_TYPE</a></span></code> </td>
</tr>
@@ -384,17 +368,17 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#assignQueueSignal--">assignQueueSignal</a></span>()</code> </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/master/assignment/AssignmentManager.html#checkFailoverCleanupCompleted-org.apache.hadoop.hbase.client.RegionInfo-">checkFailoverCleanupCompleted</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> hri)</code>
-<div class="block">Used to check if the failover cleanup is done.</div>
-</td>
-</tr>
-<tr id="i7" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#checkIfShouldMoveSystemRegionAsync--">checkIfShouldMoveSystemRegionAsync</a></span>()</code>
<div class="block">Start a new thread to check if there are region servers whose versions are higher than others.</div>
</td>
</tr>
+<tr id="i7" class="rowColor">
+<td class="colFirst"><code>private void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#checkMetaLoaded-org.apache.hadoop.hbase.client.RegionInfo-">checkMetaLoaded</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> hri)</code>
+<div class="block">Used to check if the meta loading is done.</div>
+</td>
+</tr>
<tr id="i8" 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/assignment/AssignmentManager.html#checkOnlineRegionsReport-org.apache.hadoop.hbase.master.assignment.RegionStates.ServerStateNode-java.util.Set-">checkOnlineRegionsReport</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.ServerStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.ServerStateNode</a> serverNode,
@@ -488,7 +472,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#getAssignedRegions--">getAssignedRegions</a></span>()</code> </td>
</tr>
<tr id="i26" class="altColor">
-<td class="colFirst"><code>protected int</code></td>
+<td class="colFirst"><code>(package private) int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#getAssignMaxAttempts--">getAssignMaxAttempts</a></span>()</code> </td>
</tr>
<tr id="i27" class="rowColor">
@@ -510,110 +494,95 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
</td>
</tr>
<tr id="i31" 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></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#getFailoverCleanupEvent--">getFailoverCleanupEvent</a></span>()</code> </td>
-</tr>
-<tr id="i32" 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><<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/assignment/AssignmentManager.html#getFavoredNodes-org.apache.hadoop.hbase.client.RegionInfo-">getFavoredNodes</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo)</code> </td>
</tr>
+<tr id="i32" class="altColor">
+<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureEvent.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureEvent</a><?></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#getMetaAssignEvent-org.apache.hadoop.hbase.client.RegionInfo-">getMetaAssignEvent</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> metaRegionInfo)</code> </td>
+</tr>
<tr id="i33" class="rowColor">
<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#getMetaForRegion-org.apache.hadoop.hbase.client.RegionInfo-">getMetaForRegion</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo)</code> </td>
</tr>
<tr id="i34" class="altColor">
-<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureEvent.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureEvent</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#getMetaInitializedEvent-org.apache.hadoop.hbase.client.RegionInfo-">getMetaInitializedEvent</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> metaRegionInfo)</code> </td>
-</tr>
-<tr id="i35" class="rowColor">
<td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#getMetaRegionFromName-byte:A-">getMetaRegionFromName</a></span>(byte[] regionName)</code> </td>
</tr>
-<tr id="i36" class="altColor">
+<tr id="i35" class="rowColor">
<td class="colFirst"><code><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><<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#getMetaRegionSet--">getMetaRegionSet</a></span>()</code> </td>
</tr>
-<tr id="i37" class="rowColor">
+<tr id="i36" class="altColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#getNumRegionsOpened--">getNumRegionsOpened</a></span>()</code> </td>
</tr>
-<tr id="i38" class="altColor">
+<tr id="i37" class="rowColor">
<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#getProcedureEnvironment--">getProcedureEnvironment</a></span>()</code> </td>
</tr>
-<tr id="i39" class="rowColor">
+<tr id="i38" class="altColor">
<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureScheduler</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#getProcedureScheduler--">getProcedureScheduler</a></span>()</code> </td>
</tr>
-<tr id="i40" class="altColor">
+<tr id="i39" class="rowColor">
<td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#getRegionInfo-byte:A-">getRegionInfo</a></span>(byte[] regionName)</code> </td>
</tr>
-<tr id="i41" 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/assignment/AssignmentManager.html#getRegionNormalizer--">getRegionNormalizer</a></span>()</code> </td>
-</tr>
-<tr id="i42" class="altColor">
+<tr id="i40" 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><<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a>></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#getRegionsInTransition--">getRegionsInTransition</a></span>()</code> </td>
</tr>
-<tr id="i43" class="rowColor">
+<tr id="i41" class="rowColor">
<td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#getRegionStates--">getRegionStates</a></span>()</code> </td>
</tr>
-<tr id="i44" class="altColor">
+<tr id="i42" class="altColor">
<td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStateStore.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStateStore</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#getRegionStateStore--">getRegionStateStore</a></span>()</code> </td>
</tr>
-<tr id="i45" class="rowColor">
+<tr id="i43" class="rowColor">
<td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a><<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>,<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>></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#getReopenStatus-org.apache.hadoop.hbase.TableName-">getReopenStatus</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> tableName)</code>
<div class="block">Used by the client (via master) to identify if all regions have the schema updates</div>
</td>
</tr>
-<tr id="i46" class="altColor">
+<tr id="i44" class="altColor">
<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><<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</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><<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>>></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#getSnapShotOfAssignment-java.util.Collection-">getSnapShotOfAssignment</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><<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>> regions)</code> </td>
</tr>
-<tr id="i47" class="rowColor">
+<tr id="i45" class="rowColor">
<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><<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#getSystemTables-org.apache.hadoop.hbase.ServerName-">getSystemTables</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName)</code> </td>
</tr>
-<tr id="i48" class="altColor">
+<tr id="i46" class="altColor">
<td class="colFirst"><code>(package private) <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/assignment/AssignmentManager.html#getTableStateManager--">getTableStateManager</a></span>()</code> </td>
</tr>
-<tr id="i49" class="rowColor">
+<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/master/assignment/AssignmentManager.html#handleMetaRITOnCrashedServer-org.apache.hadoop.hbase.ServerName-">handleMetaRITOnCrashedServer</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName)</code>
<div class="block">Handle RIT of meta region against crashed server.</div>
</td>
</tr>
-<tr id="i50" class="altColor">
+<tr id="i48" class="altColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#handleRegionOverStuckWarningThreshold-org.apache.hadoop.hbase.client.RegionInfo-">handleRegionOverStuckWarningThreshold</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo)</code> </td>
</tr>
-<tr id="i51" class="rowColor">
+<tr id="i49" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#hasRegionsInTransition--">hasRegionsInTransition</a></span>()</code> </td>
</tr>
-<tr id="i52" class="altColor">
+<tr id="i50" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#isCarryingMeta-org.apache.hadoop.hbase.ServerName-">isCarryingMeta</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName)</code> </td>
</tr>
-<tr id="i53" class="rowColor">
+<tr id="i51" class="rowColor">
<td class="colFirst"><code>private boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#isCarryingRegion-org.apache.hadoop.hbase.ServerName-org.apache.hadoop.hbase.client.RegionInfo-">isCarryingRegion</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName,
<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo)</code> </td>
</tr>
-<tr id="i54" class="altColor">
-<td class="colFirst"><code>boolean</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#isFailoverCleanupDone--">isFailoverCleanupDone</a></span>()</code>
-<div class="block">Used by ServerCrashProcedure to make sure AssignmentManager has completed
- the failover cleanup before re-assigning regions of dead servers.</div>
-</td>
-</tr>
-<tr id="i55" class="rowColor">
+<tr id="i52" 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/assignment/AssignmentManager.html#isLogSplittingDone-org.apache.hadoop.hbase.ServerName-boolean-">isLogSplittingDone</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName,
boolean meta)</code>
@@ -621,63 +590,66 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
This is a very particular check.</div>
</td>
</tr>
-<tr id="i56" class="altColor">
+<tr id="i53" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#isMetaInitialized--">isMetaInitialized</a></span>()</code> </td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#isMetaAssigned--">isMetaAssigned</a></span>()</code>
+<div class="block">Notice that, this only means the meta region is available on a RS, but the AM may still be
+ loading the region states from meta, so usually you need to check <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#isMetaLoaded--"><code>isMetaLoaded()</code></a> first
+ before checking this method, unless you can make sure that your piece of code can only be
+ executed after AM builds the region states.</div>
+</td>
</tr>
-<tr id="i57" class="rowColor">
+<tr id="i54" class="altColor">
<td class="colFirst"><code>boolean</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#isMetaLoaded--">isMetaLoaded</a></span>()</code> </td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#isMetaLoaded--">isMetaLoaded</a></span>()</code>
+<div class="block">Return whether AM finishes the meta loading, i.e, the region states rebuilding.</div>
+</td>
</tr>
-<tr id="i58" class="altColor">
+<tr id="i55" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#isMetaRegion-byte:A-">isMetaRegion</a></span>(byte[] regionName)</code> </td>
</tr>
-<tr id="i59" class="rowColor">
+<tr id="i56" class="altColor">
<td class="colFirst"><code>private boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#isMetaRegion-org.apache.hadoop.hbase.client.RegionInfo-">isMetaRegion</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo)</code> </td>
</tr>
-<tr id="i60" class="altColor">
+<tr id="i57" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#isMetaRegionInTransition--">isMetaRegionInTransition</a></span>()</code> </td>
</tr>
-<tr id="i61" class="rowColor">
+<tr id="i58" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#isRunning--">isRunning</a></span>()</code> </td>
</tr>
-<tr id="i62" class="altColor">
+<tr id="i59" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#isTableDisabled-org.apache.hadoop.hbase.TableName-">isTableDisabled</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> tableName)</code> </td>
</tr>
-<tr id="i63" class="rowColor">
+<tr id="i60" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#isTableEnabled-org.apache.hadoop.hbase.TableName-">isTableEnabled</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> tableName)</code> </td>
</tr>
-<tr id="i64" class="altColor">
+<tr id="i61" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#joinCluster--">joinCluster</a></span>()</code> </td>
</tr>
-<tr id="i65" class="rowColor">
+<tr id="i62" class="altColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#killRegionServer-org.apache.hadoop.hbase.master.assignment.RegionStates.ServerStateNode-">killRegionServer</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.ServerStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.ServerStateNode</a> serverNode)</code> </td>
</tr>
-<tr id="i66" class="altColor">
-<td class="colFirst"><code>private void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#killRegionServer-org.apache.hadoop.hbase.ServerName-">killRegionServer</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName)</code> </td>
-</tr>
-<tr id="i67" class="rowColor">
+<tr id="i63" class="rowColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#loadMeta--">loadMeta</a></span>()</code> </td>
</tr>
-<tr id="i68" class="altColor">
+<tr id="i64" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#markRegionAsClosed-org.apache.hadoop.hbase.master.assignment.RegionStates.RegionStateNode-">markRegionAsClosed</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a> regionNode)</code> </td>
</tr>
-<tr id="i69" class="rowColor">
+<tr id="i65" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#markRegionAsClosing-org.apache.hadoop.hbase.master.assignment.RegionStates.RegionStateNode-">markRegionAsClosing</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a> regionNode)</code> </td>
</tr>
-<tr id="i70" class="altColor">
+<tr id="i66" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#markRegionAsMerged-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.ServerName-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.client.RegionInfo-">markRegionAsMerged</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> child,
<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName,
@@ -686,180 +658,163 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
<div class="block">When called here, the merge has happened.</div>
</td>
</tr>
-<tr id="i71" class="rowColor">
+<tr id="i67" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#markRegionAsOpened-org.apache.hadoop.hbase.master.assignment.RegionStates.RegionStateNode-">markRegionAsOpened</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a> regionNode)</code> </td>
</tr>
-<tr id="i72" class="altColor">
+<tr id="i68" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#markRegionAsOpening-org.apache.hadoop.hbase.master.assignment.RegionStates.RegionStateNode-">markRegionAsOpening</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a> regionNode)</code> </td>
</tr>
-<tr id="i73" class="rowColor">
+<tr id="i69" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#markRegionAsSplit-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.ServerName-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.client.RegionInfo-">markRegionAsSplit</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> parent,
<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName,
<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> daughterA,
<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> daughterB)</code> </td>
</tr>
-<tr id="i74" class="altColor">
+<tr id="i70" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#move-org.apache.hadoop.hbase.client.RegionInfo-">move</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo)</code> </td>
</tr>
-<tr id="i75" class="rowColor">
+<tr id="i71" class="rowColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html?is-external=true" title="class or interface in java.util.concurrent">Future</a><byte[]></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#moveAsync-org.apache.hadoop.hbase.master.RegionPlan-">moveAsync</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/RegionPlan.html" title="class in org.apache.hadoop.hbase.master">RegionPlan</a> regionPlan)</code> </td>
</tr>
-<tr id="i76" class="altColor">
+<tr id="i72" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#offlineRegion-org.apache.hadoop.hbase.client.RegionInfo-">offlineRegion</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo)</code> </td>
</tr>
-<tr id="i77" class="rowColor">
+<tr id="i73" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#onlineRegion-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.ServerName-">onlineRegion</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo,
<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName)</code> </td>
</tr>
-<tr id="i78" class="altColor">
+<tr id="i74" class="altColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#processAssignmentPlans-java.util.HashMap-java.util.HashMap-java.util.List-java.util.List-">processAssignmentPlans</a></span>(<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><<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/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a>> regions,
<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><<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>> retainMap,
<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><<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>> hris,
<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><<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>> servers)</code> </td>
</tr>
-<tr id="i79" class="rowColor">
+<tr id="i75" class="rowColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#processAssignQueue--">processAssignQueue</a></span>()</code> </td>
</tr>
-<tr id="i80" class="altColor">
-<td class="colFirst"><code>private boolean</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#processofflineServersWithOnlineRegions--">processofflineServersWithOnlineRegions</a></span>()</code>
-<div class="block">Look at what is in meta and the list of servers that have checked in and make reconciliation.</div>
-</td>
+<tr id="i76" class="altColor">
+<td class="colFirst"><code>private void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#processOfflineRegions--">processOfflineRegions</a></span>()</code> </td>
</tr>
-<tr id="i81" class="rowColor">
+<tr id="i77" class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#queueAssign-org.apache.hadoop.hbase.master.assignment.RegionStates.RegionStateNode-">queueAssign</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a> regionNode)</code>
<div class="block">Add the assign operation to the assignment queue.</div>
</td>
</tr>
-<tr id="i82" class="altColor">
+<tr id="i78" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#registerListener-org.apache.hadoop.hbase.master.AssignmentListener-">registerListener</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/AssignmentListener.html" title="interface in org.apache.hadoop.hbase.master">AssignmentListener</a> listener)</code>
<div class="block">Add the listener to the notification list.</div>
</td>
</tr>
-<tr id="i83" class="rowColor">
+<tr id="i79" class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#removeRegionInTransition-org.apache.hadoop.hbase.master.assignment.RegionStates.RegionStateNode-org.apache.hadoop.hbase.master.assignment.RegionTransitionProcedure-">removeRegionInTransition</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a> regionNode,
<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionTransitionProcedure</a> procedure)</code> </td>
</tr>
-<tr id="i84" class="altColor">
+<tr id="i80" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#reportOnlineRegions-org.apache.hadoop.hbase.ServerName-java.util.Set-">reportOnlineRegions</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName,
<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><byte[]> regionNames)</code>
<div class="block">the master will call this method when the RS send the regionServerReport().</div>
</td>
</tr>
-<tr id="i85" class="rowColor">
+<tr id="i81" class="rowColor">
<td class="colFirst"><code>org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.ReportRegionStateTransitionResponse</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#reportRegionStateTransition-org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.ReportRegionStateTransitionRequest-">reportRegionStateTransition</a></span>(org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.ReportRegionStateTransitionRequest req)</code> </td>
</tr>
-<tr id="i86" class="altColor">
+<tr id="i82" class="altColor">
<td class="colFirst"><code>private boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#reportTransition-org.apache.hadoop.hbase.master.assignment.RegionStates.RegionStateNode-org.apache.hadoop.hbase.master.assignment.RegionStates.ServerStateNode-org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionStateTransition.TransitionCode-long-">reportTransition</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a> regionNode,
<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.ServerStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.ServerStateNode</a> serverNode,
org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionStateTransition.TransitionCode state,
long seqId)</code> </td>
</tr>
-<tr id="i87" class="rowColor">
+<tr id="i83" class="rowColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#sendRegionClosedNotification-org.apache.hadoop.hbase.client.RegionInfo-">sendRegionClosedNotification</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo)</code> </td>
</tr>
-<tr id="i88" class="altColor">
+<tr id="i84" class="altColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#sendRegionOpenedNotification-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.ServerName-">sendRegionOpenedNotification</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo,
<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName)</code> </td>
</tr>
-<tr id="i89" class="rowColor">
+<tr id="i85" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#serverAdded-org.apache.hadoop.hbase.ServerName-">serverAdded</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName)</code>
<div class="block">The server has joined the cluster.</div>
</td>
</tr>
-<tr id="i90" class="altColor">
+<tr id="i86" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#serverRemoved-org.apache.hadoop.hbase.ServerName-">serverRemoved</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName)</code>
<div class="block">The server was removed from the cluster.</div>
</td>
</tr>
-<tr id="i91" class="rowColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#setFailoverCleanupDone-boolean-">setFailoverCleanupDone</a></span>(boolean b)</code>
-<div class="block">Used by ServerCrashProcedure tests verify the ability to suspend the
- execution of the ServerCrashProcedure.</div>
-</td>
-</tr>
-<tr id="i92" class="altColor">
+<tr id="i87" class="rowColor">
<td class="colFirst"><code>private void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#setMetaInitialized-org.apache.hadoop.hbase.client.RegionInfo-boolean-">setMetaInitialized</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> metaRegionInfo,
- boolean isInitialized)</code> </td>
-</tr>
-<tr id="i93" class="rowColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#setRegionNormalizer-org.apache.hadoop.hbase.master.normalizer.RegionNormalizer-">setRegionNormalizer</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/normalizer/RegionNormalizer.html" title="interface in org.apache.hadoop.hbase.master.normalizer">RegionNormalizer</a> normalizer)</code> </td>
-</tr>
-<tr id="i94" class="altColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#setRegionStateListener-org.apache.hadoop.hbase.RegionStateListener-">setRegionStateListener</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/RegionStateListener.html" title="interface in org.apache.hadoop.hbase">RegionStateListener</a> listener)</code> </td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#setMetaAssigned-org.apache.hadoop.hbase.client.RegionInfo-boolean-">setMetaAssigned</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> metaRegionInfo,
+ boolean assigned)</code> </td>
</tr>
-<tr id="i95" class="rowColor">
+<tr id="i88" class="altColor">
<td class="colFirst"><code>private boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#shouldAssignFavoredNodes-org.apache.hadoop.hbase.client.RegionInfo-">shouldAssignFavoredNodes</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> region)</code> </td>
</tr>
-<tr id="i96" class="altColor">
+<tr id="i89" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#start--">start</a></span>()</code> </td>
</tr>
-<tr id="i97" class="rowColor">
+<tr id="i90" class="altColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#startAssignmentThread--">startAssignmentThread</a></span>()</code> </td>
</tr>
-<tr id="i98" class="altColor">
+<tr id="i91" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#stop--">stop</a></span>()</code> </td>
</tr>
-<tr id="i99" class="rowColor">
+<tr id="i92" class="altColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#stopAssignmentThread--">stopAssignmentThread</a></span>()</code> </td>
</tr>
-<tr id="i100" class="altColor">
+<tr id="i93" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#submitServerCrash-org.apache.hadoop.hbase.ServerName-boolean-">submitServerCrash</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName,
boolean shouldSplitWal)</code> </td>
</tr>
-<tr id="i101" class="rowColor">
+<tr id="i94" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#unassign-org.apache.hadoop.hbase.client.RegionInfo-">unassign</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo)</code> </td>
</tr>
-<tr id="i102" class="altColor">
+<tr id="i95" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#unassign-org.apache.hadoop.hbase.client.RegionInfo-boolean-">unassign</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo,
boolean forceNewPlan)</code> </td>
</tr>
-<tr id="i103" class="rowColor">
+<tr id="i96" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#undoRegionAsClosing-org.apache.hadoop.hbase.master.assignment.RegionStates.RegionStateNode-">undoRegionAsClosing</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a> regionNode)</code> </td>
</tr>
-<tr id="i104" class="altColor">
+<tr id="i97" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#undoRegionAsOpening-org.apache.hadoop.hbase.master.assignment.RegionStates.RegionStateNode-">undoRegionAsOpening</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a> regionNode)</code> </td>
</tr>
-<tr id="i105" class="rowColor">
+<tr id="i98" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#unregisterListener-org.apache.hadoop.hbase.master.AssignmentListener-">unregisterListener</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/AssignmentListener.html" title="interface in org.apache.hadoop.hbase.master">AssignmentListener</a> listener)</code>
<div class="block">Remove the listener from the notification list.</div>
</td>
</tr>
-<tr id="i106" class="altColor">
+<tr id="i99" class="rowColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#updateRegionMergeTransition-org.apache.hadoop.hbase.ServerName-org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionStateTransition.TransitionCode-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.client.RegionInfo-">updateRegionMergeTransition</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName,
org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionStateTransition.TransitionCode state,
@@ -867,11 +822,11 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> hriA,
<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> hriB)</code> </td>
</tr>
-<tr id="i107" class="rowColor">
+<tr id="i100" class="altColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#updateRegionsInTransitionMetrics-org.apache.hadoop.hbase.master.assignment.AssignmentManager.RegionInTransitionStat-">updateRegionsInTransitionMetrics</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionStat.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignmentManager.RegionInTransitionStat</a> ritStat)</code> </td>
</tr>
-<tr id="i108" class="altColor">
+<tr id="i101" class="rowColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#updateRegionSplitTransition-org.apache.hadoop.hbase.ServerName-org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionStateTransition.TransitionCode-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.client.RegionInfo-">updateRegionSplitTransition</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName,
org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionStateTransition.TransitionCode state,
@@ -879,49 +834,49 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> hriA,
<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> hriB)</code> </td>
</tr>
-<tr id="i109" class="rowColor">
+<tr id="i102" class="altColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#updateRegionTransition-org.apache.hadoop.hbase.ServerName-org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionStateTransition.TransitionCode-org.apache.hadoop.hbase.client.RegionInfo-long-">updateRegionTransition</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName,
org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionStateTransition.TransitionCode state,
<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo,
long seqId)</code> </td>
</tr>
-<tr id="i110" class="altColor">
+<tr id="i103" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#waitForAssignment-org.apache.hadoop.hbase.client.RegionInfo-">waitForAssignment</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo)</code> </td>
</tr>
-<tr id="i111" class="rowColor">
+<tr id="i104" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#waitForAssignment-org.apache.hadoop.hbase.client.RegionInfo-long-">waitForAssignment</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo,
long timeout)</code> </td>
</tr>
-<tr id="i112" class="altColor">
-<td class="colFirst"><code>boolean</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#waitMetaInitialized-org.apache.hadoop.hbase.procedure2.Procedure-">waitMetaInitialized</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> proc)</code> </td>
-</tr>
-<tr id="i113" class="rowColor">
+<tr id="i105" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#waitMetaInitialized-org.apache.hadoop.hbase.procedure2.Procedure-org.apache.hadoop.hbase.client.RegionInfo-">waitMetaInitialized</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> proc,
- <a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo)</code> </td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#waitMetaAssigned-org.apache.hadoop.hbase.procedure2.Procedure-org.apache.hadoop.hbase.client.RegionInfo-">waitMetaAssigned</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> proc,
+ <a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo)</code>
+<div class="block">Notice that this event does not mean the AM has already finished region state rebuilding.</div>
+</td>
</tr>
-<tr id="i114" class="altColor">
+<tr id="i106" class="altColor">
<td class="colFirst"><code>boolean</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#waitMetaLoaded-org.apache.hadoop.hbase.procedure2.Procedure-">waitMetaLoaded</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> proc)</code> </td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#waitMetaLoaded-org.apache.hadoop.hbase.procedure2.Procedure-">waitMetaLoaded</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> proc)</code>
+<div class="block">Wait until AM finishes the meta loading, i.e, the region states rebuilding.</div>
+</td>
</tr>
-<tr id="i115" class="rowColor">
+<tr id="i107" class="rowColor">
<td class="colFirst"><code>private <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><<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/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a>></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#waitOnAssignQueue--">waitOnAssignQueue</a></span>()</code> </td>
</tr>
-<tr id="i116" class="altColor">
+<tr id="i108" class="altColor">
<td class="colFirst"><code>protected boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#waitServerReportEvent-org.apache.hadoop.hbase.ServerName-org.apache.hadoop.hbase.procedure2.Procedure-">waitServerReportEvent</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName,
- <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> proc)</code> </td>
+ <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> proc)</code> </td>
</tr>
-<tr id="i117" class="rowColor">
-<td class="colFirst"><code>protected void</code></td>
+<tr id="i109" class="rowColor">
+<td class="colFirst"><code>(package private) void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#wakeMetaLoadedEvent--">wakeMetaLoadedEvent</a></span>()</code> </td>
</tr>
-<tr id="i118" class="altColor">
+<tr id="i110" class="altColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#wakeServerReportEvent-org.apache.hadoop.hbase.master.assignment.RegionStates.ServerStateNode-">wakeServerReportEvent</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.ServerStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.ServerStateNode</a> serverNode)</code> </td>
</tr>
@@ -960,7 +915,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
<ul class="blockList">
<li class="blockList">
<h4>LOG</h4>
-<pre>private static final org.slf4j.Logger <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.113">LOG</a></pre>
+<pre>private static final org.slf4j.Logger <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.112">LOG</a></pre>
</li>
</ul>
<a name="BOOTSTRAP_THREAD_POOL_SIZE_CONF_KEY">
@@ -969,7 +924,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
<ul class="blockList">
<li class="blockList">
<h4>BOOTSTRAP_THREAD_POOL_SIZE_CONF_KEY</h4>
-<pre>public static final <a href="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/assignment/AssignmentManager.html#line.126">BOOTSTRAP_THREAD_POOL_SIZE_CONF_KEY</a></pre>
+<pre>public static final <a href="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/assignment/AssignmentManager.html#line.125">BOOTSTRAP_THREAD_POOL_SIZE_CONF_KEY</a></pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.master.assignment.AssignmentManager.BOOTSTRAP_THREAD_POOL_SIZE_CONF_KEY">Constant Field Values</a></dd>
@@ -982,7 +937,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
<ul class="blockList">
<li class="blockList">
<h4>ASSIGN_DISPATCH_WAIT_MSEC_CONF_KEY</h4>
-<pre>public static final <a href="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/assignment/AssignmentManager.html#line.129">ASSIGN_DISPATCH_WAIT_MSEC_CONF_KEY</a></pre>
+<pre>public static final <a href="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/assignment/AssignmentManager.html#line.128">ASSIGN_DISPATCH_WAIT_MSEC_CONF_KEY</a></pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.master.assignment.AssignmentManager.ASSIGN_DISPATCH_WAIT_MSEC_CONF_KEY">Constant Field Values</a></dd>
@@ -995,7 +950,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
<ul class="blockList">
<li class="blockList">
<h4>DEFAULT_ASSIGN_DISPATCH_WAIT_MSEC</h4>
-<pre>private static final int <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.131">DEFAULT_ASSIGN_DISPATCH_WAIT_MSEC</a></pre>
+<pre>private static final int <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.130">DEFAULT_ASSIGN_DISPATCH_WAIT_MSEC</a></pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.master.assignment.AssignmentManager.DEFAULT_ASSIGN_DISPATCH_WAIT_MSEC">Constant Field Values</a></dd>
@@ -1008,7 +963,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
<ul class="blockList">
<li class="blockList">
<h4>ASSIGN_DISPATCH_WAITQ_MAX_CONF_KEY</h4>
-<pre>public static final <a href="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/assignment/AssignmentManager.html#line.133">ASSIGN_DISPATCH_WAITQ_MAX_CONF_KEY</a></pre>
+<pre>public static final <a href="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/assignment/AssignmentManager.html#line.132">ASSIGN_DISPATCH_WAITQ_MAX_CONF_KEY</a></pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.master.assignment.AssignmentManager.ASSIGN_DISPATCH_WAITQ_MAX_CONF_KEY">Constant Field Values</a></dd>
@@ -1021,7 +976,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
<ul class="blockList">
<li class="blockList">
<h4>DEFAULT_ASSIGN_DISPATCH_WAITQ_MAX</h4>
-<pre>private static final int <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.135">DEFAULT_ASSIGN_DISPATCH_WAITQ_MAX</a></pre>
+<pre>private static final int <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.134">DEFAULT_ASSIGN_DISPATCH_WAITQ_MAX</a></pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.master.assignment.AssignmentManager.DEFAULT_ASSIGN_DISPATCH_WAITQ_MAX">Constant Field Values</a></dd>
@@ -1034,7 +989,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
<ul class="blockList">
<li class="blockList">
<h4>RIT_CHORE_INTERVAL_MSEC_CONF_KEY</h4>
-<pre>public static final <a href="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/assignment/AssignmentManager.html#line.137">RIT_CHORE_INTERVAL_MSEC_CONF_KEY</a></pre>
+<pre>public static final <a href="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/assignment/AssignmentManager.html#line.136">RIT_CHORE_INTERVAL_MSEC_CONF_KEY</a></pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.master.assignment.AssignmentManager.RIT_CHORE_INTERVAL_MSEC_CONF_KEY">Constant Field Values</a></dd>
@@ -1047,7 +1002,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
<ul class="blockList">
<li class="blockList">
<h4>DEFAULT_RIT_CHORE_INTERVAL_MSEC</h4>
-<pre>private static final int <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.139">DEFAULT_RIT_CHORE_INTERVAL_MSEC</a></pre>
+<pre>private static final int <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.138">DEFAULT_RIT_CHORE_INTERVAL_MSEC</a></pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.master.assignment.AssignmentManager.DEFAULT_RIT_CHORE_INTERVAL_MSEC">Constant Field Values</a></dd>
@@ -1060,7 +1015,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
<ul class="blockList">
<li class="blockList">
<h4>ASSIGN_MAX_ATTEMPTS</h4>
-<pre>public static final <a href="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/assignment/AssignmentManager.html#line.141">ASSIGN_MAX_ATTEMPTS</a></pre>
+<pre>public static final <a href="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/assignment/AssignmentManager.html#line.140">ASSIGN_MAX_ATTEMPTS</a></pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.master.assignment.AssignmentManager.ASSIGN_MAX_ATTEMPTS">Constant Field Values</a></dd>
@@ -1073,7 +1028,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
<ul class="blockList">
<li class="blockList">
<h4>DEFAULT_ASSIGN_MAX_ATTEMPTS</h4>
-<pre>private static final int <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.143">DEFAULT_ASSIGN_MAX_ATTEMPTS</a></pre>
+<pre>private static final int <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.142">DEFAULT_ASSIGN_MAX_ATTEMPTS</a></pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.master.assignment.AssignmentManager.DEFAULT_ASSIGN_MAX_ATTEMPTS">Constant Field Values</a></dd>
@@ -1086,7 +1041,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
<ul class="blockList">
<li class="blockList">
<h4>METRICS_RIT_STUCK_WARNING_THRESHOLD</h4>
-<pre>public static final <a href="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/assignment/AssignmentManager.html#line.146">METRICS_RIT_STUCK_WARNING_THRESHOLD</a></pre>
+<pre>public static final <a href="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/assignment/AssignmentManager.html#line.145">METRICS_RIT_STUCK_WARNING_THRESHOLD</a></pre>
<div class="block">Region in Transition metrics threshold time</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
@@ -1100,20 +1055,20 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
<ul class="blockList">
<li class="blockList">
<h4>DEFAULT_RIT_STUCK_WARNING_THRESHOLD</h4>
-<pre>private static final int <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.148">DEFAULT_RIT_STUCK_WARNING_THRESHOLD</a></pre>
+<pre>private static final int <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.147">DEFAULT_RIT_STUCK_WARNING_THRESHOLD</a></pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.master.assignment.AssignmentManager.DEFAULT_RIT_STUCK_WARNING_THRESHOLD">Constant Field Values</a></dd>
</dl>
</li>
</ul>
-<a name="metaInitializedEvent">
+<a name="metaAssignEvent">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
-<h4>metaInitializedEvent</h4>
-<pre>private final <a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureEvent.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureEvent</a><?> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.150">metaInitializedEvent</a></pre>
+<h4>metaAssignEvent</h4>
+<pre>private final <a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureEvent.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureEvent</a><?> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.149">metaAssignEvent</a></pre>
</li>
</ul>
<a name="metaLoadEvent">
@@ -1122,20 +1077,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
<ul class="blockList">
<li class="blockList">
<h4>metaLoadEvent</h4>
-<pre>private final <a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureEvent.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureEvent</a><?> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.151">metaLoadEvent</a></pre>
-</li>
-</ul>
-<a name="failoverCleanupDone">
-<!-- -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>failoverCleanupDone</h4>
-<pre>private final <a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureEvent.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureEvent</a><?> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.159">failoverCleanupDone</a></pre>
-<div class="block">Indicator that AssignmentManager has recovered the region states so
- that ServerCrashProcedure can be fully enabled and re-assign regions
- of dead servers. So that when re-assignment happens, AssignmentManager
- has proper region states.</div>
+<pre>private final <a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureEvent.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureEvent</a><?> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.150">m
<TRUNCATED>
[43/51] [partial] hbase-site git commit: Published site at
9101fc246f86445006bfbcdfda5cc495016dc280.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/class-use/ServerName.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/class-use/ServerName.html b/devapidocs/org/apache/hadoop/hbase/class-use/ServerName.html
index 97d7f19..844e600 100644
--- a/devapidocs/org/apache/hadoop/hbase/class-use/ServerName.html
+++ b/devapidocs/org/apache/hadoop/hbase/class-use/ServerName.html
@@ -3195,27 +3195,14 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
</tr>
<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><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>></code></td>
-<td class="colLast"><span class="typeNameLabel">ServerManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#queuedDeadServers">queuedDeadServers</a></span></code>
-<div class="block">Set of region servers which are dead but not processed immediately.</div>
-</td>
-</tr>
-<tr class="rowColor">
-<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><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>></code></td>
<td class="colLast"><span class="typeNameLabel">RegionServerTracker.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/RegionServerTracker.html#regionServers">regionServers</a></span></code> </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><<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>></code></td>
<td class="colLast"><span class="typeNameLabel">SnapshotOfRegionAssignmentFromMeta.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/SnapshotOfRegionAssignmentFromMeta.html#regionToRegionServerMap">regionToRegionServerMap</a></span></code>
<div class="block">the region to region server map</div>
</td>
</tr>
-<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><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>></code></td>
-<td class="colLast"><span class="typeNameLabel">ServerManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#requeuedDeadServers">requeuedDeadServers</a></span></code>
-<div class="block">Set of region servers which are dead and submitted to ServerShutdownHandler to process but not
- fully processed immediately.</div>
-</td>
-</tr>
<tr class="altColor">
<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><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>,org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.AdminService.BlockingInterface></code></td>
<td class="colLast"><span class="typeNameLabel">ServerManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#rsAdmins">rsAdmins</a></span></code>
@@ -3335,29 +3322,34 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
<td class="colLast"><span class="typeNameLabel">HMaster.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getBackupMasters--">getBackupMasters</a></span>()</code> </td>
</tr>
<tr class="altColor">
-<td class="colFirst"><code>(package 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><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>></code></td>
-<td class="colLast"><span class="typeNameLabel">ServerManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#getDeadNotExpiredServers--">getDeadNotExpiredServers</a></span>()</code> </td>
-</tr>
-<tr class="rowColor">
<td class="colFirst"><code>protected <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><<a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</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>>></code></td>
<td class="colLast"><span class="typeNameLabel">ClusterStatusPublisher.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ClusterStatusPublisher.html#getDeadServers-long-">getDeadServers</a></span>(long since)</code>
<div class="block">Get the servers which died since a given timestamp.</div>
</td>
</tr>
-<tr class="altColor">
+<tr 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><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>></code></td>
<td class="colLast"><span class="typeNameLabel">ServerManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#getDrainingServersList--">getDrainingServersList</a></span>()</code> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code><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><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>></code></td>
<td class="colLast"><span class="typeNameLabel">MasterWalManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterWalManager.html#getFailedServersFromLogFolders--">getFailedServersFromLogFolders</a></span>()</code>
-<div class="block">Inspect the log directory to find dead servers which need recovery work</div>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span>
+<div class="block"><span class="deprecationComment">With proc-v2, we can record the crash server with procedure store, so do not need
+ to scan the wal directory to find out the splitting wal directory any more. Leave
+ it here only because <code>RecoverMetaProcedure</code>(which is also deprecated) uses
+ it.</span></div>
+</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/util/List.html?is-external=true" title="class or interface in java.util">List</a><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>></code></td>
<td class="colLast"><span class="typeNameLabel">RegionPlacementMaintainer.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/RegionPlacementMaintainer.html#getFavoredNodeList-java.lang.String-">getFavoredNodeList</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> favoredNodesStr)</code> </td>
</tr>
+<tr class="altColor">
+<td class="colFirst"><code><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><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>></code></td>
+<td class="colLast"><span class="typeNameLabel">MasterWalManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterWalManager.html#getLiveServersFromWALDir--">getLiveServersFromWALDir</a></span>()</code> </td>
+</tr>
<tr 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><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>,<a href="../../../../../org/apache/hadoop/hbase/ServerMetrics.html" title="interface in org.apache.hadoop.hbase">ServerMetrics</a>></code></td>
<td class="colLast"><span class="typeNameLabel">ServerManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#getOnlineServers--">getOnlineServers</a></span>()</code> </td>
@@ -3518,7 +3510,9 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
-<td class="colLast"><span class="typeNameLabel">ServerManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#expireServer-org.apache.hadoop.hbase.ServerName-">expireServer</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName)</code> </td>
+<td class="colLast"><span class="typeNameLabel">ServerManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#expireServer-org.apache.hadoop.hbase.ServerName-">expireServer</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName)</code>
+<div class="block">Expire the passed server.</div>
+</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a></code></td>
@@ -3683,93 +3677,88 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
-<td class="colLast"><span class="typeNameLabel">ServerManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#processDeadServer-org.apache.hadoop.hbase.ServerName-boolean-">processDeadServer</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName,
- boolean shouldSplitWal)</code> </td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>void</code></td>
<td class="colLast"><span class="typeNameLabel">HMaster.</span><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> 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><byte[]> encodedRegionNames)</code>
<div class="block">Remove decommission marker (previously called 'draining') from a region server to allow regions
assignments.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>(package private) void</code></td>
<td class="colLast"><span class="typeNameLabel">ServerManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#recordNewServerWithLock-org.apache.hadoop.hbase.ServerName-org.apache.hadoop.hbase.ServerMetrics-">recordNewServerWithLock</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName,
<a href="../../../../../org/apache/hadoop/hbase/ServerMetrics.html" title="interface in org.apache.hadoop.hbase">ServerMetrics</a> sl)</code>
<div class="block">Adds the onlineServers list.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><span class="typeNameLabel">LoadBalancer.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/LoadBalancer.html#regionOnline-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.ServerName-">regionOnline</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo,
<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> sn)</code>
<div class="block">Marks the region as online at balancer.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><span class="typeNameLabel">AssignmentListener.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/AssignmentListener.html#regionOpened-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.ServerName-">regionOpened</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo,
<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName)</code>
<div class="block">The region was opened on the specified server.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><span class="typeNameLabel">ServerManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#regionServerReport-org.apache.hadoop.hbase.ServerName-org.apache.hadoop.hbase.ServerMetrics-">regionServerReport</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> sn,
<a href="../../../../../org/apache/hadoop/hbase/ServerMetrics.html" title="interface in org.apache.hadoop.hbase">ServerMetrics</a> sl)</code> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><span class="typeNameLabel">DrainingServerTracker.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/DrainingServerTracker.html#remove-org.apache.hadoop.hbase.ServerName-">remove</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> sn)</code> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><span class="typeNameLabel">DeadServer.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/DeadServer.html#removeDeadServer-org.apache.hadoop.hbase.ServerName-">removeDeadServer</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> deadServerName)</code>
<div class="block">remove the specified dead server</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><span class="typeNameLabel">ServerManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#removeServerFromDrainList-org.apache.hadoop.hbase.ServerName-">removeServerFromDrainList</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> sn)</code> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><span class="typeNameLabel">ServerManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#sendRegionWarmup-org.apache.hadoop.hbase.ServerName-org.apache.hadoop.hbase.client.RegionInfo-">sendRegionWarmup</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> server,
<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> region)</code>
<div class="block">Sends a WARMUP RPC to the specified server to warmup the specified region.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>default void</code></td>
<td class="colLast"><span class="typeNameLabel">ServerListener.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerListener.html#serverAdded-org.apache.hadoop.hbase.ServerName-">serverAdded</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName)</code>
<div class="block">The server has joined the cluster.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>default void</code></td>
<td class="colLast"><span class="typeNameLabel">ServerListener.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerListener.html#serverRemoved-org.apache.hadoop.hbase.ServerName-">serverRemoved</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName)</code>
<div class="block">The server was removed from the cluster.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><span class="typeNameLabel">RegionPlan.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/RegionPlan.html#setDestination-org.apache.hadoop.hbase.ServerName-">setDestination</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> dest)</code>
<div class="block">Set the destination server for the plan for this region.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><span class="typeNameLabel">MasterWalManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterWalManager.html#splitLog-org.apache.hadoop.hbase.ServerName-">splitLog</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName)</code> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><span class="typeNameLabel">MasterWalManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterWalManager.html#splitMetaLog-org.apache.hadoop.hbase.ServerName-">splitMetaLog</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName)</code>
<div class="block">Specialized method to handle the splitting for meta WAL</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><span class="typeNameLabel">ServerManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#updateLastFlushedSequenceIds-org.apache.hadoop.hbase.ServerName-org.apache.hadoop.hbase.ServerMetrics-">updateLastFlushedSequenceIds</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> sn,
<a href="../../../../../org/apache/hadoop/hbase/ServerMetrics.html" title="interface in org.apache.hadoop.hbase">ServerMetrics</a> hsl)</code>
@@ -3813,6 +3802,22 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
</td>
</tr>
<tr class="altColor">
+<td class="colFirst"><code>(package private) void</code></td>
+<td class="colLast"><span class="typeNameLabel">ServerManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#findOutDeadServersAndProcess-java.util.Set-java.util.Set-">findOutDeadServersAndProcess</a></span>(<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><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>> deadServersFromPE,
+ <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><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>> liveServersFromWALDir)</code>
+<div class="block">Find out the region servers crashed between the crash of the previous master instance and the
+ current master instance and schedule SCP for them.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>(package private) void</code></td>
+<td class="colLast"><span class="typeNameLabel">ServerManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#findOutDeadServersAndProcess-java.util.Set-java.util.Set-">findOutDeadServersAndProcess</a></span>(<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><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>> deadServersFromPE,
+ <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><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>> liveServersFromWALDir)</code>
+<div class="block">Find out the region servers crashed between the crash of the previous master instance and the
+ current master instance and schedule SCP for them.</div>
+</td>
+</tr>
+<tr 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><org.apache.hadoop.fs.Path></code></td>
<td class="colLast"><span class="typeNameLabel">MasterWalManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterWalManager.html#getLogDirs-java.util.Set-">getLogDirs</a></span>(<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><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>> serverNames)</code> </td>
</tr>
@@ -3863,51 +3868,44 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
</td>
</tr>
<tr class="altColor">
-<td class="colFirst"><code>(package private) void</code></td>
-<td class="colLast"><span class="typeNameLabel">ServerManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#removeDeadNotExpiredServers-java.util.List-">removeDeadNotExpiredServers</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><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>> servers)</code>
-<div class="block">Loop through the deadNotExpired server list and remove them from the
- servers.</div>
-</td>
-</tr>
-<tr 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><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</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><<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>>></code></td>
<td class="colLast"><span class="typeNameLabel">LoadBalancer.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/LoadBalancer.html#retainAssignment-java.util.Map-java.util.List-">retainAssignment</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><<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>> regions,
<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><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>> servers)</code>
<div class="block">Assign regions to the previously hosting region server</div>
</td>
</tr>
-<tr class="altColor">
+<tr 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><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</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><<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>>></code></td>
<td class="colLast"><span class="typeNameLabel">LoadBalancer.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/LoadBalancer.html#retainAssignment-java.util.Map-java.util.List-">retainAssignment</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><<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>> regions,
<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><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>> servers)</code>
<div class="block">Assign regions to the previously hosting region server</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<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><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</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><<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>>></code></td>
<td class="colLast"><span class="typeNameLabel">LoadBalancer.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/LoadBalancer.html#roundRobinAssignment-java.util.List-java.util.List-">roundRobinAssignment</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><<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>> regions,
<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><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>> servers)</code>
<div class="block">Perform a Round Robin assignment of regions.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><span class="typeNameLabel">LoadBalancer.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/LoadBalancer.html#setClusterLoad-java.util.Map-">setClusterLoad</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><<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>,<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><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</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><<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.ha
doop.hbase.client">RegionInfo</a>>>> ClusterLoad)</code>
<div class="block">Pass RegionStates and allow balancer to set the current cluster load.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><span class="typeNameLabel">MasterWalManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterWalManager.html#splitLog-java.util.Set-">splitLog</a></span>(<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><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>> serverNames)</code> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><span class="typeNameLabel">MasterWalManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterWalManager.html#splitLog-java.util.Set-org.apache.hadoop.fs.PathFilter-">splitLog</a></span>(<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><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>> serverNames,
org.apache.hadoop.fs.PathFilter filter)</code>
<div class="block">This method is the base split method that splits WAL files matching a filter.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>long</code></td>
<td class="colLast"><span class="typeNameLabel">SplitLogManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/SplitLogManager.html#splitLogDistributed-java.util.Set-java.util.List-org.apache.hadoop.fs.PathFilter-">splitLogDistributed</a></span>(<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><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>> serverNames,
<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><org.apache.hadoop.fs.Path> logDirs,
@@ -3917,12 +3915,26 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
server.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><span class="typeNameLabel">MasterWalManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterWalManager.html#splitMetaLog-java.util.Set-">splitMetaLog</a></span>(<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><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>> serverNames)</code>
<div class="block">Specialized method to handle the splitting for meta WAL</div>
</td>
</tr>
+<tr class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><span class="typeNameLabel">RegionServerTracker.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/RegionServerTracker.html#start-java.util.Set-java.util.Set-">start</a></span>(<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><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>> deadServersFromPE,
+ <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><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>> liveServersFromWALDir)</code>
+<div class="block">Starts the tracking of online RegionServers.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><span class="typeNameLabel">RegionServerTracker.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/RegionServerTracker.html#start-java.util.Set-java.util.Set-">start</a></span>(<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><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>> deadServersFromPE,
+ <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><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>> liveServersFromWALDir)</code>
+<div class="block">Starts the tracking of online RegionServers.</div>
+</td>
+</tr>
</tbody>
</table>
<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing constructors, and an explanation">
@@ -4237,22 +4249,18 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName)</code> </td>
</tr>
<tr class="altColor">
-<td class="colFirst"><code>private void</code></td>
-<td class="colLast"><span class="typeNameLabel">AssignmentManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#killRegionServer-org.apache.hadoop.hbase.ServerName-">killRegionServer</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName)</code> </td>
-</tr>
-<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><span class="typeNameLabel">RegionStates.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.html#logSplit-org.apache.hadoop.hbase.ServerName-">logSplit</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName)</code>
<div class="block">Called after we've split all logs on a crashed Server.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><span class="typeNameLabel">RegionStates.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.html#logSplitting-org.apache.hadoop.hbase.ServerName-">logSplitting</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName)</code>
<div class="block">Call this when we start log splitting for a crashed Server.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><span class="typeNameLabel">AssignmentManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#markRegionAsMerged-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.ServerName-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.client.RegionInfo-">markRegionAsMerged</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> child,
<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName,
@@ -4261,125 +4269,126 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
<div class="block">When called here, the merge has happened.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><span class="typeNameLabel">AssignmentManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#markRegionAsSplit-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.ServerName-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.client.RegionInfo-">markRegionAsSplit</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> parent,
<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName,
<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> daughterA,
<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> daughterB)</code> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><span class="typeNameLabel">RegionStateStore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#mergeRegions-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.ServerName-">mergeRegions</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> child,
<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> hriA,
<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> hriB,
<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName)</code> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><span class="typeNameLabel">RegionStates.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.html#metaLogSplit-org.apache.hadoop.hbase.ServerName-">metaLogSplit</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName)</code>
<div class="block">Called after we've split the meta logs on a crashed Server.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><span class="typeNameLabel">RegionStates.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.html#metaLogSplitting-org.apache.hadoop.hbase.ServerName-">metaLogSplitting</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName)</code>
<div class="block">Call this when we start meta log splitting a crashed Server.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><span class="typeNameLabel">AssignmentManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#onlineRegion-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.ServerName-">onlineRegion</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo,
<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName)</code> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/procedure2/RemoteProcedureDispatcher.RemoteOperation.html" title="class in org.apache.hadoop.hbase.procedure2">RemoteProcedureDispatcher.RemoteOperation</a></code></td>
<td class="colLast"><span class="typeNameLabel">UnassignProcedure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/assignment/UnassignProcedure.html#remoteCallBuild-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.ServerName-">remoteCallBuild</a></span>(<a href="../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName)</code> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/procedure2/RemoteProcedureDispatcher.RemoteOperation.html" title="class in org.apache.hadoop.hbase.procedure2">RemoteProcedureDispatcher.RemoteOperation</a></code></td>
<td class="colLast"><span class="typeNameLabel">AssignProcedure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#remoteCallBuild-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.ServerName-">remoteCallBuild</a></span>(<a href="../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName)</code> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>abstract <a href="../../../../../org/apache/hadoop/hbase/procedure2/RemoteProcedureDispatcher.RemoteOperation.html" title="class in org.apache.hadoop.hbase.procedure2">RemoteProcedureDispatcher.RemoteOperation</a></code></td>
<td class="colLast"><span class="typeNameLabel">RegionTransitionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#remoteCallBuild-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.ServerName-">remoteCallBuild</a></span>(<a href="../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName)</code> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><span class="typeNameLabel">RegionTransitionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#remoteCallFailed-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.ServerName-java.io.IOException-">remoteCallFailed</a></span>(<a href="../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName,
<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> exception)</code> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.ServerStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.ServerStateNode</a></code></td>
<td class="colLast"><span class="typeNameLabel">RegionStates.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.html#removeRegionFromServer-org.apache.hadoop.hbase.ServerName-org.apache.hadoop.hbase.master.assignment.RegionStates.RegionStateNode-">removeRegionFromServer</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName,
<a href="../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a> regionNode)</code> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><span class="typeNameLabel">RegionStates.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.html#removeServer-org.apache.hadoop.hbase.ServerName-">removeServer</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName)</code> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><span class="typeNameLabel">AssignmentManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#reportOnlineRegions-org.apache.hadoop.hbase.ServerName-java.util.Set-">reportOnlineRegions</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName,
<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><byte[]> regionNames)</code>
<div class="block">the master will call this method when the RS send the regionServerReport().</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><span class="typeNameLabel">RegionTransitionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#reportTransition-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.ServerName-org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionStateTransition.TransitionCode-long-">reportTransition</a></span>(<a href="../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName,
org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionStateTransition.TransitionCode code,
long seqId)</code> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><span class="typeNameLabel">AssignmentManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#sendRegionOpenedNotification-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.ServerName-">sendRegionOpenedNotification</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo,
<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName)</code> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><span class="typeNameLabel">AssignmentManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#serverAdded-org.apache.hadoop.hbase.ServerName-">serverAdded</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName)</code> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><span class="typeNameLabel">AssignmentManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#serverRemoved-org.apache.hadoop.hbase.ServerName-">serverRemoved</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName)</code> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><span class="typeNameLabel">RegionStates.RegionStateNode.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html#setLastHost-org.apache.hadoop.hbase.ServerName-">setLastHost</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName)</code> </td>
</tr>
-<tr class="rowColor">
+<tr 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"><span class="typeNameLabel">RegionStates.RegionStateNode.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html#setRegionLocation-org.apache.hadoop.hbase.ServerName-">setRegionLocation</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName)</code> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><span class="typeNameLabel">RegionStates.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.html#setServerState-org.apache.hadoop.hbase.ServerName-org.apache.hadoop.hbase.master.assignment.RegionStates.ServerState-">setServerState</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName,
<a href="../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.ServerState.html" title="enum in org.apache.hadoop.hbase.master.assignment">RegionStates.ServerState</a> state)</code> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><span class="typeNameLabel">RegionStateStore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#splitRegion-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.ServerName-">splitRegion</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> parent,
<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> hriA,
<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> hriB,
<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName)</code> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><span class="typeNameLabel">AssignmentManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#submitServerCrash-org.apache.hadoop.hbase.ServerName-boolean-">submitServerCrash</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName,
boolean shouldSplitWal)</code> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>private void</code></td>
-<td class="colLast"><span class="typeNameLabel">RegionStateStore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#updateMetaLocation-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.ServerName-">updateMetaLocation</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo,
- <a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName)</code> </td>
+<td class="colLast"><span class="typeNameLabel">RegionStateStore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#updateMetaLocation-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.ServerName-org.apache.hadoop.hbase.master.RegionState.State-">updateMetaLocation</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo,
+ <a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName,
+ <a href="../../../../../org/apache/hadoop/hbase/master/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master">RegionState.State</a> state)</code> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><span class="typeNameLabel">AssignmentManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#updateRegionMergeTransition-org.apache.hadoop.hbase.ServerName-org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionStateTransition.TransitionCode-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.client.RegionInfo-">updateRegionMergeTransition</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName,
org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionStateTransition.TransitionCode state,
@@ -4387,7 +4396,7 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> hriA,
<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> hriB)</code> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><span class="typeNameLabel">AssignmentManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#updateRegionSplitTransition-org.apache.hadoop.hbase.ServerName-org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionStateTransition.TransitionCode-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.client.RegionInfo-">updateRegionSplitTransition</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName,
org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionStateTransition.TransitionCode state,
@@ -4395,14 +4404,14 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> hriA,
<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> hriB)</code> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><span class="typeNameLabel">AssignmentManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#updateRegionTransition-org.apache.hadoop.hbase.ServerName-org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionStateTransition.TransitionCode-org.apache.hadoop.hbase.client.RegionInfo-long-">updateRegionTransition</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName,
org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionStateTransition.TransitionCode state,
<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo,
long seqId)</code> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><span class="typeNameLabel">RegionStateStore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#updateUserRegionLocation-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.master.RegionState.State-org.apache.hadoop.hbase.ServerName-org.apache.hadoop.hbase.ServerName-long-long-">updateUserRegionLocation</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo,
<a href="../../../../../org/apache/hadoop/hbase/master/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master">RegionState.State</a> state,
@@ -4411,7 +4420,7 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
long openSeqNum,
long pid)</code> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><span class="typeNameLabel">RegionStateStore.RegionStateVisitor.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/assignment/RegionStateStore.RegionStateVisitor.html#visitRegionState-org.apache.hadoop.hbase.client.Result-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.master.RegionState.State-org.apache.hadoop.hbase.ServerName-org.apache.hadoop.hbase.ServerName-long-">visitRegionState</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a> result,
<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo,
@@ -4420,10 +4429,10 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> lastHost,
long openSeqNum)</code> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>protected boolean</code></td>
<td class="colLast"><span class="typeNameLabel">AssignmentManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#waitServerReportEvent-org.apache.hadoop.hbase.ServerName-org.apache.hadoop.hbase.procedure2.Procedure-">waitServerReportEvent</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName,
- <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> proc)</code> </td>
+ <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> proc)</code> </td>
</tr>
</tbody>
</table>
@@ -5026,7 +5035,9 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a></code></td>
-<td class="colLast"><span class="typeNameLabel">RecoverMetaProcedure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#failedMetaServer">failedMetaServer</a></span></code> </td>
+<td class="colLast"><span class="typeNameLabel">RecoverMetaProcedure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#failedMetaServer">failedMetaServer</a></span></code>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
+ </td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a></code></td>
@@ -5133,6 +5144,7 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
<td class="colLast"><span class="typeNameLabel">RecoverMetaProcedure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#handleRIT-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.ServerName-">handleRIT</a></span>(<a href="../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> ri,
<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> crashedServerName)</code>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
<div class="block">Is the region stuck assigning to this failedMetaServer? If so, cancel the call
just as we do over in ServerCrashProcedure#handleRIT except less to do here; less context
to carry.</div>
@@ -5223,6 +5235,7 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
<tr class="altColor">
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#RecoverMetaProcedure-org.apache.hadoop.hbase.ServerName-boolean-">RecoverMetaProcedure</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> failedMetaServer,
boolean shouldSplitLog)</code>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
<div class="block">Call this constructor to queue up a <a href="../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>RecoverMetaProcedure</code></a> in response to meta
carrying server crash</div>
</td>
@@ -5231,6 +5244,7 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#RecoverMetaProcedure-org.apache.hadoop.hbase.ServerName-boolean-org.apache.hadoop.hbase.master.procedure.ProcedurePrepareLatch-">RecoverMetaProcedure</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> failedMetaServer,
boolean shouldSplitLog,
<a href="../../../../../org/apache/hadoop/hbase/master/procedure/ProcedurePrepareLatch.html" title="class in org.apache.hadoop.hbase.master.procedure">ProcedurePrepareLatch</a> latch)</code>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
<div class="block">Constructor with latch, for blocking/ sync usage</div>
</td>
</tr>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/class-use/TableName.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/class-use/TableName.html b/devapidocs/org/apache/hadoop/hbase/class-use/TableName.html
index 6458f7c..5bca787 100644
--- a/devapidocs/org/apache/hadoop/hbase/class-use/TableName.html
+++ b/devapidocs/org/apache/hadoop/hbase/class-use/TableName.html
@@ -7333,9 +7333,13 @@ service.</div>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a></code></td>
-<td class="colLast"><span class="typeNameLabel">ReopenTableRegionsProcedure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/ReopenTableRegionsProcedure.html#getTableName--">getTableName</a></span>()</code> </td>
+<td class="colLast"><span class="typeNameLabel">InitMetaProcedure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html#getTableName--">getTableName</a></span>()</code> </td>
</tr>
<tr class="rowColor">
+<td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a></code></td>
+<td class="colLast"><span class="typeNameLabel">ReopenTableRegionsProcedure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/ReopenTableRegionsProcedure.html#getTableName--">getTableName</a></span>()</code> </td>
+</tr>
+<tr class="altColor">
<td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a></code></td>
<td class="colLast"><span class="typeNameLabel">MasterProcedureScheduler.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#getTableName-org.apache.hadoop.hbase.procedure2.Procedure-">getTableName</a></span>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> proc)</code> </td>
</tr>
@@ -7475,7 +7479,7 @@ service.</div>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
-<td class="colLast"><span class="typeNameLabel">MasterProcedureScheduler.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#waitRegions-org.apache.hadoop.hbase.procedure2.Procedure-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.client.RegionInfo...-">waitRegions</a></span>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> procedure,
+<td class="colLast"><span class="typeNameLabel">MasterProcedureScheduler.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#waitRegions-org.apache.hadoop.hbase.procedure2.Procedure-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.client.RegionInfo...-">waitRegions</a></span>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> procedure,
<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> table,
<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>... regionInfo)</code>
<div class="block">Suspend the procedure if the specified set of regions are already locked.</div>
@@ -7483,7 +7487,7 @@ service.</div>
</tr>
<tr class="altColor">
<td class="colFirst"><code>boolean</code></td>
-<td class="colLast"><span class="typeNameLabel">MasterProcedureScheduler.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#waitTableExclusiveLock-org.apache.hadoop.hbase.procedure2.Procedure-org.apache.hadoop.hbase.TableName-">waitTableExclusiveLock</a></span>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> procedure,
+<td class="colLast"><span class="typeNameLabel">MasterProcedureScheduler.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#waitTableExclusiveLock-org.apache.hadoop.hbase.procedure2.Procedure-org.apache.hadoop.hbase.TableName-">waitTableExclusiveLock</a></span>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> procedure,
<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> table)</code>
<div class="block">Suspend the procedure if the specified table is already locked.</div>
</td>
@@ -7495,14 +7499,14 @@ service.</div>
</tr>
<tr class="altColor">
<td class="colFirst"><code>boolean</code></td>
-<td class="colLast"><span class="typeNameLabel">MasterProcedureScheduler.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#waitTableSharedLock-org.apache.hadoop.hbase.procedure2.Procedure-org.apache.hadoop.hbase.TableName-">waitTableSharedLock</a></span>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> procedure,
+<td class="colLast"><span class="typeNameLabel">MasterProcedureScheduler.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#waitTableSharedLock-org.apache.hadoop.hbase.procedure2.Procedure-org.apache.hadoop.hbase.TableName-">waitTableSharedLock</a></span>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> procedure,
<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> table)</code>
<div class="block">Suspend the procedure if the specified table is already locked.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
-<td class="colLast"><span class="typeNameLabel">MasterProcedureScheduler.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#wakeRegions-org.apache.hadoop.hbase.procedure2.Procedure-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.client.RegionInfo...-">wakeRegions</a></span>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> procedure,
+<td class="colLast"><span class="typeNameLabel">MasterProcedureScheduler.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#wakeRegions-org.apache.hadoop.hbase.procedure2.Procedure-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.client.RegionInfo...-">wakeRegions</a></span>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> procedure,
<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> table,
<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>... regionInfo)</code>
<div class="block">Wake the procedures waiting for the specified regions</div>
@@ -7510,14 +7514,14 @@ service.</div>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
-<td class="colLast"><span class="typeNameLabel">MasterProcedureScheduler.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#wakeTableExclusiveLock-org.apache.hadoop.hbase.procedure2.Procedure-org.apache.hadoop.hbase.TableName-">wakeTableExclusiveLock</a></span>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> procedure,
+<td class="colLast"><span class="typeNameLabel">MasterProcedureScheduler.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#wakeTableExclusiveLock-org.apache.hadoop.hbase.procedure2.Procedure-org.apache.hadoop.hbase.TableName-">wakeTableExclusiveLock</a></span>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> procedure,
<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> table)</code>
<div class="block">Wake the procedures waiting for the specified table</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
-<td class="colLast"><span class="typeNameLabel">MasterProcedureScheduler.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#wakeTableSharedLock-org.apache.hadoop.hbase.procedure2.Procedure-org.apache.hadoop.hbase.TableName-">wakeTableSharedLock</a></span>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> procedure,
+<td class="colLast"><span class="typeNameLabel">MasterProcedureScheduler.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#wakeTableSharedLock-org.apache.hadoop.hbase.procedure2.Procedure-org.apache.hadoop.hbase.TableName-">wakeTableSharedLock</a></span>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> procedure,
<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> table)</code>
<div class="block">Wake the procedures waiting for the specified table</div>
</td>
[06/51] [partial] hbase-site git commit: Published site at
9101fc246f86445006bfbcdfda5cc495016dc280.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/src-html/org/apache/hadoop/hbase/master/ServerManager.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/ServerManager.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/ServerManager.html
index 6b9e2a8..ba6e4aa 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/ServerManager.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/ServerManager.html
@@ -33,1047 +33,1151 @@
<span class="sourceLineNo">025</span>import java.util.ArrayList;<a name="line.25"></a>
<span class="sourceLineNo">026</span>import java.util.Collections;<a name="line.26"></a>
<span class="sourceLineNo">027</span>import java.util.HashMap;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import java.util.HashSet;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import java.util.Iterator;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import java.util.List;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import java.util.Map;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import java.util.Map.Entry;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import java.util.Set;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import java.util.concurrent.ConcurrentHashMap;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import java.util.concurrent.ConcurrentNavigableMap;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import java.util.concurrent.ConcurrentSkipListMap;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import java.util.concurrent.CopyOnWriteArrayList;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import java.util.function.Predicate;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.conf.Configuration;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.ClockOutOfSyncException;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.HConstants;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.NotServingRegionException;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.RegionMetrics;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.ServerMetrics;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.ServerMetricsBuilder;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.ServerName;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.YouAreDeadException;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.client.ClusterConnection;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.client.RetriesExhaustedException;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.ipc.HBaseRpcController;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.ipc.RpcControllerFactory;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.regionserver.HRegionServer;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.zookeeper.KeeperException;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.slf4j.Logger;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.slf4j.LoggerFactory;<a name="line.62"></a>
-<span class="sourceLineNo">063</span><a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hbase.thirdparty.com.google.protobuf.UnsafeByteOperations;<a name="line.65"></a>
-<span class="sourceLineNo">066</span><a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.AdminService;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ClusterStatusProtos.RegionStoreSequenceIds;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ClusterStatusProtos.StoreSequenceId;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionServerStartupRequest;<a name="line.71"></a>
+<span class="sourceLineNo">028</span>import java.util.Iterator;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import java.util.List;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import java.util.Map;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import java.util.Map.Entry;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import java.util.Set;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import java.util.concurrent.ConcurrentNavigableMap;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import java.util.concurrent.ConcurrentSkipListMap;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import java.util.concurrent.CopyOnWriteArrayList;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import java.util.function.Predicate;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.conf.Configuration;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.fs.FSDataInputStream;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.fs.FSDataOutputStream;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.fs.FileSystem;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.fs.Path;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.ClockOutOfSyncException;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.HConstants;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.NotServingRegionException;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.RegionMetrics;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.ScheduledChore;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.ServerMetrics;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.ServerMetricsBuilder;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.ServerName;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.YouAreDeadException;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.client.ClusterConnection;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.client.RetriesExhaustedException;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.ipc.HBaseRpcController;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.ipc.RpcControllerFactory;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.master.assignment.RegionStates;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.regionserver.HRegionServer;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.zookeeper.KeeperException;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.slf4j.Logger;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.slf4j.LoggerFactory;<a name="line.67"></a>
+<span class="sourceLineNo">068</span><a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hbase.thirdparty.com.google.protobuf.ByteString;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hbase.thirdparty.com.google.protobuf.UnsafeByteOperations;<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> * The ServerManager class manages info about region servers.<a name="line.74"></a>
-<span class="sourceLineNo">075</span> * <p><a name="line.75"></a>
-<span class="sourceLineNo">076</span> * Maintains lists of online and dead servers. Processes the startups,<a name="line.76"></a>
-<span class="sourceLineNo">077</span> * shutdowns, and deaths of region servers.<a name="line.77"></a>
-<span class="sourceLineNo">078</span> * <p><a name="line.78"></a>
-<span class="sourceLineNo">079</span> * Servers are distinguished in two different ways. A given server has a<a name="line.79"></a>
-<span class="sourceLineNo">080</span> * location, specified by hostname and port, and of which there can only be one<a name="line.80"></a>
-<span class="sourceLineNo">081</span> * online at any given time. A server instance is specified by the location<a name="line.81"></a>
-<span class="sourceLineNo">082</span> * (hostname and port) as well as the startcode (timestamp from when the server<a name="line.82"></a>
-<span class="sourceLineNo">083</span> * was started). This is used to differentiate a restarted instance of a given<a name="line.83"></a>
-<span class="sourceLineNo">084</span> * server from the original instance.<a name="line.84"></a>
-<span class="sourceLineNo">085</span> * <p><a name="line.85"></a>
-<span class="sourceLineNo">086</span> * If a sever is known not to be running any more, it is called dead. The dead<a name="line.86"></a>
-<span class="sourceLineNo">087</span> * server needs to be handled by a ServerShutdownHandler. If the handler is not<a name="line.87"></a>
-<span class="sourceLineNo">088</span> * enabled yet, the server can't be handled right away so it is queued up.<a name="line.88"></a>
-<span class="sourceLineNo">089</span> * After the handler is enabled, the server will be submitted to a handler to handle.<a name="line.89"></a>
-<span class="sourceLineNo">090</span> * However, the handler may be just partially enabled. If so,<a name="line.90"></a>
-<span class="sourceLineNo">091</span> * the server cannot be fully processed, and be queued up for further processing.<a name="line.91"></a>
-<span class="sourceLineNo">092</span> * A server is fully processed only after the handler is fully enabled<a name="line.92"></a>
-<span class="sourceLineNo">093</span> * and has completed the handling.<a name="line.93"></a>
-<span class="sourceLineNo">094</span> */<a name="line.94"></a>
-<span class="sourceLineNo">095</span>@InterfaceAudience.Private<a name="line.95"></a>
-<span class="sourceLineNo">096</span>public class ServerManager {<a name="line.96"></a>
-<span class="sourceLineNo">097</span> public static final String WAIT_ON_REGIONSERVERS_MAXTOSTART =<a name="line.97"></a>
-<span class="sourceLineNo">098</span> "hbase.master.wait.on.regionservers.maxtostart";<a name="line.98"></a>
-<span class="sourceLineNo">099</span><a name="line.99"></a>
-<span class="sourceLineNo">100</span> public static final String WAIT_ON_REGIONSERVERS_MINTOSTART =<a name="line.100"></a>
-<span class="sourceLineNo">101</span> "hbase.master.wait.on.regionservers.mintostart";<a name="line.101"></a>
-<span class="sourceLineNo">102</span><a name="line.102"></a>
-<span class="sourceLineNo">103</span> public static final String WAIT_ON_REGIONSERVERS_TIMEOUT =<a name="line.103"></a>
-<span class="sourceLineNo">104</span> "hbase.master.wait.on.regionservers.timeout";<a name="line.104"></a>
-<span class="sourceLineNo">105</span><a name="line.105"></a>
-<span class="sourceLineNo">106</span> public static final String WAIT_ON_REGIONSERVERS_INTERVAL =<a name="line.106"></a>
-<span class="sourceLineNo">107</span> "hbase.master.wait.on.regionservers.interval";<a name="line.107"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.AdminService;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ClusterStatusProtos.RegionStoreSequenceIds;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ClusterStatusProtos.StoreSequenceId;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.FlushedRegionSequenceId;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.FlushedSequenceId;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.FlushedStoreSequenceId;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionServerStartupRequest;<a name="line.80"></a>
+<span class="sourceLineNo">081</span><a name="line.81"></a>
+<span class="sourceLineNo">082</span>/**<a name="line.82"></a>
+<span class="sourceLineNo">083</span> * The ServerManager class manages info about region servers.<a name="line.83"></a>
+<span class="sourceLineNo">084</span> * <p><a name="line.84"></a>
+<span class="sourceLineNo">085</span> * Maintains lists of online and dead servers. Processes the startups,<a name="line.85"></a>
+<span class="sourceLineNo">086</span> * shutdowns, and deaths of region servers.<a name="line.86"></a>
+<span class="sourceLineNo">087</span> * <p><a name="line.87"></a>
+<span class="sourceLineNo">088</span> * Servers are distinguished in two different ways. A given server has a<a name="line.88"></a>
+<span class="sourceLineNo">089</span> * location, specified by hostname and port, and of which there can only be one<a name="line.89"></a>
+<span class="sourceLineNo">090</span> * online at any given time. A server instance is specified by the location<a name="line.90"></a>
+<span class="sourceLineNo">091</span> * (hostname and port) as well as the startcode (timestamp from when the server<a name="line.91"></a>
+<span class="sourceLineNo">092</span> * was started). This is used to differentiate a restarted instance of a given<a name="line.92"></a>
+<span class="sourceLineNo">093</span> * server from the original instance.<a name="line.93"></a>
+<span class="sourceLineNo">094</span> * <p><a name="line.94"></a>
+<span class="sourceLineNo">095</span> * If a sever is known not to be running any more, it is called dead. The dead<a name="line.95"></a>
+<span class="sourceLineNo">096</span> * server needs to be handled by a ServerShutdownHandler. If the handler is not<a name="line.96"></a>
+<span class="sourceLineNo">097</span> * enabled yet, the server can't be handled right away so it is queued up.<a name="line.97"></a>
+<span class="sourceLineNo">098</span> * After the handler is enabled, the server will be submitted to a handler to handle.<a name="line.98"></a>
+<span class="sourceLineNo">099</span> * However, the handler may be just partially enabled. If so,<a name="line.99"></a>
+<span class="sourceLineNo">100</span> * the server cannot be fully processed, and be queued up for further processing.<a name="line.100"></a>
+<span class="sourceLineNo">101</span> * A server is fully processed only after the handler is fully enabled<a name="line.101"></a>
+<span class="sourceLineNo">102</span> * and has completed the handling.<a name="line.102"></a>
+<span class="sourceLineNo">103</span> */<a name="line.103"></a>
+<span class="sourceLineNo">104</span>@InterfaceAudience.Private<a name="line.104"></a>
+<span class="sourceLineNo">105</span>public class ServerManager {<a name="line.105"></a>
+<span class="sourceLineNo">106</span> public static final String WAIT_ON_REGIONSERVERS_MAXTOSTART =<a name="line.106"></a>
+<span class="sourceLineNo">107</span> "hbase.master.wait.on.regionservers.maxtostart";<a name="line.107"></a>
<span class="sourceLineNo">108</span><a name="line.108"></a>
-<span class="sourceLineNo">109</span> private static final Logger LOG = LoggerFactory.getLogger(ServerManager.class);<a name="line.109"></a>
-<span class="sourceLineNo">110</span><a name="line.110"></a>
-<span class="sourceLineNo">111</span> // Set if we are to shutdown the cluster.<a name="line.111"></a>
-<span class="sourceLineNo">112</span> private AtomicBoolean clusterShutdown = new AtomicBoolean(false);<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> * The last flushed sequence id for a region.<a name="line.115"></a>
-<span class="sourceLineNo">116</span> */<a name="line.116"></a>
-<span class="sourceLineNo">117</span> private final ConcurrentNavigableMap<byte[], Long> flushedSequenceIdByRegion =<a name="line.117"></a>
-<span class="sourceLineNo">118</span> new ConcurrentSkipListMap<>(Bytes.BYTES_COMPARATOR);<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 last flushed sequence id for a store in a region.<a name="line.121"></a>
+<span class="sourceLineNo">109</span> public static final String WAIT_ON_REGIONSERVERS_MINTOSTART =<a name="line.109"></a>
+<span class="sourceLineNo">110</span> "hbase.master.wait.on.regionservers.mintostart";<a name="line.110"></a>
+<span class="sourceLineNo">111</span><a name="line.111"></a>
+<span class="sourceLineNo">112</span> public static final String WAIT_ON_REGIONSERVERS_TIMEOUT =<a name="line.112"></a>
+<span class="sourceLineNo">113</span> "hbase.master.wait.on.regionservers.timeout";<a name="line.113"></a>
+<span class="sourceLineNo">114</span><a name="line.114"></a>
+<span class="sourceLineNo">115</span> public static final String WAIT_ON_REGIONSERVERS_INTERVAL =<a name="line.115"></a>
+<span class="sourceLineNo">116</span> "hbase.master.wait.on.regionservers.interval";<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> * see HBASE-20727<a name="line.119"></a>
+<span class="sourceLineNo">120</span> * if set to true, flushedSequenceIdByRegion and storeFlushedSequenceIdsByRegion<a name="line.120"></a>
+<span class="sourceLineNo">121</span> * will be persisted to HDFS and loaded when master restart to speed up log split<a name="line.121"></a>
<span class="sourceLineNo">122</span> */<a name="line.122"></a>
-<span class="sourceLineNo">123</span> private final ConcurrentNavigableMap<byte[], ConcurrentNavigableMap<byte[], Long>><a name="line.123"></a>
-<span class="sourceLineNo">124</span> storeFlushedSequenceIdsByRegion = new ConcurrentSkipListMap<>(Bytes.BYTES_COMPARATOR);<a name="line.124"></a>
+<span class="sourceLineNo">123</span> public static final String PERSIST_FLUSHEDSEQUENCEID =<a name="line.123"></a>
+<span class="sourceLineNo">124</span> "hbase.master.persist.flushedsequenceid.enabled";<a name="line.124"></a>
<span class="sourceLineNo">125</span><a name="line.125"></a>
-<span class="sourceLineNo">126</span> /** Map of registered servers to their current load */<a name="line.126"></a>
-<span class="sourceLineNo">127</span> private final ConcurrentNavigableMap<ServerName, ServerMetrics> onlineServers =<a name="line.127"></a>
-<span class="sourceLineNo">128</span> new ConcurrentSkipListMap<>();<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> * Map of admin interfaces per registered regionserver; these interfaces we use to control<a name="line.131"></a>
-<span class="sourceLineNo">132</span> * regionservers out on the cluster<a name="line.132"></a>
-<span class="sourceLineNo">133</span> */<a name="line.133"></a>
-<span class="sourceLineNo">134</span> private final Map<ServerName, AdminService.BlockingInterface> rsAdmins = new HashMap<>();<a name="line.134"></a>
+<span class="sourceLineNo">126</span> public static final boolean PERSIST_FLUSHEDSEQUENCEID_DEFAULT = true;<a name="line.126"></a>
+<span class="sourceLineNo">127</span><a name="line.127"></a>
+<span class="sourceLineNo">128</span> public static final String FLUSHEDSEQUENCEID_FLUSHER_INTERVAL =<a name="line.128"></a>
+<span class="sourceLineNo">129</span> "hbase.master.flushedsequenceid.flusher.interval";<a name="line.129"></a>
+<span class="sourceLineNo">130</span><a name="line.130"></a>
+<span class="sourceLineNo">131</span> public static final int FLUSHEDSEQUENCEID_FLUSHER_INTERVAL_DEFAULT =<a name="line.131"></a>
+<span class="sourceLineNo">132</span> 3 * 60 * 60 * 1000; // 3 hours<a name="line.132"></a>
+<span class="sourceLineNo">133</span><a name="line.133"></a>
+<span class="sourceLineNo">134</span> private static final Logger LOG = LoggerFactory.getLogger(ServerManager.class);<a name="line.134"></a>
<span class="sourceLineNo">135</span><a name="line.135"></a>
-<span class="sourceLineNo">136</span> /** List of region servers that should not get any more new regions. */<a name="line.136"></a>
-<span class="sourceLineNo">137</span> private final ArrayList<ServerName> drainingServers = new ArrayList<>();<a name="line.137"></a>
+<span class="sourceLineNo">136</span> // Set if we are to shutdown the cluster.<a name="line.136"></a>
+<span class="sourceLineNo">137</span> private AtomicBoolean clusterShutdown = new AtomicBoolean(false);<a name="line.137"></a>
<span class="sourceLineNo">138</span><a name="line.138"></a>
-<span class="sourceLineNo">139</span> private final MasterServices master;<a name="line.139"></a>
-<span class="sourceLineNo">140</span> private final ClusterConnection connection;<a name="line.140"></a>
-<span class="sourceLineNo">141</span><a name="line.141"></a>
-<span class="sourceLineNo">142</span> private final DeadServer deadservers = new DeadServer();<a name="line.142"></a>
-<span class="sourceLineNo">143</span><a name="line.143"></a>
-<span class="sourceLineNo">144</span> private final long maxSkew;<a name="line.144"></a>
-<span class="sourceLineNo">145</span> private final long warningSkew;<a name="line.145"></a>
-<span class="sourceLineNo">146</span><a name="line.146"></a>
-<span class="sourceLineNo">147</span> private final RpcControllerFactory rpcControllerFactory;<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> * Set of region servers which are dead but not processed immediately. If one<a name="line.150"></a>
-<span class="sourceLineNo">151</span> * server died before master enables ServerShutdownHandler, the server will be<a name="line.151"></a>
-<span class="sourceLineNo">152</span> * added to this set and will be processed through calling<a name="line.152"></a>
-<span class="sourceLineNo">153</span> * {@link ServerManager#processQueuedDeadServers()} by master.<a name="line.153"></a>
-<span class="sourceLineNo">154</span> * <p><a name="line.154"></a>
-<span class="sourceLineNo">155</span> * A dead server is a server instance known to be dead, not listed in the /hbase/rs<a name="line.155"></a>
-<span class="sourceLineNo">156</span> * znode any more. It may have not been submitted to ServerShutdownHandler yet<a name="line.156"></a>
-<span class="sourceLineNo">157</span> * because the handler is not enabled.<a name="line.157"></a>
-<span class="sourceLineNo">158</span> * <p><a name="line.158"></a>
-<span class="sourceLineNo">159</span> * A dead server, which has been submitted to ServerShutdownHandler while the<a name="line.159"></a>
-<span class="sourceLineNo">160</span> * handler is not enabled, is queued up.<a name="line.160"></a>
-<span class="sourceLineNo">161</span> * <p><a name="line.161"></a>
-<span class="sourceLineNo">162</span> * So this is a set of region servers known to be dead but not submitted to<a name="line.162"></a>
-<span class="sourceLineNo">163</span> * ServerShutdownHandler for processing yet.<a name="line.163"></a>
-<span class="sourceLineNo">164</span> */<a name="line.164"></a>
-<span class="sourceLineNo">165</span> private Set<ServerName> queuedDeadServers = new HashSet<>();<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> * Set of region servers which are dead and submitted to ServerShutdownHandler to process but not<a name="line.168"></a>
-<span class="sourceLineNo">169</span> * fully processed immediately.<a name="line.169"></a>
-<span class="sourceLineNo">170</span> * <p><a name="line.170"></a>
-<span class="sourceLineNo">171</span> * If one server died before assignment manager finished the failover cleanup, the server will be<a name="line.171"></a>
-<span class="sourceLineNo">172</span> * added to this set and will be processed through calling<a name="line.172"></a>
-<span class="sourceLineNo">173</span> * {@link ServerManager#processQueuedDeadServers()} by assignment manager.<a name="line.173"></a>
-<span class="sourceLineNo">174</span> * <p><a name="line.174"></a>
-<span class="sourceLineNo">175</span> * The Boolean value indicates whether log split is needed inside ServerShutdownHandler<a name="line.175"></a>
-<span class="sourceLineNo">176</span> * <p><a name="line.176"></a>
-<span class="sourceLineNo">177</span> * ServerShutdownHandler processes a dead server submitted to the handler after the handler is<a name="line.177"></a>
-<span class="sourceLineNo">178</span> * enabled. It may not be able to complete the processing because meta is not yet online or master<a name="line.178"></a>
-<span class="sourceLineNo">179</span> * is currently in startup mode. In this case, the dead server will be parked in this set<a name="line.179"></a>
-<span class="sourceLineNo">180</span> * temporarily.<a name="line.180"></a>
-<span class="sourceLineNo">181</span> */<a name="line.181"></a>
-<span class="sourceLineNo">182</span> private Map<ServerName, Boolean> requeuedDeadServers = new ConcurrentHashMap<>();<a name="line.182"></a>
+<span class="sourceLineNo">139</span> /**<a name="line.139"></a>
+<span class="sourceLineNo">140</span> * The last flushed sequence id for a region.<a name="line.140"></a>
+<span class="sourceLineNo">141</span> */<a name="line.141"></a>
+<span class="sourceLineNo">142</span> private final ConcurrentNavigableMap<byte[], Long> flushedSequenceIdByRegion =<a name="line.142"></a>
+<span class="sourceLineNo">143</span> new ConcurrentSkipListMap<>(Bytes.BYTES_COMPARATOR);<a name="line.143"></a>
+<span class="sourceLineNo">144</span><a name="line.144"></a>
+<span class="sourceLineNo">145</span> private boolean persistFlushedSequenceId = true;<a name="line.145"></a>
+<span class="sourceLineNo">146</span> private volatile boolean isFlushSeqIdPersistInProgress = false;<a name="line.146"></a>
+<span class="sourceLineNo">147</span> /** File on hdfs to store last flushed sequence id of regions */<a name="line.147"></a>
+<span class="sourceLineNo">148</span> private static final String LAST_FLUSHED_SEQ_ID_FILE = ".lastflushedseqids";<a name="line.148"></a>
+<span class="sourceLineNo">149</span> private FlushedSequenceIdFlusher flushedSeqIdFlusher;<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> /**<a name="line.152"></a>
+<span class="sourceLineNo">153</span> * The last flushed sequence id for a store in a region.<a name="line.153"></a>
+<span class="sourceLineNo">154</span> */<a name="line.154"></a>
+<span class="sourceLineNo">155</span> private final ConcurrentNavigableMap<byte[], ConcurrentNavigableMap<byte[], Long>><a name="line.155"></a>
+<span class="sourceLineNo">156</span> storeFlushedSequenceIdsByRegion = new ConcurrentSkipListMap<>(Bytes.BYTES_COMPARATOR);<a name="line.156"></a>
+<span class="sourceLineNo">157</span><a name="line.157"></a>
+<span class="sourceLineNo">158</span> /** Map of registered servers to their current load */<a name="line.158"></a>
+<span class="sourceLineNo">159</span> private final ConcurrentNavigableMap<ServerName, ServerMetrics> onlineServers =<a name="line.159"></a>
+<span class="sourceLineNo">160</span> new ConcurrentSkipListMap<>();<a name="line.160"></a>
+<span class="sourceLineNo">161</span><a name="line.161"></a>
+<span class="sourceLineNo">162</span> /**<a name="line.162"></a>
+<span class="sourceLineNo">163</span> * Map of admin interfaces per registered regionserver; these interfaces we use to control<a name="line.163"></a>
+<span class="sourceLineNo">164</span> * regionservers out on the cluster<a name="line.164"></a>
+<span class="sourceLineNo">165</span> */<a name="line.165"></a>
+<span class="sourceLineNo">166</span> private final Map<ServerName, AdminService.BlockingInterface> rsAdmins = new HashMap<>();<a name="line.166"></a>
+<span class="sourceLineNo">167</span><a name="line.167"></a>
+<span class="sourceLineNo">168</span> /** List of region servers that should not get any more new regions. */<a name="line.168"></a>
+<span class="sourceLineNo">169</span> private final ArrayList<ServerName> drainingServers = new ArrayList<>();<a name="line.169"></a>
+<span class="sourceLineNo">170</span><a name="line.170"></a>
+<span class="sourceLineNo">171</span> private final MasterServices master;<a name="line.171"></a>
+<span class="sourceLineNo">172</span> private final ClusterConnection connection;<a name="line.172"></a>
+<span class="sourceLineNo">173</span><a name="line.173"></a>
+<span class="sourceLineNo">174</span> private final DeadServer deadservers = new DeadServer();<a name="line.174"></a>
+<span class="sourceLineNo">175</span><a name="line.175"></a>
+<span class="sourceLineNo">176</span> private final long maxSkew;<a name="line.176"></a>
+<span class="sourceLineNo">177</span> private final long warningSkew;<a name="line.177"></a>
+<span class="sourceLineNo">178</span><a name="line.178"></a>
+<span class="sourceLineNo">179</span> private final RpcControllerFactory rpcControllerFactory;<a name="line.179"></a>
+<span class="sourceLineNo">180</span><a name="line.180"></a>
+<span class="sourceLineNo">181</span> /** Listeners that are called on server events. */<a name="line.181"></a>
+<span class="sourceLineNo">182</span> private List<ServerListener> listeners = new CopyOnWriteArrayList<>();<a name="line.182"></a>
<span class="sourceLineNo">183</span><a name="line.183"></a>
-<span class="sourceLineNo">184</span> /** Listeners that are called on server events. */<a name="line.184"></a>
-<span class="sourceLineNo">185</span> private List<ServerListener> listeners = new CopyOnWriteArrayList<>();<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> * Constructor.<a name="line.188"></a>
-<span class="sourceLineNo">189</span> */<a name="line.189"></a>
-<span class="sourceLineNo">190</span> public ServerManager(final MasterServices master) {<a name="line.190"></a>
-<span class="sourceLineNo">191</span> this.master = master;<a name="line.191"></a>
-<span class="sourceLineNo">192</span> Configuration c = master.getConfiguration();<a name="line.192"></a>
-<span class="sourceLineNo">193</span> maxSkew = c.getLong("hbase.master.maxclockskew", 30000);<a name="line.193"></a>
-<span class="sourceLineNo">194</span> warningSkew = c.getLong("hbase.master.warningclockskew", 10000);<a name="line.194"></a>
-<span class="sourceLineNo">195</span> this.connection = master.getClusterConnection();<a name="line.195"></a>
-<span class="sourceLineNo">196</span> this.rpcControllerFactory = this.connection == null? null: connection.getRpcControllerFactory();<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> * Add the listener to the notification list.<a name="line.200"></a>
-<span class="sourceLineNo">201</span> * @param listener The ServerListener to register<a name="line.201"></a>
-<span class="sourceLineNo">202</span> */<a name="line.202"></a>
-<span class="sourceLineNo">203</span> public void registerListener(final ServerListener listener) {<a name="line.203"></a>
-<span class="sourceLineNo">204</span> this.listeners.add(listener);<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> /**<a name="line.207"></a>
-<span class="sourceLineNo">208</span> * Remove the listener from the notification list.<a name="line.208"></a>
-<span class="sourceLineNo">209</span> * @param listener The ServerListener to unregister<a name="line.209"></a>
-<span class="sourceLineNo">210</span> */<a name="line.210"></a>
-<span class="sourceLineNo">211</span> public boolean unregisterListener(final ServerListener listener) {<a name="line.211"></a>
-<span class="sourceLineNo">212</span> return this.listeners.remove(listener);<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> /**<a name="line.215"></a>
-<span class="sourceLineNo">216</span> * Let the server manager know a new regionserver has come online<a name="line.216"></a>
-<span class="sourceLineNo">217</span> * @param request the startup request<a name="line.217"></a>
-<span class="sourceLineNo">218</span> * @param versionNumber the version of the new regionserver<a name="line.218"></a>
-<span class="sourceLineNo">219</span> * @param ia the InetAddress from which request is received<a name="line.219"></a>
-<span class="sourceLineNo">220</span> * @return The ServerName we know this server as.<a name="line.220"></a>
-<span class="sourceLineNo">221</span> * @throws IOException<a name="line.221"></a>
-<span class="sourceLineNo">222</span> */<a name="line.222"></a>
-<span class="sourceLineNo">223</span> ServerName regionServerStartup(RegionServerStartupRequest request, int versionNumber,<a name="line.223"></a>
-<span class="sourceLineNo">224</span> InetAddress ia) throws IOException {<a name="line.224"></a>
-<span class="sourceLineNo">225</span> // Test for case where we get a region startup message from a regionserver<a name="line.225"></a>
-<span class="sourceLineNo">226</span> // that has been quickly restarted but whose znode expiration handler has<a name="line.226"></a>
-<span class="sourceLineNo">227</span> // not yet run, or from a server whose fail we are currently processing.<a name="line.227"></a>
-<span class="sourceLineNo">228</span> // Test its host+port combo is present in serverAddressToServerInfo. If it<a name="line.228"></a>
-<span class="sourceLineNo">229</span> // is, reject the server and trigger its expiration. The next time it comes<a name="line.229"></a>
-<span class="sourceLineNo">230</span> // in, it should have been removed from serverAddressToServerInfo and queued<a name="line.230"></a>
-<span class="sourceLineNo">231</span> // for processing by ProcessServerShutdown.<a name="line.231"></a>
-<span class="sourceLineNo">232</span><a name="line.232"></a>
-<span class="sourceLineNo">233</span> final String hostname = request.hasUseThisHostnameInstead() ?<a name="line.233"></a>
-<span class="sourceLineNo">234</span> request.getUseThisHostnameInstead() :ia.getHostName();<a name="line.234"></a>
-<span class="sourceLineNo">235</span> ServerName sn = ServerName.valueOf(hostname, request.getPort(),<a name="line.235"></a>
-<span class="sourceLineNo">236</span> request.getServerStartCode());<a name="line.236"></a>
-<span class="sourceLineNo">237</span> checkClockSkew(sn, request.getServerCurrentTime());<a name="line.237"></a>
-<span class="sourceLineNo">238</span> checkIsDead(sn, "STARTUP");<a name="line.238"></a>
-<span class="sourceLineNo">239</span> if (!checkAndRecordNewServer(sn, ServerMetricsBuilder.of(sn, versionNumber))) {<a name="line.239"></a>
-<span class="sourceLineNo">240</span> LOG.warn("THIS SHOULD NOT HAPPEN, RegionServerStartup"<a name="line.240"></a>
-<span class="sourceLineNo">241</span> + " could not record the server: " + sn);<a name="line.241"></a>
-<span class="sourceLineNo">242</span> }<a name="line.242"></a>
-<span class="sourceLineNo">243</span> return sn;<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> /**<a name="line.246"></a>
-<span class="sourceLineNo">247</span> * Updates last flushed sequence Ids for the regions on server sn<a name="line.247"></a>
-<span class="sourceLineNo">248</span> * @param sn<a name="line.248"></a>
-<span class="sourceLineNo">249</span> * @param hsl<a name="line.249"></a>
-<span class="sourceLineNo">250</span> */<a name="line.250"></a>
-<span class="sourceLineNo">251</span> private void updateLastFlushedSequenceIds(ServerName sn, ServerMetrics hsl) {<a name="line.251"></a>
-<span class="sourceLineNo">252</span> for (Entry<byte[], RegionMetrics> entry : hsl.getRegionMetrics().entrySet()) {<a name="line.252"></a>
-<span class="sourceLineNo">253</span> byte[] encodedRegionName = Bytes.toBytes(RegionInfo.encodeRegionName(entry.getKey()));<a name="line.253"></a>
-<span class="sourceLineNo">254</span> Long existingValue = flushedSequenceIdByRegion.get(encodedRegionName);<a name="line.254"></a>
-<span class="sourceLineNo">255</span> long l = entry.getValue().getCompletedSequenceId();<a name="line.255"></a>
-<span class="sourceLineNo">256</span> // Don't let smaller sequence ids override greater sequence ids.<a name="line.256"></a>
-<span class="sourceLineNo">257</span> if (LOG.isTraceEnabled()) {<a name="line.257"></a>
-<span class="sourceLineNo">258</span> LOG.trace(Bytes.toString(encodedRegionName) + ", existingValue=" + existingValue +<a name="line.258"></a>
-<span class="sourceLineNo">259</span> ", completeSequenceId=" + l);<a name="line.259"></a>
-<span class="sourceLineNo">260</span> }<a name="line.260"></a>
-<span class="sourceLineNo">261</span> if (existingValue == null || (l != HConstants.NO_SEQNUM && l > existingValue)) {<a name="line.261"></a>
-<span class="sourceLineNo">262</span> flushedSequenceIdByRegion.put(encodedRegionName, l);<a name="line.262"></a>
-<span class="sourceLineNo">263</span> } else if (l != HConstants.NO_SEQNUM && l < existingValue) {<a name="line.263"></a>
-<span class="sourceLineNo">264</span> LOG.warn("RegionServer " + sn + " indicates a last flushed sequence id ("<a name="line.264"></a>
-<span class="sourceLineNo">265</span> + l + ") that is less than the previous last flushed sequence id ("<a name="line.265"></a>
-<span class="sourceLineNo">266</span> + existingValue + ") for region " + Bytes.toString(entry.getKey()) + " Ignoring.");<a name="line.266"></a>
-<span class="sourceLineNo">267</span> }<a name="line.267"></a>
-<span class="sourceLineNo">268</span> ConcurrentNavigableMap<byte[], Long> storeFlushedSequenceId =<a name="line.268"></a>
-<span class="sourceLineNo">269</span> computeIfAbsent(storeFlushedSequenceIdsByRegion, encodedRegionName,<a name="line.269"></a>
-<span class="sourceLineNo">270</span> () -> new ConcurrentSkipListMap<>(Bytes.BYTES_COMPARATOR));<a name="line.270"></a>
-<span class="sourceLineNo">271</span> for (Entry<byte[], Long> storeSeqId : entry.getValue().getStoreSequenceId().entrySet()) {<a name="line.271"></a>
-<span class="sourceLineNo">272</span> byte[] family = storeSeqId.getKey();<a name="line.272"></a>
-<span class="sourceLineNo">273</span> existingValue = storeFlushedSequenceId.get(family);<a name="line.273"></a>
-<span class="sourceLineNo">274</span> l = storeSeqId.getValue();<a name="line.274"></a>
-<span class="sourceLineNo">275</span> if (LOG.isTraceEnabled()) {<a name="line.275"></a>
-<span class="sourceLineNo">276</span> LOG.trace(Bytes.toString(encodedRegionName) + ", family=" + Bytes.toString(family) +<a name="line.276"></a>
-<span class="sourceLineNo">277</span> ", existingValue=" + existingValue + ", completeSequenceId=" + l);<a name="line.277"></a>
-<span class="sourceLineNo">278</span> }<a name="line.278"></a>
-<span class="sourceLineNo">279</span> // Don't let smaller sequence ids override greater sequence ids.<a name="line.279"></a>
-<span class="sourceLineNo">280</span> if (existingValue == null || (l != HConstants.NO_SEQNUM && l > existingValue.longValue())) {<a name="line.280"></a>
-<span class="sourceLineNo">281</span> storeFlushedSequenceId.put(family, l);<a name="line.281"></a>
-<span class="sourceLineNo">282</span> }<a name="line.282"></a>
-<span class="sourceLineNo">283</span> }<a name="line.283"></a>
-<span class="sourceLineNo">284</span> }<a name="line.284"></a>
-<span class="sourceLineNo">285</span> }<a name="line.285"></a>
-<span class="sourceLineNo">286</span><a name="line.286"></a>
-<span class="sourceLineNo">287</span> @VisibleForTesting<a name="line.287"></a>
-<span class="sourceLineNo">288</span> public void regionServerReport(ServerName sn,<a name="line.288"></a>
-<span class="sourceLineNo">289</span> ServerMetrics sl) throws YouAreDeadException {<a name="line.289"></a>
-<span class="sourceLineNo">290</span> checkIsDead(sn, "REPORT");<a name="line.290"></a>
-<span class="sourceLineNo">291</span> if (null == this.onlineServers.replace(sn, sl)) {<a name="line.291"></a>
-<span class="sourceLineNo">292</span> // Already have this host+port combo and its just different start code?<a name="line.292"></a>
-<span class="sourceLineNo">293</span> // Just let the server in. Presume master joining a running cluster.<a name="line.293"></a>
-<span class="sourceLineNo">294</span> // recordNewServer is what happens at the end of reportServerStartup.<a name="line.294"></a>
-<span class="sourceLineNo">295</span> // The only thing we are skipping is passing back to the regionserver<a name="line.295"></a>
-<span class="sourceLineNo">296</span> // the ServerName to use. Here we presume a master has already done<a name="line.296"></a>
-<span class="sourceLineNo">297</span> // that so we'll press on with whatever it gave us for ServerName.<a name="line.297"></a>
-<span class="sourceLineNo">298</span> if (!checkAndRecordNewServer(sn, sl)) {<a name="line.298"></a>
-<span class="sourceLineNo">299</span> LOG.info("RegionServerReport ignored, could not record the server: " + sn);<a name="line.299"></a>
-<span class="sourceLineNo">300</span> return; // Not recorded, so no need to move on<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> updateLastFlushedSequenceIds(sn, sl);<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> * Check is a server of same host and port already exists,<a name="line.307"></a>
-<span class="sourceLineNo">308</span> * if not, or the existed one got a smaller start code, record it.<a name="line.308"></a>
-<span class="sourceLineNo">309</span> *<a name="line.309"></a>
-<span class="sourceLineNo">310</span> * @param serverName the server to check and record<a name="line.310"></a>
-<span class="sourceLineNo">311</span> * @param sl the server load on the server<a name="line.311"></a>
-<span class="sourceLineNo">312</span> * @return true if the server is recorded, otherwise, false<a name="line.312"></a>
-<span class="sourceLineNo">313</span> */<a name="line.313"></a>
-<span class="sourceLineNo">314</span> boolean checkAndRecordNewServer(final ServerName serverName, final ServerMetrics sl) {<a name="line.314"></a>
-<span class="sourceLineNo">315</span> ServerName existingServer = null;<a name="line.315"></a>
-<span class="sourceLineNo">316</span> synchronized (this.onlineServers) {<a name="line.316"></a>
-<span class="sourceLineNo">317</span> existingServer = findServerWithSameHostnamePortWithLock(serverName);<a name="line.317"></a>
-<span class="sourceLineNo">318</span> if (existingServer != null && (existingServer.getStartcode() > serverName.getStartcode())) {<a name="line.318"></a>
-<span class="sourceLineNo">319</span> LOG.info("Server serverName=" + serverName + " rejected; we already have "<a name="line.319"></a>
-<span class="sourceLineNo">320</span> + existingServer.toString() + " registered with same hostname and port");<a name="line.320"></a>
-<span class="sourceLineNo">321</span> return false;<a name="line.321"></a>
-<span class="sourceLineNo">322</span> }<a name="line.322"></a>
-<span class="sourceLineNo">323</span> recordNewServerWithLock(serverName, sl);<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> // Tell our listeners that a server was added<a name="line.326"></a>
-<span class="sourceLineNo">327</span> if (!this.listeners.isEmpty()) {<a name="line.327"></a>
-<span class="sourceLineNo">328</span> for (ServerListener listener : this.listeners) {<a name="line.328"></a>
-<span class="sourceLineNo">329</span> listener.serverAdded(serverName);<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> // Note that we assume that same ts means same server, and don't expire in that case.<a name="line.333"></a>
-<span class="sourceLineNo">334</span> // TODO: ts can theoretically collide due to clock shifts, so this is a bit hacky.<a name="line.334"></a>
-<span class="sourceLineNo">335</span> if (existingServer != null &&<a name="line.335"></a>
-<span class="sourceLineNo">336</span> (existingServer.getStartcode() < serverName.getStartcode())) {<a name="line.336"></a>
-<span class="sourceLineNo">337</span> LOG.info("Triggering server recovery; existingServer " +<a name="line.337"></a>
-<span class="sourceLineNo">338</span> existingServer + " looks stale, new server:" + serverName);<a name="line.338"></a>
-<span class="sourceLineNo">339</span> expireServer(existingServer);<a name="line.339"></a>
-<span class="sourceLineNo">340</span> }<a name="line.340"></a>
-<span class="sourceLineNo">341</span> return true;<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">345</span> * Checks if the clock skew between the server and the master. If the clock skew exceeds the<a name="line.345"></a>
-<span class="sourceLineNo">346</span> * configured max, it will throw an exception; if it exceeds the configured warning threshold,<a name="line.346"></a>
-<span class="sourceLineNo">347</span> * it will log a warning but start normally.<a name="line.347"></a>
-<span class="sourceLineNo">348</span> * @param serverName Incoming servers's name<a name="line.348"></a>
-<span class="sourceLineNo">349</span> * @param serverCurrentTime<a name="line.349"></a>
-<span class="sourceLineNo">350</span> * @throws ClockOutOfSyncException if the skew exceeds the configured max value<a name="line.350"></a>
-<span class="sourceLineNo">351</span> */<a name="line.351"></a>
-<span class="sourceLineNo">352</span> private void checkClockSkew(final ServerName serverName, final long serverCurrentTime)<a name="line.352"></a>
-<span class="sourceLineNo">353</span> throws ClockOutOfSyncException {<a name="line.353"></a>
-<span class="sourceLineNo">354</span> long skew = Math.abs(System.currentTimeMillis() - serverCurrentTime);<a name="line.354"></a>
-<span class="sourceLineNo">355</span> if (skew > maxSkew) {<a name="line.355"></a>
-<span class="sourceLineNo">356</span> String message = "Server " + serverName + " has been " +<a name="line.356"></a>
-<span class="sourceLineNo">357</span> "rejected; Reported time is too far out of sync with master. " +<a name="line.357"></a>
-<span class="sourceLineNo">358</span> "Time difference of " + skew + "ms > max allowed of " + maxSkew + "ms";<a name="line.358"></a>
-<span class="sourceLineNo">359</span> LOG.warn(message);<a name="line.359"></a>
-<span class="sourceLineNo">360</span> throw new ClockOutOfSyncException(message);<a name="line.360"></a>
-<span class="sourceLineNo">361</span> } else if (skew > warningSkew){<a name="line.361"></a>
-<span class="sourceLineNo">362</span> String message = "Reported time for server " + serverName + " is out of sync with master " +<a name="line.362"></a>
-<span class="sourceLineNo">363</span> "by " + skew + "ms. (Warning threshold is " + warningSkew + "ms; " +<a name="line.363"></a>
-<span class="sourceLineNo">364</span> "error threshold is " + maxSkew + "ms)";<a name="line.364"></a>
-<span class="sourceLineNo">365</span> LOG.warn(message);<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> /**<a name="line.369"></a>
-<span class="sourceLineNo">370</span> * If this server is on the dead list, reject it with a YouAreDeadException.<a name="line.370"></a>
-<span class="sourceLineNo">371</span> * If it was dead but came back with a new start code, remove the old entry<a name="line.371"></a>
-<span class="sourceLineNo">372</span> * from the dead list.<a name="line.372"></a>
-<span class="sourceLineNo">373</span> * @param serverName<a name="line.373"></a>
-<span class="sourceLineNo">374</span> * @param what START or REPORT<a name="line.374"></a>
-<span class="sourceLineNo">375</span> * @throws org.apache.hadoop.hbase.YouAreDeadException<a name="line.375"></a>
-<span class="sourceLineNo">376</span> */<a name="line.376"></a>
-<span class="sourceLineNo">377</span> private void checkIsDead(final ServerName serverName, final String what)<a name="line.377"></a>
-<span class="sourceLineNo">378</span> throws YouAreDeadException {<a name="line.378"></a>
-<span class="sourceLineNo">379</span> if (this.deadservers.isDeadServer(serverName)) {<a name="line.379"></a>
-<span class="sourceLineNo">380</span> // host name, port and start code all match with existing one of the<a name="line.380"></a>
-<span class="sourceLineNo">381</span> // dead servers. So, this server must be dead.<a name="line.381"></a>
-<span class="sourceLineNo">382</span> String message = "Server " + what + " rejected; currently processing " +<a name="line.382"></a>
-<span class="sourceLineNo">383</span> serverName + " as dead server";<a name="line.383"></a>
-<span class="sourceLineNo">384</span> LOG.debug(message);<a name="line.384"></a>
-<span class="sourceLineNo">385</span> throw new YouAreDeadException(message);<a name="line.385"></a>
-<span class="sourceLineNo">386</span> }<a name="line.386"></a>
-<span class="sourceLineNo">387</span> // remove dead server with same hostname and port of newly checking in rs after master<a name="line.387"></a>
-<span class="sourceLineNo">388</span> // initialization.See HBASE-5916 for more information.<a name="line.388"></a>
-<span class="sourceLineNo">389</span> if ((this.master == null || this.master.isInitialized())<a name="line.389"></a>
-<span class="sourceLineNo">390</span> && this.deadservers.cleanPreviousInstance(serverName)) {<a name="line.390"></a>
-<span class="sourceLineNo">391</span> // This server has now become alive after we marked it as dead.<a name="line.391"></a>
-<span class="sourceLineNo">392</span> // We removed it's previous entry from the dead list to reflect it.<a name="line.392"></a>
-<span class="sourceLineNo">393</span> LOG.debug(what + ":" + " Server " + serverName + " came back up," +<a name="line.393"></a>
-<span class="sourceLineNo">394</span> " removed it from the dead servers list");<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> /**<a name="line.398"></a>
-<span class="sourceLineNo">399</span> * Assumes onlineServers is locked.<a name="line.399"></a>
-<span class="sourceLineNo">400</span> * @return ServerName with matching hostname and port.<a name="line.400"></a>
-<span class="sourceLineNo">401</span> */<a name="line.401"></a>
-<span class="sourceLineNo">402</span> private ServerName findServerWithSameHostnamePortWithLock(<a name="line.402"></a>
-<span class="sourceLineNo">403</span> final ServerName serverName) {<a name="line.403"></a>
-<span class="sourceLineNo">404</span> ServerName end = ServerName.valueOf(serverName.getHostname(), serverName.getPort(),<a name="line.404"></a>
-<span class="sourceLineNo">405</span> Long.MAX_VALUE);<a name="line.405"></a>
-<span class="sourceLineNo">406</span><a name="line.406"></a>
-<span class="sourceLineNo">407</span> ServerName r = onlineServers.lowerKey(end);<a name="line.407"></a>
-<span class="sourceLineNo">408</span> if (r != null) {<a name="line.408"></a>
-<span class="sourceLineNo">409</span> if (ServerName.isSameAddress(r, serverName)) {<a name="line.409"></a>
-<span class="sourceLineNo">410</span> return r;<a name="line.410"></a>
-<span class="sourceLineNo">411</span> }<a name="line.411"></a>
+<span class="sourceLineNo">184</span> /**<a name="line.184"></a>
+<span class="sourceLineNo">185</span> * Constructor.<a name="line.185"></a>
+<span class="sourceLineNo">186</span> */<a name="line.186"></a>
+<span class="sourceLineNo">187</span> public ServerManager(final MasterServices master) {<a name="line.187"></a>
+<span class="sourceLineNo">188</span> this.master = master;<a name="line.188"></a>
+<span class="sourceLineNo">189</span> Configuration c = master.getConfiguration();<a name="line.189"></a>
+<span class="sourceLineNo">190</span> maxSkew = c.getLong("hbase.master.maxclockskew", 30000);<a name="line.190"></a>
+<span class="sourceLineNo">191</span> warningSkew = c.getLong("hbase.master.warningclockskew", 10000);<a name="line.191"></a>
+<span class="sourceLineNo">192</span> this.connection = master.getClusterConnection();<a name="line.192"></a>
+<span class="sourceLineNo">193</span> this.rpcControllerFactory = this.connection == null? null: connection.getRpcControllerFactory();<a name="line.193"></a>
+<span class="sourceLineNo">194</span> persistFlushedSequenceId = c.getBoolean(PERSIST_FLUSHEDSEQUENCEID,<a name="line.194"></a>
+<span class="sourceLineNo">195</span> PERSIST_FLUSHEDSEQUENCEID_DEFAULT);<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> /**<a name="line.198"></a>
+<span class="sourceLineNo">199</span> * Add the listener to the notification list.<a name="line.199"></a>
+<span class="sourceLineNo">200</span> * @param listener The ServerListener to register<a name="line.200"></a>
+<span class="sourceLineNo">201</span> */<a name="line.201"></a>
+<span class="sourceLineNo">202</span> public void registerListener(final ServerListener listener) {<a name="line.202"></a>
+<span class="sourceLineNo">203</span> this.listeners.add(listener);<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> * Remove the listener from the notification list.<a name="line.207"></a>
+<span class="sourceLineNo">208</span> * @param listener The ServerListener to unregister<a name="line.208"></a>
+<span class="sourceLineNo">209</span> */<a name="line.209"></a>
+<span class="sourceLineNo">210</span> public boolean unregisterListener(final ServerListener listener) {<a name="line.210"></a>
+<span class="sourceLineNo">211</span> return this.listeners.remove(listener);<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> /**<a name="line.214"></a>
+<span class="sourceLineNo">215</span> * Let the server manager know a new regionserver has come online<a name="line.215"></a>
+<span class="sourceLineNo">216</span> * @param request the startup request<a name="line.216"></a>
+<span class="sourceLineNo">217</span> * @param versionNumber the version of the new regionserver<a name="line.217"></a>
+<span class="sourceLineNo">218</span> * @param ia the InetAddress from which request is received<a name="line.218"></a>
+<span class="sourceLineNo">219</span> * @return The ServerName we know this server as.<a name="line.219"></a>
+<span class="sourceLineNo">220</span> * @throws IOException<a name="line.220"></a>
+<span class="sourceLineNo">221</span> */<a name="line.221"></a>
+<span class="sourceLineNo">222</span> ServerName regionServerStartup(RegionServerStartupRequest request, int versionNumber,<a name="line.222"></a>
+<span class="sourceLineNo">223</span> InetAddress ia) throws IOException {<a name="line.223"></a>
+<span class="sourceLineNo">224</span> // Test for case where we get a region startup message from a regionserver<a name="line.224"></a>
+<span class="sourceLineNo">225</span> // that has been quickly restarted but whose znode expiration handler has<a name="line.225"></a>
+<span class="sourceLineNo">226</span> // not yet run, or from a server whose fail we are currently processing.<a name="line.226"></a>
+<span class="sourceLineNo">227</span> // Test its host+port combo is present in serverAddressToServerInfo. If it<a name="line.227"></a>
+<span class="sourceLineNo">228</span> // is, reject the server and trigger its expiration. The next time it comes<a name="line.228"></a>
+<span class="sourceLineNo">229</span> // in, it should have been removed from serverAddressToServerInfo and queued<a name="line.229"></a>
+<span class="sourceLineNo">230</span> // for processing by ProcessServerShutdown.<a name="line.230"></a>
+<span class="sourceLineNo">231</span><a name="line.231"></a>
+<span class="sourceLineNo">232</span> final String hostname = request.hasUseThisHostnameInstead() ?<a name="line.232"></a>
+<span class="sourceLineNo">233</span> request.getUseThisHostnameInstead() :ia.getHostName();<a name="line.233"></a>
+<span class="sourceLineNo">234</span> ServerName sn = ServerName.valueOf(hostname, request.getPort(),<a name="line.234"></a>
+<span class="sourceLineNo">235</span> request.getServerStartCode());<a name="line.235"></a>
+<span class="sourceLineNo">236</span> checkClockSkew(sn, request.getServerCurrentTime());<a name="line.236"></a>
+<span class="sourceLineNo">237</span> checkIsDead(sn, "STARTUP");<a name="line.237"></a>
+<span class="sourceLineNo">238</span> if (!checkAndRecordNewServer(sn, ServerMetricsBuilder.of(sn, versionNumber))) {<a name="line.238"></a>
+<span class="sourceLineNo">239</span> LOG.warn("THIS SHOULD NOT HAPPEN, RegionServerStartup"<a name="line.239"></a>
+<span class="sourceLineNo">240</span> + " could not record the server: " + sn);<a name="line.240"></a>
+<span class="sourceLineNo">241</span> }<a name="line.241"></a>
+<span class="sourceLineNo">242</span> return sn;<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> * Updates last flushed sequence Ids for the regions on server sn<a name="line.246"></a>
+<span class="sourceLineNo">247</span> * @param sn<a name="line.247"></a>
+<span class="sourceLineNo">248</span> * @param hsl<a name="line.248"></a>
+<span class="sourceLineNo">249</span> */<a name="line.249"></a>
+<span class="sourceLineNo">250</span> private void updateLastFlushedSequenceIds(ServerName sn, ServerMetrics hsl) {<a name="line.250"></a>
+<span class="sourceLineNo">251</span> for (Entry<byte[], RegionMetrics> entry : hsl.getRegionMetrics().entrySet()) {<a name="line.251"></a>
+<span class="sourceLineNo">252</span> byte[] encodedRegionName = Bytes.toBytes(RegionInfo.encodeRegionName(entry.getKey()));<a name="line.252"></a>
+<span class="sourceLineNo">253</span> Long existingValue = flushedSequenceIdByRegion.get(encodedRegionName);<a name="line.253"></a>
+<span class="sourceLineNo">254</span> long l = entry.getValue().getCompletedSequenceId();<a name="line.254"></a>
+<span class="sourceLineNo">255</span> // Don't let smaller sequence ids override greater sequence ids.<a name="line.255"></a>
+<span class="sourceLineNo">256</span> if (LOG.isTraceEnabled()) {<a name="line.256"></a>
+<span class="sourceLineNo">257</span> LOG.trace(Bytes.toString(encodedRegionName) + ", existingValue=" + existingValue +<a name="line.257"></a>
+<span class="sourceLineNo">258</span> ", completeSequenceId=" + l);<a name="line.258"></a>
+<span class="sourceLineNo">259</span> }<a name="line.259"></a>
+<span class="sourceLineNo">260</span> if (existingValue == null || (l != HConstants.NO_SEQNUM && l > existingValue)) {<a name="line.260"></a>
+<span class="sourceLineNo">261</span> flushedSequenceIdByRegion.put(encodedRegionName, l);<a name="line.261"></a>
+<span class="sourceLineNo">262</span> } else if (l != HConstants.NO_SEQNUM && l < existingValue) {<a name="line.262"></a>
+<span class="sourceLineNo">263</span> LOG.warn("RegionServer " + sn + " indicates a last flushed sequence id ("<a name="line.263"></a>
+<span class="sourceLineNo">264</span> + l + ") that is less than the previous last flushed sequence id ("<a name="line.264"></a>
+<span class="sourceLineNo">265</span> + existingValue + ") for region " + Bytes.toString(entry.getKey()) + " Ignoring.");<a name="line.265"></a>
+<span class="sourceLineNo">266</span> }<a name="line.266"></a>
+<span class="sourceLineNo">267</span> ConcurrentNavigableMap<byte[], Long> storeFlushedSequenceId =<a name="line.267"></a>
+<span class="sourceLineNo">268</span> computeIfAbsent(storeFlushedSequenceIdsByRegion, encodedRegionName,<a name="line.268"></a>
+<span class="sourceLineNo">269</span> () -> new ConcurrentSkipListMap<>(Bytes.BYTES_COMPARATOR));<a name="line.269"></a>
+<span class="sourceLineNo">270</span> for (Entry<byte[], Long> storeSeqId : entry.getValue().getStoreSequenceId().entrySet()) {<a name="line.270"></a>
+<span class="sourceLineNo">271</span> byte[] family = storeSeqId.getKey();<a name="line.271"></a>
+<span class="sourceLineNo">272</span> existingValue = storeFlushedSequenceId.get(family);<a name="line.272"></a>
+<span class="sourceLineNo">273</span> l = storeSeqId.getValue();<a name="line.273"></a>
+<span class="sourceLineNo">274</span> if (LOG.isTraceEnabled()) {<a name="line.274"></a>
+<span class="sourceLineNo">275</span> LOG.trace(Bytes.toString(encodedRegionName) + ", family=" + Bytes.toString(family) +<a name="line.275"></a>
+<span class="sourceLineNo">276</span> ", existingValue=" + existingValue + ", completeSequenceId=" + l);<a name="line.276"></a>
+<span class="sourceLineNo">277</span> }<a name="line.277"></a>
+<span class="sourceLineNo">278</span> // Don't let smaller sequence ids override greater sequence ids.<a name="line.278"></a>
+<span class="sourceLineNo">279</span> if (existingValue == null || (l != HConstants.NO_SEQNUM && l > existingValue.longValue())) {<a name="line.279"></a>
+<span class="sourceLineNo">280</span> storeFlushedSequenceId.put(family, l);<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> }<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> @VisibleForTesting<a name="line.286"></a>
+<span class="sourceLineNo">287</span> public void regionServerReport(ServerName sn,<a name="line.287"></a>
+<span class="sourceLineNo">288</span> ServerMetrics sl) throws YouAreDeadException {<a name="line.288"></a>
+<span class="sourceLineNo">289</span> checkIsDead(sn, "REPORT");<a name="line.289"></a>
+<span class="sourceLineNo">290</span> if (null == this.onlineServers.replace(sn, sl)) {<a name="line.290"></a>
+<span class="sourceLineNo">291</span> // Already have this host+port combo and its just different start code?<a name="line.291"></a>
+<span class="sourceLineNo">292</span> // Just let the server in. Presume master joining a running cluster.<a name="line.292"></a>
+<span class="sourceLineNo">293</span> // recordNewServer is what happens at the end of reportServerStartup.<a name="line.293"></a>
+<span class="sourceLineNo">294</span> // The only thing we are skipping is passing back to the regionserver<a name="line.294"></a>
+<span class="sourceLineNo">295</span> // the ServerName to use. Here we presume a master has already done<a name="line.295"></a>
+<span class="sourceLineNo">296</span> // that so we'll press on with whatever it gave us for ServerName.<a name="line.296"></a>
+<span class="sourceLineNo">297</span> if (!checkAndRecordNewServer(sn, sl)) {<a name="line.297"></a>
+<span class="sourceLineNo">298</span> LOG.info("RegionServerReport ignored, could not record the server: " + sn);<a name="line.298"></a>
+<span class="sourceLineNo">299</span> return; // Not recorded, so no need to move on<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> updateLastFlushedSequenceIds(sn, sl);<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> /**<a name="line.305"></a>
+<span class="sourceLineNo">306</span> * Check is a server of same host and port already exists,<a name="line.306"></a>
+<span class="sourceLineNo">307</span> * if not, or the existed one got a smaller start code, record it.<a name="line.307"></a>
+<span class="sourceLineNo">308</span> *<a name="line.308"></a>
+<span class="sourceLineNo">309</span> * @param serverName the server to check and record<a name="line.309"></a>
+<span class="sourceLineNo">310</span> * @param sl the server load on the server<a name="line.310"></a>
+<span class="sourceLineNo">311</span> * @return true if the server is recorded, otherwise, false<a name="line.311"></a>
+<span class="sourceLineNo">312</span> */<a name="line.312"></a>
+<span class="sourceLineNo">313</span> boolean checkAndRecordNewServer(final ServerName serverName, final ServerMetrics sl) {<a name="line.313"></a>
+<span class="sourceLineNo">314</span> ServerName existingServer = null;<a name="line.314"></a>
+<span class="sourceLineNo">315</span> synchronized (this.onlineServers) {<a name="line.315"></a>
+<span class="sourceLineNo">316</span> existingServer = findServerWithSameHostnamePortWithLock(serverName);<a name="line.316"></a>
+<span class="sourceLineNo">317</span> if (existingServer != null && (existingServer.getStartcode() > serverName.getStartcode())) {<a name="line.317"></a>
+<span class="sourceLineNo">318</span> LOG.info("Server serverName=" + serverName + " rejected; we already have "<a name="line.318"></a>
+<span class="sourceLineNo">319</span> + existingServer.toString() + " registered with same hostname and port");<a name="line.319"></a>
+<span class="sourceLineNo">320</span> return false;<a name="line.320"></a>
+<span class="sourceLineNo">321</span> }<a name="line.321"></a>
+<span class="sourceLineNo">322</span> recordNewServerWithLock(serverName, sl);<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> // Tell our listeners that a server was added<a name="line.325"></a>
+<span class="sourceLineNo">326</span> if (!this.listeners.isEmpty()) {<a name="line.326"></a>
+<span class="sourceLineNo">327</span> for (ServerListener listener : this.listeners) {<a name="line.327"></a>
+<span class="sourceLineNo">328</span> listener.serverAdded(serverName);<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> // Note that we assume that same ts means same server, and don't expire in that case.<a name="line.332"></a>
+<span class="sourceLineNo">333</span> // TODO: ts can theoretically collide due to clock shifts, so this is a bit hacky.<a name="line.333"></a>
+<span class="sourceLineNo">334</span> if (existingServer != null &&<a name="line.334"></a>
+<span class="sourceLineNo">335</span> (existingServer.getStartcode() < serverName.getStartcode())) {<a name="line.335"></a>
+<span class="sourceLineNo">336</span> LOG.info("Triggering server recovery; existingServer " +<a name="line.336"></a>
+<span class="sourceLineNo">337</span> existingServer + " looks stale, new server:" + serverName);<a name="line.337"></a>
+<span class="sourceLineNo">338</span> expireServer(existingServer);<a name="line.338"></a>
+<span class="sourceLineNo">339</span> }<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> /**<a name="line.343"></a>
+<span class="sourceLineNo">344</span> * Find out the region servers crashed between the crash of the previous master instance and the<a name="line.344"></a>
+<span class="sourceLineNo">345</span> * current master instance and schedule SCP for them.<a name="line.345"></a>
+<span class="sourceLineNo">346</span> * <p/><a name="line.346"></a>
+<span class="sourceLineNo">347</span> * Since the {@code RegionServerTracker} has already helped us to construct the online servers set<a name="line.347"></a>
+<span class="sourceLineNo">348</span> * by scanning zookeeper, now we can compare the online servers with {@code liveServersFromWALDir}<a name="line.348"></a>
+<span class="sourceLineNo">349</span> * to find out whether there are servers which are already dead.<a name="line.349"></a>
+<span class="sourceLineNo">350</span> * <p/><a name="line.350"></a>
+<span class="sourceLineNo">351</span> * Must be called inside the initialization method of {@code RegionServerTracker} to avoid<a name="line.351"></a>
+<span class="sourceLineNo">352</span> * concurrency issue.<a name="line.352"></a>
+<span class="sourceLineNo">353</span> * @param deadServersFromPE the region servers which already have SCP associated.<a name="line.353"></a>
+<span class="sourceLineNo">354</span> * @param liveServersFromWALDir the live region servers from wal directory.<a name="line.354"></a>
+<span class="sourceLineNo">355</span> */<a name="line.355"></a>
+<span class="sourceLineNo">356</span> void findOutDeadServersAndProcess(Set<ServerName> deadServersFromPE,<a name="line.356"></a>
+<span class="sourceLineNo">357</span> Set<ServerName> liveServersFromWALDir) {<a name="line.357"></a>
+<span class="sourceLineNo">358</span> deadServersFromPE.forEach(deadservers::add);<a name="line.358"></a>
+<span class="sourceLineNo">359</span> liveServersFromWALDir.stream().filter(sn -> !onlineServers.containsKey(sn))<a name="line.359"></a>
+<span class="sourceLineNo">360</span> .forEach(this::expireServer);<a name="line.360"></a>
+<span class="sourceLineNo">361</span> }<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> * Checks if the clock skew between the server and the master. If the clock skew exceeds the<a name="line.364"></a>
+<span class="sourceLineNo">365</span> * configured max, it will throw an exception; if it exceeds the configured warning threshold,<a name="line.365"></a>
+<span class="sourceLineNo">366</span> * it will log a warning but start normally.<a name="line.366"></a>
+<span class="sourceLineNo">367</span> * @param serverName Incoming servers's name<a name="line.367"></a>
+<span class="sourceLineNo">368</span> * @param serverCurrentTime<a name="line.368"></a>
+<span class="sourceLineNo">369</span> * @throws ClockOutOfSyncException if the skew exceeds the configured max value<a name="line.369"></a>
+<span class="sourceLineNo">370</span> */<a name="line.370"></a>
+<span class="sourceLineNo">371</span> private void checkClockSkew(final ServerName serverName, final long serverCurrentTime)<a name="line.371"></a>
+<span class="sourceLineNo">372</span> throws ClockOutOfSyncException {<a name="line.372"></a>
+<span class="sourceLineNo">373</span> long skew = Math.abs(System.currentTimeMillis() - serverCurrentTime);<a name="line.373"></a>
+<span class="sourceLineNo">374</span> if (skew > maxSkew) {<a name="line.374"></a>
+<span class="sourceLineNo">375</span> String message = "Server " + serverName + " has been " +<a name="line.375"></a>
+<span class="sourceLineNo">376</span> "rejected; Reported time is too far out of sync with master. " +<a name="line.376"></a>
+<span class="sourceLineNo">377</span> "Time difference of " + skew + "ms > max allowed of " + maxSkew + "ms";<a name="line.377"></a>
+<span class="sourceLineNo">378</span> LOG.warn(message);<a name="line.378"></a>
+<span class="sourceLineNo">379</span> throw new ClockOutOfSyncException(message);<a name="line.379"></a>
+<span class="sourceLineNo">380</span> } else if (skew > warningSkew){<a name="line.380"></a>
+<span class="sourceLineNo">381</span> String message = "Reported time for server " + serverName + " is out of sync with master " +<a name="line.381"></a>
+<span class="sourceLineNo">382</span> "by " + skew + "ms. (Warning threshold is " + warningSkew + "ms; " +<a name="line.382"></a>
+<span class="sourceLineNo">383</span> "error threshold is " + maxSkew + "ms)";<a name="line.383"></a>
+<span class="sourceLineNo">384</span> LOG.warn(message);<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><a name="line.387"></a>
+<span class="sourceLineNo">388</span> /**<a name="line.388"></a>
+<span class="sourceLineNo">389</span> * If this server is on the dead list, reject it with a YouAreDeadException.<a name="line.389"></a>
+<span class="sourceLineNo">390</span> * If it was dead but came back with a new start code, remove the old entry<a name="line.390"></a>
+<span class="sourceLineNo">391</span> * from the dead list.<a name="line.391"></a>
+<span class="sourceLineNo">392</span> * @param what START or REPORT<a name="line.392"></a>
+<span class="sourceLineNo">393</span> */<a name="line.393"></a>
+<span class="sourceLineNo">394</span> private void checkIsDead(final ServerName serverName, final String what)<a name="line.394"></a>
+<span class="sourceLineNo">395</span> throws YouAreDeadException {<a name="line.395"></a>
+<span class="sourceLineNo">396</span> if (this.deadservers.isDeadServer(serverName)) {<a name="line.396"></a>
+<span class="sourceLineNo">397</span> // host name, port and start code all match with existing one of the<a name="line.397"></a>
+<span class="sourceLineNo">398</span> // dead servers. So, this server must be dead.<a name="line.398"></a>
+<span class="sourceLineNo">399</span> String message = "Server " + what + " rejected; currently processing " +<a name="line.399"></a>
+<span class="sourceLineNo">400</span> serverName + " as dead server";<a name="line.400"></a>
+<span class="sourceLineNo">401</span> LOG.debug(message);<a name="line.401"></a>
+<span class="sourceLineNo">402</span> throw new YouAreDeadException(message);<a name="line.402"></a>
+<span class="sourceLineNo">403</span> }<a name="line.403"></a>
+<span class="sourceLineNo">404</span> // remove dead server with same hostname and port of newly checking in rs after master<a name="line.404"></a>
+<span class="sourceLineNo">405</span> // initialization.See HBASE-5916 for more information.<a name="line.405"></a>
+<span class="sourceLineNo">406</span> if ((this.master == null || this.master.isInitialized())<a name="line.406"></a>
+<span class="sourceLineNo">407</span> && this.deadservers.cleanPreviousInstance(serverName)) {<a name="line.407"></a>
+<span class="sourceLineNo">408</span> // This server has now become alive after we marked it as dead.<a name="line.408"></a>
+<span class="sourceLineNo">409</span> // We removed it's previous entry from the dead list to reflect it.<a name="line.409"></a>
+<span class="sourceLineNo">410</span> LOG.debug(what + ":" + " Server " + serverName + " came back up," +<a name="line.410"></a>
+<span class="sourceLineNo">411</span> " removed it from the dead servers list");<a name="line.411"></a>
<span class="sourceLineNo">412</span> }<a name="line.412"></a>
-<span class="sourceLineNo">413</span> return null;<a name="line.413"></a>
-<span class="sourceLineNo">414</span> }<a name="line.414"></a>
-<span class="sourceLineNo">415</span><a name="line.415"></a>
-<span class="sourceLineNo">416</span> /**<a name="line.416"></a>
-<span class="sourceLineNo">417</span> * Adds the onlineServers list. onlineServers should be locked.<a name="line.417"></a>
-<span class="sourceLineNo">418</span> * @param serverName The remote servers name.<a name="line.418"></a>
-<span class="sourceLineNo">419</span> */<a name="line.419"></a>
-<span class="sourceLineNo">420</span> @VisibleForTesting<a name="line.420"></a>
-<span class="sourceLineNo">421</span> void recordNewServerWithLock(final ServerName serverName, final ServerMetrics sl) {<a name="line.421"></a>
-<span class="sourceLineNo">422</span> LOG.info("Registering regionserver=" + serverName);<a name="line.422"></a>
-<span class="sourceLineNo">423</span> this.onlineServers.put(serverName, sl);<a name="line.423"></a>
-<span class="sourceLineNo">424</span> this.rsAdmins.remove(serverName);<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 RegionStoreSequenceIds getLastFlushedSequenceId(byte[] encodedRegionName) {<a name="line.427"></a>
-<span class="sourceLineNo">428</span> RegionStoreSequenceIds.Builder builder = RegionStoreSequenceIds.newBuilder();<a name="line.428"></a>
-<span class="sourceLineNo">429</span> Long seqId = flushedSequenceIdByRegion.get(encodedRegionName);<a name="line.429"></a>
-<span class="sourceLineNo">430</span> builder.setLastFlushedSequenceId(seqId != null ? seqId.longValue() : HConstants.NO_SEQNUM);<a name="line.430"></a>
-<span class="sourceLineNo">431</span> Map<byte[], Long> storeFlushedSequenceId =<a name="line.431"></a>
-<span class="sourceLineNo">432</span> storeFlushedSequenceIdsByRegion.get(encodedRegionName);<a name="line.432"></a>
-<span class="sourceLineNo">433</span> if (storeFlushedSequenceId != null) {<a name="line.433"></a>
-<span class="sourceLineNo">434</span> for (Map.Entry<byte[], Long> entry : storeFlushedSequenceId.entrySet()) {<a name="line.434"></a>
-<span class="sourceLineNo">435</span> builder.addStoreSequenceId(StoreSequenceId.newBuilder()<a name="line.435"></a>
-<span class="sourceLineNo">436</span> .setFamilyName(UnsafeByteOperations.unsafeWrap(entry.getKey()))<a name="line.436"></a>
-<span class="sourceLineNo">437</span> .setSequenceId(entry.getValue().longValue()).build());<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> return builder.build();<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> * @param serverName<a name="line.444"></a>
-<span class="sourceLineNo">445</span> * @return ServerMetrics if serverName is known else null<a name="line.445"></a>
-<span class="sourceLineNo">446</span> */<a name="line.446"></a>
-<span class="sourceLineNo">447</span> public ServerMetrics getLoad(final ServerName serverName) {<a name="line.447"></a>
-<span class="sourceLineNo">448</span> return this.onlineServers.get(serverName);<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> /**<a name="line.451"></a>
-<span class="sourceLineNo">452</span> * Compute the average load across all region servers.<a name="line.452"></a>
-<span class="sourceLineNo">453</span> * Currently, this uses a very naive computation - just uses the number of<a name="line.453"></a>
-<span class="sourceLineNo">454</span> * regions being served, ignoring stats about number of requests.<a name="line.454"></a>
-<span class="sourceLineNo">455</span> * @return the average load<a name="line.455"></a>
-<span class="sourceLineNo">456</span> */<a name="line.456"></a>
-<span class="sourceLineNo">457</span> public double getAverageLoad() {<a name="line.457"></a>
-<span class="sourceLineNo">458</span> int totalLoad = 0;<a name="line.458"></a>
-<span class="sourceLineNo">459</span> int numServers = 0;<a name="line.459"></a>
-<span class="sourceLineNo">460</span> for (ServerMetrics sl : this.onlineServers.values()) {<a name="line.460"></a>
-<span class="sourceLineNo">461</span> numServers++;<a name="line.461"></a>
-<span class="sourceLineNo">462</span> totalLoad += sl.getRegionMetrics().size();<a name="line.462"></a>
-<span class="sourceLineNo">463</span> }<a name="line.463"></a>
-<span class="sourceLineNo">464</span> return numServers == 0 ? 0 :<a name="line.464"></a>
-<span class="sourceLineNo">465</span> (double)totalLoad / (double)numServers;<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 the count of active regionservers */<a name="line.468"></a>
-<span class="sourceLineNo">469</span> public int countOfRegionServers() {<a name="line.469"></a>
-<span class="sourceLineNo">470</span> // Presumes onlineServers is a concurrent map<a name="line.470"></a>
-<span class="sourceLineNo">471</span> return this.onlineServers.size();<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> /**<a name="line.474"></a>
-<span class="sourceLineNo">475</span> * @return Read-only map of servers to serverinfo<a name="line.475"></a>
-<span class="sourceLineNo">476</span> */<a name="line.476"></a>
-<span class="sourceLineNo">477</span> public Map<ServerName, ServerMetrics> getOnlineServers() {<a name="line.477"></a>
-<span class="sourceLineNo">478</span> // Presumption is that iterating the returned Map is OK.<a name="line.478"></a>
-<span class="sourceLineNo">479</span> synchronized (this.onlineServers) {<a name="line.479"></a>
-<span class="sourceLineNo">480</span> return Collections.unmodifiableMap(this.onlineServers);<a name="line.480"></a>
-<span class="sourceLineNo">481</span> }<a name="line.481"></a>
-<span class="sourceLineNo">482</span> }<a name="line.482"></a>
-<s
<TRUNCATED>
[46/51] [partial] hbase-site git commit: Published site at
9101fc246f86445006bfbcdfda5cc495016dc280.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/checkstyle.rss
----------------------------------------------------------------------
diff --git a/checkstyle.rss b/checkstyle.rss
index 9434310..21d7a7a 100644
--- a/checkstyle.rss
+++ b/checkstyle.rss
@@ -25,8 +25,8 @@ under the License.
<language>en-us</language>
<copyright>©2007 - 2018 The Apache Software Foundation</copyright>
<item>
- <title>File: 3640,
- Errors: 16189,
+ <title>File: 3641,
+ Errors: 16171,
Warnings: 0,
Infos: 0
</title>
@@ -69,7 +69,7 @@ under the License.
0
</td>
<td>
- 1
+ 0
</td>
</tr>
<tr>
@@ -8301,7 +8301,7 @@ under the License.
0
</td>
<td>
- 10
+ 8
</td>
</tr>
<tr>
@@ -15203,7 +15203,7 @@ under the License.
0
</td>
<td>
- 7
+ 4
</td>
</tr>
<tr>
@@ -17695,7 +17695,7 @@ under the License.
0
</td>
<td>
- 32
+ 31
</td>
</tr>
<tr>
@@ -19604,6 +19604,20 @@ under the License.
</tr>
<tr>
<td>
+ <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.procedure.InitMetaProcedure.java">org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.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.replication.ReplicationQueueInfo.java">org/apache/hadoop/hbase/replication/ReplicationQueueInfo.java</a>
</td>
<td>
@@ -22581,7 +22595,7 @@ under the License.
0
</td>
<td>
- 1
+ 0
</td>
</tr>
<tr>
@@ -24975,7 +24989,7 @@ under the License.
0
</td>
<td>
- 2
+ 0
</td>
</tr>
<tr>
@@ -31513,7 +31527,7 @@ under the License.
0
</td>
<td>
- 22
+ 19
</td>
</tr>
<tr>
@@ -33025,7 +33039,7 @@ under the License.
0
</td>
<td>
- 3
+ 1
</td>
</tr>
<tr>
@@ -39633,7 +39647,7 @@ under the License.
0
</td>
<td>
- 3
+ 2
</td>
</tr>
<tr>
@@ -45961,7 +45975,7 @@ under the License.
0
</td>
<td>
- 3
+ 1
</td>
</tr>
<tr>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/coc.html
----------------------------------------------------------------------
diff --git a/coc.html b/coc.html
index 900172c..0cbde73 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="20180619" />
+ <meta name="Date-Revision-yyyymmdd" content="20180620" />
<meta http-equiv="Content-Language" content="en" />
<title>Apache HBase –
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-06-19</li>
+ <li id="publishDate" class="pull-right">Last Published: 2018-06-20</li>
</p>
</div>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/dependencies.html
----------------------------------------------------------------------
diff --git a/dependencies.html b/dependencies.html
index 98d3638..d7892ca 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="20180619" />
+ <meta name="Date-Revision-yyyymmdd" content="20180620" />
<meta http-equiv="Content-Language" content="en" />
<title>Apache HBase – Project Dependencies</title>
<link rel="stylesheet" href="./css/apache-maven-fluido-1.5-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-06-19</li>
+ <li id="publishDate" class="pull-right">Last Published: 2018-06-20</li>
</p>
</div>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/dependency-convergence.html b/dependency-convergence.html
index 65ec4f1..5b0ac2c 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="20180619" />
+ <meta name="Date-Revision-yyyymmdd" content="20180620" />
<meta http-equiv="Content-Language" content="en" />
<title>Apache HBase – Reactor Dependency Convergence</title>
<link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -905,7 +905,7 @@
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
All rights reserved.
- <li id="publishDate" class="pull-right">Last Published: 2018-06-19</li>
+ <li id="publishDate" class="pull-right">Last Published: 2018-06-20</li>
</p>
</div>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/dependency-info.html
----------------------------------------------------------------------
diff --git a/dependency-info.html b/dependency-info.html
index 1f06be0..09fa88a 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="20180619" />
+ <meta name="Date-Revision-yyyymmdd" content="20180620" />
<meta http-equiv="Content-Language" content="en" />
<title>Apache HBase – Dependency Information</title>
<link rel="stylesheet" href="./css/apache-maven-fluido-1.5-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-06-19</li>
+ <li id="publishDate" class="pull-right">Last Published: 2018-06-20</li>
</p>
</div>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/dependency-management.html
----------------------------------------------------------------------
diff --git a/dependency-management.html b/dependency-management.html
index 1f39c73..24df880 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="20180619" />
+ <meta name="Date-Revision-yyyymmdd" content="20180620" />
<meta http-equiv="Content-Language" content="en" />
<title>Apache HBase – Project Dependency Management</title>
<link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -1011,7 +1011,7 @@
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
All rights reserved.
- <li id="publishDate" class="pull-right">Last Published: 2018-06-19</li>
+ <li id="publishDate" class="pull-right">Last Published: 2018-06-20</li>
</p>
</div>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/allclasses-frame.html
----------------------------------------------------------------------
diff --git a/devapidocs/allclasses-frame.html b/devapidocs/allclasses-frame.html
index 89619b2..9f4aed1 100644
--- a/devapidocs/allclasses-frame.html
+++ b/devapidocs/allclasses-frame.html
@@ -1256,6 +1256,7 @@
<li><a href="org/apache/hadoop/hbase/IndividualBytesFieldCell.html" title="class in org.apache.hadoop.hbase" target="classFrame">IndividualBytesFieldCell</a></li>
<li><a href="org/apache/hadoop/hbase/IndividualBytesFieldCellBuilder.html" title="class in org.apache.hadoop.hbase" target="classFrame">IndividualBytesFieldCellBuilder</a></li>
<li><a href="org/apache/hadoop/hbase/http/InfoServer.html" title="class in org.apache.hadoop.hbase.http" target="classFrame">InfoServer</a></li>
+<li><a href="org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure" target="classFrame">InitMetaProcedure</a></li>
<li><a href="org/apache/hadoop/hbase/io/hfile/InlineBlockWriter.html" title="interface in org.apache.hadoop.hbase.io.hfile" target="classFrame"><span class="interfaceName">InlineBlockWriter</span></a></li>
<li><a href="org/apache/hadoop/hbase/procedure2/InlineChore.html" title="class in org.apache.hadoop.hbase.procedure2" target="classFrame">InlineChore</a></li>
<li><a href="org/apache/hadoop/hbase/zookeeper/InstancePending.html" title="class in org.apache.hadoop.hbase.zookeeper" target="classFrame">InstancePending</a></li>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/allclasses-noframe.html
----------------------------------------------------------------------
diff --git a/devapidocs/allclasses-noframe.html b/devapidocs/allclasses-noframe.html
index 8dbf863..8657ac7 100644
--- a/devapidocs/allclasses-noframe.html
+++ b/devapidocs/allclasses-noframe.html
@@ -1256,6 +1256,7 @@
<li><a href="org/apache/hadoop/hbase/IndividualBytesFieldCell.html" title="class in org.apache.hadoop.hbase">IndividualBytesFieldCell</a></li>
<li><a href="org/apache/hadoop/hbase/IndividualBytesFieldCellBuilder.html" title="class in org.apache.hadoop.hbase">IndividualBytesFieldCellBuilder</a></li>
<li><a href="org/apache/hadoop/hbase/http/InfoServer.html" title="class in org.apache.hadoop.hbase.http">InfoServer</a></li>
+<li><a href="org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">InitMetaProcedure</a></li>
<li><a href="org/apache/hadoop/hbase/io/hfile/InlineBlockWriter.html" title="interface in org.apache.hadoop.hbase.io.hfile"><span class="interfaceName">InlineBlockWriter</span></a></li>
<li><a href="org/apache/hadoop/hbase/procedure2/InlineChore.html" title="class in org.apache.hadoop.hbase.procedure2">InlineChore</a></li>
<li><a href="org/apache/hadoop/hbase/zookeeper/InstancePending.html" title="class in org.apache.hadoop.hbase.zookeeper">InstancePending</a></li>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/constant-values.html
----------------------------------------------------------------------
diff --git a/devapidocs/constant-values.html b/devapidocs/constant-values.html
index 370022b..8533f28 100644
--- a/devapidocs/constant-values.html
+++ b/devapidocs/constant-values.html
@@ -3768,21 +3768,21 @@
<!-- -->
</a><code>public static final <a href="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>"Tue Jun 19 00:28:02 UTC 2018"</code></td>
+<td class="colLast"><code>"Wed Jun 20 04:15:39 UTC 2018"</code></td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a name="org.apache.hadoop.hbase.Version.revision">
<!-- -->
</a><code>public static final <a href="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>"78da0e366970cf9bab6add9ba9fd74ca37c75be3"</code></td>
+<td class="colLast"><code>"9101fc246f86445006bfbcdfda5cc495016dc280"</code></td>
</tr>
<tr class="altColor">
<td class="colFirst"><a name="org.apache.hadoop.hbase.Version.srcChecksum">
<!-- -->
</a><code>public static final <a href="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>"72ef87fb3fa82a7c510def4b3609400b"</code></td>
+<td class="colLast"><code>"bc4bb89ad408bf39c503a300c7481e65"</code></td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a name="org.apache.hadoop.hbase.Version.url">
@@ -14144,27 +14144,62 @@
</tr>
<tbody>
<tr class="altColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.master.ServerManager.FLUSHEDSEQUENCEID_FLUSHER_INTERVAL">
+<!-- -->
+</a><code>public static final <a href="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/master/ServerManager.html#FLUSHEDSEQUENCEID_FLUSHER_INTERVAL">FLUSHEDSEQUENCEID_FLUSHER_INTERVAL</a></code></td>
+<td class="colLast"><code>"hbase.master.flushedsequenceid.flusher.interval"</code></td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.master.ServerManager.FLUSHEDSEQUENCEID_FLUSHER_INTERVAL_DEFAULT">
+<!-- -->
+</a><code>public static final int</code></td>
+<td><code><a href="org/apache/hadoop/hbase/master/ServerManager.html#FLUSHEDSEQUENCEID_FLUSHER_INTERVAL_DEFAULT">FLUSHEDSEQUENCEID_FLUSHER_INTERVAL_DEFAULT</a></code></td>
+<td class="colLast"><code>10800000</code></td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.master.ServerManager.LAST_FLUSHED_SEQ_ID_FILE">
+<!-- -->
+</a><code>private static final <a href="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/master/ServerManager.html#LAST_FLUSHED_SEQ_ID_FILE">LAST_FLUSHED_SEQ_ID_FILE</a></code></td>
+<td class="colLast"><code>".lastflushedseqids"</code></td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.master.ServerManager.PERSIST_FLUSHEDSEQUENCEID">
+<!-- -->
+</a><code>public static final <a href="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/master/ServerManager.html#PERSIST_FLUSHEDSEQUENCEID">PERSIST_FLUSHEDSEQUENCEID</a></code></td>
+<td class="colLast"><code>"hbase.master.persist.flushedsequenceid.enabled"</code></td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.master.ServerManager.PERSIST_FLUSHEDSEQUENCEID_DEFAULT">
+<!-- -->
+</a><code>public static final boolean</code></td>
+<td><code><a href="org/apache/hadoop/hbase/master/ServerManager.html#PERSIST_FLUSHEDSEQUENCEID_DEFAULT">PERSIST_FLUSHEDSEQUENCEID_DEFAULT</a></code></td>
+<td class="colLast"><code>true</code></td>
+</tr>
+<tr class="rowColor">
<td class="colFirst"><a name="org.apache.hadoop.hbase.master.ServerManager.WAIT_ON_REGIONSERVERS_INTERVAL">
<!-- -->
</a><code>public static final <a href="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/master/ServerManager.html#WAIT_ON_REGIONSERVERS_INTERVAL">WAIT_ON_REGIONSERVERS_INTERVAL</a></code></td>
<td class="colLast"><code>"hbase.master.wait.on.regionservers.interval"</code></td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a name="org.apache.hadoop.hbase.master.ServerManager.WAIT_ON_REGIONSERVERS_MAXTOSTART">
<!-- -->
</a><code>public static final <a href="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/master/ServerManager.html#WAIT_ON_REGIONSERVERS_MAXTOSTART">WAIT_ON_REGIONSERVERS_MAXTOSTART</a></code></td>
<td class="colLast"><code>"hbase.master.wait.on.regionservers.maxtostart"</code></td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a name="org.apache.hadoop.hbase.master.ServerManager.WAIT_ON_REGIONSERVERS_MINTOSTART">
<!-- -->
</a><code>public static final <a href="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/master/ServerManager.html#WAIT_ON_REGIONSERVERS_MINTOSTART">WAIT_ON_REGIONSERVERS_MINTOSTART</a></code></td>
<td class="colLast"><code>"hbase.master.wait.on.regionservers.mintostart"</code></td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a name="org.apache.hadoop.hbase.master.ServerManager.WAIT_ON_REGIONSERVERS_TIMEOUT">
<!-- -->
</a><code>public static final <a href="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>
@@ -14317,7 +14352,7 @@
<!-- -->
</a><code>private static final int</code></td>
<td><code><a href="org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#DEFAULT_RIT_CHORE_INTERVAL_MSEC">DEFAULT_RIT_CHORE_INTERVAL_MSEC</a></code></td>
-<td class="colLast"><code>5000</code></td>
+<td class="colLast"><code>60000</code></td>
</tr>
<tr class="altColor">
<td class="colFirst"><a name="org.apache.hadoop.hbase.master.assignment.AssignmentManager.DEFAULT_RIT_STUCK_WARNING_THRESHOLD">
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/deprecated-list.html
----------------------------------------------------------------------
diff --git a/devapidocs/deprecated-list.html b/devapidocs/deprecated-list.html
index 7961ce7..800b8f7 100644
--- a/devapidocs/deprecated-list.html
+++ b/devapidocs/deprecated-list.html
@@ -111,12 +111,18 @@
</td>
</tr>
<tr class="rowColor">
+<td class="colOne"><a href="org/apache/hadoop/hbase/master/procedure/MetaProcedureInterface.html" title="interface in org.apache.hadoop.hbase.master.procedure">org.apache.hadoop.hbase.master.procedure.MetaProcedureInterface</a>
+<div class="block"><span class="deprecationComment">only used for <a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>RecoverMetaProcedure</code></a>. Should be removed along with
+ <a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>RecoverMetaProcedure</code></a>.</span></div>
+</td>
+</tr>
+<tr class="altColor">
<td class="colOne"><a href="org/apache/hadoop/hbase/regionserver/RowProcessor.html" title="interface in org.apache.hadoop.hbase.regionserver">org.apache.hadoop.hbase.regionserver.RowProcessor</a>
<div class="block"><span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0. For customization, use
Coprocessors instead.</span></div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colOne"><a href="org/apache/hadoop/hbase/coprocessor/SingletonCoprocessorService.html" title="interface in org.apache.hadoop.hbase.coprocessor">org.apache.hadoop.hbase.coprocessor.SingletonCoprocessorService</a>
<div class="block"><span class="deprecationComment">Since 2.0. Will be removed in 3.0</span></div>
</td>
@@ -202,10 +208,23 @@
</td>
</tr>
<tr class="altColor">
+<td class="colOne"><a href="org/apache/hadoop/hbase/master/procedure/MetaQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">org.apache.hadoop.hbase.master.procedure.MetaQueue</a>
+<div class="block"><span class="deprecationComment">only used for <a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>RecoverMetaProcedure</code></a>. Should be removed along with
+ <a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>RecoverMetaProcedure</code></a>.</span></div>
+</td>
+</tr>
+<tr class="rowColor">
<td class="colOne"><a href="org/apache/hadoop/hbase/master/MirroringTableStateManager.html" title="class in org.apache.hadoop.hbase.master">org.apache.hadoop.hbase.master.MirroringTableStateManager</a>
<div class="block"><span class="deprecationComment">Since 2.0.0. To be removed in 3.0.0.</span></div>
</td>
</tr>
+<tr class="altColor">
+<td class="colOne"><a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">org.apache.hadoop.hbase.master.procedure.RecoverMetaProcedure</a>
+<div class="block"><span class="deprecationComment">Do not use any more, leave it here only for compatible. The recovery work will be
+ done in <a href="org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>ServerCrashProcedure</code></a> directly, and the initial work for meta table
+ will be done by <a href="org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>InitMetaProcedure</code></a>.</span></div>
+</td>
+</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/hadoop/hbase/RegionLoad.html" title="class in org.apache.hadoop.hbase">org.apache.hadoop.hbase.RegionLoad</a>
<div class="block"><span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0
@@ -1327,152 +1346,166 @@
</td>
</tr>
<tr class="rowColor">
+<td class="colOne"><a href="org/apache/hadoop/hbase/master/MasterWalManager.html#getFailedServersFromLogFolders--">org.apache.hadoop.hbase.master.MasterWalManager.getFailedServersFromLogFolders()</a>
+<div class="block"><span class="deprecationComment">With proc-v2, we can record the crash server with procedure store, so do not need
+ to scan the wal directory to find out the splitting wal directory any more. Leave
+ it here only because <code>RecoverMetaProcedure</code>(which is also deprecated) uses
+ it.</span></div>
+</td>
+</tr>
+<tr class="altColor">
<td class="colOne"><a href="org/apache/hadoop/hbase/HTableDescriptor.html#getFamilies--">org.apache.hadoop.hbase.HTableDescriptor.getFamilies()</a>
<div class="block"><span class="deprecationComment">Use <a href="org/apache/hadoop/hbase/HTableDescriptor.html#getColumnFamilies--"><code>HTableDescriptor.getColumnFamilies()</code></a>.</span></div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colOne"><a href="org/apache/hadoop/hbase/HTableDescriptor.html#getFamiliesKeys--">org.apache.hadoop.hbase.HTableDescriptor.getFamiliesKeys()</a>
<div class="block"><span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0
(<a href="https://issues.apache.org/jira/browse/HBASE-18008">HBASE-18008</a>).
Use <a href="org/apache/hadoop/hbase/HTableDescriptor.html#getColumnFamilyNames--"><code>HTableDescriptor.getColumnFamilyNames()</code></a>.</span></div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colOne"><a href="org/apache/hadoop/hbase/HTableDescriptor.html#getFamily-byte:A-">org.apache.hadoop.hbase.HTableDescriptor.getFamily(byte[])</a>
<div class="block"><span class="deprecationComment">Use <a href="org/apache/hadoop/hbase/HTableDescriptor.html#getColumnFamily-byte:A-"><code>HTableDescriptor.getColumnFamily(byte[])</code></a>.</span></div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colOne"><a href="org/apache/hadoop/hbase/ServerLoad.html#getFilteredReadRequestsCount--">org.apache.hadoop.hbase.ServerLoad.getFilteredReadRequestsCount()</a>
<div class="block"><span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0
Use <a href="org/apache/hadoop/hbase/ServerLoad.html#getRegionMetrics--"><code>ServerLoad.getRegionMetrics()</code></a> instead.</span></div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colOne"><a href="org/apache/hadoop/hbase/RegionLoad.html#getFilteredReadRequestsCount--">org.apache.hadoop.hbase.RegionLoad.getFilteredReadRequestsCount()</a>
<div class="block"><span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0
Use <a href="org/apache/hadoop/hbase/RegionLoad.html#getFilteredReadRequestCount--"><code>RegionLoad.getFilteredReadRequestCount()</code></a> instead.</span></div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colOne"><a href="org/apache/hadoop/hbase/regionserver/RegionServerServices.html#getFlushPressure--">org.apache.hadoop.hbase.regionserver.RegionServerServices.getFlushPressure()</a></td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colOne"><a href="org/apache/hadoop/hbase/io/hfile/FixedFileTrailer.html#getHBase1CompatibleName-java.lang.String-">org.apache.hadoop.hbase.io.hfile.FixedFileTrailer.getHBase1CompatibleName(String)</a>
<div class="block"><span class="deprecationComment">Since hbase-2.0.0. Will be removed in hbase-3.0.0.</span></div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colOne"><a href="org/apache/hadoop/hbase/ServerName.html#getHostAndPort--">org.apache.hadoop.hbase.ServerName.getHostAndPort()</a>
<div class="block"><span class="deprecationComment">Since 2.0. Use <a href="org/apache/hadoop/hbase/ServerName.html#getAddress--"><code>ServerName.getAddress()</code></a> instead.</span></div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colOne"><a href="org/apache/hadoop/hbase/ServerName.html#getHostNameMinusDomain-java.lang.String-">org.apache.hadoop.hbase.ServerName.getHostNameMinusDomain(String)</a>
<div class="block"><span class="deprecationComment">Since 2.0. This is for internal use only.</span></div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colOne"><a href="org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.TableInfo.html#getHTableDescriptor--">org.apache.hadoop.hbase.mapreduce.HFileOutputFormat2.TableInfo.getHTableDescriptor()</a>
<div class="block"><span class="deprecationComment">use <a href="org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.TableInfo.html#getTableDescriptor--"><code>HFileOutputFormat2.TableInfo.getTableDescriptor()</code></a></span></div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colOne"><a href="org/apache/hadoop/hbase/client/HBaseAdmin.html#getHTableDescriptor-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.client.RpcRetryingCallerFactory-org.apache.hadoop.hbase.ipc.RpcControllerFactory-int-int-">org.apache.hadoop.hbase.client.HBaseAdmin.getHTableDescriptor(TableName, Connection, RpcRetryingCallerFactory, RpcControllerFactory, int, int)</a>
<div class="block"><span class="deprecationComment">since 2.0 version and will be removed in 3.0 version.
use <a href="org/apache/hadoop/hbase/client/HBaseAdmin.html#getTableDescriptor-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.client.RpcRetryingCallerFactory-org.apache.hadoop.hbase.ipc.RpcControllerFactory-int-int-"><code>HBaseAdmin.getTableDescriptor(TableName,
Connection, RpcRetryingCallerFactory,RpcControllerFactory,int,int)</code></a></span></div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colOne"><a href="org/apache/hadoop/hbase/io/hfile/HFileScanner.html#getKeyString--">org.apache.hadoop.hbase.io.hfile.HFileScanner.getKeyString()</a>
<div class="block"><span class="deprecationComment">Since hbase-2.0.0</span></div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colOne"><a href="org/apache/hadoop/hbase/RegionLoad.html#getLastMajorCompactionTs--">org.apache.hadoop.hbase.RegionLoad.getLastMajorCompactionTs()</a>
<div class="block"><span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0
Use <a href="org/apache/hadoop/hbase/RegionLoad.html#getLastMajorCompactionTimestamp--"><code>RegionLoad.getLastMajorCompactionTimestamp()</code></a> instead.</span></div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colOne"><a href="org/apache/hadoop/hbase/ClusterStatus.html#getLastMajorCompactionTsForRegion-byte:A-">org.apache.hadoop.hbase.ClusterStatus.getLastMajorCompactionTsForRegion(byte[])</a>
<div class="block"><span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0
Use <a href="org/apache/hadoop/hbase/ClusterMetrics.html#getLastMajorCompactionTimestamp-byte:A-"><code>ClusterMetrics.getLastMajorCompactionTimestamp(byte[])</code></a> instead.</span></div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colOne"><a href="org/apache/hadoop/hbase/ClusterStatus.html#getLastMajorCompactionTsForTable-org.apache.hadoop.hbase.TableName-">org.apache.hadoop.hbase.ClusterStatus.getLastMajorCompactionTsForTable(TableName)</a>
<div class="block"><span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0
Use <a href="org/apache/hadoop/hbase/ClusterMetrics.html#getLastMajorCompactionTimestamp-org.apache.hadoop.hbase.TableName-"><code>ClusterMetrics.getLastMajorCompactionTimestamp(TableName)</code></a> instead.</span></div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colOne"><a href="org/apache/hadoop/hbase/ServerLoad.html#getLoad--">org.apache.hadoop.hbase.ServerLoad.getLoad()</a>
<div class="block"><span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0
Use <a href="org/apache/hadoop/hbase/ServerLoad.html#getNumberOfRegions--"><code>ServerLoad.getNumberOfRegions()</code></a> instead.</span></div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colOne"><a href="org/apache/hadoop/hbase/ClusterStatus.html#getLoad-org.apache.hadoop.hbase.ServerName-">org.apache.hadoop.hbase.ClusterStatus.getLoad(ServerName)</a>
<div class="block"><span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0
Use <a href="org/apache/hadoop/hbase/ClusterStatus.html#getLiveServerMetrics--"><code>ClusterStatus.getLiveServerMetrics()</code></a> instead.</span></div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colOne"><a href="org/apache/hadoop/hbase/wal/WALKeyImpl.html#getLogSeqNum--">org.apache.hadoop.hbase.wal.WALKeyImpl.getLogSeqNum()</a>
<div class="block"><span class="deprecationComment">Use <a href="org/apache/hadoop/hbase/wal/WALKeyImpl.html#getSequenceId--"><code>WALKeyImpl.getSequenceId()</code></a></span></div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colOne"><a href="org/apache/hadoop/hbase/ClusterStatus.html#getMaster--">org.apache.hadoop.hbase.ClusterStatus.getMaster()</a>
<div class="block"><span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0
Use <a href="org/apache/hadoop/hbase/ClusterStatus.html#getMasterName--"><code>ClusterStatus.getMasterName()</code></a> instead.</span></div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colOne"><a href="org/apache/hadoop/hbase/client/Admin.html#getMasterCoprocessors--">org.apache.hadoop.hbase.client.Admin.getMasterCoprocessors()</a>
<div class="block"><span class="deprecationComment">since 2.0 version and will be removed in 3.0 version.
use <a href="org/apache/hadoop/hbase/client/Admin.html#getMasterCoprocessorNames--"><code>Admin.getMasterCoprocessorNames()</code></a></span></div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colOne"><a href="org/apache/hadoop/hbase/ClusterStatus.html#getMasterCoprocessors--">org.apache.hadoop.hbase.ClusterStatus.getMasterCoprocessors()</a>
<div class="block"><span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0
Use <a href="org/apache/hadoop/hbase/ClusterStatus.html#getMasterCoprocessorNames--"><code>ClusterStatus.getMasterCoprocessorNames()</code></a> instead.</span></div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colOne"><a href="org/apache/hadoop/hbase/ServerLoad.html#getMaxHeapMB--">org.apache.hadoop.hbase.ServerLoad.getMaxHeapMB()</a>
<div class="block"><span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0
Use <a href="org/apache/hadoop/hbase/ServerLoad.html#getMaxHeapSize--"><code>ServerLoad.getMaxHeapSize()</code></a> instead.</span></div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colOne"><a href="org/apache/hadoop/hbase/client/RegionLoadStats.html#getMemstoreLoad--">org.apache.hadoop.hbase.client.RegionLoadStats.getMemstoreLoad()</a>
<div class="block"><span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0.
Use <a href="org/apache/hadoop/hbase/client/RegionLoadStats.html#getMemStoreLoad--"><code>RegionLoadStats.getMemStoreLoad()</code></a> instead</span></div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colOne"><a href="org/apache/hadoop/hbase/ServerLoad.html#getMemstoreSizeInMB--">org.apache.hadoop.hbase.ServerLoad.getMemstoreSizeInMB()</a>
<div class="block"><span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0
Use <a href="org/apache/hadoop/hbase/ServerLoad.html#getRegionMetrics--"><code>ServerLoad.getRegionMetrics()</code></a> instead.</span></div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colOne"><a href="org/apache/hadoop/hbase/ServerLoad.html#getMemStoreSizeMB--">org.apache.hadoop.hbase.ServerLoad.getMemStoreSizeMB()</a>
<div class="block"><span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0
Use <a href="org/apache/hadoop/hbase/ServerLoad.html#getRegionMetrics--"><code>ServerLoad.getRegionMetrics()</code></a> instead.</span></div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colOne"><a href="org/apache/hadoop/hbase/RegionLoad.html#getMemStoreSizeMB--">org.apache.hadoop.hbase.RegionLoad.getMemStoreSizeMB()</a>
<div class="block"><span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0
Use <a href="org/apache/hadoop/hbase/RegionLoad.html#getMemStoreSize--"><code>RegionLoad.getMemStoreSize()</code></a> instead.</span></div>
</td>
</tr>
+<tr class="altColor">
+<td class="colOne"><a href="org/apache/hadoop/hbase/master/procedure/SchemaLocking.html#getMetaLock--">org.apache.hadoop.hbase.master.procedure.SchemaLocking.getMetaLock()</a>
+<div class="block"><span class="deprecationComment">only used for <a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>RecoverMetaProcedure</code></a>. Should be removed along with
+ <a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>RecoverMetaProcedure</code></a>.</span></div>
+</td>
+</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/hadoop/hbase/regionserver/StoreFile.html#getModificationTimeStamp--">org.apache.hadoop.hbase.regionserver.StoreFile.getModificationTimeStamp()</a>
<div class="block"><span class="deprecationComment">Since 2.0.0. Will be removed in 3.0.0.</span></div>
@@ -3047,6 +3080,18 @@
</td>
</tr>
<tr class="altColor">
+<td class="colOne"><a href="org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#waitMetaExclusiveLock-org.apache.hadoop.hbase.procedure2.Procedure-">org.apache.hadoop.hbase.master.procedure.MasterProcedureScheduler.waitMetaExclusiveLock(Procedure<?>)</a>
+<div class="block"><span class="deprecationComment">only used for <a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>RecoverMetaProcedure</code></a>. Should be removed along with
+ <a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>RecoverMetaProcedure</code></a>.</span></div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colOne"><a href="org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#wakeMetaExclusiveLock-org.apache.hadoop.hbase.procedure2.Procedure-">org.apache.hadoop.hbase.master.procedure.MasterProcedureScheduler.wakeMetaExclusiveLock(Procedure<?>)</a>
+<div class="block"><span class="deprecationComment">only used for <a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>RecoverMetaProcedure</code></a>. Should be removed along with
+ <a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>RecoverMetaProcedure</code></a>.</span></div>
+</td>
+</tr>
+<tr class="altColor">
<td class="colOne"><a href="org/apache/hadoop/hbase/io/TimeRange.html#withinTimeRange-byte:A-int-">org.apache.hadoop.hbase.io.TimeRange.withinTimeRange(byte[], int)</a>
<div class="block"><span class="deprecationComment">This is made @InterfaceAudience.Private in the 2.0 line and above and may be
changed to private or removed in 3.0. Use <a href="org/apache/hadoop/hbase/io/TimeRange.html#withinTimeRange-long-"><code>TimeRange.withinTimeRange(long)</code></a> instead</span></div>
[39/51] [partial] hbase-site git commit: Published site at
9101fc246f86445006bfbcdfda5cc495016dc280.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/master/MasterWalManager.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/MasterWalManager.html b/devapidocs/org/apache/hadoop/hbase/master/MasterWalManager.html
index fd9825b..3462352 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/MasterWalManager.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/MasterWalManager.html
@@ -18,8 +18,8 @@
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};
-var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var methods = {"i0":10,"i1":42,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":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";
var tableTab = "tableTab";
@@ -110,7 +110,7 @@ var activeTableTab = "activeTableTab";
<hr>
<br>
<pre>@InterfaceAudience.Private
-public class <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterWalManager.html#line.51">MasterWalManager</a>
+public class <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterWalManager.html#line.52">MasterWalManager</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">This class abstracts a bunch of operations the HMaster needs
when splitting log files e.g. finding log files, dirs etc.</div>
@@ -213,7 +213,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
</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"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </span></span></caption>
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </span></span><span id="t6" class="tableTab"><span><a href="javascript:show(32);">Deprecated Methods</a></span><span class="tabEnd"> </span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
@@ -227,7 +227,12 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<tr id="i1" class="rowColor">
<td class="colFirst"><code><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><<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/MasterWalManager.html#getFailedServersFromLogFolders--">getFailedServersFromLogFolders</a></span>()</code>
-<div class="block">Inspect the log directory to find dead servers which need recovery work</div>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span>
+<div class="block"><span class="deprecationComment">With proc-v2, we can record the crash server with procedure store, so do not need
+ to scan the wal directory to find out the splitting wal directory any more. Leave
+ it here only because <code>RecoverMetaProcedure</code>(which is also deprecated) uses
+ it.</span></div>
+</div>
</td>
</tr>
<tr id="i2" class="altColor">
@@ -235,47 +240,51 @@ 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/master/MasterWalManager.html#getFileSystem--">getFileSystem</a></span>()</code> </td>
</tr>
<tr id="i3" class="rowColor">
+<td class="colFirst"><code><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><<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/MasterWalManager.html#getLiveServersFromWALDir--">getLiveServersFromWALDir</a></span>()</code> </td>
+</tr>
+<tr id="i4" 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><org.apache.hadoop.fs.Path></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterWalManager.html#getLogDirs-java.util.Set-">getLogDirs</a></span>(<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><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>> serverNames)</code> </td>
</tr>
-<tr id="i4" class="altColor">
+<tr id="i5" class="rowColor">
<td class="colFirst"><code>(package private) org.apache.hadoop.fs.Path</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterWalManager.html#getOldLogDir--">getOldLogDir</a></span>()</code>
<div class="block">Get the directory where old logs go</div>
</td>
</tr>
-<tr id="i5" class="rowColor">
+<tr id="i6" class="altColor">
<td class="colFirst"><code>(package private) <a href="../../../../../org/apache/hadoop/hbase/master/SplitLogManager.html" title="class in org.apache.hadoop.hbase.master">SplitLogManager</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterWalManager.html#getSplitLogManager--">getSplitLogManager</a></span>()</code> </td>
</tr>
-<tr id="i6" class="altColor">
+<tr id="i7" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterWalManager.html#splitLog-org.apache.hadoop.hbase.ServerName-">splitLog</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName)</code> </td>
</tr>
-<tr id="i7" class="rowColor">
+<tr id="i8" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterWalManager.html#splitLog-java.util.Set-">splitLog</a></span>(<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><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>> serverNames)</code> </td>
</tr>
-<tr id="i8" class="altColor">
+<tr id="i9" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterWalManager.html#splitLog-java.util.Set-org.apache.hadoop.fs.PathFilter-">splitLog</a></span>(<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><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>> serverNames,
org.apache.hadoop.fs.PathFilter filter)</code>
<div class="block">This method is the base split method that splits WAL files matching a filter.</div>
</td>
</tr>
-<tr id="i9" class="rowColor">
+<tr id="i10" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterWalManager.html#splitMetaLog-org.apache.hadoop.hbase.ServerName-">splitMetaLog</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName)</code>
<div class="block">Specialized method to handle the splitting for meta WAL</div>
</td>
</tr>
-<tr id="i10" class="altColor">
+<tr id="i11" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterWalManager.html#splitMetaLog-java.util.Set-">splitMetaLog</a></span>(<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><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>> serverNames)</code>
<div class="block">Specialized method to handle the splitting for meta WAL</div>
</td>
</tr>
-<tr id="i11" class="rowColor">
+<tr id="i12" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterWalManager.html#stop--">stop</a></span>()</code> </td>
</tr>
@@ -307,7 +316,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 org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterWalManager.html#line.52">LOG</a></pre>
+<pre>private static final org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterWalManager.html#line.53">LOG</a></pre>
</li>
</ul>
<a name="META_FILTER">
@@ -316,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>META_FILTER</h4>
-<pre>static final org.apache.hadoop.fs.PathFilter <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterWalManager.html#line.54">META_FILTER</a></pre>
+<pre>static final org.apache.hadoop.fs.PathFilter <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterWalManager.html#line.55">META_FILTER</a></pre>
</li>
</ul>
<a name="NON_META_FILTER">
@@ -325,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>NON_META_FILTER</h4>
-<pre>static final org.apache.hadoop.fs.PathFilter <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterWalManager.html#line.61">NON_META_FILTER</a></pre>
+<pre>static final org.apache.hadoop.fs.PathFilter <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterWalManager.html#line.62">NON_META_FILTER</a></pre>
</li>
</ul>
<a name="metricsMasterFilesystem">
@@ -334,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>metricsMasterFilesystem</h4>
-<pre>private final <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterFileSystem.html" title="class in org.apache.hadoop.hbase.master">MetricsMasterFileSystem</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterWalManager.html#line.70">metricsMasterFilesystem</a></pre>
+<pre>private final <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterFileSystem.html" title="class in org.apache.hadoop.hbase.master">MetricsMasterFileSystem</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterWalManager.html#line.71">metricsMasterFilesystem</a></pre>
</li>
</ul>
<a name="services">
@@ -343,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>services</h4>
-<pre>private final <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices.html" title="interface in org.apache.hadoop.hbase.master">MasterServices</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterWalManager.html#line.73">services</a></pre>
+<pre>private final <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices.html" title="interface in org.apache.hadoop.hbase.master">MasterServices</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterWalManager.html#line.74">services</a></pre>
</li>
</ul>
<a name="conf">
@@ -352,7 +361,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 org.apache.hadoop.conf.Configuration <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterWalManager.html#line.74">conf</a></pre>
+<pre>private final org.apache.hadoop.conf.Configuration <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterWalManager.html#line.75">conf</a></pre>
</li>
</ul>
<a name="fs">
@@ -361,7 +370,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 org.apache.hadoop.fs.FileSystem <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterWalManager.html#line.75">fs</a></pre>
+<pre>private final org.apache.hadoop.fs.FileSystem <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterWalManager.html#line.76">fs</a></pre>
</li>
</ul>
<a name="oldLogDir">
@@ -370,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>oldLogDir</h4>
-<pre>private final org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterWalManager.html#line.78">oldLogDir</a></pre>
+<pre>private final org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterWalManager.html#line.79">oldLogDir</a></pre>
</li>
</ul>
<a name="rootDir">
@@ -379,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>rootDir</h4>
-<pre>private final org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterWalManager.html#line.79">rootDir</a></pre>
+<pre>private final org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterWalManager.html#line.80">rootDir</a></pre>
</li>
</ul>
<a name="splitLogLock">
@@ -388,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>splitLogLock</h4>
-<pre>private final <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/Lock.html?is-external=true" title="class or interface in java.util.concurrent.locks">Lock</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterWalManager.html#line.82">splitLogLock</a></pre>
+<pre>private final <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/Lock.html?is-external=true" title="class or interface in java.util.concurrent.locks">Lock</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterWalManager.html#line.83">splitLogLock</a></pre>
</li>
</ul>
<a name="splitLogManager">
@@ -397,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>splitLogManager</h4>
-<pre>private final <a href="../../../../../org/apache/hadoop/hbase/master/SplitLogManager.html" title="class in org.apache.hadoop.hbase.master">SplitLogManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterWalManager.html#line.83">splitLogManager</a></pre>
+<pre>private final <a href="../../../../../org/apache/hadoop/hbase/master/SplitLogManager.html" title="class in org.apache.hadoop.hbase.master">SplitLogManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterWalManager.html#line.84">splitLogManager</a></pre>
</li>
</ul>
<a name="fsOk">
@@ -406,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>fsOk</h4>
-<pre>private volatile boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterWalManager.html#line.86">fsOk</a></pre>
+<pre>private volatile boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterWalManager.html#line.87">fsOk</a></pre>
</li>
</ul>
</li>
@@ -423,7 +432,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>MasterWalManager</h4>
-<pre>public <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterWalManager.html#line.88">MasterWalManager</a>(<a href="../../../../../org/apache/hadoop/hbase/master/MasterServices.html" title="interface in org.apache.hadoop.hbase.master">MasterServices</a> services)
+<pre>public <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterWalManager.html#line.89">MasterWalManager</a>(<a href="../../../../../org/apache/hadoop/hbase/master/MasterServices.html" title="interface in org.apache.hadoop.hbase.master">MasterServices</a> services)
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>
@@ -437,7 +446,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockListLast">
<li class="blockList">
<h4>MasterWalManager</h4>
-<pre>public <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterWalManager.html#line.93">MasterWalManager</a>(org.apache.hadoop.conf.Configuration conf,
+<pre>public <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterWalManager.html#line.94">MasterWalManager</a>(org.apache.hadoop.conf.Configuration conf,
org.apache.hadoop.fs.FileSystem fs,
org.apache.hadoop.fs.Path rootDir,
<a href="../../../../../org/apache/hadoop/hbase/master/MasterServices.html" title="interface in org.apache.hadoop.hbase.master">MasterServices</a> services)
@@ -462,7 +471,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>stop</h4>
-<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterWalManager.html#line.104">stop</a>()</pre>
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterWalManager.html#line.105">stop</a>()</pre>
</li>
</ul>
<a name="getSplitLogManager--">
@@ -471,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>getSplitLogManager</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/master/SplitLogManager.html" title="class in org.apache.hadoop.hbase.master">SplitLogManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterWalManager.html#line.111">getSplitLogManager</a>()</pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/master/SplitLogManager.html" title="class in org.apache.hadoop.hbase.master">SplitLogManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterWalManager.html#line.112">getSplitLogManager</a>()</pre>
</li>
</ul>
<a name="getOldLogDir--">
@@ -480,7 +489,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>getOldLogDir</h4>
-<pre>org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterWalManager.html#line.119">getOldLogDir</a>()</pre>
+<pre>org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterWalManager.html#line.120">getOldLogDir</a>()</pre>
<div class="block">Get the directory where old logs go</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
@@ -494,7 +503,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>getFileSystem</h4>
-<pre>public org.apache.hadoop.fs.FileSystem <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterWalManager.html#line.123">getFileSystem</a>()</pre>
+<pre>public org.apache.hadoop.fs.FileSystem <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterWalManager.html#line.124">getFileSystem</a>()</pre>
</li>
</ul>
<a name="checkFileSystem--">
@@ -503,7 +512,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>checkFileSystem</h4>
-<pre>private boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterWalManager.html#line.132">checkFileSystem</a>()</pre>
+<pre>private boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterWalManager.html#line.133">checkFileSystem</a>()</pre>
<div class="block">Checks to see if the file system is still accessible.
If not, sets closed</div>
<dl>
@@ -512,13 +521,32 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
</dl>
</li>
</ul>
+<a name="getLiveServersFromWALDir--">
+<!-- -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getLiveServersFromWALDir</h4>
+<pre>public <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><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterWalManager.html#line.146">getLiveServersFromWALDir</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>
+<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="getFailedServersFromLogFolders--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getFailedServersFromLogFolders</h4>
-<pre>public <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><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterWalManager.html#line.149">getFailedServersFromLogFolders</a>()</pre>
+<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 <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><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterWalManager.html#line.174">getFailedServersFromLogFolders</a>()</pre>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> <span class="deprecationComment">With proc-v2, we can record the crash server with procedure store, so do not need
+ to scan the wal directory to find out the splitting wal directory any more. Leave
+ it here only because <code>RecoverMetaProcedure</code>(which is also deprecated) uses
+ it.</span></div>
<div class="block">Inspect the log directory to find dead servers which need recovery work</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
@@ -532,7 +560,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>splitLog</h4>
-<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterWalManager.html#line.215">splitLog</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName)
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterWalManager.html#line.240">splitLog</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName)
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>
@@ -546,7 +574,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>splitMetaLog</h4>
-<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterWalManager.html#line.223">splitMetaLog</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName)
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterWalManager.html#line.248">splitMetaLog</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName)
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">Specialized method to handle the splitting for meta WAL</div>
<dl>
@@ -563,7 +591,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>splitMetaLog</h4>
-<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterWalManager.html#line.231">splitMetaLog</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><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>> serverNames)
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterWalManager.html#line.256">splitMetaLog</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><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>> serverNames)
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">Specialized method to handle the splitting for meta WAL</div>
<dl>
@@ -580,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>getLogDirs</h4>
-<pre>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><org.apache.hadoop.fs.Path> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterWalManager.html#line.238">getLogDirs</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><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>> serverNames)
+<pre>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><org.apache.hadoop.fs.Path> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterWalManager.html#line.263">getLogDirs</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><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>> serverNames)
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>
@@ -594,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>splitLog</h4>
-<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterWalManager.html#line.277">splitLog</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><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>> serverNames)
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterWalManager.html#line.303">splitLog</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><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>> serverNames)
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 +636,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockListLast">
<li class="blockList">
<h4>splitLog</h4>
-<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterWalManager.html#line.287">splitLog</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><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>> serverNames,
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterWalManager.html#line.313">splitLog</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><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>> serverNames,
org.apache.hadoop.fs.PathFilter filter)
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">This method is the base split method that splits WAL files matching a filter. Callers should
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/master/RegionServerTracker.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/RegionServerTracker.html b/devapidocs/org/apache/hadoop/hbase/master/RegionServerTracker.html
index ca12692..6b8d078 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/RegionServerTracker.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/RegionServerTracker.html
@@ -115,21 +115,17 @@ var activeTableTab = "activeTableTab";
<hr>
<br>
<pre>@InterfaceAudience.Private
-public class <a href="../../../../../src-html/org/apache/hadoop/hbase/master/RegionServerTracker.html#line.64">RegionServerTracker</a>
+public class <a href="../../../../../src-html/org/apache/hadoop/hbase/master/RegionServerTracker.html#line.60">RegionServerTracker</a>
extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKListener</a></pre>
-<div class="block"><p>
- Tracks the online region servers via ZK.
- </p>
- <p>
+<div class="block">Tracks the online region servers via ZK.
+ <p/>
Handling of new RSs checking in is done via RPC. This class is only responsible for watching for
expired nodes. It handles listening for changes in the RS node list. The only exception is when
master restart, we will use the list fetched from zk to construct the initial set of live region
servers.
- </p>
- <p>
+ <p/>
If an RS node gets deleted, this automatically handles calling of
- <a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#expireServer-org.apache.hadoop.hbase.ServerName-"><code>ServerManager.expireServer(ServerName)</code></a>
- </p></div>
+ <a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#expireServer-org.apache.hadoop.hbase.ServerName-"><code>ServerManager.expireServer(ServerName)</code></a></div>
</li>
</ul>
</div>
@@ -225,9 +221,9 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.htm
</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/master/RegionServerTracker.html#start--">start</a></span>()</code>
-<div class="block">
- Starts the tracking of online RegionServers.</div>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/RegionServerTracker.html#start-java.util.Set-java.util.Set-">start</a></span>(<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><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>> deadServersFromPE,
+ <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><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>> liveServersFromWALDir)</code>
+<div class="block">Starts the tracking of online RegionServers.</div>
</td>
</tr>
<tr id="i4" class="altColor">
@@ -269,7 +265,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.htm
<ul class="blockList">
<li class="blockList">
<h4>LOG</h4>
-<pre>private static final org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/master/RegionServerTracker.html#line.65">LOG</a></pre>
+<pre>private static final org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/master/RegionServerTracker.html#line.61">LOG</a></pre>
</li>
</ul>
<a name="regionServers">
@@ -278,7 +274,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.htm
<ul class="blockList">
<li class="blockList">
<h4>regionServers</h4>
-<pre>private final <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><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/RegionServerTracker.html#line.66">regionServers</a></pre>
+<pre>private final <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><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/RegionServerTracker.html#line.62">regionServers</a></pre>
</li>
</ul>
<a name="serverManager">
@@ -287,7 +283,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.htm
<ul class="blockList">
<li class="blockList">
<h4>serverManager</h4>
-<pre>private final <a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/RegionServerTracker.html#line.67">serverManager</a></pre>
+<pre>private final <a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/RegionServerTracker.html#line.63">serverManager</a></pre>
</li>
</ul>
<a name="server">
@@ -296,7 +292,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.htm
<ul class="blockList">
<li class="blockList">
<h4>server</h4>
-<pre>private final <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices.html" title="interface in org.apache.hadoop.hbase.master">MasterServices</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/RegionServerTracker.html#line.68">server</a></pre>
+<pre>private final <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices.html" title="interface in org.apache.hadoop.hbase.master">MasterServices</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/RegionServerTracker.html#line.64">server</a></pre>
</li>
</ul>
<a name="executor">
@@ -305,7 +301,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.htm
<ul class="blockListLast">
<li class="blockList">
<h4>executor</h4>
-<pre>private final <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ExecutorService.html?is-external=true" title="class or interface in java.util.concurrent">ExecutorService</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/RegionServerTracker.html#line.72">executor</a></pre>
+<pre>private final <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ExecutorService.html?is-external=true" title="class or interface in java.util.concurrent">ExecutorService</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/RegionServerTracker.html#line.68">executor</a></pre>
</li>
</ul>
</li>
@@ -322,7 +318,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.htm
<ul class="blockListLast">
<li class="blockList">
<h4>RegionServerTracker</h4>
-<pre>public <a href="../../../../../src-html/org/apache/hadoop/hbase/master/RegionServerTracker.html#line.74">RegionServerTracker</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a> watcher,
+<pre>public <a href="../../../../../src-html/org/apache/hadoop/hbase/master/RegionServerTracker.html#line.70">RegionServerTracker</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a> watcher,
<a href="../../../../../org/apache/hadoop/hbase/master/MasterServices.html" title="interface in org.apache.hadoop.hbase.master">MasterServices</a> server,
<a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a> serverManager)</pre>
</li>
@@ -341,7 +337,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.htm
<ul class="blockList">
<li class="blockList">
<h4>getServerInfo</h4>
-<pre>private <a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>,org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.RegionServerInfo> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/RegionServerTracker.html#line.83">getServerInfo</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> name)
+<pre>private <a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>,org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.RegionServerInfo> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/RegionServerTracker.html#line.79">getServerInfo</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> name)
throws org.apache.zookeeper.KeeperException,
<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>
@@ -351,22 +347,28 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.htm
</dl>
</li>
</ul>
-<a name="start--">
+<a name="start-java.util.Set-java.util.Set-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>start</h4>
-<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/master/RegionServerTracker.html#line.119">start</a>()
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/master/RegionServerTracker.html#line.119">start</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><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>> deadServersFromPE,
+ <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><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>> liveServersFromWALDir)
throws org.apache.zookeeper.KeeperException,
<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"><p>
- Starts the tracking of online RegionServers.
- </p>
- <p>
- All RSs will be tracked after this method is called.
- </p></div>
+<div class="block">Starts the tracking of online RegionServers. All RSes will be tracked after this method is
+ called.
+ <p/>
+ In this method, we will also construct the region server sets in <a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master"><code>ServerManager</code></a>. If a
+ region server is dead between the crash of the previous master instance and the start of the
+ current master instance, we will schedule a SCP for it. This is done in
+ <a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#findOutDeadServersAndProcess-java.util.Set-java.util.Set-"><code>ServerManager.findOutDeadServersAndProcess(Set, Set)</code></a>, we call it here under the lock
+ protection to prevent concurrency issues with server expiration operation.</div>
<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>deadServersFromPE</code> - the region servers which already have SCP associated.</dd>
+<dd><code>liveServersFromWALDir</code> - the live region servers from wal directory.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>org.apache.zookeeper.KeeperException</code></dd>
<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>
@@ -379,7 +381,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.htm
<ul class="blockList">
<li class="blockList">
<h4>stop</h4>
-<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/master/RegionServerTracker.html#line.138">stop</a>()</pre>
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/master/RegionServerTracker.html#line.140">stop</a>()</pre>
</li>
</ul>
<a name="refresh--">
@@ -388,7 +390,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.htm
<ul class="blockList">
<li class="blockList">
<h4>refresh</h4>
-<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/master/RegionServerTracker.html#line.142">refresh</a>()</pre>
+<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/master/RegionServerTracker.html#line.144">refresh</a>()</pre>
</li>
</ul>
<a name="nodeChildrenChanged-java.lang.String-">
@@ -397,7 +399,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.htm
<ul class="blockListLast">
<li class="blockList">
<h4>nodeChildrenChanged</h4>
-<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/master/RegionServerTracker.html#line.179">nodeChildrenChanged</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> path)</pre>
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/master/RegionServerTracker.html#line.181">nodeChildrenChanged</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> path)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class: <code><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.html#nodeChildrenChanged-java.lang.String-">ZKListener</a></code></span></div>
<div class="block">Called when an existing node has a child node added or removed.</div>
<dl>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/master/ServerManager.FlushedSequenceIdFlusher.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/ServerManager.FlushedSequenceIdFlusher.html b/devapidocs/org/apache/hadoop/hbase/master/ServerManager.FlushedSequenceIdFlusher.html
new file mode 100644
index 0000000..fee2f1c
--- /dev/null
+++ b/devapidocs/org/apache/hadoop/hbase/master/ServerManager.FlushedSequenceIdFlusher.html
@@ -0,0 +1,302 @@
+<!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>ServerManager.FlushedSequenceIdFlusher (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="ServerManager.FlushedSequenceIdFlusher (Apache HBase 3.0.0-SNAPSHOT API)";
+ }
+ }
+ catch(err) {
+ }
+//-->
+var methods = {"i0":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/ServerManager.FlushedSequenceIdFlusher.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/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master"><span class="typeNameLink">Prev Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/master/SnapshotOfRegionAssignmentFromMeta.html" title="class in org.apache.hadoop.hbase.master"><span class="typeNameLink">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/master/ServerManager.FlushedSequenceIdFlusher.html" target="_top">Frames</a></li>
+<li><a href="ServerManager.FlushedSequenceIdFlusher.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All 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: </li>
+<li>Nested | </li>
+<li>Field | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li>Field | </li>
+<li><a href="#constructor.detail">Constr</a> | </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.master</div>
+<h2 title="Class ServerManager.FlushedSequenceIdFlusher" class="title">Class ServerManager.FlushedSequenceIdFlusher</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/ScheduledChore.html" title="class in org.apache.hadoop.hbase">org.apache.hadoop.hbase.ScheduledChore</a></li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.master.ServerManager.FlushedSequenceIdFlusher</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>All Implemented Interfaces:</dt>
+<dd><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></dd>
+</dl>
+<dl>
+<dt>Enclosing class:</dt>
+<dd><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a></dd>
+</dl>
+<hr>
+<br>
+<pre>private class <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.1156">ServerManager.FlushedSequenceIdFlusher</a>
+extends <a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase">ScheduledChore</a></pre>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ======== 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"> </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/master/ServerManager.FlushedSequenceIdFlusher.html#FlushedSequenceIdFlusher-java.lang.String-int-">FlushedSequenceIdFlusher</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> name,
+ int p)</code> </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"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </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>protected void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.FlushedSequenceIdFlusher.html#chore--">chore</a></span>()</code>
+<div class="block">The task to execute on each scheduled execution of the Chore</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.ScheduledChore">
+<!-- -->
+</a>
+<h3>Methods inherited from class org.apache.hadoop.hbase.<a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase">ScheduledChore</a></h3>
+<code><a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html#cancel--">cancel</a>, <a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html#cancel-boolean-">cancel</a>, <a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html#choreForTesting--">choreForTesting</a>, <a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html#cleanup--">cleanup</a>, <a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html#getInitialDelay--">getInitialDelay</a>, <a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html#getName--">getName</a>, <a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html#getPeriod--">getPeriod</a>, <a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html#getStopper--">getStopper</a>, <a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html#getTimeUnit--">getTimeUnit</a>, <a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html#initialChore--">initialChore</a>, <a href=
"../../../../../org/apache/hadoop/hbase/ScheduledChore.html#isInitialChoreComplete--">isInitialChoreComplete</a>, <a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html#isScheduled--">isScheduled</a>, <a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html#run--">run</a>, <a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html#toString--">toString</a>, <a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html#triggerNow--">triggerNow</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 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#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">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!-- -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="FlushedSequenceIdFlusher-java.lang.String-int-">
+<!-- -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>FlushedSequenceIdFlusher</h4>
+<pre>public <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.FlushedSequenceIdFlusher.html#line.1158">FlushedSequenceIdFlusher</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> name,
+ int p)</pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!-- -->
+</a>
+<h3>Method Detail</h3>
+<a name="chore--">
+<!-- -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>chore</h4>
+<pre>protected void <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.FlushedSequenceIdFlusher.html#line.1163">chore</a>()</pre>
+<div class="block"><span class="descfrmTypeLabel">Description copied from class: <code><a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html#chore--">ScheduledChore</a></code></span></div>
+<div class="block">The task to execute on each scheduled execution of the Chore</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html#chore--">chore</a></code> in class <code><a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase">ScheduledChore</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/ServerManager.FlushedSequenceIdFlusher.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/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master"><span class="typeNameLink">Prev Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/master/SnapshotOfRegionAssignmentFromMeta.html" title="class in org.apache.hadoop.hbase.master"><span class="typeNameLink">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/master/ServerManager.FlushedSequenceIdFlusher.html" target="_top">Frames</a></li>
+<li><a href="ServerManager.FlushedSequenceIdFlusher.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All 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: </li>
+<li>Nested | </li>
+<li>Field | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li>Field | </li>
+<li><a href="#constructor.detail">Constr</a> | </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 © 2007–2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>
[04/51] [partial] hbase-site git commit: Published site at
9101fc246f86445006bfbcdfda5cc495016dc280.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionStat.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionStat.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionStat.html
index 4b5d00c..96ecbf8 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionStat.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionStat.html
@@ -6,7 +6,7 @@
</head>
<body>
<div class="sourceContainer">
-<pre><span class="sourceLineNo">001</span>/*<a name="line.1"></a>
+<pre><span class="sourceLineNo">001</span>/**<a name="line.1"></a>
<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
<span class="sourceLineNo">003</span> * or more contributor license agreements. See the NOTICE file<a name="line.3"></a>
<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
@@ -23,1981 +23,1894 @@
<span class="sourceLineNo">015</span> * See the License for the specific language governing permissions and<a name="line.15"></a>
<span class="sourceLineNo">016</span> * limitations under the License.<a name="line.16"></a>
<span class="sourceLineNo">017</span> */<a name="line.17"></a>
-<span class="sourceLineNo">018</span><a name="line.18"></a>
-<span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.master.assignment;<a name="line.19"></a>
-<span class="sourceLineNo">020</span><a name="line.20"></a>
-<span class="sourceLineNo">021</span>import java.io.IOException;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import java.util.ArrayList;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import java.util.Arrays;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import java.util.Collection;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import java.util.Collections;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import java.util.HashMap;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import java.util.HashSet;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import java.util.List;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import java.util.Map;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import java.util.Set;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import java.util.concurrent.CopyOnWriteArrayList;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import java.util.concurrent.Future;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import java.util.concurrent.TimeUnit;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import java.util.concurrent.locks.Condition;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import java.util.concurrent.locks.ReentrantLock;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import java.util.stream.Collectors;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.conf.Configuration;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.HBaseIOException;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.HConstants;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.PleaseHoldException;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.RegionException;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.RegionStateListener;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.ServerName;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.TableName;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.YouAreDeadException;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.client.RegionInfoBuilder;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.client.RegionReplicaUtil;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.client.Result;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.client.TableState;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.exceptions.UnexpectedStateException;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.favored.FavoredNodesManager;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.favored.FavoredNodesPromoter;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.master.AssignmentListener;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.master.LoadBalancer;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.master.MasterServices;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.master.MetricsAssignmentManager;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.master.NoSuchProcedureException;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.master.RegionPlan;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.master.RegionState;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.master.RegionState.State;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.master.ServerListener;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.master.TableStateManager;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.master.assignment.RegionStates.RegionStateNode;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.master.assignment.RegionStates.ServerState;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.master.assignment.RegionStates.ServerStateNode;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.master.balancer.FavoredStochasticBalancer;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizer;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureScheduler;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.master.procedure.ProcedureSyncWait;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.master.procedure.ServerCrashException;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.master.procedure.ServerCrashProcedure;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.procedure2.Procedure;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.procedure2.ProcedureEvent;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.procedure2.ProcedureExecutor;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.procedure2.ProcedureInMemoryChore;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.procedure2.util.StringUtils;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.regionserver.SequenceId;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.util.HasThread;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.util.VersionInfo;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.slf4j.Logger;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.slf4j.LoggerFactory;<a name="line.89"></a>
-<span class="sourceLineNo">090</span><a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.91"></a>
-<span class="sourceLineNo">092</span><a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RegionTransitionState;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionStateTransition;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionStateTransition.TransitionCode;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.ReportRegionStateTransitionRequest;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.ReportRegionStateTransitionResponse;<a name="line.98"></a>
-<span class="sourceLineNo">099</span><a name="line.99"></a>
-<span class="sourceLineNo">100</span>/**<a name="line.100"></a>
-<span class="sourceLineNo">101</span> * The AssignmentManager is the coordinator for region assign/unassign operations.<a name="line.101"></a>
-<span class="sourceLineNo">102</span> * <ul><a name="line.102"></a>
-<span class="sourceLineNo">103</span> * <li>In-memory states of regions and servers are stored in {@link RegionStates}.</li><a name="line.103"></a>
-<span class="sourceLineNo">104</span> * <li>hbase:meta state updates are handled by {@link RegionStateStore}.</li><a name="line.104"></a>
-<span class="sourceLineNo">105</span> * </ul><a name="line.105"></a>
-<span class="sourceLineNo">106</span> * Regions are created by CreateTable, Split, Merge.<a name="line.106"></a>
-<span class="sourceLineNo">107</span> * Regions are deleted by DeleteTable, Split, Merge.<a name="line.107"></a>
-<span class="sourceLineNo">108</span> * Assigns are triggered by CreateTable, EnableTable, Split, Merge, ServerCrash.<a name="line.108"></a>
-<span class="sourceLineNo">109</span> * Unassigns are triggered by DisableTable, Split, Merge<a name="line.109"></a>
-<span class="sourceLineNo">110</span> */<a name="line.110"></a>
-<span class="sourceLineNo">111</span>@InterfaceAudience.Private<a name="line.111"></a>
-<span class="sourceLineNo">112</span>public class AssignmentManager implements ServerListener {<a name="line.112"></a>
-<span class="sourceLineNo">113</span> private static final Logger LOG = LoggerFactory.getLogger(AssignmentManager.class);<a name="line.113"></a>
-<span class="sourceLineNo">114</span><a name="line.114"></a>
-<span class="sourceLineNo">115</span> // TODO: AMv2<a name="line.115"></a>
-<span class="sourceLineNo">116</span> // - handle region migration from hbase1 to hbase2.<a name="line.116"></a>
-<span class="sourceLineNo">117</span> // - handle sys table assignment first (e.g. acl, namespace)<a name="line.117"></a>
-<span class="sourceLineNo">118</span> // - handle table priorities<a name="line.118"></a>
-<span class="sourceLineNo">119</span> // - If ServerBusyException trying to update hbase:meta, we abort the Master<a name="line.119"></a>
-<span class="sourceLineNo">120</span> // See updateRegionLocation in RegionStateStore.<a name="line.120"></a>
-<span class="sourceLineNo">121</span> //<a name="line.121"></a>
-<span class="sourceLineNo">122</span> // See also<a name="line.122"></a>
-<span class="sourceLineNo">123</span> // https://docs.google.com/document/d/1eVKa7FHdeoJ1-9o8yZcOTAQbv0u0bblBlCCzVSIn69g/edit#heading=h.ystjyrkbtoq5<a name="line.123"></a>
-<span class="sourceLineNo">124</span> // for other TODOs.<a name="line.124"></a>
-<span class="sourceLineNo">125</span><a name="line.125"></a>
-<span class="sourceLineNo">126</span> public static final String BOOTSTRAP_THREAD_POOL_SIZE_CONF_KEY =<a name="line.126"></a>
-<span class="sourceLineNo">127</span> "hbase.assignment.bootstrap.thread.pool.size";<a name="line.127"></a>
-<span class="sourceLineNo">128</span><a name="line.128"></a>
-<span class="sourceLineNo">129</span> public static final String ASSIGN_DISPATCH_WAIT_MSEC_CONF_KEY =<a name="line.129"></a>
-<span class="sourceLineNo">130</span> "hbase.assignment.dispatch.wait.msec";<a name="line.130"></a>
-<span class="sourceLineNo">131</span> private static final int DEFAULT_ASSIGN_DISPATCH_WAIT_MSEC = 150;<a name="line.131"></a>
-<span class="sourceLineNo">132</span><a name="line.132"></a>
-<span class="sourceLineNo">133</span> public static final String ASSIGN_DISPATCH_WAITQ_MAX_CONF_KEY =<a name="line.133"></a>
-<span class="sourceLineNo">134</span> "hbase.assignment.dispatch.wait.queue.max.size";<a name="line.134"></a>
-<span class="sourceLineNo">135</span> private static final int DEFAULT_ASSIGN_DISPATCH_WAITQ_MAX = 100;<a name="line.135"></a>
-<span class="sourceLineNo">136</span><a name="line.136"></a>
-<span class="sourceLineNo">137</span> public static final String RIT_CHORE_INTERVAL_MSEC_CONF_KEY =<a name="line.137"></a>
-<span class="sourceLineNo">138</span> "hbase.assignment.rit.chore.interval.msec";<a name="line.138"></a>
-<span class="sourceLineNo">139</span> private static final int DEFAULT_RIT_CHORE_INTERVAL_MSEC = 5 * 1000;<a name="line.139"></a>
-<span class="sourceLineNo">140</span><a name="line.140"></a>
-<span class="sourceLineNo">141</span> public static final String ASSIGN_MAX_ATTEMPTS =<a name="line.141"></a>
-<span class="sourceLineNo">142</span> "hbase.assignment.maximum.attempts";<a name="line.142"></a>
-<span class="sourceLineNo">143</span> private static final int DEFAULT_ASSIGN_MAX_ATTEMPTS = 10;<a name="line.143"></a>
-<span class="sourceLineNo">144</span><a name="line.144"></a>
-<span class="sourceLineNo">145</span> /** Region in Transition metrics threshold time */<a name="line.145"></a>
-<span class="sourceLineNo">146</span> public static final String METRICS_RIT_STUCK_WARNING_THRESHOLD =<a name="line.146"></a>
-<span class="sourceLineNo">147</span> "hbase.metrics.rit.stuck.warning.threshold";<a name="line.147"></a>
-<span class="sourceLineNo">148</span> private static final int DEFAULT_RIT_STUCK_WARNING_THRESHOLD = 60 * 1000;<a name="line.148"></a>
-<span class="sourceLineNo">149</span><a name="line.149"></a>
-<span class="sourceLineNo">150</span> private final ProcedureEvent<?> metaInitializedEvent = new ProcedureEvent<>("meta initialized");<a name="line.150"></a>
-<span class="sourceLineNo">151</span> private final ProcedureEvent<?> metaLoadEvent = new ProcedureEvent<>("meta load");<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> * Indicator that AssignmentManager has recovered the region states so<a name="line.154"></a>
-<span class="sourceLineNo">155</span> * that ServerCrashProcedure can be fully enabled and re-assign regions<a name="line.155"></a>
-<span class="sourceLineNo">156</span> * of dead servers. So that when re-assignment happens, AssignmentManager<a name="line.156"></a>
-<span class="sourceLineNo">157</span> * has proper region states.<a name="line.157"></a>
-<span class="sourceLineNo">158</span> */<a name="line.158"></a>
-<span class="sourceLineNo">159</span> private final ProcedureEvent<?> failoverCleanupDone = new ProcedureEvent<>("failover cleanup");<a name="line.159"></a>
-<span class="sourceLineNo">160</span><a name="line.160"></a>
-<span class="sourceLineNo">161</span> /** Listeners that are called on assignment events. */<a name="line.161"></a>
-<span class="sourceLineNo">162</span> private final CopyOnWriteArrayList<AssignmentListener> listeners =<a name="line.162"></a>
-<span class="sourceLineNo">163</span> new CopyOnWriteArrayList<AssignmentListener>();<a name="line.163"></a>
-<span class="sourceLineNo">164</span><a name="line.164"></a>
-<span class="sourceLineNo">165</span> // TODO: why is this different from the listeners (carried over from the old AM)<a name="line.165"></a>
-<span class="sourceLineNo">166</span> private RegionStateListener regionStateListener;<a name="line.166"></a>
-<span class="sourceLineNo">167</span><a name="line.167"></a>
-<span class="sourceLineNo">168</span> private RegionNormalizer regionNormalizer;<a name="line.168"></a>
-<span class="sourceLineNo">169</span><a name="line.169"></a>
-<span class="sourceLineNo">170</span> private final MetricsAssignmentManager metrics;<a name="line.170"></a>
-<span class="sourceLineNo">171</span> private final RegionInTransitionChore ritChore;<a name="line.171"></a>
-<span class="sourceLineNo">172</span> private final MasterServices master;<a name="line.172"></a>
-<span class="sourceLineNo">173</span><a name="line.173"></a>
-<span class="sourceLineNo">174</span> private final AtomicBoolean running = new AtomicBoolean(false);<a name="line.174"></a>
-<span class="sourceLineNo">175</span> private final RegionStates regionStates = new RegionStates();<a name="line.175"></a>
-<span class="sourceLineNo">176</span> private final RegionStateStore regionStateStore;<a name="line.176"></a>
-<span class="sourceLineNo">177</span><a name="line.177"></a>
-<span class="sourceLineNo">178</span> private final boolean shouldAssignRegionsWithFavoredNodes;<a name="line.178"></a>
-<span class="sourceLineNo">179</span> private final int assignDispatchWaitQueueMaxSize;<a name="line.179"></a>
-<span class="sourceLineNo">180</span> private final int assignDispatchWaitMillis;<a name="line.180"></a>
-<span class="sourceLineNo">181</span> private final int assignMaxAttempts;<a name="line.181"></a>
-<span class="sourceLineNo">182</span><a name="line.182"></a>
-<span class="sourceLineNo">183</span> private final Object checkIfShouldMoveSystemRegionLock = new Object();<a name="line.183"></a>
-<span class="sourceLineNo">184</span><a name="line.184"></a>
-<span class="sourceLineNo">185</span> private Thread assignThread;<a name="line.185"></a>
-<span class="sourceLineNo">186</span><a name="line.186"></a>
-<span class="sourceLineNo">187</span> public AssignmentManager(final MasterServices master) {<a name="line.187"></a>
-<span class="sourceLineNo">188</span> this(master, new RegionStateStore(master));<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> public AssignmentManager(final MasterServices master, final RegionStateStore stateStore) {<a name="line.191"></a>
-<span class="sourceLineNo">192</span> this.master = master;<a name="line.192"></a>
-<span class="sourceLineNo">193</span> this.regionStateStore = stateStore;<a name="line.193"></a>
-<span class="sourceLineNo">194</span> this.metrics = new MetricsAssignmentManager();<a name="line.194"></a>
+<span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.master.assignment;<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>import java.util.ArrayList;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import java.util.Arrays;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import java.util.Collection;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import java.util.Collections;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import java.util.HashMap;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import java.util.List;<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.Set;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import java.util.concurrent.CopyOnWriteArrayList;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import java.util.concurrent.Future;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import java.util.concurrent.TimeUnit;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import java.util.concurrent.locks.Condition;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import java.util.concurrent.locks.ReentrantLock;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import java.util.stream.Collectors;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.conf.Configuration;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.HBaseIOException;<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.PleaseHoldException;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.RegionException;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.ServerName;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.TableName;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.YouAreDeadException;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.client.RegionInfoBuilder;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.client.RegionReplicaUtil;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.client.Result;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.client.TableState;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.exceptions.UnexpectedStateException;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.favored.FavoredNodesManager;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.favored.FavoredNodesPromoter;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.master.AssignmentListener;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.master.LoadBalancer;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.master.MasterServices;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.master.MetricsAssignmentManager;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.master.NoSuchProcedureException;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.master.RegionPlan;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.master.RegionState;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.master.RegionState.State;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.master.ServerListener;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.master.TableStateManager;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.master.assignment.RegionStates.RegionStateNode;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.master.assignment.RegionStates.ServerState;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.master.assignment.RegionStates.ServerStateNode;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.master.balancer.FavoredStochasticBalancer;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureScheduler;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.master.procedure.ProcedureSyncWait;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.master.procedure.ServerCrashException;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.master.procedure.ServerCrashProcedure;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.procedure2.Procedure;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.procedure2.ProcedureEvent;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.procedure2.ProcedureExecutor;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.procedure2.ProcedureInMemoryChore;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.procedure2.util.StringUtils;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.regionserver.SequenceId;<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.HasThread;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.util.VersionInfo;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.zookeeper.MetaTableLocator;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.zookeeper.KeeperException;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.slf4j.Logger;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.slf4j.LoggerFactory;<a name="line.88"></a>
+<span class="sourceLineNo">089</span><a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.90"></a>
+<span class="sourceLineNo">091</span><a name="line.91"></a>
+<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RegionTransitionState;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionStateTransition;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionStateTransition.TransitionCode;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.ReportRegionStateTransitionRequest;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.ReportRegionStateTransitionResponse;<a name="line.97"></a>
+<span class="sourceLineNo">098</span><a name="line.98"></a>
+<span class="sourceLineNo">099</span>/**<a name="line.99"></a>
+<span class="sourceLineNo">100</span> * The AssignmentManager is the coordinator for region assign/unassign operations.<a name="line.100"></a>
+<span class="sourceLineNo">101</span> * <ul><a name="line.101"></a>
+<span class="sourceLineNo">102</span> * <li>In-memory states of regions and servers are stored in {@link RegionStates}.</li><a name="line.102"></a>
+<span class="sourceLineNo">103</span> * <li>hbase:meta state updates are handled by {@link RegionStateStore}.</li><a name="line.103"></a>
+<span class="sourceLineNo">104</span> * </ul><a name="line.104"></a>
+<span class="sourceLineNo">105</span> * Regions are created by CreateTable, Split, Merge.<a name="line.105"></a>
+<span class="sourceLineNo">106</span> * Regions are deleted by DeleteTable, Split, Merge.<a name="line.106"></a>
+<span class="sourceLineNo">107</span> * Assigns are triggered by CreateTable, EnableTable, Split, Merge, ServerCrash.<a name="line.107"></a>
+<span class="sourceLineNo">108</span> * Unassigns are triggered by DisableTable, Split, Merge<a name="line.108"></a>
+<span class="sourceLineNo">109</span> */<a name="line.109"></a>
+<span class="sourceLineNo">110</span>@InterfaceAudience.Private<a name="line.110"></a>
+<span class="sourceLineNo">111</span>public class AssignmentManager implements ServerListener {<a name="line.111"></a>
+<span class="sourceLineNo">112</span> private static final Logger LOG = LoggerFactory.getLogger(AssignmentManager.class);<a name="line.112"></a>
+<span class="sourceLineNo">113</span><a name="line.113"></a>
+<span class="sourceLineNo">114</span> // TODO: AMv2<a name="line.114"></a>
+<span class="sourceLineNo">115</span> // - handle region migration from hbase1 to hbase2.<a name="line.115"></a>
+<span class="sourceLineNo">116</span> // - handle sys table assignment first (e.g. acl, namespace)<a name="line.116"></a>
+<span class="sourceLineNo">117</span> // - handle table priorities<a name="line.117"></a>
+<span class="sourceLineNo">118</span> // - If ServerBusyException trying to update hbase:meta, we abort the Master<a name="line.118"></a>
+<span class="sourceLineNo">119</span> // See updateRegionLocation in RegionStateStore.<a name="line.119"></a>
+<span class="sourceLineNo">120</span> //<a name="line.120"></a>
+<span class="sourceLineNo">121</span> // See also<a name="line.121"></a>
+<span class="sourceLineNo">122</span> // https://docs.google.com/document/d/1eVKa7FHdeoJ1-9o8yZcOTAQbv0u0bblBlCCzVSIn69g/edit#heading=h.ystjyrkbtoq5<a name="line.122"></a>
+<span class="sourceLineNo">123</span> // for other TODOs.<a name="line.123"></a>
+<span class="sourceLineNo">124</span><a name="line.124"></a>
+<span class="sourceLineNo">125</span> public static final String BOOTSTRAP_THREAD_POOL_SIZE_CONF_KEY =<a name="line.125"></a>
+<span class="sourceLineNo">126</span> "hbase.assignment.bootstrap.thread.pool.size";<a name="line.126"></a>
+<span class="sourceLineNo">127</span><a name="line.127"></a>
+<span class="sourceLineNo">128</span> public static final String ASSIGN_DISPATCH_WAIT_MSEC_CONF_KEY =<a name="line.128"></a>
+<span class="sourceLineNo">129</span> "hbase.assignment.dispatch.wait.msec";<a name="line.129"></a>
+<span class="sourceLineNo">130</span> private static final int DEFAULT_ASSIGN_DISPATCH_WAIT_MSEC = 150;<a name="line.130"></a>
+<span class="sourceLineNo">131</span><a name="line.131"></a>
+<span class="sourceLineNo">132</span> public static final String ASSIGN_DISPATCH_WAITQ_MAX_CONF_KEY =<a name="line.132"></a>
+<span class="sourceLineNo">133</span> "hbase.assignment.dispatch.wait.queue.max.size";<a name="line.133"></a>
+<span class="sourceLineNo">134</span> private static final int DEFAULT_ASSIGN_DISPATCH_WAITQ_MAX = 100;<a name="line.134"></a>
+<span class="sourceLineNo">135</span><a name="line.135"></a>
+<span class="sourceLineNo">136</span> public static final String RIT_CHORE_INTERVAL_MSEC_CONF_KEY =<a name="line.136"></a>
+<span class="sourceLineNo">137</span> "hbase.assignment.rit.chore.interval.msec";<a name="line.137"></a>
+<span class="sourceLineNo">138</span> private static final int DEFAULT_RIT_CHORE_INTERVAL_MSEC = 60 * 1000;<a name="line.138"></a>
+<span class="sourceLineNo">139</span><a name="line.139"></a>
+<span class="sourceLineNo">140</span> public static final String ASSIGN_MAX_ATTEMPTS =<a name="line.140"></a>
+<span class="sourceLineNo">141</span> "hbase.assignment.maximum.attempts";<a name="line.141"></a>
+<span class="sourceLineNo">142</span> private static final int DEFAULT_ASSIGN_MAX_ATTEMPTS = 10;<a name="line.142"></a>
+<span class="sourceLineNo">143</span><a name="line.143"></a>
+<span class="sourceLineNo">144</span> /** Region in Transition metrics threshold time */<a name="line.144"></a>
+<span class="sourceLineNo">145</span> public static final String METRICS_RIT_STUCK_WARNING_THRESHOLD =<a name="line.145"></a>
+<span class="sourceLineNo">146</span> "hbase.metrics.rit.stuck.warning.threshold";<a name="line.146"></a>
+<span class="sourceLineNo">147</span> private static final int DEFAULT_RIT_STUCK_WARNING_THRESHOLD = 60 * 1000;<a name="line.147"></a>
+<span class="sourceLineNo">148</span><a name="line.148"></a>
+<span class="sourceLineNo">149</span> private final ProcedureEvent<?> metaAssignEvent = new ProcedureEvent<>("meta assign");<a name="line.149"></a>
+<span class="sourceLineNo">150</span> private final ProcedureEvent<?> metaLoadEvent = new ProcedureEvent<>("meta load");<a name="line.150"></a>
+<span class="sourceLineNo">151</span><a name="line.151"></a>
+<span class="sourceLineNo">152</span> /** Listeners that are called on assignment events. */<a name="line.152"></a>
+<span class="sourceLineNo">153</span> private final CopyOnWriteArrayList<AssignmentListener> listeners =<a name="line.153"></a>
+<span class="sourceLineNo">154</span> new CopyOnWriteArrayList<AssignmentListener>();<a name="line.154"></a>
+<span class="sourceLineNo">155</span><a name="line.155"></a>
+<span class="sourceLineNo">156</span> private final MetricsAssignmentManager metrics;<a name="line.156"></a>
+<span class="sourceLineNo">157</span> private final RegionInTransitionChore ritChore;<a name="line.157"></a>
+<span class="sourceLineNo">158</span> private final MasterServices master;<a name="line.158"></a>
+<span class="sourceLineNo">159</span><a name="line.159"></a>
+<span class="sourceLineNo">160</span> private final AtomicBoolean running = new AtomicBoolean(false);<a name="line.160"></a>
+<span class="sourceLineNo">161</span> private final RegionStates regionStates = new RegionStates();<a name="line.161"></a>
+<span class="sourceLineNo">162</span> private final RegionStateStore regionStateStore;<a name="line.162"></a>
+<span class="sourceLineNo">163</span><a name="line.163"></a>
+<span class="sourceLineNo">164</span> private final boolean shouldAssignRegionsWithFavoredNodes;<a name="line.164"></a>
+<span class="sourceLineNo">165</span> private final int assignDispatchWaitQueueMaxSize;<a name="line.165"></a>
+<span class="sourceLineNo">166</span> private final int assignDispatchWaitMillis;<a name="line.166"></a>
+<span class="sourceLineNo">167</span> private final int assignMaxAttempts;<a name="line.167"></a>
+<span class="sourceLineNo">168</span><a name="line.168"></a>
+<span class="sourceLineNo">169</span> private final Object checkIfShouldMoveSystemRegionLock = new Object();<a name="line.169"></a>
+<span class="sourceLineNo">170</span><a name="line.170"></a>
+<span class="sourceLineNo">171</span> private Thread assignThread;<a name="line.171"></a>
+<span class="sourceLineNo">172</span><a name="line.172"></a>
+<span class="sourceLineNo">173</span> public AssignmentManager(final MasterServices master) {<a name="line.173"></a>
+<span class="sourceLineNo">174</span> this(master, new RegionStateStore(master));<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> public AssignmentManager(final MasterServices master, final RegionStateStore stateStore) {<a name="line.177"></a>
+<span class="sourceLineNo">178</span> this.master = master;<a name="line.178"></a>
+<span class="sourceLineNo">179</span> this.regionStateStore = stateStore;<a name="line.179"></a>
+<span class="sourceLineNo">180</span> this.metrics = new MetricsAssignmentManager();<a name="line.180"></a>
+<span class="sourceLineNo">181</span><a name="line.181"></a>
+<span class="sourceLineNo">182</span> final Configuration conf = master.getConfiguration();<a name="line.182"></a>
+<span class="sourceLineNo">183</span><a name="line.183"></a>
+<span class="sourceLineNo">184</span> // Only read favored nodes if using the favored nodes load balancer.<a name="line.184"></a>
+<span class="sourceLineNo">185</span> this.shouldAssignRegionsWithFavoredNodes = FavoredStochasticBalancer.class.isAssignableFrom(<a name="line.185"></a>
+<span class="sourceLineNo">186</span> conf.getClass(HConstants.HBASE_MASTER_LOADBALANCER_CLASS, Object.class));<a name="line.186"></a>
+<span class="sourceLineNo">187</span><a name="line.187"></a>
+<span class="sourceLineNo">188</span> this.assignDispatchWaitMillis = conf.getInt(ASSIGN_DISPATCH_WAIT_MSEC_CONF_KEY,<a name="line.188"></a>
+<span class="sourceLineNo">189</span> DEFAULT_ASSIGN_DISPATCH_WAIT_MSEC);<a name="line.189"></a>
+<span class="sourceLineNo">190</span> this.assignDispatchWaitQueueMaxSize = conf.getInt(ASSIGN_DISPATCH_WAITQ_MAX_CONF_KEY,<a name="line.190"></a>
+<span class="sourceLineNo">191</span> DEFAULT_ASSIGN_DISPATCH_WAITQ_MAX);<a name="line.191"></a>
+<span class="sourceLineNo">192</span><a name="line.192"></a>
+<span class="sourceLineNo">193</span> this.assignMaxAttempts = Math.max(1, conf.getInt(ASSIGN_MAX_ATTEMPTS,<a name="line.193"></a>
+<span class="sourceLineNo">194</span> DEFAULT_ASSIGN_MAX_ATTEMPTS));<a name="line.194"></a>
<span class="sourceLineNo">195</span><a name="line.195"></a>
-<span class="sourceLineNo">196</span> final Configuration conf = master.getConfiguration();<a name="line.196"></a>
-<span class="sourceLineNo">197</span><a name="line.197"></a>
-<span class="sourceLineNo">198</span> // Only read favored nodes if using the favored nodes load balancer.<a name="line.198"></a>
-<span class="sourceLineNo">199</span> this.shouldAssignRegionsWithFavoredNodes = FavoredStochasticBalancer.class.isAssignableFrom(<a name="line.199"></a>
-<span class="sourceLineNo">200</span> conf.getClass(HConstants.HBASE_MASTER_LOADBALANCER_CLASS, Object.class));<a name="line.200"></a>
-<span class="sourceLineNo">201</span><a name="line.201"></a>
-<span class="sourceLineNo">202</span> this.assignDispatchWaitMillis = conf.getInt(ASSIGN_DISPATCH_WAIT_MSEC_CONF_KEY,<a name="line.202"></a>
-<span class="sourceLineNo">203</span> DEFAULT_ASSIGN_DISPATCH_WAIT_MSEC);<a name="line.203"></a>
-<span class="sourceLineNo">204</span> this.assignDispatchWaitQueueMaxSize = conf.getInt(ASSIGN_DISPATCH_WAITQ_MAX_CONF_KEY,<a name="line.204"></a>
-<span class="sourceLineNo">205</span> DEFAULT_ASSIGN_DISPATCH_WAITQ_MAX);<a name="line.205"></a>
-<span class="sourceLineNo">206</span><a name="line.206"></a>
-<span class="sourceLineNo">207</span> this.assignMaxAttempts = Math.max(1, conf.getInt(ASSIGN_MAX_ATTEMPTS,<a name="line.207"></a>
-<span class="sourceLineNo">208</span> DEFAULT_ASSIGN_MAX_ATTEMPTS));<a name="line.208"></a>
-<span class="sourceLineNo">209</span><a name="line.209"></a>
-<span class="sourceLineNo">210</span> int ritChoreInterval = conf.getInt(RIT_CHORE_INTERVAL_MSEC_CONF_KEY,<a name="line.210"></a>
-<span class="sourceLineNo">211</span> DEFAULT_RIT_CHORE_INTERVAL_MSEC);<a name="line.211"></a>
-<span class="sourceLineNo">212</span> this.ritChore = new RegionInTransitionChore(ritChoreInterval);<a name="line.212"></a>
+<span class="sourceLineNo">196</span> int ritChoreInterval = conf.getInt(RIT_CHORE_INTERVAL_MSEC_CONF_KEY,<a name="line.196"></a>
+<span class="sourceLineNo">197</span> DEFAULT_RIT_CHORE_INTERVAL_MSEC);<a name="line.197"></a>
+<span class="sourceLineNo">198</span> this.ritChore = new RegionInTransitionChore(ritChoreInterval);<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> public void start() throws IOException, KeeperException {<a name="line.201"></a>
+<span class="sourceLineNo">202</span> if (!running.compareAndSet(false, true)) {<a name="line.202"></a>
+<span class="sourceLineNo">203</span> return;<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> LOG.trace("Starting assignment manager");<a name="line.206"></a>
+<span class="sourceLineNo">207</span><a name="line.207"></a>
+<span class="sourceLineNo">208</span> // Register Server Listener<a name="line.208"></a>
+<span class="sourceLineNo">209</span> master.getServerManager().registerListener(this);<a name="line.209"></a>
+<span class="sourceLineNo">210</span><a name="line.210"></a>
+<span class="sourceLineNo">211</span> // Start the Assignment Thread<a name="line.211"></a>
+<span class="sourceLineNo">212</span> startAssignmentThread();<a name="line.212"></a>
<span class="sourceLineNo">213</span><a name="line.213"></a>
-<span class="sourceLineNo">214</span> // Used for region related procedure.<a name="line.214"></a>
-<span class="sourceLineNo">215</span> setRegionNormalizer(master.getRegionNormalizer());<a name="line.215"></a>
-<span class="sourceLineNo">216</span> }<a name="line.216"></a>
-<span class="sourceLineNo">217</span><a name="line.217"></a>
-<span class="sourceLineNo">218</span> public void start() throws IOException {<a name="line.218"></a>
-<span class="sourceLineNo">219</span> if (!running.compareAndSet(false, true)) {<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> LOG.trace("Starting assignment manager");<a name="line.223"></a>
-<span class="sourceLineNo">224</span><a name="line.224"></a>
-<span class="sourceLineNo">225</span> // Register Server Listener<a name="line.225"></a>
-<span class="sourceLineNo">226</span> master.getServerManager().registerListener(this);<a name="line.226"></a>
-<span class="sourceLineNo">227</span><a name="line.227"></a>
-<span class="sourceLineNo">228</span> // Start the Assignment Thread<a name="line.228"></a>
-<span class="sourceLineNo">229</span> startAssignmentThread();<a name="line.229"></a>
-<span class="sourceLineNo">230</span> }<a name="line.230"></a>
-<span class="sourceLineNo">231</span><a name="line.231"></a>
-<span class="sourceLineNo">232</span> public void stop() {<a name="line.232"></a>
-<span class="sourceLineNo">233</span> if (!running.compareAndSet(true, false)) {<a name="line.233"></a>
-<span class="sourceLineNo">234</span> return;<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> LOG.info("Stopping assignment manager");<a name="line.237"></a>
-<span class="sourceLineNo">238</span><a name="line.238"></a>
-<span class="sourceLineNo">239</span> // The AM is started before the procedure executor,<a name="line.239"></a>
-<span class="sourceLineNo">240</span> // but the actual work will be loaded/submitted only once we have the executor<a name="line.240"></a>
-<span class="sourceLineNo">241</span> final boolean hasProcExecutor = master.getMasterProcedureExecutor() != null;<a name="line.241"></a>
-<span class="sourceLineNo">242</span><a name="line.242"></a>
-<span class="sourceLineNo">243</span> // Remove the RIT chore<a name="line.243"></a>
-<span class="sourceLineNo">244</span> if (hasProcExecutor) {<a name="line.244"></a>
-<span class="sourceLineNo">245</span> master.getMasterProcedureExecutor().removeChore(this.ritChore);<a name="line.245"></a>
-<span class="sourceLineNo">246</span> }<a name="line.246"></a>
+<span class="sourceLineNo">214</span> // load meta region state<a name="line.214"></a>
+<span class="sourceLineNo">215</span> ZKWatcher zkw = master.getZooKeeper();<a name="line.215"></a>
+<span class="sourceLineNo">216</span> // it could be null in some tests<a name="line.216"></a>
+<span class="sourceLineNo">217</span> if (zkw != null) {<a name="line.217"></a>
+<span class="sourceLineNo">218</span> RegionState regionState = MetaTableLocator.getMetaRegionState(zkw);<a name="line.218"></a>
+<span class="sourceLineNo">219</span> RegionStateNode regionStateNode =<a name="line.219"></a>
+<span class="sourceLineNo">220</span> regionStates.getOrCreateRegionStateNode(RegionInfoBuilder.FIRST_META_REGIONINFO);<a name="line.220"></a>
+<span class="sourceLineNo">221</span> synchronized (regionStateNode) {<a name="line.221"></a>
+<span class="sourceLineNo">222</span> regionStateNode.setRegionLocation(regionState.getServerName());<a name="line.222"></a>
+<span class="sourceLineNo">223</span> regionStateNode.setState(regionState.getState());<a name="line.223"></a>
+<span class="sourceLineNo">224</span> setMetaAssigned(regionState.getRegion(), regionState.getState() == State.OPEN);<a name="line.224"></a>
+<span class="sourceLineNo">225</span> }<a name="line.225"></a>
+<span class="sourceLineNo">226</span> }<a name="line.226"></a>
+<span class="sourceLineNo">227</span> }<a name="line.227"></a>
+<span class="sourceLineNo">228</span><a name="line.228"></a>
+<span class="sourceLineNo">229</span> public void stop() {<a name="line.229"></a>
+<span class="sourceLineNo">230</span> if (!running.compareAndSet(true, false)) {<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><a name="line.233"></a>
+<span class="sourceLineNo">234</span> LOG.info("Stopping assignment manager");<a name="line.234"></a>
+<span class="sourceLineNo">235</span><a name="line.235"></a>
+<span class="sourceLineNo">236</span> // The AM is started before the procedure executor,<a name="line.236"></a>
+<span class="sourceLineNo">237</span> // but the actual work will be loaded/submitted only once we have the executor<a name="line.237"></a>
+<span class="sourceLineNo">238</span> final boolean hasProcExecutor = master.getMasterProcedureExecutor() != null;<a name="line.238"></a>
+<span class="sourceLineNo">239</span><a name="line.239"></a>
+<span class="sourceLineNo">240</span> // Remove the RIT chore<a name="line.240"></a>
+<span class="sourceLineNo">241</span> if (hasProcExecutor) {<a name="line.241"></a>
+<span class="sourceLineNo">242</span> master.getMasterProcedureExecutor().removeChore(this.ritChore);<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> // Stop the Assignment Thread<a name="line.245"></a>
+<span class="sourceLineNo">246</span> stopAssignmentThread();<a name="line.246"></a>
<span class="sourceLineNo">247</span><a name="line.247"></a>
-<span class="sourceLineNo">248</span> // Stop the Assignment Thread<a name="line.248"></a>
-<span class="sourceLineNo">249</span> stopAssignmentThread();<a name="line.249"></a>
+<span class="sourceLineNo">248</span> // Stop the RegionStateStore<a name="line.248"></a>
+<span class="sourceLineNo">249</span> regionStates.clear();<a name="line.249"></a>
<span class="sourceLineNo">250</span><a name="line.250"></a>
-<span class="sourceLineNo">251</span> // Stop the RegionStateStore<a name="line.251"></a>
-<span class="sourceLineNo">252</span> regionStates.clear();<a name="line.252"></a>
+<span class="sourceLineNo">251</span> // Unregister Server Listener<a name="line.251"></a>
+<span class="sourceLineNo">252</span> master.getServerManager().unregisterListener(this);<a name="line.252"></a>
<span class="sourceLineNo">253</span><a name="line.253"></a>
-<span class="sourceLineNo">254</span> // Unregister Server Listener<a name="line.254"></a>
-<span class="sourceLineNo">255</span> master.getServerManager().unregisterListener(this);<a name="line.255"></a>
-<span class="sourceLineNo">256</span><a name="line.256"></a>
-<span class="sourceLineNo">257</span> // Update meta events (for testing)<a name="line.257"></a>
-<span class="sourceLineNo">258</span> if (hasProcExecutor) {<a name="line.258"></a>
-<span class="sourceLineNo">259</span> metaLoadEvent.suspend();<a name="line.259"></a>
-<span class="sourceLineNo">260</span> setFailoverCleanupDone(false);<a name="line.260"></a>
-<span class="sourceLineNo">261</span> for (RegionInfo hri: getMetaRegionSet()) {<a name="line.261"></a>
-<span class="sourceLineNo">262</span> setMetaInitialized(hri, false);<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">254</span> // Update meta events (for testing)<a name="line.254"></a>
+<span class="sourceLineNo">255</span> if (hasProcExecutor) {<a name="line.255"></a>
+<span class="sourceLineNo">256</span> metaLoadEvent.suspend();<a name="line.256"></a>
+<span class="sourceLineNo">257</span> for (RegionInfo hri: getMetaRegionSet()) {<a name="line.257"></a>
+<span class="sourceLineNo">258</span> setMetaAssigned(hri, false);<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 name="line.262"></a>
+<span class="sourceLineNo">263</span> public boolean isRunning() {<a name="line.263"></a>
+<span class="sourceLineNo">264</span> return running.get();<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> public boolean isRunning() {<a name="line.267"></a>
-<span class="sourceLineNo">268</span> return running.get();<a name="line.268"></a>
+<span class="sourceLineNo">267</span> public Configuration getConfiguration() {<a name="line.267"></a>
+<span class="sourceLineNo">268</span> return master.getConfiguration();<a name="line.268"></a>
<span class="sourceLineNo">269</span> }<a name="line.269"></a>
<span class="sourceLineNo">270</span><a name="line.270"></a>
-<span class="sourceLineNo">271</span> public Configuration getConfiguration() {<a name="line.271"></a>
-<span class="sourceLineNo">272</span> return master.getConfiguration();<a name="line.272"></a>
+<span class="sourceLineNo">271</span> public MetricsAssignmentManager getAssignmentManagerMetrics() {<a name="line.271"></a>
+<span class="sourceLineNo">272</span> return metrics;<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> public MetricsAssignmentManager getAssignmentManagerMetrics() {<a name="line.275"></a>
-<span class="sourceLineNo">276</span> return metrics;<a name="line.276"></a>
+<span class="sourceLineNo">275</span> private LoadBalancer getBalancer() {<a name="line.275"></a>
+<span class="sourceLineNo">276</span> return master.getLoadBalancer();<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> private LoadBalancer getBalancer() {<a name="line.279"></a>
-<span class="sourceLineNo">280</span> return master.getLoadBalancer();<a name="line.280"></a>
+<span class="sourceLineNo">279</span> private MasterProcedureEnv getProcedureEnvironment() {<a name="line.279"></a>
+<span class="sourceLineNo">280</span> return master.getMasterProcedureExecutor().getEnvironment();<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> private MasterProcedureEnv getProcedureEnvironment() {<a name="line.283"></a>
-<span class="sourceLineNo">284</span> return master.getMasterProcedureExecutor().getEnvironment();<a name="line.284"></a>
+<span class="sourceLineNo">283</span> private MasterProcedureScheduler getProcedureScheduler() {<a name="line.283"></a>
+<span class="sourceLineNo">284</span> return getProcedureEnvironment().getProcedureScheduler();<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> private MasterProcedureScheduler getProcedureScheduler() {<a name="line.287"></a>
-<span class="sourceLineNo">288</span> return getProcedureEnvironment().getProcedureScheduler();<a name="line.288"></a>
+<span class="sourceLineNo">287</span> int getAssignMaxAttempts() {<a name="line.287"></a>
+<span class="sourceLineNo">288</span> return assignMaxAttempts;<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> protected int getAssignMaxAttempts() {<a name="line.291"></a>
-<span class="sourceLineNo">292</span> return assignMaxAttempts;<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> * Add the listener to the notification list.<a name="line.296"></a>
-<span class="sourceLineNo">297</span> * @param listener The AssignmentListener to register<a name="line.297"></a>
-<span class="sourceLineNo">298</span> */<a name="line.298"></a>
-<span class="sourceLineNo">299</span> public void registerListener(final AssignmentListener listener) {<a name="line.299"></a>
-<span class="sourceLineNo">300</span> this.listeners.add(listener);<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> * Remove the listener from the notification list.<a name="line.304"></a>
-<span class="sourceLineNo">305</span> * @param listener The AssignmentListener to unregister<a name="line.305"></a>
-<span class="sourceLineNo">306</span> */<a name="line.306"></a>
-<span class="sourceLineNo">307</span> public boolean unregisterListener(final AssignmentListener listener) {<a name="line.307"></a>
-<span class="sourceLineNo">308</span> return this.listeners.remove(listener);<a name="line.308"></a>
+<span class="sourceLineNo">291</span> /**<a name="line.291"></a>
+<span class="sourceLineNo">292</span> * Add the listener to the notification list.<a name="line.292"></a>
+<span class="sourceLineNo">293</span> * @param listener The AssignmentListener to register<a name="line.293"></a>
+<span class="sourceLineNo">294</span> */<a name="line.294"></a>
+<span class="sourceLineNo">295</span> public void registerListener(final AssignmentListener listener) {<a name="line.295"></a>
+<span class="sourceLineNo">296</span> this.listeners.add(listener);<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> /**<a name="line.299"></a>
+<span class="sourceLineNo">300</span> * Remove the listener from the notification list.<a name="line.300"></a>
+<span class="sourceLineNo">301</span> * @param listener The AssignmentListener to unregister<a name="line.301"></a>
+<span class="sourceLineNo">302</span> */<a name="line.302"></a>
+<span class="sourceLineNo">303</span> public boolean unregisterListener(final AssignmentListener listener) {<a name="line.303"></a>
+<span class="sourceLineNo">304</span> return this.listeners.remove(listener);<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> public RegionStates getRegionStates() {<a name="line.307"></a>
+<span class="sourceLineNo">308</span> return regionStates;<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> public void setRegionStateListener(final RegionStateListener listener) {<a name="line.311"></a>
-<span class="sourceLineNo">312</span> this.regionStateListener = listener;<a name="line.312"></a>
+<span class="sourceLineNo">311</span> public RegionStateStore getRegionStateStore() {<a name="line.311"></a>
+<span class="sourceLineNo">312</span> return regionStateStore;<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 setRegionNormalizer(final RegionNormalizer normalizer) {<a name="line.315"></a>
-<span class="sourceLineNo">316</span> this.regionNormalizer = normalizer;<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 RegionNormalizer getRegionNormalizer() {<a name="line.319"></a>
-<span class="sourceLineNo">320</span> return regionNormalizer;<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 RegionStates getRegionStates() {<a name="line.323"></a>
-<span class="sourceLineNo">324</span> return regionStates;<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> public RegionStateStore getRegionStateStore() {<a name="line.327"></a>
-<span class="sourceLineNo">328</span> return regionStateStore;<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> public List<ServerName> getFavoredNodes(final RegionInfo regionInfo) {<a name="line.331"></a>
-<span class="sourceLineNo">332</span> return this.shouldAssignRegionsWithFavoredNodes?<a name="line.332"></a>
-<span class="sourceLineNo">333</span> ((FavoredStochasticBalancer)getBalancer()).getFavoredNodes(regionInfo):<a name="line.333"></a>
-<span class="sourceLineNo">334</span> ServerName.EMPTY_SERVER_LIST;<a name="line.334"></a>
+<span class="sourceLineNo">315</span> public List<ServerName> getFavoredNodes(final RegionInfo regionInfo) {<a name="line.315"></a>
+<span class="sourceLineNo">316</span> return this.shouldAssignRegionsWithFavoredNodes?<a name="line.316"></a>
+<span class="sourceLineNo">317</span> ((FavoredStochasticBalancer)getBalancer()).getFavoredNodes(regionInfo):<a name="line.317"></a>
+<span class="sourceLineNo">318</span> ServerName.EMPTY_SERVER_LIST;<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> // ============================================================================================<a name="line.321"></a>
+<span class="sourceLineNo">322</span> // Table State Manager helpers<a name="line.322"></a>
+<span class="sourceLineNo">323</span> // ============================================================================================<a name="line.323"></a>
+<span class="sourceLineNo">324</span> TableStateManager getTableStateManager() {<a name="line.324"></a>
+<span class="sourceLineNo">325</span> return master.getTableStateManager();<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> public boolean isTableEnabled(final TableName tableName) {<a name="line.328"></a>
+<span class="sourceLineNo">329</span> return getTableStateManager().isTableState(tableName, TableState.State.ENABLED);<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> public boolean isTableDisabled(final TableName tableName) {<a name="line.332"></a>
+<span class="sourceLineNo">333</span> return getTableStateManager().isTableState(tableName,<a name="line.333"></a>
+<span class="sourceLineNo">334</span> TableState.State.DISABLED, TableState.State.DISABLING);<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> // Table State Manager helpers<a name="line.338"></a>
+<span class="sourceLineNo">338</span> // META Helpers<a name="line.338"></a>
<span class="sourceLineNo">339</span> // ============================================================================================<a name="line.339"></a>
-<span class="sourceLineNo">340</span> TableStateManager getTableStateManager() {<a name="line.340"></a>
-<span class="sourceLineNo">341</span> return master.getTableStateManager();<a name="line.341"></a>
+<span class="sourceLineNo">340</span> private boolean isMetaRegion(final RegionInfo regionInfo) {<a name="line.340"></a>
+<span class="sourceLineNo">341</span> return regionInfo.isMetaRegion();<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> public boolean isTableEnabled(final TableName tableName) {<a name="line.344"></a>
-<span class="sourceLineNo">345</span> return getTableStateManager().isTableState(tableName, TableState.State.ENABLED);<a name="line.345"></a>
+<span class="sourceLineNo">344</span> public boolean isMetaRegion(final byte[] regionName) {<a name="line.344"></a>
+<span class="sourceLineNo">345</span> return getMetaRegionFromName(regionName) != null;<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> public boolean isTableDisabled(final TableName tableName) {<a name="line.348"></a>
-<span class="sourceLineNo">349</span> return getTableStateManager().isTableState(tableName,<a name="line.349"></a>
-<span class="sourceLineNo">350</span> TableState.State.DISABLED, TableState.State.DISABLING);<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> // META Helpers<a name="line.354"></a>
-<span class="sourceLineNo">355</span> // ============================================================================================<a name="line.355"></a>
-<span class="sourceLineNo">356</span> private boolean isMetaRegion(final RegionInfo regionInfo) {<a name="line.356"></a>
-<span class="sourceLineNo">357</span> return regionInfo.isMetaRegion();<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> public boolean isMetaRegion(final byte[] regionName) {<a name="line.360"></a>
-<span class="sourceLineNo">361</span> return getMetaRegionFromName(regionName) != null;<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> public RegionInfo getMetaRegionFromName(final byte[] regionName) {<a name="line.364"></a>
-<span class="sourceLineNo">365</span> for (RegionInfo hri: getMetaRegionSet()) {<a name="line.365"></a>
-<span class="sourceLineNo">366</span> if (Bytes.equals(hri.getRegionName(), regionName)) {<a name="line.366"></a>
-<span class="sourceLineNo">367</span> return hri;<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> return null;<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> public boolean isCarryingMeta(final ServerName serverName) {<a name="line.373"></a>
-<span class="sourceLineNo">374</span> for (RegionInfo hri: getMetaRegionSet()) {<a name="line.374"></a>
-<span class="sourceLineNo">375</span> if (isCarryingRegion(serverName, hri)) {<a name="line.375"></a>
-<span class="sourceLineNo">376</span> return true;<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> return false;<a name="line.379"></a>
+<span class="sourceLineNo">348</span> public RegionInfo getMetaRegionFromName(final byte[] regionName) {<a name="line.348"></a>
+<span class="sourceLineNo">349</span> for (RegionInfo hri: getMetaRegionSet()) {<a name="line.349"></a>
+<span class="sourceLineNo">350</span> if (Bytes.equals(hri.getRegionName(), regionName)) {<a name="line.350"></a>
+<span class="sourceLineNo">351</span> return hri;<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> return null;<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> public boolean isCarryingMeta(final ServerName serverName) {<a name="line.357"></a>
+<span class="sourceLineNo">358</span> // TODO: handle multiple meta<a name="line.358"></a>
+<span class="sourceLineNo">359</span> return isCarryingRegion(serverName, RegionInfoBuilder.FIRST_META_REGIONINFO);<a name="line.359"></a>
+<span class="sourceLineNo">360</span> }<a name="line.360"></a>
+<span class="sourceLineNo">361</span><a name="line.361"></a>
+<span class="sourceLineNo">362</span> private boolean isCarryingRegion(final ServerName serverName, final RegionInfo regionInfo) {<a name="line.362"></a>
+<span class="sourceLineNo">363</span> // TODO: check for state?<a name="line.363"></a>
+<span class="sourceLineNo">364</span> final RegionStateNode node = regionStates.getRegionStateNode(regionInfo);<a name="line.364"></a>
+<span class="sourceLineNo">365</span> return(node != null && serverName.equals(node.getRegionLocation()));<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 RegionInfo getMetaForRegion(final RegionInfo regionInfo) {<a name="line.368"></a>
+<span class="sourceLineNo">369</span> //if (regionInfo.isMetaRegion()) return regionInfo;<a name="line.369"></a>
+<span class="sourceLineNo">370</span> // TODO: handle multiple meta. if the region provided is not meta lookup<a name="line.370"></a>
+<span class="sourceLineNo">371</span> // which meta the region belongs to.<a name="line.371"></a>
+<span class="sourceLineNo">372</span> return RegionInfoBuilder.FIRST_META_REGIONINFO;<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> // TODO: handle multiple meta.<a name="line.375"></a>
+<span class="sourceLineNo">376</span> private static final Set<RegionInfo> META_REGION_SET =<a name="line.376"></a>
+<span class="sourceLineNo">377</span> Collections.singleton(RegionInfoBuilder.FIRST_META_REGIONINFO);<a name="line.377"></a>
+<span class="sourceLineNo">378</span> public Set<RegionInfo> getMetaRegionSet() {<a name="line.378"></a>
+<span class="sourceLineNo">379</span> return META_REGION_SET;<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> private boolean isCarryingRegion(final ServerName serverName, final RegionInfo regionInfo) {<a name="line.382"></a>
-<span class="sourceLineNo">383</span> // TODO: check for state?<a name="line.383"></a>
-<span class="sourceLineNo">384</span> final RegionStateNode node = regionStates.getRegionStateNode(regionInfo);<a name="line.384"></a>
-<span class="sourceLineNo">385</span> return(node != null && serverName.equals(node.getRegionLocation()));<a name="line.385"></a>
-<span class="sourceLineNo">386</span> }<a name="line.386"></a>
-<span class="sourceLineNo">387</span><a name="line.387"></a>
-<span class="sourceLineNo">388</span> private RegionInfo getMetaForRegion(final RegionInfo regionInfo) {<a name="line.388"></a>
-<span class="sourceLineNo">389</span> //if (regionInfo.isMetaRegion()) return regionInfo;<a name="line.389"></a>
-<span class="sourceLineNo">390</span> // TODO: handle multiple meta. if the region provided is not meta lookup<a name="line.390"></a>
-<span class="sourceLineNo">391</span> // which meta the region belongs to.<a name="line.391"></a>
-<span class="sourceLineNo">392</span> return RegionInfoBuilder.FIRST_META_REGIONINFO;<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> // TODO: handle multiple meta.<a name="line.395"></a>
-<span class="sourceLineNo">396</span> private static final Set<RegionInfo> META_REGION_SET =<a name="line.396"></a>
-<span class="sourceLineNo">397</span> Collections.singleton(RegionInfoBuilder.FIRST_META_REGIONINFO);<a name="line.397"></a>
-<span class="sourceLineNo">398</span> public Set<RegionInfo> getMetaRegionSet() {<a name="line.398"></a>
-<span class="sourceLineNo">399</span> return META_REGION_SET;<a name="line.399"></a>
-<span class="sourceLineNo">400</span> }<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> // META Event(s) helpers<a name="line.403"></a>
-<span class="sourceLineNo">404</span> // ============================================================================================<a name="line.404"></a>
-<span class="sourceLineNo">405</span> public boolean isMetaInitialized() {<a name="line.405"></a>
-<span class="sourceLineNo">406</span> return metaInitializedEvent.isReady();<a name="line.406"></a>
+<span class="sourceLineNo">382</span> // ============================================================================================<a name="line.382"></a>
+<span class="sourceLineNo">383</span> // META Event(s) helpers<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> * Notice that, this only means the meta region is available on a RS, but the AM may still be<a name="line.386"></a>
+<span class="sourceLineNo">387</span> * loading the region states from meta, so usually you need to check {@link #isMetaLoaded()} first<a name="line.387"></a>
+<span class="sourceLineNo">388</span> * before checking this method, unless you can make sure that your piece of code can only be<a name="line.388"></a>
+<span class="sourceLineNo">389</span> * executed after AM builds the region states.<a name="line.389"></a>
+<span class="sourceLineNo">390</span> * @see #isMetaLoaded()<a name="line.390"></a>
+<span class="sourceLineNo">391</span> */<a name="line.391"></a>
+<span class="sourceLineNo">392</span> public boolean isMetaAssigned() {<a name="line.392"></a>
+<span class="sourceLineNo">393</span> return metaAssignEvent.isReady();<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> public boolean isMetaRegionInTransition() {<a name="line.396"></a>
+<span class="sourceLineNo">397</span> return !isMetaAssigned();<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> /**<a name="line.400"></a>
+<span class="sourceLineNo">401</span> * Notice that this event does not mean the AM has already finished region state rebuilding. See<a name="line.401"></a>
+<span class="sourceLineNo">402</span> * the comment of {@link #isMetaAssigned()} for more details.<a name="line.402"></a>
+<span class="sourceLineNo">403</span> * @see #isMetaAssigned()<a name="line.403"></a>
+<span class="sourceLineNo">404</span> */<a name="line.404"></a>
+<span class="sourceLineNo">405</span> public boolean waitMetaAssigned(Procedure<?> proc, RegionInfo regionInfo) {<a name="line.405"></a>
+<span class="sourceLineNo">406</span> return getMetaAssignEvent(getMetaForRegion(regionInfo)).suspendIfNotReady(proc);<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> public boolean isMetaRegionInTransition() {<a name="line.409"></a>
-<span class="sourceLineNo">410</span> return !isMetaInitialized();<a name="line.410"></a>
-<span class="sourceLineNo">411</span> }<a name="line.411"></a>
-<span class="sourceLineNo">412</span><a name="line.412"></a>
-<span class="sourceLineNo">413</span> public boolean waitMetaInitialized(final Procedure proc) {<a name="line.413"></a>
-<span class="sourceLineNo">414</span> // TODO: handle multiple meta. should this wait on all meta?<a name="line.414"></a>
-<span class="sourceLineNo">415</span> // this is used by the ServerCrashProcedure...<a name="line.415"></a>
-<span class="sourceLineNo">416</span> return waitMetaInitialized(proc, RegionInfoBuilder.FIRST_META_REGIONINFO);<a name="line.416"></a>
+<span class="sourceLineNo">409</span> private void setMetaAssigned(RegionInfo metaRegionInfo, boolean assigned) {<a name="line.409"></a>
+<span class="sourceLineNo">410</span> assert isMetaRegion(metaRegionInfo) : "unexpected non-meta region " + metaRegionInfo;<a name="line.410"></a>
+<span class="sourceLineNo">411</span> ProcedureEvent<?> metaAssignEvent = getMetaAssignEvent(metaRegionInfo);<a name="line.411"></a>
+<span class="sourceLineNo">412</span> if (assigned) {<a name="line.412"></a>
+<span class="sourceLineNo">413</span> metaAssignEvent.wake(getProcedureScheduler());<a name="line.413"></a>
+<span class="sourceLineNo">414</span> } else {<a name="line.414"></a>
+<span class="sourceLineNo">415</span> metaAssignEvent.suspend();<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> public boolean waitMetaInitialized(final Procedure proc, final RegionInfo regionInfo) {<a name="line.419"></a>
-<span class="sourceLineNo">420</span> return getMetaInitializedEvent(getMetaForRegion(regionInfo)).suspendIfNotReady(proc);<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> private void setMetaInitialized(final RegionInfo metaRegionInfo, final boolean isInitialized) {<a name="line.423"></a>
-<span class="sourceLineNo">424</span> assert isMetaRegion(metaRegionInfo) : "unexpected non-meta region " + metaRegionInfo;<a name="line.424"></a>
-<span class="sourceLineNo">425</span> final ProcedureEvent metaInitEvent = getMetaInitializedEvent(metaRegionInfo);<a name="line.425"></a>
-<span class="sourceLineNo">426</span> if (isInitialized) {<a name="line.426"></a>
-<span class="sourceLineNo">427</span> metaInitEvent.wake(getProcedureScheduler());<a name="line.427"></a>
-<span class="sourceLineNo">428</span> } else {<a name="line.428"></a>
-<span class="sourceLineNo">429</span> metaInitEvent.suspend();<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><a name="line.432"></a>
-<span class="sourceLineNo">433</span> private ProcedureEvent getMetaInitializedEvent(final RegionInfo metaRegionInfo) {<a name="line.433"></a>
-<span class="sourceLineNo">434</span> assert isMetaRegion(metaRegionInfo) : "unexpected non-meta region " + metaRegionInfo;<a name="line.434"></a>
-<span class="sourceLineNo">435</span> // TODO: handle multiple meta.<a name="line.435"></a>
-<span class="sourceLineNo">436</span> return metaInitializedEvent;<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> public boolean waitMetaLoaded(final Procedure proc) {<a name="line.439"></a>
-<span class="sourceLineNo">440</span> return metaLoadEvent.suspendIfNotReady(proc);<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> protected void wakeMetaLoadedEvent() {<a name="line.443"></a>
-<span class="sourceLineNo">444</span> metaLoadEvent.wake(getProcedureScheduler());<a name="line.444"></a>
-<span class="sourceLineNo">445</span> assert isMetaLoaded() : "expected meta to be loaded";<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> public boolean isMetaLoaded() {<a name="line.448"></a>
-<span class="sourceLineNo">449</span> return metaLoadEvent.isReady();<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> * Start a new thread to check if there are region servers whose versions are higher than others.<a name="line.453"></a>
-<span class="sourceLineNo">454</span> * If so, move all system table regions to RS with the highest version to keep compatibility.<a name="line.454"></a>
-<span class="sourceLineNo">455</span> * The reason is, RS in new version may not be able to access RS in old version when there are<a name="line.455"></a>
-<span class="sourceLineNo">456</span> * some incompatible changes.<a name="line.456"></a>
-<span class="sourceLineNo">457</span> * <p>This method is called when a new RegionServer is added to cluster only.</p><a name="line.457"></a>
-<span class="sourceLineNo">458</span> */<a name="line.458"></a>
-<span class="sourceLineNo">459</span> public void checkIfShouldMoveSystemRegionAsync() {<a name="line.459"></a>
-<span class="sourceLineNo">460</span> // TODO: Fix this thread. If a server is killed and a new one started, this thread thinks that<a name="line.460"></a>
-<span class="sourceLineNo">461</span> // it should 'move' the system tables from the old server to the new server but<a name="line.461"></a>
-<span class="sourceLineNo">462</span> // ServerCrashProcedure is on it; and it will take care of the assign without dataloss.<a name="line.462"></a>
-<span class="sourceLineNo">463</span> if (this.master.getServerManager().countOfRegionServers() <= 1) {<a name="line.463"></a>
-<span class="sourceLineNo">464</span> return;<a name="line.464"></a>
-<span class="sourceLineNo">465</span> }<a name="line.465"></a>
-<span class="sourceLineNo">466</span> // This thread used to run whenever there was a change in the cluster. The ZooKeeper<a name="line.466"></a>
-<span class="sourceLineNo">467</span> // childrenChanged notification came in before the nodeDeleted message and so this method<a name="line.467"></a>
-<span class="sourceLineNo">468</span> // cold run before a ServerCrashProcedure could run. That meant that this thread could see<a name="line.468"></a>
-<span class="sourceLineNo">469</span> // a Crashed Server before ServerCrashProcedure and it could find system regions on the<a name="line.469"></a>
-<span class="sourceLineNo">470</span> // crashed server and go move them before ServerCrashProcedure had a chance; could be<a name="line.470"></a>
-<span class="sourceLineNo">471</span> // dataloss too if WALs were not recovered.<a name="line.471"></a>
-<span class="sourceLineNo">472</span> new Thread(() -> {<a name="line.472"></a>
-<span class="sourceLineNo">473</span> try {<a name="line.473"></a>
-<span class="sourceLineNo">474</span> synchronized (checkIfShouldMoveSystemRegionLock) {<a name="line.474"></a>
-<span class="sourceLineNo">475</span> List<RegionPlan> plans = new ArrayList<>();<a name="line.475"></a>
-<span class="sourceLineNo">476</span> // TODO: I don't think this code does a good job if all servers in cluster have same<a name="line.476"></a>
-<span class="sourceLineNo">477</span> // version. It looks like it will schedule unnecessary moves.<a name="line.477"></a>
-<span class="sourceLineNo">478</span> for (ServerName server : getExcludedServersForSystemTable()) {<a name="line.478"></a>
-<span class="sourceLineNo">479</span> if (master.getServerManager().isServerDead(server)) {<a name="line.479"></a>
-<span class="sourceLineNo">480</span> // TODO: See HBASE-18494 and HBASE-18495. Though getExcludedServersForSystemTable()<a name="line.480"></a>
-<span class="sourceLineNo">481</span> // considers only online servers, the server could be queued for dead server<a name="line.481"></a>
-<span class="sourceLineNo">482</span> // processing. As region assignments for crashed server is handled by<a name="line.482"></a>
-<span class="sourceLineNo">483</span> // ServerCrashProcedure, do NOT handle them here. The goal is to handle this through<a name="line.483"></a>
-<span class="sourceLineNo">484</span> // regular flow of LoadBalancer as a favored node and not to have this special<a name="line.484"></a>
-<span class="sourceLineNo">485</span> // handling.<a name="line.485"></a>
-<span class="sourceLineNo">486</span> continue;<a name="line.486"></a>
-<span class="sourceLineNo">487</span> }<a name="line.487"></a>
-<span class="sourceLineNo">488</span> List<RegionInfo> regionsShouldMove = getSystemTables(server);<a name="line.488"></a>
-<span class="sourceLineNo">489</span> if (!regionsShouldMove.isEmpty()) {<a name="line.489"></a>
-<span class="sourceLineNo">490</span> for (RegionInfo regionInfo : regionsShouldMove) {<a name="line.490"></a>
-<span class="sourceLineNo">491</span> // null value for dest forces destination server to be selected by balancer<a name="line.491"></a>
-<span class="sourceLineNo">492</span> RegionPlan plan = new RegionPlan(regionInfo, server, null);<a name="line.492"></a>
-<span class="sourceLineNo">493</span> if (regionInfo.isMetaRegion()) {<a name="line.493"></a>
-<span class="sourceLineNo">494</span> // Must move meta region first.<a name="line.494"></a>
-<span class="sourceLineNo">495</span> LOG.info("Async MOVE of {} to newer Server={}",<a name="line.495"></a>
-<span class="sourceLineNo">496</span> regionInfo.getEncodedName(), server);<a name="line.496"></a>
-<span class="sourceLineNo">497</span> moveAsync(plan);<a name="line.497"></a>
-<span class="sourceLineNo">498</span> } else {<a name="line.498"></a>
-<span class="sourceLineNo">499</span> plans.add(plan);<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> }<a name="line.502"></a>
-<span class="sourceLineNo">503</span> for (RegionPlan plan : plans) {<a name="line.503"></a>
-<span class="sourceLineNo">504</span> LOG.info("Async MOVE of {} to newer Server={}",<a name="line.504"></a>
-<span class="sourceLineNo">505</span> plan.getRegionInfo().getEncodedName(), server);<a name="line.505"></a>
-<span class="sourceLineNo">506</span> moveAsync(plan);<a name="line.506"></a>
-<span class="sourceLineNo">507</span> }<a name="line.507"></a>
-<span class="sourceLineNo">508</span> }<a name="line.508"></a>
-<span class="sourceLineNo">509</span> }<a name="line.509"></a>
-<span class="sourceLineNo">510</span> } catch (Throwable t) {<a name="line.510"></a>
-<span class=
<TRUNCATED>
[21/51] [partial] hbase-site git commit: Published site at
9101fc246f86445006bfbcdfda5cc495016dc280.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.DefaultVisitorBase.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.DefaultVisitorBase.html b/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.DefaultVisitorBase.html
index fea2b5a..c7a6cc4 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.DefaultVisitorBase.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.DefaultVisitorBase.html
@@ -1354,816 +1354,824 @@
<span class="sourceLineNo">1346</span> */<a name="line.1346"></a>
<span class="sourceLineNo">1347</span> public static void putsToMetaTable(final Connection connection, final List<Put> ps)<a name="line.1347"></a>
<span class="sourceLineNo">1348</span> throws IOException {<a name="line.1348"></a>
-<span class="sourceLineNo">1349</span> try (Table t = getMetaHTable(connection)) {<a name="line.1349"></a>
-<span class="sourceLineNo">1350</span> debugLogMutations(ps);<a name="line.1350"></a>
-<span class="sourceLineNo">1351</span> t.put(ps);<a name="line.1351"></a>
-<span class="sourceLineNo">1352</span> }<a name="line.1352"></a>
-<span class="sourceLineNo">1353</span> }<a name="line.1353"></a>
-<span class="sourceLineNo">1354</span><a name="line.1354"></a>
-<span class="sourceLineNo">1355</span> /**<a name="line.1355"></a>
-<span class="sourceLineNo">1356</span> * Delete the passed <code>d</code> from the <code>hbase:meta</code> table.<a name="line.1356"></a>
-<span class="sourceLineNo">1357</span> * @param connection connection we're using<a name="line.1357"></a>
-<span class="sourceLineNo">1358</span> * @param d Delete to add to hbase:meta<a name="line.1358"></a>
-<span class="sourceLineNo">1359</span> */<a name="line.1359"></a>
-<span class="sourceLineNo">1360</span> private static void deleteFromMetaTable(final Connection connection, final Delete d)<a name="line.1360"></a>
-<span class="sourceLineNo">1361</span> throws IOException {<a name="line.1361"></a>
-<span class="sourceLineNo">1362</span> List<Delete> dels = new ArrayList<>(1);<a name="line.1362"></a>
-<span class="sourceLineNo">1363</span> dels.add(d);<a name="line.1363"></a>
-<span class="sourceLineNo">1364</span> deleteFromMetaTable(connection, dels);<a name="line.1364"></a>
-<span class="sourceLineNo">1365</span> }<a name="line.1365"></a>
-<span class="sourceLineNo">1366</span><a name="line.1366"></a>
-<span class="sourceLineNo">1367</span> /**<a name="line.1367"></a>
-<span class="sourceLineNo">1368</span> * Delete the passed <code>deletes</code> from the <code>hbase:meta</code> table.<a name="line.1368"></a>
-<span class="sourceLineNo">1369</span> * @param connection connection we're using<a name="line.1369"></a>
-<span class="sourceLineNo">1370</span> * @param deletes Deletes to add to hbase:meta This list should support #remove.<a name="line.1370"></a>
-<span class="sourceLineNo">1371</span> */<a name="line.1371"></a>
-<span class="sourceLineNo">1372</span> private static void deleteFromMetaTable(final Connection connection, final List<Delete> deletes)<a name="line.1372"></a>
-<span class="sourceLineNo">1373</span> throws IOException {<a name="line.1373"></a>
-<span class="sourceLineNo">1374</span> try (Table t = getMetaHTable(connection)) {<a name="line.1374"></a>
-<span class="sourceLineNo">1375</span> debugLogMutations(deletes);<a name="line.1375"></a>
-<span class="sourceLineNo">1376</span> t.delete(deletes);<a name="line.1376"></a>
-<span class="sourceLineNo">1377</span> }<a name="line.1377"></a>
-<span class="sourceLineNo">1378</span> }<a name="line.1378"></a>
-<span class="sourceLineNo">1379</span><a name="line.1379"></a>
-<span class="sourceLineNo">1380</span> /**<a name="line.1380"></a>
-<span class="sourceLineNo">1381</span> * Deletes some replica columns corresponding to replicas for the passed rows<a name="line.1381"></a>
-<span class="sourceLineNo">1382</span> * @param metaRows rows in hbase:meta<a name="line.1382"></a>
-<span class="sourceLineNo">1383</span> * @param replicaIndexToDeleteFrom the replica ID we would start deleting from<a name="line.1383"></a>
-<span class="sourceLineNo">1384</span> * @param numReplicasToRemove how many replicas to remove<a name="line.1384"></a>
-<span class="sourceLineNo">1385</span> * @param connection connection we're using to access meta table<a name="line.1385"></a>
-<span class="sourceLineNo">1386</span> */<a name="line.1386"></a>
-<span class="sourceLineNo">1387</span> public static void removeRegionReplicasFromMeta(Set<byte[]> metaRows,<a name="line.1387"></a>
-<span class="sourceLineNo">1388</span> int replicaIndexToDeleteFrom, int numReplicasToRemove, Connection connection)<a name="line.1388"></a>
-<span class="sourceLineNo">1389</span> throws IOException {<a name="line.1389"></a>
-<span class="sourceLineNo">1390</span> int absoluteIndex = replicaIndexToDeleteFrom + numReplicasToRemove;<a name="line.1390"></a>
-<span class="sourceLineNo">1391</span> for (byte[] row : metaRows) {<a name="line.1391"></a>
-<span class="sourceLineNo">1392</span> long now = EnvironmentEdgeManager.currentTime();<a name="line.1392"></a>
-<span class="sourceLineNo">1393</span> Delete deleteReplicaLocations = new Delete(row);<a name="line.1393"></a>
-<span class="sourceLineNo">1394</span> for (int i = replicaIndexToDeleteFrom; i < absoluteIndex; i++) {<a name="line.1394"></a>
-<span class="sourceLineNo">1395</span> deleteReplicaLocations.addColumns(getCatalogFamily(),<a name="line.1395"></a>
-<span class="sourceLineNo">1396</span> getServerColumn(i), now);<a name="line.1396"></a>
-<span class="sourceLineNo">1397</span> deleteReplicaLocations.addColumns(getCatalogFamily(),<a name="line.1397"></a>
-<span class="sourceLineNo">1398</span> getSeqNumColumn(i), now);<a name="line.1398"></a>
-<span class="sourceLineNo">1399</span> deleteReplicaLocations.addColumns(getCatalogFamily(),<a name="line.1399"></a>
-<span class="sourceLineNo">1400</span> getStartCodeColumn(i), now);<a name="line.1400"></a>
-<span class="sourceLineNo">1401</span> }<a name="line.1401"></a>
-<span class="sourceLineNo">1402</span> deleteFromMetaTable(connection, deleteReplicaLocations);<a name="line.1402"></a>
-<span class="sourceLineNo">1403</span> }<a name="line.1403"></a>
-<span class="sourceLineNo">1404</span> }<a name="line.1404"></a>
-<span class="sourceLineNo">1405</span><a name="line.1405"></a>
-<span class="sourceLineNo">1406</span> /**<a name="line.1406"></a>
-<span class="sourceLineNo">1407</span> * Execute the passed <code>mutations</code> against <code>hbase:meta</code> table.<a name="line.1407"></a>
-<span class="sourceLineNo">1408</span> * @param connection connection we're using<a name="line.1408"></a>
-<span class="sourceLineNo">1409</span> * @param mutations Puts and Deletes to execute on hbase:meta<a name="line.1409"></a>
-<span class="sourceLineNo">1410</span> * @throws IOException<a name="line.1410"></a>
-<span class="sourceLineNo">1411</span> */<a name="line.1411"></a>
-<span class="sourceLineNo">1412</span> public static void mutateMetaTable(final Connection connection,<a name="line.1412"></a>
-<span class="sourceLineNo">1413</span> final List<Mutation> mutations)<a name="line.1413"></a>
-<span class="sourceLineNo">1414</span> throws IOException {<a name="line.1414"></a>
-<span class="sourceLineNo">1415</span> Table t = getMetaHTable(connection);<a name="line.1415"></a>
-<span class="sourceLineNo">1416</span> try {<a name="line.1416"></a>
-<span class="sourceLineNo">1417</span> debugLogMutations(mutations);<a name="line.1417"></a>
-<span class="sourceLineNo">1418</span> t.batch(mutations, null);<a name="line.1418"></a>
-<span class="sourceLineNo">1419</span> } catch (InterruptedException e) {<a name="line.1419"></a>
-<span class="sourceLineNo">1420</span> InterruptedIOException ie = new InterruptedIOException(e.getMessage());<a name="line.1420"></a>
-<span class="sourceLineNo">1421</span> ie.initCause(e);<a name="line.1421"></a>
-<span class="sourceLineNo">1422</span> throw ie;<a name="line.1422"></a>
-<span class="sourceLineNo">1423</span> } finally {<a name="line.1423"></a>
-<span class="sourceLineNo">1424</span> t.close();<a name="line.1424"></a>
-<span class="sourceLineNo">1425</span> }<a name="line.1425"></a>
-<span class="sourceLineNo">1426</span> }<a name="line.1426"></a>
-<span class="sourceLineNo">1427</span><a name="line.1427"></a>
-<span class="sourceLineNo">1428</span> private static void addRegionStateToPut(Put put, RegionState.State state) throws IOException {<a name="line.1428"></a>
-<span class="sourceLineNo">1429</span> put.add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.1429"></a>
-<span class="sourceLineNo">1430</span> .setRow(put.getRow())<a name="line.1430"></a>
-<span class="sourceLineNo">1431</span> .setFamily(HConstants.CATALOG_FAMILY)<a name="line.1431"></a>
-<span class="sourceLineNo">1432</span> .setQualifier(getRegionStateColumn())<a name="line.1432"></a>
-<span class="sourceLineNo">1433</span> .setTimestamp(put.getTimestamp())<a name="line.1433"></a>
-<span class="sourceLineNo">1434</span> .setType(Cell.Type.Put)<a name="line.1434"></a>
-<span class="sourceLineNo">1435</span> .setValue(Bytes.toBytes(state.name()))<a name="line.1435"></a>
-<span class="sourceLineNo">1436</span> .build());<a name="line.1436"></a>
-<span class="sourceLineNo">1437</span> }<a name="line.1437"></a>
-<span class="sourceLineNo">1438</span><a name="line.1438"></a>
-<span class="sourceLineNo">1439</span> /**<a name="line.1439"></a>
-<span class="sourceLineNo">1440</span> * Adds daughter region infos to hbase:meta row for the specified region. Note that this does not<a name="line.1440"></a>
-<span class="sourceLineNo">1441</span> * add its daughter's as different rows, but adds information about the daughters in the same row<a name="line.1441"></a>
-<span class="sourceLineNo">1442</span> * as the parent. Use<a name="line.1442"></a>
-<span class="sourceLineNo">1443</span> * {@link #splitRegion(Connection, RegionInfo, long, RegionInfo, RegionInfo, ServerName, int)}<a name="line.1443"></a>
-<span class="sourceLineNo">1444</span> * if you want to do that.<a name="line.1444"></a>
-<span class="sourceLineNo">1445</span> * @param connection connection we're using<a name="line.1445"></a>
-<span class="sourceLineNo">1446</span> * @param regionInfo RegionInfo of parent region<a name="line.1446"></a>
-<span class="sourceLineNo">1447</span> * @param splitA first split daughter of the parent regionInfo<a name="line.1447"></a>
-<span class="sourceLineNo">1448</span> * @param splitB second split daughter of the parent regionInfo<a name="line.1448"></a>
-<span class="sourceLineNo">1449</span> * @throws IOException if problem connecting or updating meta<a name="line.1449"></a>
-<span class="sourceLineNo">1450</span> */<a name="line.1450"></a>
-<span class="sourceLineNo">1451</span> public static void addSplitsToParent(Connection connection, RegionInfo regionInfo,<a name="line.1451"></a>
-<span class="sourceLineNo">1452</span> RegionInfo splitA, RegionInfo splitB) throws IOException {<a name="line.1452"></a>
-<span class="sourceLineNo">1453</span> Table meta = getMetaHTable(connection);<a name="line.1453"></a>
-<span class="sourceLineNo">1454</span> try {<a name="line.1454"></a>
-<span class="sourceLineNo">1455</span> Put put = makePutFromRegionInfo(regionInfo, EnvironmentEdgeManager.currentTime());<a name="line.1455"></a>
-<span class="sourceLineNo">1456</span> addDaughtersToPut(put, splitA, splitB);<a name="line.1456"></a>
-<span class="sourceLineNo">1457</span> meta.put(put);<a name="line.1457"></a>
-<span class="sourceLineNo">1458</span> debugLogMutation(put);<a name="line.1458"></a>
-<span class="sourceLineNo">1459</span> LOG.debug("Added region {}", regionInfo.getRegionNameAsString());<a name="line.1459"></a>
-<span class="sourceLineNo">1460</span> } finally {<a name="line.1460"></a>
-<span class="sourceLineNo">1461</span> meta.close();<a name="line.1461"></a>
-<span class="sourceLineNo">1462</span> }<a name="line.1462"></a>
-<span class="sourceLineNo">1463</span> }<a name="line.1463"></a>
-<span class="sourceLineNo">1464</span><a name="line.1464"></a>
-<span class="sourceLineNo">1465</span> /**<a name="line.1465"></a>
-<span class="sourceLineNo">1466</span> * Adds a (single) hbase:meta row for the specified new region and its daughters. Note that this<a name="line.1466"></a>
-<span class="sourceLineNo">1467</span> * does not add its daughter's as different rows, but adds information about the daughters<a name="line.1467"></a>
-<span class="sourceLineNo">1468</span> * in the same row as the parent. Use<a name="line.1468"></a>
-<span class="sourceLineNo">1469</span> * {@link #splitRegion(Connection, RegionInfo, long, RegionInfo, RegionInfo, ServerName, int)}<a name="line.1469"></a>
-<span class="sourceLineNo">1470</span> * if you want to do that.<a name="line.1470"></a>
-<span class="sourceLineNo">1471</span> * @param connection connection we're using<a name="line.1471"></a>
-<span class="sourceLineNo">1472</span> * @param regionInfo region information<a name="line.1472"></a>
-<span class="sourceLineNo">1473</span> * @throws IOException if problem connecting or updating meta<a name="line.1473"></a>
-<span class="sourceLineNo">1474</span> */<a name="line.1474"></a>
-<span class="sourceLineNo">1475</span> @VisibleForTesting<a name="line.1475"></a>
-<span class="sourceLineNo">1476</span> public static void addRegionToMeta(Connection connection, RegionInfo regionInfo)<a name="line.1476"></a>
-<span class="sourceLineNo">1477</span> throws IOException {<a name="line.1477"></a>
-<span class="sourceLineNo">1478</span> addRegionsToMeta(connection, Collections.singletonList(regionInfo), 1);<a name="line.1478"></a>
-<span class="sourceLineNo">1479</span> }<a name="line.1479"></a>
-<span class="sourceLineNo">1480</span><a name="line.1480"></a>
-<span class="sourceLineNo">1481</span> /**<a name="line.1481"></a>
-<span class="sourceLineNo">1482</span> * Adds a hbase:meta row for each of the specified new regions. Initial state for new regions<a name="line.1482"></a>
-<span class="sourceLineNo">1483</span> * is CLOSED.<a name="line.1483"></a>
-<span class="sourceLineNo">1484</span> * @param connection connection we're using<a name="line.1484"></a>
-<span class="sourceLineNo">1485</span> * @param regionInfos region information list<a name="line.1485"></a>
-<span class="sourceLineNo">1486</span> * @throws IOException if problem connecting or updating meta<a name="line.1486"></a>
-<span class="sourceLineNo">1487</span> */<a name="line.1487"></a>
-<span class="sourceLineNo">1488</span> public static void addRegionsToMeta(Connection connection, List<RegionInfo> regionInfos,<a name="line.1488"></a>
-<span class="sourceLineNo">1489</span> int regionReplication) throws IOException {<a name="line.1489"></a>
-<span class="sourceLineNo">1490</span> addRegionsToMeta(connection, regionInfos, regionReplication,<a name="line.1490"></a>
-<span class="sourceLineNo">1491</span> EnvironmentEdgeManager.currentTime());<a name="line.1491"></a>
-<span class="sourceLineNo">1492</span> }<a name="line.1492"></a>
-<span class="sourceLineNo">1493</span><a name="line.1493"></a>
-<span class="sourceLineNo">1494</span> /**<a name="line.1494"></a>
-<span class="sourceLineNo">1495</span> * Adds a hbase:meta row for each of the specified new regions. Initial state for new regions<a name="line.1495"></a>
-<span class="sourceLineNo">1496</span> * is CLOSED.<a name="line.1496"></a>
-<span class="sourceLineNo">1497</span> * @param connection connection we're using<a name="line.1497"></a>
-<span class="sourceLineNo">1498</span> * @param regionInfos region information list<a name="line.1498"></a>
-<span class="sourceLineNo">1499</span> * @param regionReplication<a name="line.1499"></a>
-<span class="sourceLineNo">1500</span> * @param ts desired timestamp<a name="line.1500"></a>
-<span class="sourceLineNo">1501</span> * @throws IOException if problem connecting or updating meta<a name="line.1501"></a>
-<span class="sourceLineNo">1502</span> */<a name="line.1502"></a>
-<span class="sourceLineNo">1503</span> private static void addRegionsToMeta(Connection connection, List<RegionInfo> regionInfos,<a name="line.1503"></a>
-<span class="sourceLineNo">1504</span> int regionReplication, long ts) throws IOException {<a name="line.1504"></a>
-<span class="sourceLineNo">1505</span> List<Put> puts = new ArrayList<>();<a name="line.1505"></a>
-<span class="sourceLineNo">1506</span> for (RegionInfo regionInfo : regionInfos) {<a name="line.1506"></a>
-<span class="sourceLineNo">1507</span> if (RegionReplicaUtil.isDefaultReplica(regionInfo)) {<a name="line.1507"></a>
-<span class="sourceLineNo">1508</span> Put put = makePutFromRegionInfo(regionInfo, ts);<a name="line.1508"></a>
-<span class="sourceLineNo">1509</span> // New regions are added with initial state of CLOSED.<a name="line.1509"></a>
-<span class="sourceLineNo">1510</span> addRegionStateToPut(put, RegionState.State.CLOSED);<a name="line.1510"></a>
-<span class="sourceLineNo">1511</span> // Add empty locations for region replicas so that number of replicas can be cached<a name="line.1511"></a>
-<span class="sourceLineNo">1512</span> // whenever the primary region is looked up from meta<a name="line.1512"></a>
-<span class="sourceLineNo">1513</span> for (int i = 1; i < regionReplication; i++) {<a name="line.1513"></a>
-<span class="sourceLineNo">1514</span> addEmptyLocation(put, i);<a name="line.1514"></a>
-<span class="sourceLineNo">1515</span> }<a name="line.1515"></a>
-<span class="sourceLineNo">1516</span> puts.add(put);<a name="line.1516"></a>
-<span class="sourceLineNo">1517</span> }<a name="line.1517"></a>
-<span class="sourceLineNo">1518</span> }<a name="line.1518"></a>
-<span class="sourceLineNo">1519</span> putsToMetaTable(connection, puts);<a name="line.1519"></a>
-<span class="sourceLineNo">1520</span> LOG.info("Added {} regions to meta.", puts.size());<a name="line.1520"></a>
-<span class="sourceLineNo">1521</span> }<a name="line.1521"></a>
-<span class="sourceLineNo">1522</span><a name="line.1522"></a>
-<span class="sourceLineNo">1523</span> /**<a name="line.1523"></a>
-<span class="sourceLineNo">1524</span> * Merge the two regions into one in an atomic operation. Deletes the two merging regions in<a name="line.1524"></a>
-<span class="sourceLineNo">1525</span> * hbase:meta and adds the merged region with the information of two merging regions.<a name="line.1525"></a>
-<span class="sourceLineNo">1526</span> * @param connection connection we're using<a name="line.1526"></a>
-<span class="sourceLineNo">1527</span> * @param mergedRegion the merged region<a name="line.1527"></a>
-<span class="sourceLineNo">1528</span> * @param regionA merge parent region A<a name="line.1528"></a>
-<span class="sourceLineNo">1529</span> * @param regionAOpenSeqNum the next open sequence id for region A, used by serial replication. -1<a name="line.1529"></a>
-<span class="sourceLineNo">1530</span> * if not necessary.<a name="line.1530"></a>
-<span class="sourceLineNo">1531</span> * @param regionB merge parent region B<a name="line.1531"></a>
-<span class="sourceLineNo">1532</span> * @param regionBOpenSeqNum the next open sequence id for region B, used by serial replication. -1<a name="line.1532"></a>
-<span class="sourceLineNo">1533</span> * if not necessary.<a name="line.1533"></a>
-<span class="sourceLineNo">1534</span> * @param sn the location of the region<a name="line.1534"></a>
-<span class="sourceLineNo">1535</span> */<a name="line.1535"></a>
-<span class="sourceLineNo">1536</span> public static void mergeRegions(Connection connection, RegionInfo mergedRegion,<a name="line.1536"></a>
-<span class="sourceLineNo">1537</span> RegionInfo regionA, long regionAOpenSeqNum, RegionInfo regionB, long regionBOpenSeqNum,<a name="line.1537"></a>
-<span class="sourceLineNo">1538</span> ServerName sn, int regionReplication) throws IOException {<a name="line.1538"></a>
-<span class="sourceLineNo">1539</span> try (Table meta = getMetaHTable(connection)) {<a name="line.1539"></a>
-<span class="sourceLineNo">1540</span> long time = EnvironmentEdgeManager.currentTime();<a name="line.1540"></a>
-<span class="sourceLineNo">1541</span> List<Mutation> mutations = new ArrayList<>();<a name="line.1541"></a>
-<span class="sourceLineNo">1542</span><a name="line.1542"></a>
-<span class="sourceLineNo">1543</span> List<RegionInfo> replicationParents = new ArrayList<>(2);<a name="line.1543"></a>
-<span class="sourceLineNo">1544</span> // Deletes for merging regions<a name="line.1544"></a>
-<span class="sourceLineNo">1545</span> mutations.add(makeDeleteFromRegionInfo(regionA, time));<a name="line.1545"></a>
-<span class="sourceLineNo">1546</span> if (regionAOpenSeqNum > 0) {<a name="line.1546"></a>
-<span class="sourceLineNo">1547</span> mutations.add(makePutForReplicationBarrier(regionA, regionAOpenSeqNum, time));<a name="line.1547"></a>
-<span class="sourceLineNo">1548</span> replicationParents.add(regionA);<a name="line.1548"></a>
-<span class="sourceLineNo">1549</span> }<a name="line.1549"></a>
-<span class="sourceLineNo">1550</span> mutations.add(makeDeleteFromRegionInfo(regionB, time));<a name="line.1550"></a>
-<span class="sourceLineNo">1551</span> if (regionBOpenSeqNum > 0) {<a name="line.1551"></a>
-<span class="sourceLineNo">1552</span> mutations.add(makePutForReplicationBarrier(regionB, regionBOpenSeqNum, time));<a name="line.1552"></a>
-<span class="sourceLineNo">1553</span> replicationParents.add(regionB);<a name="line.1553"></a>
-<span class="sourceLineNo">1554</span> }<a name="line.1554"></a>
-<span class="sourceLineNo">1555</span><a name="line.1555"></a>
-<span class="sourceLineNo">1556</span> // Put for parent<a name="line.1556"></a>
-<span class="sourceLineNo">1557</span> Put putOfMerged = makePutFromRegionInfo(mergedRegion, time);<a name="line.1557"></a>
-<span class="sourceLineNo">1558</span> putOfMerged.add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.1558"></a>
-<span class="sourceLineNo">1559</span> .setRow(putOfMerged.getRow())<a name="line.1559"></a>
-<span class="sourceLineNo">1560</span> .setFamily(HConstants.CATALOG_FAMILY)<a name="line.1560"></a>
-<span class="sourceLineNo">1561</span> .setQualifier(HConstants.MERGEA_QUALIFIER)<a name="line.1561"></a>
-<span class="sourceLineNo">1562</span> .setTimestamp(putOfMerged.getTimestamp())<a name="line.1562"></a>
-<span class="sourceLineNo">1563</span> .setType(Type.Put)<a name="line.1563"></a>
-<span class="sourceLineNo">1564</span> .setValue(RegionInfo.toByteArray(regionA))<a name="line.1564"></a>
-<span class="sourceLineNo">1565</span> .build())<a name="line.1565"></a>
-<span class="sourceLineNo">1566</span> .add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.1566"></a>
+<span class="sourceLineNo">1349</span> if (ps.isEmpty()) {<a name="line.1349"></a>
+<span class="sourceLineNo">1350</span> return;<a name="line.1350"></a>
+<span class="sourceLineNo">1351</span> }<a name="line.1351"></a>
+<span class="sourceLineNo">1352</span> try (Table t = getMetaHTable(connection)) {<a name="line.1352"></a>
+<span class="sourceLineNo">1353</span> debugLogMutations(ps);<a name="line.1353"></a>
+<span class="sourceLineNo">1354</span> // the implementation for putting a single Put is much simpler so here we do a check first.<a name="line.1354"></a>
+<span class="sourceLineNo">1355</span> if (ps.size() == 1) {<a name="line.1355"></a>
+<span class="sourceLineNo">1356</span> t.put(ps.get(0));<a name="line.1356"></a>
+<span class="sourceLineNo">1357</span> } else {<a name="line.1357"></a>
+<span class="sourceLineNo">1358</span> t.put(ps);<a name="line.1358"></a>
+<span class="sourceLineNo">1359</span> }<a name="line.1359"></a>
+<span class="sourceLineNo">1360</span> }<a name="line.1360"></a>
+<span class="sourceLineNo">1361</span> }<a name="line.1361"></a>
+<span class="sourceLineNo">1362</span><a name="line.1362"></a>
+<span class="sourceLineNo">1363</span> /**<a name="line.1363"></a>
+<span class="sourceLineNo">1364</span> * Delete the passed <code>d</code> from the <code>hbase:meta</code> table.<a name="line.1364"></a>
+<span class="sourceLineNo">1365</span> * @param connection connection we're using<a name="line.1365"></a>
+<span class="sourceLineNo">1366</span> * @param d Delete to add to hbase:meta<a name="line.1366"></a>
+<span class="sourceLineNo">1367</span> */<a name="line.1367"></a>
+<span class="sourceLineNo">1368</span> private static void deleteFromMetaTable(final Connection connection, final Delete d)<a name="line.1368"></a>
+<span class="sourceLineNo">1369</span> throws IOException {<a name="line.1369"></a>
+<span class="sourceLineNo">1370</span> List<Delete> dels = new ArrayList<>(1);<a name="line.1370"></a>
+<span class="sourceLineNo">1371</span> dels.add(d);<a name="line.1371"></a>
+<span class="sourceLineNo">1372</span> deleteFromMetaTable(connection, dels);<a name="line.1372"></a>
+<span class="sourceLineNo">1373</span> }<a name="line.1373"></a>
+<span class="sourceLineNo">1374</span><a name="line.1374"></a>
+<span class="sourceLineNo">1375</span> /**<a name="line.1375"></a>
+<span class="sourceLineNo">1376</span> * Delete the passed <code>deletes</code> from the <code>hbase:meta</code> table.<a name="line.1376"></a>
+<span class="sourceLineNo">1377</span> * @param connection connection we're using<a name="line.1377"></a>
+<span class="sourceLineNo">1378</span> * @param deletes Deletes to add to hbase:meta This list should support #remove.<a name="line.1378"></a>
+<span class="sourceLineNo">1379</span> */<a name="line.1379"></a>
+<span class="sourceLineNo">1380</span> private static void deleteFromMetaTable(final Connection connection, final List<Delete> deletes)<a name="line.1380"></a>
+<span class="sourceLineNo">1381</span> throws IOException {<a name="line.1381"></a>
+<span class="sourceLineNo">1382</span> try (Table t = getMetaHTable(connection)) {<a name="line.1382"></a>
+<span class="sourceLineNo">1383</span> debugLogMutations(deletes);<a name="line.1383"></a>
+<span class="sourceLineNo">1384</span> t.delete(deletes);<a name="line.1384"></a>
+<span class="sourceLineNo">1385</span> }<a name="line.1385"></a>
+<span class="sourceLineNo">1386</span> }<a name="line.1386"></a>
+<span class="sourceLineNo">1387</span><a name="line.1387"></a>
+<span class="sourceLineNo">1388</span> /**<a name="line.1388"></a>
+<span class="sourceLineNo">1389</span> * Deletes some replica columns corresponding to replicas for the passed rows<a name="line.1389"></a>
+<span class="sourceLineNo">1390</span> * @param metaRows rows in hbase:meta<a name="line.1390"></a>
+<span class="sourceLineNo">1391</span> * @param replicaIndexToDeleteFrom the replica ID we would start deleting from<a name="line.1391"></a>
+<span class="sourceLineNo">1392</span> * @param numReplicasToRemove how many replicas to remove<a name="line.1392"></a>
+<span class="sourceLineNo">1393</span> * @param connection connection we're using to access meta table<a name="line.1393"></a>
+<span class="sourceLineNo">1394</span> */<a name="line.1394"></a>
+<span class="sourceLineNo">1395</span> public static void removeRegionReplicasFromMeta(Set<byte[]> metaRows,<a name="line.1395"></a>
+<span class="sourceLineNo">1396</span> int replicaIndexToDeleteFrom, int numReplicasToRemove, Connection connection)<a name="line.1396"></a>
+<span class="sourceLineNo">1397</span> throws IOException {<a name="line.1397"></a>
+<span class="sourceLineNo">1398</span> int absoluteIndex = replicaIndexToDeleteFrom + numReplicasToRemove;<a name="line.1398"></a>
+<span class="sourceLineNo">1399</span> for (byte[] row : metaRows) {<a name="line.1399"></a>
+<span class="sourceLineNo">1400</span> long now = EnvironmentEdgeManager.currentTime();<a name="line.1400"></a>
+<span class="sourceLineNo">1401</span> Delete deleteReplicaLocations = new Delete(row);<a name="line.1401"></a>
+<span class="sourceLineNo">1402</span> for (int i = replicaIndexToDeleteFrom; i < absoluteIndex; i++) {<a name="line.1402"></a>
+<span class="sourceLineNo">1403</span> deleteReplicaLocations.addColumns(getCatalogFamily(),<a name="line.1403"></a>
+<span class="sourceLineNo">1404</span> getServerColumn(i), now);<a name="line.1404"></a>
+<span class="sourceLineNo">1405</span> deleteReplicaLocations.addColumns(getCatalogFamily(),<a name="line.1405"></a>
+<span class="sourceLineNo">1406</span> getSeqNumColumn(i), now);<a name="line.1406"></a>
+<span class="sourceLineNo">1407</span> deleteReplicaLocations.addColumns(getCatalogFamily(),<a name="line.1407"></a>
+<span class="sourceLineNo">1408</span> getStartCodeColumn(i), now);<a name="line.1408"></a>
+<span class="sourceLineNo">1409</span> }<a name="line.1409"></a>
+<span class="sourceLineNo">1410</span> deleteFromMetaTable(connection, deleteReplicaLocations);<a name="line.1410"></a>
+<span class="sourceLineNo">1411</span> }<a name="line.1411"></a>
+<span class="sourceLineNo">1412</span> }<a name="line.1412"></a>
+<span class="sourceLineNo">1413</span><a name="line.1413"></a>
+<span class="sourceLineNo">1414</span> /**<a name="line.1414"></a>
+<span class="sourceLineNo">1415</span> * Execute the passed <code>mutations</code> against <code>hbase:meta</code> table.<a name="line.1415"></a>
+<span class="sourceLineNo">1416</span> * @param connection connection we're using<a name="line.1416"></a>
+<span class="sourceLineNo">1417</span> * @param mutations Puts and Deletes to execute on hbase:meta<a name="line.1417"></a>
+<span class="sourceLineNo">1418</span> * @throws IOException<a name="line.1418"></a>
+<span class="sourceLineNo">1419</span> */<a name="line.1419"></a>
+<span class="sourceLineNo">1420</span> public static void mutateMetaTable(final Connection connection,<a name="line.1420"></a>
+<span class="sourceLineNo">1421</span> final List<Mutation> mutations)<a name="line.1421"></a>
+<span class="sourceLineNo">1422</span> throws IOException {<a name="line.1422"></a>
+<span class="sourceLineNo">1423</span> Table t = getMetaHTable(connection);<a name="line.1423"></a>
+<span class="sourceLineNo">1424</span> try {<a name="line.1424"></a>
+<span class="sourceLineNo">1425</span> debugLogMutations(mutations);<a name="line.1425"></a>
+<span class="sourceLineNo">1426</span> t.batch(mutations, null);<a name="line.1426"></a>
+<span class="sourceLineNo">1427</span> } catch (InterruptedException e) {<a name="line.1427"></a>
+<span class="sourceLineNo">1428</span> InterruptedIOException ie = new InterruptedIOException(e.getMessage());<a name="line.1428"></a>
+<span class="sourceLineNo">1429</span> ie.initCause(e);<a name="line.1429"></a>
+<span class="sourceLineNo">1430</span> throw ie;<a name="line.1430"></a>
+<span class="sourceLineNo">1431</span> } finally {<a name="line.1431"></a>
+<span class="sourceLineNo">1432</span> t.close();<a name="line.1432"></a>
+<span class="sourceLineNo">1433</span> }<a name="line.1433"></a>
+<span class="sourceLineNo">1434</span> }<a name="line.1434"></a>
+<span class="sourceLineNo">1435</span><a name="line.1435"></a>
+<span class="sourceLineNo">1436</span> private static void addRegionStateToPut(Put put, RegionState.State state) throws IOException {<a name="line.1436"></a>
+<span class="sourceLineNo">1437</span> put.add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.1437"></a>
+<span class="sourceLineNo">1438</span> .setRow(put.getRow())<a name="line.1438"></a>
+<span class="sourceLineNo">1439</span> .setFamily(HConstants.CATALOG_FAMILY)<a name="line.1439"></a>
+<span class="sourceLineNo">1440</span> .setQualifier(getRegionStateColumn())<a name="line.1440"></a>
+<span class="sourceLineNo">1441</span> .setTimestamp(put.getTimestamp())<a name="line.1441"></a>
+<span class="sourceLineNo">1442</span> .setType(Cell.Type.Put)<a name="line.1442"></a>
+<span class="sourceLineNo">1443</span> .setValue(Bytes.toBytes(state.name()))<a name="line.1443"></a>
+<span class="sourceLineNo">1444</span> .build());<a name="line.1444"></a>
+<span class="sourceLineNo">1445</span> }<a name="line.1445"></a>
+<span class="sourceLineNo">1446</span><a name="line.1446"></a>
+<span class="sourceLineNo">1447</span> /**<a name="line.1447"></a>
+<span class="sourceLineNo">1448</span> * Adds daughter region infos to hbase:meta row for the specified region. Note that this does not<a name="line.1448"></a>
+<span class="sourceLineNo">1449</span> * add its daughter's as different rows, but adds information about the daughters in the same row<a name="line.1449"></a>
+<span class="sourceLineNo">1450</span> * as the parent. Use<a name="line.1450"></a>
+<span class="sourceLineNo">1451</span> * {@link #splitRegion(Connection, RegionInfo, long, RegionInfo, RegionInfo, ServerName, int)}<a name="line.1451"></a>
+<span class="sourceLineNo">1452</span> * if you want to do that.<a name="line.1452"></a>
+<span class="sourceLineNo">1453</span> * @param connection connection we're using<a name="line.1453"></a>
+<span class="sourceLineNo">1454</span> * @param regionInfo RegionInfo of parent region<a name="line.1454"></a>
+<span class="sourceLineNo">1455</span> * @param splitA first split daughter of the parent regionInfo<a name="line.1455"></a>
+<span class="sourceLineNo">1456</span> * @param splitB second split daughter of the parent regionInfo<a name="line.1456"></a>
+<span class="sourceLineNo">1457</span> * @throws IOException if problem connecting or updating meta<a name="line.1457"></a>
+<span class="sourceLineNo">1458</span> */<a name="line.1458"></a>
+<span class="sourceLineNo">1459</span> public static void addSplitsToParent(Connection connection, RegionInfo regionInfo,<a name="line.1459"></a>
+<span class="sourceLineNo">1460</span> RegionInfo splitA, RegionInfo splitB) throws IOException {<a name="line.1460"></a>
+<span class="sourceLineNo">1461</span> Table meta = getMetaHTable(connection);<a name="line.1461"></a>
+<span class="sourceLineNo">1462</span> try {<a name="line.1462"></a>
+<span class="sourceLineNo">1463</span> Put put = makePutFromRegionInfo(regionInfo, EnvironmentEdgeManager.currentTime());<a name="line.1463"></a>
+<span class="sourceLineNo">1464</span> addDaughtersToPut(put, splitA, splitB);<a name="line.1464"></a>
+<span class="sourceLineNo">1465</span> meta.put(put);<a name="line.1465"></a>
+<span class="sourceLineNo">1466</span> debugLogMutation(put);<a name="line.1466"></a>
+<span class="sourceLineNo">1467</span> LOG.debug("Added region {}", regionInfo.getRegionNameAsString());<a name="line.1467"></a>
+<span class="sourceLineNo">1468</span> } finally {<a name="line.1468"></a>
+<span class="sourceLineNo">1469</span> meta.close();<a name="line.1469"></a>
+<span class="sourceLineNo">1470</span> }<a name="line.1470"></a>
+<span class="sourceLineNo">1471</span> }<a name="line.1471"></a>
+<span class="sourceLineNo">1472</span><a name="line.1472"></a>
+<span class="sourceLineNo">1473</span> /**<a name="line.1473"></a>
+<span class="sourceLineNo">1474</span> * Adds a (single) hbase:meta row for the specified new region and its daughters. Note that this<a name="line.1474"></a>
+<span class="sourceLineNo">1475</span> * does not add its daughter's as different rows, but adds information about the daughters<a name="line.1475"></a>
+<span class="sourceLineNo">1476</span> * in the same row as the parent. Use<a name="line.1476"></a>
+<span class="sourceLineNo">1477</span> * {@link #splitRegion(Connection, RegionInfo, long, RegionInfo, RegionInfo, ServerName, int)}<a name="line.1477"></a>
+<span class="sourceLineNo">1478</span> * if you want to do that.<a name="line.1478"></a>
+<span class="sourceLineNo">1479</span> * @param connection connection we're using<a name="line.1479"></a>
+<span class="sourceLineNo">1480</span> * @param regionInfo region information<a name="line.1480"></a>
+<span class="sourceLineNo">1481</span> * @throws IOException if problem connecting or updating meta<a name="line.1481"></a>
+<span class="sourceLineNo">1482</span> */<a name="line.1482"></a>
+<span class="sourceLineNo">1483</span> @VisibleForTesting<a name="line.1483"></a>
+<span class="sourceLineNo">1484</span> public static void addRegionToMeta(Connection connection, RegionInfo regionInfo)<a name="line.1484"></a>
+<span class="sourceLineNo">1485</span> throws IOException {<a name="line.1485"></a>
+<span class="sourceLineNo">1486</span> addRegionsToMeta(connection, Collections.singletonList(regionInfo), 1);<a name="line.1486"></a>
+<span class="sourceLineNo">1487</span> }<a name="line.1487"></a>
+<span class="sourceLineNo">1488</span><a name="line.1488"></a>
+<span class="sourceLineNo">1489</span> /**<a name="line.1489"></a>
+<span class="sourceLineNo">1490</span> * Adds a hbase:meta row for each of the specified new regions. Initial state for new regions<a name="line.1490"></a>
+<span class="sourceLineNo">1491</span> * is CLOSED.<a name="line.1491"></a>
+<span class="sourceLineNo">1492</span> * @param connection connection we're using<a name="line.1492"></a>
+<span class="sourceLineNo">1493</span> * @param regionInfos region information list<a name="line.1493"></a>
+<span class="sourceLineNo">1494</span> * @throws IOException if problem connecting or updating meta<a name="line.1494"></a>
+<span class="sourceLineNo">1495</span> */<a name="line.1495"></a>
+<span class="sourceLineNo">1496</span> public static void addRegionsToMeta(Connection connection, List<RegionInfo> regionInfos,<a name="line.1496"></a>
+<span class="sourceLineNo">1497</span> int regionReplication) throws IOException {<a name="line.1497"></a>
+<span class="sourceLineNo">1498</span> addRegionsToMeta(connection, regionInfos, regionReplication,<a name="line.1498"></a>
+<span class="sourceLineNo">1499</span> EnvironmentEdgeManager.currentTime());<a name="line.1499"></a>
+<span class="sourceLineNo">1500</span> }<a name="line.1500"></a>
+<span class="sourceLineNo">1501</span><a name="line.1501"></a>
+<span class="sourceLineNo">1502</span> /**<a name="line.1502"></a>
+<span class="sourceLineNo">1503</span> * Adds a hbase:meta row for each of the specified new regions. Initial state for new regions<a name="line.1503"></a>
+<span class="sourceLineNo">1504</span> * is CLOSED.<a name="line.1504"></a>
+<span class="sourceLineNo">1505</span> * @param connection connection we're using<a name="line.1505"></a>
+<span class="sourceLineNo">1506</span> * @param regionInfos region information list<a name="line.1506"></a>
+<span class="sourceLineNo">1507</span> * @param regionReplication<a name="line.1507"></a>
+<span class="sourceLineNo">1508</span> * @param ts desired timestamp<a name="line.1508"></a>
+<span class="sourceLineNo">1509</span> * @throws IOException if problem connecting or updating meta<a name="line.1509"></a>
+<span class="sourceLineNo">1510</span> */<a name="line.1510"></a>
+<span class="sourceLineNo">1511</span> private static void addRegionsToMeta(Connection connection, List<RegionInfo> regionInfos,<a name="line.1511"></a>
+<span class="sourceLineNo">1512</span> int regionReplication, long ts) throws IOException {<a name="line.1512"></a>
+<span class="sourceLineNo">1513</span> List<Put> puts = new ArrayList<>();<a name="line.1513"></a>
+<span class="sourceLineNo">1514</span> for (RegionInfo regionInfo : regionInfos) {<a name="line.1514"></a>
+<span class="sourceLineNo">1515</span> if (RegionReplicaUtil.isDefaultReplica(regionInfo)) {<a name="line.1515"></a>
+<span class="sourceLineNo">1516</span> Put put = makePutFromRegionInfo(regionInfo, ts);<a name="line.1516"></a>
+<span class="sourceLineNo">1517</span> // New regions are added with initial state of CLOSED.<a name="line.1517"></a>
+<span class="sourceLineNo">1518</span> addRegionStateToPut(put, RegionState.State.CLOSED);<a name="line.1518"></a>
+<span class="sourceLineNo">1519</span> // Add empty locations for region replicas so that number of replicas can be cached<a name="line.1519"></a>
+<span class="sourceLineNo">1520</span> // whenever the primary region is looked up from meta<a name="line.1520"></a>
+<span class="sourceLineNo">1521</span> for (int i = 1; i < regionReplication; i++) {<a name="line.1521"></a>
+<span class="sourceLineNo">1522</span> addEmptyLocation(put, i);<a name="line.1522"></a>
+<span class="sourceLineNo">1523</span> }<a name="line.1523"></a>
+<span class="sourceLineNo">1524</span> puts.add(put);<a name="line.1524"></a>
+<span class="sourceLineNo">1525</span> }<a name="line.1525"></a>
+<span class="sourceLineNo">1526</span> }<a name="line.1526"></a>
+<span class="sourceLineNo">1527</span> putsToMetaTable(connection, puts);<a name="line.1527"></a>
+<span class="sourceLineNo">1528</span> LOG.info("Added {} regions to meta.", puts.size());<a name="line.1528"></a>
+<span class="sourceLineNo">1529</span> }<a name="line.1529"></a>
+<span class="sourceLineNo">1530</span><a name="line.1530"></a>
+<span class="sourceLineNo">1531</span> /**<a name="line.1531"></a>
+<span class="sourceLineNo">1532</span> * Merge the two regions into one in an atomic operation. Deletes the two merging regions in<a name="line.1532"></a>
+<span class="sourceLineNo">1533</span> * hbase:meta and adds the merged region with the information of two merging regions.<a name="line.1533"></a>
+<span class="sourceLineNo">1534</span> * @param connection connection we're using<a name="line.1534"></a>
+<span class="sourceLineNo">1535</span> * @param mergedRegion the merged region<a name="line.1535"></a>
+<span class="sourceLineNo">1536</span> * @param regionA merge parent region A<a name="line.1536"></a>
+<span class="sourceLineNo">1537</span> * @param regionAOpenSeqNum the next open sequence id for region A, used by serial replication. -1<a name="line.1537"></a>
+<span class="sourceLineNo">1538</span> * if not necessary.<a name="line.1538"></a>
+<span class="sourceLineNo">1539</span> * @param regionB merge parent region B<a name="line.1539"></a>
+<span class="sourceLineNo">1540</span> * @param regionBOpenSeqNum the next open sequence id for region B, used by serial replication. -1<a name="line.1540"></a>
+<span class="sourceLineNo">1541</span> * if not necessary.<a name="line.1541"></a>
+<span class="sourceLineNo">1542</span> * @param sn the location of the region<a name="line.1542"></a>
+<span class="sourceLineNo">1543</span> */<a name="line.1543"></a>
+<span class="sourceLineNo">1544</span> public static void mergeRegions(Connection connection, RegionInfo mergedRegion,<a name="line.1544"></a>
+<span class="sourceLineNo">1545</span> RegionInfo regionA, long regionAOpenSeqNum, RegionInfo regionB, long regionBOpenSeqNum,<a name="line.1545"></a>
+<span class="sourceLineNo">1546</span> ServerName sn, int regionReplication) throws IOException {<a name="line.1546"></a>
+<span class="sourceLineNo">1547</span> try (Table meta = getMetaHTable(connection)) {<a name="line.1547"></a>
+<span class="sourceLineNo">1548</span> long time = EnvironmentEdgeManager.currentTime();<a name="line.1548"></a>
+<span class="sourceLineNo">1549</span> List<Mutation> mutations = new ArrayList<>();<a name="line.1549"></a>
+<span class="sourceLineNo">1550</span><a name="line.1550"></a>
+<span class="sourceLineNo">1551</span> List<RegionInfo> replicationParents = new ArrayList<>(2);<a name="line.1551"></a>
+<span class="sourceLineNo">1552</span> // Deletes for merging regions<a name="line.1552"></a>
+<span class="sourceLineNo">1553</span> mutations.add(makeDeleteFromRegionInfo(regionA, time));<a name="line.1553"></a>
+<span class="sourceLineNo">1554</span> if (regionAOpenSeqNum > 0) {<a name="line.1554"></a>
+<span class="sourceLineNo">1555</span> mutations.add(makePutForReplicationBarrier(regionA, regionAOpenSeqNum, time));<a name="line.1555"></a>
+<span class="sourceLineNo">1556</span> replicationParents.add(regionA);<a name="line.1556"></a>
+<span class="sourceLineNo">1557</span> }<a name="line.1557"></a>
+<span class="sourceLineNo">1558</span> mutations.add(makeDeleteFromRegionInfo(regionB, time));<a name="line.1558"></a>
+<span class="sourceLineNo">1559</span> if (regionBOpenSeqNum > 0) {<a name="line.1559"></a>
+<span class="sourceLineNo">1560</span> mutations.add(makePutForReplicationBarrier(regionB, regionBOpenSeqNum, time));<a name="line.1560"></a>
+<span class="sourceLineNo">1561</span> replicationParents.add(regionB);<a name="line.1561"></a>
+<span class="sourceLineNo">1562</span> }<a name="line.1562"></a>
+<span class="sourceLineNo">1563</span><a name="line.1563"></a>
+<span class="sourceLineNo">1564</span> // Put for parent<a name="line.1564"></a>
+<span class="sourceLineNo">1565</span> Put putOfMerged = makePutFromRegionInfo(mergedRegion, time);<a name="line.1565"></a>
+<span class="sourceLineNo">1566</span> putOfMerged.add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.1566"></a>
<span class="sourceLineNo">1567</span> .setRow(putOfMerged.getRow())<a name="line.1567"></a>
<span class="sourceLineNo">1568</span> .setFamily(HConstants.CATALOG_FAMILY)<a name="line.1568"></a>
-<span class="sourceLineNo">1569</span> .setQualifier(HConstants.MERGEB_QUALIFIER)<a name="line.1569"></a>
+<span class="sourceLineNo">1569</span> .setQualifier(HConstants.MERGEA_QUALIFIER)<a name="line.1569"></a>
<span class="sourceLineNo">1570</span> .setTimestamp(putOfMerged.getTimestamp())<a name="line.1570"></a>
<span class="sourceLineNo">1571</span> .setType(Type.Put)<a name="line.1571"></a>
-<span class="sourceLineNo">1572</span> .setValue(RegionInfo.toByteArray(regionB))<a name="line.1572"></a>
-<span class="sourceLineNo">1573</span> .build());<a name="line.1573"></a>
-<span class="sourceLineNo">1574</span> // Set initial state to CLOSED<a name="line.1574"></a>
-<span class="sourceLineNo">1575</span> // NOTE: If initial state is not set to CLOSED then merged region gets added with the<a name="line.1575"></a>
-<span class="sourceLineNo">1576</span> // default OFFLINE state. If Master gets restarted after this step, start up sequence of<a name="line.1576"></a>
-<span class="sourceLineNo">1577</span> // master tries to assign this offline region. This is followed by re-assignments of the<a name="line.1577"></a>
-<span class="sourceLineNo">1578</span> // merged region from resumed {@link MergeTableRegionsProcedure}<a name="line.1578"></a>
-<span class="sourceLineNo">1579</span> addRegionStateToPut(putOfMerged, RegionState.State.CLOSED);<a name="line.1579"></a>
-<span class="sourceLineNo">1580</span> mutations.add(putOfMerged);<a name="line.1580"></a>
-<span class="sourceLineNo">1581</span> // The merged is a new region, openSeqNum = 1 is fine. ServerName may be null<a name="line.1581"></a>
-<span class="sourceLineNo">1582</span> // if crash after merge happened but before we got to here.. means in-memory<a name="line.1582"></a>
-<span class="sourceLineNo">1583</span> // locations of offlined merged, now-closed, regions is lost. Should be ok. We<a name="line.1583"></a>
-<span class="sourceLineNo">1584</span> // assign the merged region later.<a name="line.1584"></a>
-<span class="sourceLineNo">1585</span> if (sn != null) {<a name="line.1585"></a>
-<span class="sourceLineNo">1586</span> addLocation(putOfMerged, sn, 1, mergedRegion.getReplicaId());<a name="line.1586"></a>
-<span class="sourceLineNo">1587</span> }<a name="line.1587"></a>
-<span class="sourceLineNo">1588</span><a name="line.1588"></a>
-<span class="sourceLineNo">1589</span> // Add empty locations for region replicas of the merged region so that number of replicas can<a name="line.1589"></a>
-<span class="sourceLineNo">1590</span> // be cached whenever the primary region is looked up from meta<a name="line.1590"></a>
-<span class="sourceLineNo">1591</span> for (int i = 1; i < regionReplication; i++) {<a name="line.1591"></a>
-<span class="sourceLineNo">1592</span> addEmptyLocation(putOfMerged, i);<a name="line.1592"></a>
-<span class="sourceLineNo">1593</span> }<a name="line.1593"></a>
-<span class="sourceLineNo">1594</span> // add parent reference for serial replication<a name="line.1594"></a>
-<span class="sourceLineNo">1595</span> if (!replicationParents.isEmpty()) {<a name="line.1595"></a>
-<span class="sourceLineNo">1596</span> addReplicationParent(putOfMerged, replicationParents);<a name="line.1596"></a>
-<span class="sourceLineNo">1597</span> }<a name="line.1597"></a>
-<span class="sourceLineNo">1598</span> byte[] tableRow = Bytes.toBytes(mergedRegion.getRegionNameAsString() + HConstants.DELIMITER);<a name="line.1598"></a>
-<span class="sourceLineNo">1599</span> multiMutate(connection, meta, tableRow, mutations);<a name="line.1599"></a>
-<span class="sourceLineNo">1600</span> }<a name="line.1600"></a>
-<span class="sourceLineNo">1601</span> }<a name="line.1601"></a>
-<span class="sourceLineNo">1602</span><a name="line.1602"></a>
-<span class="sourceLineNo">1603</span> /**<a name="line.1603"></a>
-<span class="sourceLineNo">1604</span> * Splits the region into two in an atomic operation. Offlines the parent region with the<a name="line.1604"></a>
-<span class="sourceLineNo">1605</span> * information that it is split into two, and also adds the daughter regions. Does not add the<a name="line.1605"></a>
-<span class="sourceLineNo">1606</span> * location information to the daughter regions since they are not open yet.<a name="line.1606"></a>
-<span class="sourceLineNo">1607</span> * @param connection connection we're using<a name="line.1607"></a>
-<span class="sourceLineNo">1608</span> * @param parent the parent region which is split<a name="line.1608"></a>
-<span class="sourceLineNo">1609</span> * @param parentOpenSeqNum the next open sequence id for parent region, used by serial<a name="line.1609"></a>
-<span class="sourceLineNo">1610</span> * replication. -1 if not necessary.<a name="line.1610"></a>
-<span class="sourceLineNo">1611</span> * @param splitA Split daughter region A<a name="line.1611"></a>
-<span class="sourceLineNo">1612</span> * @param splitB Split daughter region B<a name="line.1612"></a>
-<span class="sourceLineNo">1613</span> * @param sn the location of the region<a name="line.1613"></a>
-<span class="sourceLineNo">1614</span> */<a name="line.1614"></a>
-<span class="sourceLineNo">1615</span> public static void splitRegion(Connection connection, RegionInfo parent, long parentOpenSeqNum,<a name="line.1615"></a>
-<span class="sourceLineNo">1616</span> RegionInfo splitA, RegionInfo splitB, ServerName sn, int regionReplication)<a name="line.1616"></a>
-<span class="sourceLineNo">1617</span> throws IOException {<a name="line.1617"></a>
-<span class="sourceLineNo">1618</span> try (Table meta = getMetaHTable(connection)) {<a name="line.1618"></a>
-<span class="sourceLineNo">1619</span> long time = EnvironmentEdgeManager.currentTime();<a name="line.1619"></a>
-<span class="sourceLineNo">1620</span> // Put for parent<a name="line.1620"></a>
-<span class="sourceLineNo">1621</span> Put putParent = makePutFromRegionInfo(RegionInfoBuilder.newBuilder(parent)<a name="line.1621"></a>
-<span class="sourceLineNo">1622</span> .setOffline(true)<a name="line.1622"></a>
-<span class="sourceLineNo">1623</span> .setSplit(true).build(), time);<a name="line.1623"></a>
-<span class="sourceLineNo">1624</span> addDaughtersToPut(putParent, splitA, splitB);<a name="line.1624"></a>
-<span class="sourceLineNo">1625</span><a name="line.1625"></a>
-<span class="sourceLineNo">1626</span> // Puts for daughters<a name="line.1626"></a>
-<span class="sourceLineNo">1627</span> Put putA = makePutFromRegionInfo(splitA, time);<a name="line.1627"></a>
-<span class="sourceLineNo">1628</span> Put putB = makePutFromRegionInfo(splitB, time);<a name="line.1628"></a>
-<span class="sourceLineNo">1629</span> if (parentOpenSeqNum > 0) {<a name="line.1629"></a>
-<span class="sourceLineNo">1630</span> addReplicationBarrier(putParent, parentOpenSeqNum);<a name="line.1630"></a>
-<span class="sourceLineNo">1631</span> addReplicationParent(putA, Collections.singletonList(parent));<a name="line.1631"></a>
-<span class="sourceLineNo">1632</span> addReplicationParent(putB, Collections.singletonList(parent));<a name="line.1632"></a>
-<span class="sourceLineNo">1633</span> }<a name="line.1633"></a>
-<span class="sourceLineNo">1634</span> // Set initial state to CLOSED<a name="line.1634"></a>
-<span class="sourceLineNo">1635</span> // NOTE: If initial state is not set to CLOSED then daughter regions get added with the<a name="line.1635"></a>
-<span class="sourceLineNo">1636</span> // default OFFLINE state. If Master gets restarted after this step, start up sequence of<a name="line.1636"></a>
-<span class="sourceLineNo">1637</span> // master tries to assign these offline regions. This is followed by re-assignments of the<a name="line.1637"></a>
-<span class="sourceLineNo">1638</span> // daughter regions from resumed {@link SplitTableRegionProcedure}<a name="line.1638"></a>
-<span class="sourceLineNo">1639</span> addRegionStateToPut(putA, RegionState.State.CLOSED);<a name="line.1639"></a>
-<span class="sourceLineNo">1640</span> addRegionStateToPut(putB, RegionState.State.CLOSED);<a name="line.1640"></a>
-<span class="sourceLineNo">1641</span><a name="line.1641"></a>
-<span class="sourceLineNo">1642</span> addSequenceNum(putA, 1, splitA.getReplicaId()); // new regions, openSeqNum = 1 is fine.<a name="line.1642"></a>
-<span class="sourceLineNo">1643</span> addSequenceNum(putB, 1, splitB.getReplicaId());<a name="line.1643"></a>
-<span class="sourceLineNo">1644</span><a name="line.1644"></a>
-<span class="sourceLineNo">1645</span> // Add empty locations for region replicas of daughters so that number of replicas can be<a name="line.1645"></a>
-<span class="sourceLineNo">1646</span> // cached whenever the primary region is looked up from meta<a name="line.1646"></a>
-<span class="sourceLineNo">1647</span> for (int i = 1; i < regionReplication; i++) {<a name="line.1647"></a>
-<span class="sourceLineNo">1648</span> addEmptyLocation(putA, i);<a name="line.1648"></a>
-<span class="sourceLineNo">1649</span> addEmptyLocation(putB, i);<a name="line.1649"></a>
-<span class="sourceLineNo">1650</span> }<a name="line.1650"></a>
-<span class="sourceLineNo">1651</span><a name="line.1651"></a>
-<span class="sourceLineNo">1652</span> byte[] tableRow = Bytes.toBytes(parent.getRegionNameAsString() + HConstants.DELIMITER);<a name="line.1652"></a>
-<span class="sourceLineNo">1653</span> multiMutate(connection, meta, tableRow, putParent, putA, putB);<a name="line.1653"></a>
-<span class="sourceLineNo">1654</span> }<a name="line.1654"></a>
-<span class="sourceLineNo">1655</span> }<a name="line.1655"></a>
-<span class="sourceLineNo">1656</span><a name="line.1656"></a>
-<span class="sourceLineNo">1657</span> /**<a name="line.1657"></a>
-<span class="sourceLineNo">1658</span> * Update state of the table in meta.<a name="line.1658"></a>
-<span class="sourceLineNo">1659</span> * @param connection what we use for update<a name="line.1659"></a>
-<span class="sourceLineNo">1660</span> * @param state new state<a name="line.1660"></a>
-<span class="sourceLineNo">1661</span> */<a name="line.1661"></a>
-<span class="sourceLineNo">1662</span> private static void updateTableState(Connection connection, TableState state) throws IOException {<a name="line.1662"></a>
-<span class="sourceLineNo">1663</span> Put put = makePutFromTableState(state, EnvironmentEdgeManager.currentTime());<a name="line.1663"></a>
-<span class="sourceLineNo">1664</span> putToMetaTable(connection, put);<a name="line.1664"></a>
-<span class="sourceLineNo">1665</span> LOG.info("Updated {} in hbase:meta", state);<a name="line.1665"></a>
-<span class="sourceLineNo">1666</span> }<a name="line.1666"></a>
-<span class="sourceLineNo">1667</span><a name="line.1667"></a>
-<span class="sourceLineNo">1668</span> /**<a name="line.1668"></a>
-<span class="sourceLineNo">1669</span> * Construct PUT for given state<a name="line.1669"></a>
-<span class="sourceLineNo">1670</span> * @param state new state<a name="line.1670"></a>
-<span class="sourceLineNo">1671</span> */<a name="line.1671"></a>
-<span class="sourceLineNo">1672</span> public static Put makePutFromTableState(TableState state, long ts) {<a name="line.1672"></a>
-<span class="sourceLineNo">1673</span> Put put = new Put(state.getTableName().getName(), ts);<a name="line.1673"></a>
-<span class="sourceLineNo">1674</span> put.addColumn(getTableFamily(), getTableStateColumn(), state.convert().toByteArray());<a name="line.1674"></a>
-<span class="sourceLineNo">1675</span> return put;<a name="line.1675"></a>
-<span class="sourceLineNo">1676</span> }<a name="line.1676"></a>
-<span class="sourceLineNo">1677</span><a name="line.1677"></a>
-<span class="sourceLineNo">1678</span> /**<a name="line.1678"></a>
-<span class="sourceLineNo">1679</span> * Remove state for table from meta<a name="line.1679"></a>
-<span class="sourceLineNo">1680</span> * @param connection to use for deletion<a name="line.1680"></a>
-<span class="sourceLineNo">1681</span> * @param table to delete state for<a name="line.1681"></a>
-<span class="sourceLineNo">1682</span> */<a name="line.1682"></a>
-<span class="sourceLineNo">1683</span> public static void deleteTableState(Connection connection, TableName table)<a name="line.1683"></a>
-<span class="sourceLineNo">1684</span> throws IOException {<a name="line.1684"></a>
-<span class="sourceLineNo">1685</span> long time = EnvironmentEdgeManager.currentTime();<a name="line.1685"></a>
-<span class="sourceLineNo">1686</span> Delete delete = new Delete(table.getName());<a name="line.1686"></a>
-<span class="sourceLineNo">1687</span> delete.addColumns(getTableFamily(), getTableStateColumn(), time);<a name="line.1687"></a>
-<span class="sourceLineNo">1688</span> deleteFromMetaTable(connection, delete);<a name="line.1688"></a>
-<span class="sourceLineNo">1689</span> LOG.info("Deleted table " + table + " state from META");<a name="line.1689"></a>
-<span class="sourceLineNo">1690</span> }<a name="line.1690"></a>
-<span class="sourceLineNo">1691</span><a name="line.1691"></a>
-<span class="sourceLineNo">1692</span> private static void multiMutate(Connection connection, Table table, byte[] row,<a name="line.1692"></a>
-<span class="sourceLineNo">1693</span> Mutation... mutations) throws IOException {<a name="line.1693"></a>
-<span class="sourceLineNo">1694</span> multiMutate(connection, table, row, Arrays.asList(mutations));<a name="line.1694"></a>
-<span class="sourceLineNo">1695</span> }<a name="line.1695"></a>
-<span class="sourceLineNo">1696</span><a name="line.1696"></a>
-<span class="sourceLineNo">1697</span> /**<a name="line.1697"></a>
-<span class="sourceLineNo">1698</span> * Performs an atomic multi-mutate operation against the given table.<a name="line.1698"></a>
-<span class="sourceLineNo">1699</span> */<a name="line.1699"></a>
-<span class="sourceLineNo">1700</span> private static void multiMutate(Connection connection, final Table table, byte[] row,<a name="line.1700"></a>
-<span class="sourceLineNo">1701</span> final List<Mutation> mutations) throws IOException {<a name="line.1701"></a>
-<span class="sourceLineNo">1702</span> debugLogMutations(mutations);<a name="line.1702"></a>
-<span class="sourceLineNo">1703</span> // TODO: Need rollback!!!!<a name="line.1703"></a>
-<span class="sourceLineNo">1704</span> // TODO: Need Retry!!!<a name="line.1704"></a>
-<span class="sourceLineNo">1705</span> // TODO: What for a timeout? Default write timeout? GET FROM HTABLE?<a name="line.1705"></a>
-<span class="sourceLineNo">1706</span> // TODO: Review when we come through with ProcedureV2.<a name="line.1706"></a>
-<span class="sourceLineNo">1707</span> RegionServerCallable<MutateRowsResponse,<a name="line.1707"></a>
-<span class="sourceLineNo">1708</span> MultiRowMutationProtos.MultiRowMutationService.BlockingInterface> callable =<a name="line.1708"></a>
-<span class="sourceLineNo">1709</span> new RegionServerCallable<MutateRowsResponse,<a name="line.1709"></a>
-<span class="sourceLineNo">1710</span> MultiRowMutationProtos.MultiRowMutationService.BlockingInterface>(<a name="line.1710"></a>
-<span class="sourceLineNo">1711</span> connection, table.getName(), row, null/*RpcController not used in this CPEP!*/) {<a name="line.1711"></a>
-<span class="sourceLineNo">1712</span> @Override<a name="line.1712"></a>
-<span class="sourceLineNo">1713</span> protected MutateRowsResponse rpcCall() throws Exception {<a name="line.1713"></a>
-<span class="sourceLineNo">1714</span> final MutateRowsRequest.Builder builder = MutateRowsRequest.newBuilder();<a name="line.1714"></a>
-<span class="sourceLineNo">1715</span> for (Mutation mutation : mutations) {<a name="line.1715"></a>
-<span class="sourceLineNo">1716</span> if (mutation instanceof Put) {<a name="line.1716"></a>
-<span class="sourceLineNo">1717</span> builder.addMutationRequest(ProtobufUtil.toMutation(<a name="line.1717"></a>
-<span class="sourceLineNo">1718</span> ClientProtos.MutationProto.MutationType.PUT, mutation));<a name="line.1718"></a>
-<span class="sourceLineNo">1719</span> } else if (mutation instanceof Delete) {<a name="line.1719"></a>
-<span class="sourceLineNo">1720</span> builder.addMutationRequest(ProtobufUtil.toMutation(<a name="line.1720"></a>
-<span class="sourceLineNo">1721</span> ClientProtos.MutationProto.MutationType.DELETE, mutation));<a name="line.1721"></a>
-<span class="sourceLineNo">1722</span> } else {<a name="line.1722"></a>
-<span class="sourceLineNo">1723</span> throw new DoNotRetryIOException("multi in MetaEditor doesn't support "<a name="line.1723"></a>
-<span class="sourceLineNo">1724</span> + mutation.getClass().getName());<a name="line.1724"></a>
-<span class="sourceLineNo">1725</span> }<a name="line.1725"></a>
-<span class="sourceLineNo">1726</span> }<a name="line.1726"></a>
-<span class="sourceLineNo">1727</span> // The call to #prepare that ran before this invocation will have populated HRegionLocation.<a name="line.1727"></a>
-<span class="sourceLineNo">1728</span> HRegionLocation hrl = getLocation();<a name="line.1728"></a>
-<span class="sourceLineNo">1729</span> RegionSpecifier region = ProtobufUtil.buildRegionSpecifier(<a name="line.1729"></a>
-<span class="sourceLineNo">1730</span> RegionSpecifierType.REGION_NAME, hrl.getRegion().getRegionName());<a name="line.1730"></a>
-<span class="sourceLineNo">1731</span> builder.setRegion(region);<a name="line.1731"></a>
-<span class="sourceLineNo">1732</span> // The rpcController here is awkward. The Coprocessor Endpoint wants an instance of a<a name="line.1732"></a>
-<span class="sourceLineNo">1733</span> // com.google.protobuf but we are going over an rpc that is all shaded protobuf so it<a name="line.1733"></a>
-<span class="sourceLineNo">1734</span> // wants a org.apache.h.h.shaded.com.google.protobuf.RpcController. Set up a factory<a name="line.1734"></a>
-<span class="sourceLineNo">1735</span> // that makes com.google.protobuf.RpcController and then copy into it configs.<a name="line.1735"></a>
-<span class="sourceLineNo">1736</span> return getStub().mutateRows(null, builder.build());<a name="line.1736"></a>
-<span class="sourceLineNo">1737</span> }<a name="line.1737"></a>
-<span class="sourceLineNo">1738</span><a name="line.1738"></a>
-<span class="sourceLineNo">1739</span> @Override<a name="line.1739"></a>
-<span class="sourceLineNo">1740</span> // Called on the end of the super.prepare call. Set the stub.<a name="line.1740"></a>
-<span class="sourceLineNo">1741</span> protected void setStubByServiceName(ServerName serviceName/*Ignored*/) throws IOException {<a name="line.1741"></a>
-<span class="sourceLineNo">1742</span> CoprocessorRpcChannel channel = table.coprocessorService(getRow());<a name="line.1742"></a>
-<span class="sourceLineNo">1743</span> setStub(MultiRowMutationProtos.MultiRowMutationService.newBlockingStub(channel));<a name="line.1743"></a>
-<span class="sourceLineNo">1744</span> }<a name="line.1744"></a>
-<span class="sourceLineNo">1745</span> };<a name="line.1745"></a>
-<span class="sourceLineNo">1746</span> int writeTimeout = connection.getConfiguration().getInt(HConstants.HBASE_RPC_WRITE_TIMEOUT_KEY,<a name="line.1746"></a>
-<span class="sourceLineNo">1747</span> connection.getConfiguration().getInt(HConstants.HBASE_RPC_TIMEOUT_KEY,<a name="line.1747"></a>
-<span class="sourceLineNo">1748</span> HConstants.DEFAULT_HBASE_RPC_TIMEOUT));<a name="line.1748"></a>
-<span class="sourceLineNo">1749</span> // The region location should be cached in connection. Call prepare so this callable picks<a name="line.1749"></a>
-<span class="sourceLineNo">1750</span> // up the region location (see super.prepare method).<a name="line.1750"></a>
-<span class="sourceLineNo">1751</span> callable.prepare(false);<a name="line.1751"></a>
-<span class="sourceLineNo">1752</span> callable.call(writeTimeout);<a name="line.1752"></a>
-<span class="sourceLineNo">1753</span> }<a name="line.1753"></a>
-<span class="sourceLineNo">1754</span><a name="line.1754"></a>
-<span class="sourceLineNo">1755</span> /**<a name="line.1755"></a>
-<span class="sourceLineNo">1756</span> * Updates the location of the specified region in hbase:meta to be the specified server hostname<a name="line.1756"></a>
-<span class="sourceLineNo">1757</span> * and startcode.<a name="line.1757"></a>
-<span class="sourceLineNo">1758</span> * <p><a name="line.1758"></a>
-<span class="sourceLineNo">1759</span> * Uses passed catalog tracker to get a connection to the server hosting hbase:meta and makes<a name="line.1759"></a>
-<span class="sourceLineNo">1760</span> * edits to that region.<a name="line.1760"></a>
-<span class="sourceLineNo">1761</span> * @param connection connection we're using<a name="line.1761"></a>
-<span class="sourceLineNo">1762</span> * @param regionInfo region to update location of<a name="line.1762"></a>
-<span class="sourceLineNo">1763</span> * @param openSeqNum the latest sequence number obtained when the region was open<a name="line.1763"></a>
-<span class="sourceLineNo">1764</span> * @param sn Server name<a name="line.1764"></a>
-<span class="sourceLineNo">1765</span> * @param masterSystemTime wall clock time from master if passed in the open region RPC<a name="line.1765"></a>
-<span class="sourceLineNo">1766</span> */<a name="line.1766"></a>
-<span class="sourceLineNo">1767</span> @VisibleForTesting<a name="line.1767"></a>
-<span class="sourceLineNo">1768</span> public static void updateRegionLocation(Connection connection, RegionInfo regionInfo,<a name="line.1768"></a>
-<span class="sourceLineNo">1769</span> ServerName sn, long openSeqNum, long masterSystemTime) throws IOException {<a name="line.1769"></a>
-<span class="sourceLineNo">1770</span> updateLocation(connection, regionInfo, sn, openSeqNum, masterSystemTime);<a name="line.1770"></a>
-<span class="sourceLineNo">1771</span> }<a name="line.1771"></a>
-<span class="sourceLineNo">1772</span><a name="line.1772"></a>
-<span class="sourceLineNo">1773</span> /**<a name="line.1773"></a>
-<span class="sourceLineNo">1774</span> * Updates the location of the specified region to be the specified server.<a name="line.1774"></a>
-<span class="sourceLineNo">1775</span> * <p><a name="line.1775"></a>
-<span class="sourceLineNo">1776</span> * Connects to the specified server which should be hosting the specified catalog region name to<a name="line.1776"></a>
-<span class="sourceLineNo">1777</span> * perform the edit.<a name="line.1777"></a>
-<span class="sourceLineNo">1778</span> * @param connection connection we're using<a name="line.1778"></a>
-<span class="sourceLineNo">1779</span> * @param regionInfo region to update location of<a name="line.1779"></a>
-<span class="sourceLineNo">1780</span> * @param sn Server name<a name="line.1780"></a>
-<span class="sourceLineNo">1781</span> * @param openSeqNum the latest sequence number obtained when the region was open<a name="line.1781"></a>
-<span class="sourceLineNo">1782</span> * @param masterSystemTime wall clock time from master if passed in the open region RPC<a name="line.1782"></a>
-<span class="sourceLineNo">1783</span> * @throws IOException In particular could throw {@link java.net.ConnectException} if the server<a name="line.1783"></a>
-<span class="sourceLineNo">1784</span> * is down on other end.<a name="line.1784"></a>
-<span class="sourceLineNo">1785</span> */<a name="line.1785"></a>
-<span class="sourceLineNo">1786</span> private static void updateLocation(Connection connection, RegionInfo regionInfo, ServerName sn,<a name="line.1786"></a>
-<span class="sourceLineNo">1787</span> long openSeqNum, long masterSystemTime) throws IOException {<a name="line.1787"></a>
-<span class="sourceLineNo">1788</span> // region replicas are kept in the primary region's row<a name="line.1788"></a>
-<span class="sourceLineNo">1789</span> Put put = new Put(getMetaKeyForRegion(regionInfo), masterSystemTime);<a name="line.1789"></a>
-<span class="sourceLineNo">1790</span> addRegionInfo(put, regionInfo);<a name="line.1790"></a>
-<span class="sourceLineNo">1791</span> addLocation(put, sn, openSeqNum, regionInfo.getReplicaId());<a name="line.1791"></a>
-<span class="sourceLineNo">1792</span> putToMetaTable(connection, put);<a name="line.1792"></a>
-<span class="sourceLineNo">1793</span> LOG.info("Updated row {} with server=", regionInfo.getRegionNameAsString(), sn);<a name="line.1793"></a>
-<span class="sourceLineNo">1794</span> }<a name="line.1794"></a>
-<span class="sourceLineNo">1795</span><a name="line.1795"></a>
-<span class="sourceLineNo">1796</span> /**<a name="line.1796"></a>
-<span class="sourceLineNo">1797</span> * Deletes the specified region from META.<a name="line.1797"></a>
-<span class="sourceLineNo">1798</span> * @param connection connection we're using<a name="line.1798"></a>
-<span class="sourceLineNo">1799</span> * @param regionInfo region to be deleted from META<a name="line.1799"></a>
-<span class="sourceLineNo">1800</span> * @throws IOException<a name="line.1800"></a>
-<span class="sourceLineNo">1801</span> */<a name="line.1801"></a>
-<span class="sourceLineNo">1802</span> public static void deleteRegion(Connection connection, RegionInfo regionInfo) throws IOException {<a name="line.1802"></a>
-<span class="sourceLineNo">1803</span> long time = EnvironmentEdgeManager.currentTime();<a name="line.1803"></a>
-<span class="sourceLineNo">1804</span> Delete delete = new Delete(regionInfo.getRegionName());<a name="line.1804"></a>
-<span class="sourceLineNo">1805</span> delete.addFamily(getCatalogFamily(), time);<a name="line.1805"></a>
-<span class="sourceLineNo">1806</span> deleteFromMetaTable(connection, delete);<a name="line.1806"></a>
-<span class="sourceLineNo">1807</span> LOG.info("Deleted " + regionInfo.getRegionNameAsString());<a name="line.1807"></a>
-<span class="sourceLineNo">1808</span> }<a name="line.1808"></a>
-<span class="sourceLineNo">1809</span><a name="line.1809"></a>
-<span class="sourceLineNo">1810</span> /**<a name="line.1810"></a>
-<span class="sourceLineNo">1811</span> * Deletes the specified regions from META.<a name="line.1811"></a>
-<span class="sourceLineNo">1812</span> * @param connection connection we're using<a name="line.1812"></a>
-<span class="sourceLineNo">1813</span> * @param regionsInfo list of regions to be deleted from META<a name="line.1813"></a>
-<span class="sourceLineNo">1814</span> */<a name="line.1814"></a>
-<span class="sourceLineNo">1815</span> public static void deleteRegions(Connection connection, List<RegionInfo> regionsInfo)<a name="line.1815"></a>
-<span class="sourceLineNo">1816</span> throws IOException {<a name="line.1816"></a>
-<span class="sourceLineNo">1817</span> deleteRegions(connection, regionsInfo, EnvironmentEdgeManager.currentTime());<a name="line.1817"></a>
-<span class="sourceLineNo">1818</span> }<a name="line.1818"></a>
-<span class="sourceLineNo">1819</span> /**<a name="line.1819"></a>
-<span class="sourceLineNo">1820</span> * Deletes the specified regions from META.<a name="line.1820"></a>
-<span class="sourceLineNo">1821</span> * @param connection connection we're using<a name="line.1821"></a>
-<span class="sourceLineNo">1822</span> * @param regionsInfo list of regions to be deleted from META<a name="line.1822"></a>
-<span class="sourceLineNo">1823</span> */<a name="line.1823"></a>
-<span class="sourceLineNo">1824</span> public static void deleteRegions(Connection connection, List<RegionInfo> regionsInfo, long ts)<a name="line.1824"></a>
-<span class="sourceLineNo">1825</span> throws IOException {<a name="line.1825"></a>
-<span class="sourceLineNo">1826</span> List<Delete> deletes = new ArrayList<>(regionsInfo.size());<a name="line.1826"></a>
-<span class="sourceLineNo">1827</span> for (RegionInfo hri : regionsInfo) {<a name="line.1827"></a>
-<span class="sourceLineNo">1828</span> Delete e = new Delete(hri.getRegionName());<a name="line.1828"></a>
-<span class="sourceLineNo">1829</span> e.addFamily(getCatalogFamily(), ts);<a name="line.1829"></a>
-<span class="sourceLineNo">1830</span> deletes.add(e);<a name="line.1830"></a>
-<span class="sourceLineNo">1831</span> }<a name="line.1831"></a>
-<span class="sourceLineNo">1832</span> deleteFromMetaTable(connection, deletes);<a name="line.1832"></a>
-<span class="sourceLineNo">1833</span> LOG.info("Deleted {} regions from META", regionsInfo.size());<a name="line.1833"></a>
-<span class="sourceLineNo">1834</span> LOG.debug("Deleted regions: {}", regionsInfo);<a name="line.1834"></a>
-<span class="sourceLineNo">1835</span> }<a name="line.1835"></a>
-<span class="sourceLineNo">1836</span><a name="line.1836"></a>
-<span class="sourceLineNo">1837</span> /**<a name="line.1837"></a>
-<span class="sourceLineNo">1838</span> * Overwrites the specified regions from hbase:meta. Deletes old rows for the given regions and<a name="line.1838"></a>
-<span class="sourceLineNo">1839</span> * adds new ones. Regions added back have state CLOSED.<a name="line.1839"></a>
-<span class="sourceLineNo">1840</span> * @param connection connection we're using<a name="line.1840"></a>
-<span class="sourceLineNo">1841</span> * @param regionInfos list of regions to be added to META<a name="line.1841"></a>
-<span class="sourceLineNo">1842</span> */<a name="line.1842"></a>
-<span class="sourceLineNo">1843</span> public static void overwriteRegions(Connection connection,<a name="line.1843"></a>
-<span class="sourceLineNo">1844</span> List<RegionInfo> regionInfos, int regionReplication) throws IOException {<a name="line.1844"></a>
-<span class="sourceLineNo">1845</span> // use master time for delete marker and the Put<a name="line.1845"></a>
-<span class="sourceLineNo">1846</span> long now = EnvironmentEdgeManager.currentTime();<a name="line.1846"></a>
-<span class="sourceLineNo">1847</span> deleteRegions(connection, regionInfos, now);<a name="line.1847"></a>
-<span class="sourceLineNo">1848</span> // Why sleep? This is the easiest way to ensure that the previous deletes does not<a name="line.1848"></a>
-<span class="sourceLineNo">1849</span> // eclipse the following puts, that might happen in the same ts from the server.<a name="line.1849"></a>
-<span class="sourceLineNo">1850</span> // See HBASE-9906, and HBASE-9879. Once either HBASE-9879, HBASE-8770 is fixed,<a name="line.1850"></a>
-<span class="sourceLineNo">1851</span> // or HBASE-9905 is fixed and meta uses seqIds, we do not need the sleep.<a name="line.1851"></a>
-<span class="sourceLineNo">1852</span> //<a name="line.1852"></a>
-<span class="sourceLineNo">1853</span> // HBASE-13875 uses master timestamp for the mutations. The 20ms sleep is not needed<a name="line.1853"></a>
-<span class="sourceLineNo">1854</span> addRegionsToMeta(connection, regionInfos, regionReplication, now + 1);<a name="line.1854"></a>
-<span class="sourceLineNo">1855</span> LOG.info("Overwritten " + regionInfos.size() + " regions to Meta");<a name="line.1855"></a>
-<span class="sourceLineNo">1856</span> LOG.debug("Overwritten regions: {} ", regionInfos);<a name="line.1856"></a>
-<span class="sourceLineNo">1857</span> }<a name="line.1857"></a>
-<span class="sourceLineNo">1858</span><a name="line.1858"></a>
-<span class="sourceLineNo">1859</span> /**<a name="line.1859"></a>
-<span class="sourceLineNo">1860</span> * Deletes merge qualifiers for the specified merged region.<a name="line.1860"></a>
-<span class="sourceLineNo">1861</span> * @param connection connection we're using<a name="line.1861"></a>
-<span class="sourceLineNo">1862</span> * @param mergedRegion the merged region<a name="line.1862"></a>
-<span class="sourceLineNo">1863</span> */<a name="line.1863"></a>
-<span class="sourceLineNo">1864</span> public static void deleteMergeQualifiers(Connection connection, final RegionInfo mergedRegion)<a name="line.1864"></a>
-<span class="sourceLineNo">1865</span> throws IOException {<a name="line.1865"></a>
-<span class="sourceLineNo">1866</span> long time = EnvironmentEdgeManager.currentTime();<a name="line.1866"></a>
-<span class="sourceLineNo">1867</span> Delete delete = new Delete(mergedRegion.getRegionName());<a name="line.1867"></a>
-<span class="sourceLineNo">1868</span> delete.addColumns(getCatalogFamily(), HConstants.MERGEA_QUALIFIER, time);<a name="line.1868"></a>
-<span class="sourceLineNo">1869</span> delete.addColumns(getCatalogFamily(), HConstants.MERGEB_QUALIFIER, time);<a name="line.1869"></a>
-<span class="sourceLineNo">1870</span> deleteFromMetaTable(connection, delete);<a name="line.1870"></a>
-<span class="sourceLineNo">1871</span> LOG.info("Deleted references in merged region "<a name="line.1871"></a>
-<span class="sourceLineNo">1872</span> + mergedRegion.getRegionNameAsString() + ", qualifier="<a name="line.1872"></a>
-<span class="sourceLineNo">1873</span> + Bytes.toStringBinary(HConstants.MERGEA_QUALIFIER) + " and qualifier="<a name="line.1873"></a>
-<span class="sourceLineNo">1874</span> + Bytes.toStringBinary(HConstants.MERGEB_QUALIFIER));<a name="line.1874"></a>
-<span class="sourceLineNo">1875</span> }<a name="line.1875"></a>
-<span class="sourceLineNo">1876</span><a name="line.1876"></a>
-<span class="sourceLineNo">1877</span> public static Put addRegionInfo(final Put p, final RegionInfo hri)<a name="line.1877"></a>
-<span class="sourceLineNo">1878</span> throws IOException {<a name="line.1878"></a>
-<span class="sourceLineNo">1879</span> p.add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.1879"></a>
-<span class="sourceLineNo">1880</span> .setRow(p.getRow())<a name="line.1880"></a>
-<span class="sourceLineNo">1881</span> .setFamily(getCatalogFamily())<a name="line.1881"></a>
-<span class="sourceLineNo">1882</span> .setQualifier(HConstants.REGIONINFO_QUALIFIER)<a name="line.1882"></a>
-<span class="sourceLineNo">1883</span> .setTimestamp(p.getTimestamp())<a name="line.1883"></a>
-<span class="sourceLineNo">1884</span> .setType(Type.Put)<a name="line.1884"></a>
-<span class="sourceLineNo">1885</span> .setValue(RegionInfo.toByteArray(hri))<a name="line.1885"></a>
-<span class="sourceLineNo">1886</span> .build());<a name="line.1886"></a>
-<span class="sourceLineNo">1887</span> return p;<a name="line.1887"></a>
-<span class="sourceLineNo">1888</span> }<a name="line.1888"></a>
-<span class="sourceLineNo">1889</span><a name="line.1889"></a>
-<span class="sourceLineNo">1890</span> public static Put addLocation(Put p, ServerName sn, long openSeqNum, int replicaId)<a name="line.1890"></a>
-<span class="sourceLineNo">1891</span> throws IOException {<a name="line.1891"></a>
-<span class="sourceLineNo">1892</span> CellBuilder builder = CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY);<a name="line.1892"></a>
-<span class="sourceLineNo">1893</span> return p.add(builder.clear()<a name="line.1893"></a>
-<span class="sourceLineNo">1894</span> .setRow(p.getRow())<a name="line.1894"></a>
-<span class="sourceLineNo">1895</span> .setFamily(getCatalogFamily())<a name="line.1895"></a>
-<span class="sourceLineNo">1896</span> .setQualifier(getServerColumn(replicaId))<a name="line.1896"></a>
-<span class="sourceLineNo">1897</span> .setTimestamp(p.getTimestamp())<a name="line.1897"></a>
-<span class="sourceLineNo">1898</span> .setType(Cell.Type.Put)<a name="line.1898"></a>
-<span class="sourceLineNo">1899</span> .setValue(Bytes.toBytes(sn.getAddress().toString()))<a name="line.1899"></a>
-<span class="sourceLineNo">1900</span> .build())<a name="line.1900"></a>
-<span class="sourceLineNo">1901</span> .add(builder.clear()<a name="line.1901"></a>
+<span class="sourceLineNo">1572</span> .setValue(RegionInfo.toByteArray(regionA))<a name="line.1572"></a>
+<span class="sourceLineNo">1573</span> .build())<a name="line.1573"></a>
+<span class="sourceLineNo">1574</span> .add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.1574"></a>
+<span class="sourceLineNo">1575</span> .setRow(putOfMerged.getRow())<a name="line.1575"></a>
+<span class="sourceLineNo">1576</span> .setFamily(HConstants.CATALOG_FAMILY)<a name="line.1576"></a>
+<span class="sourceLineNo">1577</span> .setQualifier(HConstants.MERGEB_QUALIFIER)<a name="line.1577"></a>
+<span class="sourceLineNo">1578</span> .setTimestamp(putOfMerged.getTimestamp())<a name="line.1578"></a>
+<span class="sourceLineNo">1579</span> .setType(Type.Put)<a name="line.1579"></a>
+<span class="sourceLineNo">1580</span> .setValue(RegionInfo.toByteArray(regionB))<a name="line.1580"></a>
+<span class="sourceLineNo">1581</span> .build());<a name="line.1581"></a>
+<span class="sourceLineNo">1582</span> // Set initial state to CLOSED<a name="line.1582"></a>
+<span class="sourceLineNo">1583</span> // NOTE: If initial state is not set to CLOSED then merged region gets added with the<a name="line.1583"></a>
+<span class="sourceLineNo">1584</span> // default OFFLINE state. If Master gets restarted after this step, start up sequence of<a name="line.1584"></a>
+<span class="sourceLineNo">1585</span> // master tries to assign this offline region. This is followed by re-assignments of the<a name="line.1585"></a>
+<span class="sourceLineNo">1586</span> // merged region from resumed {@link MergeTableRegionsProcedure}<a name="line.1586"></a>
+<span class="sourceLineNo">1587</span> addRegionStateToPut(putOfMerged, RegionState.State.CLOSED);<a name="line.1587"></a>
+<span class="sourceLineNo">1588</span> mutations.add(putOfMerged);<a name="line.1588"></a>
+<span class="sourceLineNo">1589</span> // The merged is a new region, openSeqNum = 1 is fine. ServerName may be null<a name="line.1589"></a>
+<span class="sourceLineNo">1590</span> // if crash after merge happened but before we got to here.. means in-memory<a name="line.1590"></a>
+<span class="sourceLineNo">1591</span> // locations of offlined merged, now-closed, regions is lost. Should be ok. We<a name="line.1591"></a>
+<span class="sourceLineNo">1592</span> // assign the merged region later.<a name="line.1592"></a>
+<span class="sourceLineNo">1593</span> if (sn != null) {<a name="line.1593"></a>
+<span class="sourceLineNo">1594</span> addLocation(putOfMerged, sn, 1, mergedRegion.getReplicaId());<a name="line.1594"></a>
+<span class="sourceLineNo">1595</span> }<a name="line.1595"></a>
+<span class="sourceLineNo">1596</span><a name="line.1596"></a>
+<span class="sourceLineNo">1597</span> // Add empty locations for region replicas of the merged region so that number of replicas can<a name="line.1597"></a>
+<span class="sourceLineNo">1598</span> // be cached whenever the primary region is looked up from meta<a name="line.1598"></a>
+<span class="sourceLineNo">1599</span> for (int i = 1; i < regionReplication; i++) {<a name="line.1599"></a>
+<span class="sourceLineNo">1600</span> addEmptyLocation(putOfMerged, i);<a name="line.1600"></a>
+<span class="sourceLineNo">1601</span> }<a name="line.1601"></a>
+<span class="sourceLineNo">1602</span> // add parent reference for serial replication<a name="line.1602"></a>
+<span class="sourceLineNo">1603</span> if (!replicationParents.isEmpty()) {<a name="line.1603"></a>
+<span class="sourceLineNo">1604</span> addReplicationParent(putOfMerged, replicationParents);<a name="line.1604"></a>
+<span class="sourceLineNo">1605</span> }<a name="line.1605"></a>
+<span class="sourceLineNo">1606</span> byte[] tableRow = Bytes.toBytes(mergedRegion.getRegionNameAsString() + HConstants.DELIMITER);<a name="line.1606"></a>
+<span class="sourceLineNo">1607</span> multiMutate(connection, meta, tableRow, mutations);<a name="line.1607"></a>
+<span class="sourceLineNo">1608</span> }<a name="line.1608"></a>
+<span class="sourceLineNo">1609</span> }<a name="line.1609"></a>
+<span class="sourceLineNo">1610</span><a name="line.1610"></a>
+<span class="sourceLineNo">1611</span> /**<a name="line.1611"></a>
+<span class="sourceLineNo">1612</span> * Splits the region into two in an atomic operation. Offlines the parent region with the<a name="line.1612"></a>
+<span class="sourceLineNo">1613</span> * information that it is split into two, and also adds the daughter regions. Does not add the<a name="line.1613"></a>
+<span class="sourceLineNo">1614</span> * location information to the daughter regions since they are not open yet.<a name="line.1614"></a>
+<span class="sourceLineNo">1615</span> * @param connection connection we're using<a name="line.1615"></a>
+<span class="sourceLineNo">1616</span> * @param parent the parent region which is split<a name="line.1616"></a>
+<span class="sourceLineNo">1617</span> * @param parentOpenSeqNum the next open sequence id for parent region, used by serial<a name="line.1617"></a>
+<span class="sourceLineNo">1618</span> * replication. -1 if not necessary.<a name="line.1618"></a>
+<span clas
<TRUNCATED>
[02/51] [partial] hbase-site git commit: Published site at
9101fc246f86445006bfbcdfda5cc495016dc280.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html
index d523437..9050c69 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html
@@ -561,7 +561,7 @@
<span class="sourceLineNo">553</span> try {<a name="line.553"></a>
<span class="sourceLineNo">554</span> env.getMasterServices().getMasterQuotaManager().onRegionMerged(this.mergedRegion);<a name="line.554"></a>
<span class="sourceLineNo">555</span> } catch (QuotaExceededException e) {<a name="line.555"></a>
-<span class="sourceLineNo">556</span> env.getAssignmentManager().getRegionNormalizer().planSkipped(this.mergedRegion,<a name="line.556"></a>
+<span class="sourceLineNo">556</span> env.getMasterServices().getRegionNormalizer().planSkipped(this.mergedRegion,<a name="line.556"></a>
<span class="sourceLineNo">557</span> NormalizationPlan.PlanType.MERGE);<a name="line.557"></a>
<span class="sourceLineNo">558</span> throw e;<a name="line.558"></a>
<span class="sourceLineNo">559</span> }<a name="line.559"></a>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.RegionStateVisitor.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.RegionStateVisitor.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.RegionStateVisitor.html
index c1b4533..a0c568b 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.RegionStateVisitor.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/RegionStateStore.RegionStateVisitor.html
@@ -136,220 +136,221 @@
<span class="sourceLineNo">128</span> public void updateRegionLocation(RegionStates.RegionStateNode regionStateNode)<a name="line.128"></a>
<span class="sourceLineNo">129</span> throws IOException {<a name="line.129"></a>
<span class="sourceLineNo">130</span> if (regionStateNode.getRegionInfo().isMetaRegion()) {<a name="line.130"></a>
-<span class="sourceLineNo">131</span> updateMetaLocation(regionStateNode.getRegionInfo(), regionStateNode.getRegionLocation());<a name="line.131"></a>
-<span class="sourceLineNo">132</span> } else {<a name="line.132"></a>
-<span class="sourceLineNo">133</span> long openSeqNum = regionStateNode.getState() == State.OPEN ?<a name="line.133"></a>
-<span class="sourceLineNo">134</span> regionStateNode.getOpenSeqNum() : HConstants.NO_SEQNUM;<a name="line.134"></a>
-<span class="sourceLineNo">135</span> updateUserRegionLocation(regionStateNode.getRegionInfo(), regionStateNode.getState(),<a name="line.135"></a>
-<span class="sourceLineNo">136</span> regionStateNode.getRegionLocation(), regionStateNode.getLastHost(), openSeqNum,<a name="line.136"></a>
-<span class="sourceLineNo">137</span> // The regionStateNode may have no procedure in a test scenario; allow for this.<a name="line.137"></a>
-<span class="sourceLineNo">138</span> regionStateNode.getProcedure() != null?<a name="line.138"></a>
-<span class="sourceLineNo">139</span> regionStateNode.getProcedure().getProcId(): Procedure.NO_PROC_ID);<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> private void updateMetaLocation(final RegionInfo regionInfo, final ServerName serverName)<a name="line.143"></a>
-<span class="sourceLineNo">144</span> throws IOException {<a name="line.144"></a>
-<span class="sourceLineNo">145</span> try {<a name="line.145"></a>
-<span class="sourceLineNo">146</span> MetaTableLocator.setMetaLocation(master.getZooKeeper(), serverName,<a name="line.146"></a>
-<span class="sourceLineNo">147</span> regionInfo.getReplicaId(), State.OPEN);<a name="line.147"></a>
-<span class="sourceLineNo">148</span> } catch (KeeperException e) {<a name="line.148"></a>
-<span class="sourceLineNo">149</span> throw new IOException(e);<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><a name="line.152"></a>
-<span class="sourceLineNo">153</span> private void updateUserRegionLocation(final RegionInfo regionInfo, final State state,<a name="line.153"></a>
-<span class="sourceLineNo">154</span> final ServerName regionLocation, final ServerName lastHost, final long openSeqNum,<a name="line.154"></a>
-<span class="sourceLineNo">155</span> final long pid)<a name="line.155"></a>
-<span class="sourceLineNo">156</span> throws IOException {<a name="line.156"></a>
-<span class="sourceLineNo">157</span> long time = EnvironmentEdgeManager.currentTime();<a name="line.157"></a>
-<span class="sourceLineNo">158</span> final int replicaId = regionInfo.getReplicaId();<a name="line.158"></a>
-<span class="sourceLineNo">159</span> final Put put = new Put(MetaTableAccessor.getMetaKeyForRegion(regionInfo), time);<a name="line.159"></a>
-<span class="sourceLineNo">160</span> MetaTableAccessor.addRegionInfo(put, regionInfo);<a name="line.160"></a>
-<span class="sourceLineNo">161</span> final StringBuilder info =<a name="line.161"></a>
-<span class="sourceLineNo">162</span> new StringBuilder("pid=").append(pid).append(" updating hbase:meta row=")<a name="line.162"></a>
-<span class="sourceLineNo">163</span> .append(regionInfo.getEncodedName()).append(", regionState=").append(state);<a name="line.163"></a>
-<span class="sourceLineNo">164</span> if (openSeqNum >= 0) {<a name="line.164"></a>
-<span class="sourceLineNo">165</span> Preconditions.checkArgument(state == State.OPEN && regionLocation != null,<a name="line.165"></a>
-<span class="sourceLineNo">166</span> "Open region should be on a server");<a name="line.166"></a>
-<span class="sourceLineNo">167</span> MetaTableAccessor.addLocation(put, regionLocation, openSeqNum, replicaId);<a name="line.167"></a>
-<span class="sourceLineNo">168</span> // only update replication barrier for default replica<a name="line.168"></a>
-<span class="sourceLineNo">169</span> if (regionInfo.getReplicaId() == RegionInfo.DEFAULT_REPLICA_ID &&<a name="line.169"></a>
-<span class="sourceLineNo">170</span> hasGlobalReplicationScope(regionInfo.getTable())) {<a name="line.170"></a>
-<span class="sourceLineNo">171</span> MetaTableAccessor.addReplicationBarrier(put, openSeqNum);<a name="line.171"></a>
-<span class="sourceLineNo">172</span> info.append(", repBarrier=").append(openSeqNum);<a name="line.172"></a>
-<span class="sourceLineNo">173</span> }<a name="line.173"></a>
-<span class="sourceLineNo">174</span> info.append(", openSeqNum=").append(openSeqNum);<a name="line.174"></a>
-<span class="sourceLineNo">175</span> info.append(", regionLocation=").append(regionLocation);<a name="line.175"></a>
-<span class="sourceLineNo">176</span> } else if (regionLocation != null && !regionLocation.equals(lastHost)) {<a name="line.176"></a>
-<span class="sourceLineNo">177</span> // Ideally, if no regionLocation, write null to the hbase:meta but this will confuse clients<a name="line.177"></a>
-<span class="sourceLineNo">178</span> // currently; they want a server to hit. TODO: Make clients wait if no location.<a name="line.178"></a>
-<span class="sourceLineNo">179</span> put.add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.179"></a>
-<span class="sourceLineNo">180</span> .setRow(put.getRow())<a name="line.180"></a>
-<span class="sourceLineNo">181</span> .setFamily(HConstants.CATALOG_FAMILY)<a name="line.181"></a>
-<span class="sourceLineNo">182</span> .setQualifier(getServerNameColumn(replicaId))<a name="line.182"></a>
-<span class="sourceLineNo">183</span> .setTimestamp(put.getTimestamp())<a name="line.183"></a>
-<span class="sourceLineNo">184</span> .setType(Cell.Type.Put)<a name="line.184"></a>
-<span class="sourceLineNo">185</span> .setValue(Bytes.toBytes(regionLocation.getServerName()))<a name="line.185"></a>
-<span class="sourceLineNo">186</span> .build());<a name="line.186"></a>
-<span class="sourceLineNo">187</span> info.append(", regionLocation=").append(regionLocation);<a name="line.187"></a>
-<span class="sourceLineNo">188</span> }<a name="line.188"></a>
-<span class="sourceLineNo">189</span> put.add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.189"></a>
-<span class="sourceLineNo">190</span> .setRow(put.getRow())<a name="line.190"></a>
-<span class="sourceLineNo">191</span> .setFamily(HConstants.CATALOG_FAMILY)<a name="line.191"></a>
-<span class="sourceLineNo">192</span> .setQualifier(getStateColumn(replicaId))<a name="line.192"></a>
-<span class="sourceLineNo">193</span> .setTimestamp(put.getTimestamp())<a name="line.193"></a>
-<span class="sourceLineNo">194</span> .setType(Cell.Type.Put)<a name="line.194"></a>
-<span class="sourceLineNo">195</span> .setValue(Bytes.toBytes(state.name()))<a name="line.195"></a>
-<span class="sourceLineNo">196</span> .build());<a name="line.196"></a>
-<span class="sourceLineNo">197</span> LOG.info(info.toString());<a name="line.197"></a>
-<span class="sourceLineNo">198</span> updateRegionLocation(regionInfo, state, put);<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> private void updateRegionLocation(RegionInfo regionInfo, State state, Put put)<a name="line.201"></a>
-<span class="sourceLineNo">202</span> throws IOException {<a name="line.202"></a>
-<span class="sourceLineNo">203</span> try (Table table = master.getConnection().getTable(TableName.META_TABLE_NAME)) {<a name="line.203"></a>
-<span class="sourceLineNo">204</span> table.put(put);<a name="line.204"></a>
-<span class="sourceLineNo">205</span> } catch (IOException e) {<a name="line.205"></a>
-<span class="sourceLineNo">206</span> // TODO: Revist!!!! Means that if a server is loaded, then we will abort our host!<a name="line.206"></a>
-<span class="sourceLineNo">207</span> // In tests we abort the Master!<a name="line.207"></a>
-<span class="sourceLineNo">208</span> String msg = String.format("FAILED persisting region=%s state=%s",<a name="line.208"></a>
-<span class="sourceLineNo">209</span> regionInfo.getShortNameToLog(), state);<a name="line.209"></a>
-<span class="sourceLineNo">210</span> LOG.error(msg, e);<a name="line.210"></a>
-<span class="sourceLineNo">211</span> master.abort(msg, e);<a name="line.211"></a>
-<span class="sourceLineNo">212</span> throw e;<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><a name="line.215"></a>
-<span class="sourceLineNo">216</span> private long getOpenSeqNumForParentRegion(RegionInfo region) throws IOException {<a name="line.216"></a>
-<span class="sourceLineNo">217</span> MasterFileSystem mfs = master.getMasterFileSystem();<a name="line.217"></a>
-<span class="sourceLineNo">218</span> long maxSeqId =<a name="line.218"></a>
-<span class="sourceLineNo">219</span> WALSplitter.getMaxRegionSequenceId(mfs.getFileSystem(), mfs.getRegionDir(region));<a name="line.219"></a>
-<span class="sourceLineNo">220</span> return maxSeqId > 0 ? maxSeqId + 1 : HConstants.NO_SEQNUM;<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> // Update Region Splitting State helpers<a name="line.224"></a>
-<span class="sourceLineNo">225</span> // ============================================================================================<a name="line.225"></a>
-<span class="sourceLineNo">226</span> public void splitRegion(RegionInfo parent, RegionInfo hriA, RegionInfo hriB,<a name="line.226"></a>
-<span class="sourceLineNo">227</span> ServerName serverName) throws IOException {<a name="line.227"></a>
-<span class="sourceLineNo">228</span> TableDescriptor htd = getTableDescriptor(parent.getTable());<a name="line.228"></a>
-<span class="sourceLineNo">229</span> long parentOpenSeqNum = HConstants.NO_SEQNUM;<a name="line.229"></a>
-<span class="sourceLineNo">230</span> if (htd.hasGlobalReplicationScope()) {<a name="line.230"></a>
-<span class="sourceLineNo">231</span> parentOpenSeqNum = getOpenSeqNumForParentRegion(parent);<a name="line.231"></a>
-<span class="sourceLineNo">232</span> }<a name="line.232"></a>
-<span class="sourceLineNo">233</span> MetaTableAccessor.splitRegion(master.getConnection(), parent, parentOpenSeqNum, hriA, hriB,<a name="line.233"></a>
-<span class="sourceLineNo">234</span> serverName, getRegionReplication(htd));<a name="line.234"></a>
-<span class="sourceLineNo">235</span> }<a name="line.235"></a>
-<span class="sourceLineNo">236</span><a name="line.236"></a>
-<span class="sourceLineNo">237</span> // ============================================================================================<a name="line.237"></a>
-<span class="sourceLineNo">238</span> // Update Region Merging State helpers<a name="line.238"></a>
-<span class="sourceLineNo">239</span> // ============================================================================================<a name="line.239"></a>
-<span class="sourceLineNo">240</span> public void mergeRegions(RegionInfo child, RegionInfo hriA, RegionInfo hriB,<a name="line.240"></a>
-<span class="sourceLineNo">241</span> ServerName serverName) throws IOException {<a name="line.241"></a>
-<span class="sourceLineNo">242</span> TableDescriptor htd = getTableDescriptor(child.getTable());<a name="line.242"></a>
-<span class="sourceLineNo">243</span> long regionAOpenSeqNum = -1L;<a name="line.243"></a>
-<span class="sourceLineNo">244</span> long regionBOpenSeqNum = -1L;<a name="line.244"></a>
-<span class="sourceLineNo">245</span> if (htd.hasGlobalReplicationScope()) {<a name="line.245"></a>
-<span class="sourceLineNo">246</span> regionAOpenSeqNum = getOpenSeqNumForParentRegion(hriA);<a name="line.246"></a>
-<span class="sourceLineNo">247</span> regionBOpenSeqNum = getOpenSeqNumForParentRegion(hriB);<a name="line.247"></a>
-<span class="sourceLineNo">248</span> }<a name="line.248"></a>
-<span class="sourceLineNo">249</span> MetaTableAccessor.mergeRegions(master.getConnection(), child, hriA, regionAOpenSeqNum, hriB,<a name="line.249"></a>
-<span class="sourceLineNo">250</span> regionBOpenSeqNum, serverName, getRegionReplication(htd));<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> // ============================================================================================<a name="line.253"></a>
-<span class="sourceLineNo">254</span> // Delete Region State helpers<a name="line.254"></a>
-<span class="sourceLineNo">255</span> // ============================================================================================<a name="line.255"></a>
-<span class="sourceLineNo">256</span> public void deleteRegion(final RegionInfo regionInfo) throws IOException {<a name="line.256"></a>
-<span class="sourceLineNo">257</span> deleteRegions(Collections.singletonList(regionInfo));<a name="line.257"></a>
-<span class="sourceLineNo">258</span> }<a name="line.258"></a>
-<span class="sourceLineNo">259</span><a name="line.259"></a>
-<span class="sourceLineNo">260</span> public void deleteRegions(final List<RegionInfo> regions) throws IOException {<a name="line.260"></a>
-<span class="sourceLineNo">261</span> MetaTableAccessor.deleteRegions(master.getConnection(), regions);<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> // ==========================================================================<a name="line.264"></a>
-<span class="sourceLineNo">265</span> // Table Descriptors helpers<a name="line.265"></a>
-<span class="sourceLineNo">266</span> // ==========================================================================<a name="line.266"></a>
-<span class="sourceLineNo">267</span> private boolean hasGlobalReplicationScope(TableName tableName) throws IOException {<a name="line.267"></a>
-<span class="sourceLineNo">268</span> return hasGlobalReplicationScope(getTableDescriptor(tableName));<a name="line.268"></a>
-<span class="sourceLineNo">269</span> }<a name="line.269"></a>
-<span class="sourceLineNo">270</span><a name="line.270"></a>
-<span class="sourceLineNo">271</span> private boolean hasGlobalReplicationScope(TableDescriptor htd) {<a name="line.271"></a>
-<span class="sourceLineNo">272</span> return htd != null ? htd.hasGlobalReplicationScope() : false;<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 int getRegionReplication(TableDescriptor htd) {<a name="line.275"></a>
-<span class="sourceLineNo">276</span> return htd != null ? htd.getRegionReplication() : 1;<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> private TableDescriptor getTableDescriptor(TableName tableName) throws IOException {<a name="line.279"></a>
-<span class="sourceLineNo">280</span> return master.getTableDescriptors().get(tableName);<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> // ==========================================================================<a name="line.283"></a>
-<span class="sourceLineNo">284</span> // Server Name<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> /**<a name="line.287"></a>
-<span class="sourceLineNo">288</span> * Returns the {@link ServerName} from catalog table {@link Result}<a name="line.288"></a>
-<span class="sourceLineNo">289</span> * where the region is transitioning. It should be the same as<a name="line.289"></a>
-<span class="sourceLineNo">290</span> * {@link MetaTableAccessor#getServerName(Result,int)} if the server is at OPEN state.<a name="line.290"></a>
-<span class="sourceLineNo">291</span> * @param r Result to pull the transitioning server name from<a name="line.291"></a>
-<span class="sourceLineNo">292</span> * @return A ServerName instance or {@link MetaTableAccessor#getServerName(Result,int)}<a name="line.292"></a>
-<span class="sourceLineNo">293</span> * if necessary fields not found or empty.<a name="line.293"></a>
-<span class="sourceLineNo">294</span> */<a name="line.294"></a>
-<span class="sourceLineNo">295</span> static ServerName getRegionServer(final Result r, int replicaId) {<a name="line.295"></a>
-<span class="sourceLineNo">296</span> final Cell cell = r.getColumnLatestCell(HConstants.CATALOG_FAMILY,<a name="line.296"></a>
-<span class="sourceLineNo">297</span> getServerNameColumn(replicaId));<a name="line.297"></a>
-<span class="sourceLineNo">298</span> if (cell == null || cell.getValueLength() == 0) {<a name="line.298"></a>
-<span class="sourceLineNo">299</span> RegionLocations locations = MetaTableAccessor.getRegionLocations(r);<a name="line.299"></a>
-<span class="sourceLineNo">300</span> if (locations != null) {<a name="line.300"></a>
-<span class="sourceLineNo">301</span> HRegionLocation location = locations.getRegionLocation(replicaId);<a name="line.301"></a>
-<span class="sourceLineNo">302</span> if (location != null) {<a name="line.302"></a>
-<span class="sourceLineNo">303</span> return location.getServerName();<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> return null;<a name="line.306"></a>
-<span class="sourceLineNo">307</span> }<a name="line.307"></a>
-<span class="sourceLineNo">308</span> return ServerName.parseServerName(Bytes.toString(cell.getValueArray(),<a name="line.308"></a>
-<span class="sourceLineNo">309</span> cell.getValueOffset(), cell.getValueLength()));<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> private static byte[] getServerNameColumn(int replicaId) {<a name="line.312"></a>
-<span class="sourceLineNo">313</span> return replicaId == 0<a name="line.313"></a>
-<span class="sourceLineNo">314</span> ? HConstants.SERVERNAME_QUALIFIER<a name="line.314"></a>
-<span class="sourceLineNo">315</span> : Bytes.toBytes(HConstants.SERVERNAME_QUALIFIER_STR + META_REPLICA_ID_DELIMITER<a name="line.315"></a>
-<span class="sourceLineNo">316</span> + String.format(RegionInfo.REPLICA_ID_FORMAT, replicaId));<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> // Region State<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> /**<a name="line.323"></a>
-<span class="sourceLineNo">324</span> * Pull the region state from a catalog table {@link Result}.<a name="line.324"></a>
-<span class="sourceLineNo">325</span> * @param r Result to pull the region state from<a name="line.325"></a>
-<span class="sourceLineNo">326</span> * @return the region state, or null if unknown.<a name="line.326"></a>
-<span class="sourceLineNo">327</span> */<a name="line.327"></a>
-<span class="sourceLineNo">328</span> @VisibleForTesting<a name="line.328"></a>
-<span class="sourceLineNo">329</span> public static State getRegionState(final Result r, int replicaId) {<a name="line.329"></a>
-<span class="sourceLineNo">330</span> Cell cell = r.getColumnLatestCell(HConstants.CATALOG_FAMILY, getStateColumn(replicaId));<a name="line.330"></a>
-<span class="sourceLineNo">331</span> if (cell == null || cell.getValueLength() == 0) {<a name="line.331"></a>
-<span class="sourceLineNo">332</span> return null;<a name="line.332"></a>
-<span class="sourceLineNo">333</span> }<a name="line.333"></a>
-<span class="sourceLineNo">334</span> return State.valueOf(Bytes.toString(cell.getValueArray(), cell.getValueOffset(),<a name="line.334"></a>
-<span class="sourceLineNo">335</span> cell.getValueLength()));<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 static byte[] getStateColumn(int replicaId) {<a name="line.338"></a>
-<span class="sourceLineNo">339</span> return replicaId == 0<a name="line.339"></a>
-<span class="sourceLineNo">340</span> ? HConstants.STATE_QUALIFIER<a name="line.340"></a>
-<span class="sourceLineNo">341</span> : Bytes.toBytes(HConstants.STATE_QUALIFIER_STR + META_REPLICA_ID_DELIMITER<a name="line.341"></a>
-<span class="sourceLineNo">342</span> + String.format(RegionInfo.REPLICA_ID_FORMAT, replicaId));<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">131</span> updateMetaLocation(regionStateNode.getRegionInfo(), regionStateNode.getRegionLocation(),<a name="line.131"></a>
+<span class="sourceLineNo">132</span> regionStateNode.getState());<a name="line.132"></a>
+<span class="sourceLineNo">133</span> } else {<a name="line.133"></a>
+<span class="sourceLineNo">134</span> long openSeqNum = regionStateNode.getState() == State.OPEN ? regionStateNode.getOpenSeqNum()<a name="line.134"></a>
+<span class="sourceLineNo">135</span> : HConstants.NO_SEQNUM;<a name="line.135"></a>
+<span class="sourceLineNo">136</span> updateUserRegionLocation(regionStateNode.getRegionInfo(), regionStateNode.getState(),<a name="line.136"></a>
+<span class="sourceLineNo">137</span> regionStateNode.getRegionLocation(), regionStateNode.getLastHost(), openSeqNum,<a name="line.137"></a>
+<span class="sourceLineNo">138</span> // The regionStateNode may have no procedure in a test scenario; allow for this.<a name="line.138"></a>
+<span class="sourceLineNo">139</span> regionStateNode.getProcedure() != null ? regionStateNode.getProcedure().getProcId()<a name="line.139"></a>
+<span class="sourceLineNo">140</span> : Procedure.NO_PROC_ID);<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><a name="line.143"></a>
+<span class="sourceLineNo">144</span> private void updateMetaLocation(RegionInfo regionInfo, ServerName serverName, State state)<a name="line.144"></a>
+<span class="sourceLineNo">145</span> throws IOException {<a name="line.145"></a>
+<span class="sourceLineNo">146</span> try {<a name="line.146"></a>
+<span class="sourceLineNo">147</span> MetaTableLocator.setMetaLocation(master.getZooKeeper(), serverName, regionInfo.getReplicaId(),<a name="line.147"></a>
+<span class="sourceLineNo">148</span> state);<a name="line.148"></a>
+<span class="sourceLineNo">149</span> } catch (KeeperException e) {<a name="line.149"></a>
+<span class="sourceLineNo">150</span> throw new IOException(e);<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> private void updateUserRegionLocation(final RegionInfo regionInfo, final State state,<a name="line.154"></a>
+<span class="sourceLineNo">155</span> final ServerName regionLocation, final ServerName lastHost, final long openSeqNum,<a name="line.155"></a>
+<span class="sourceLineNo">156</span> final long pid)<a name="line.156"></a>
+<span class="sourceLineNo">157</span> throws IOException {<a name="line.157"></a>
+<span class="sourceLineNo">158</span> long time = EnvironmentEdgeManager.currentTime();<a name="line.158"></a>
+<span class="sourceLineNo">159</span> final int replicaId = regionInfo.getReplicaId();<a name="line.159"></a>
+<span class="sourceLineNo">160</span> final Put put = new Put(MetaTableAccessor.getMetaKeyForRegion(regionInfo), time);<a name="line.160"></a>
+<span class="sourceLineNo">161</span> MetaTableAccessor.addRegionInfo(put, regionInfo);<a name="line.161"></a>
+<span class="sourceLineNo">162</span> final StringBuilder info =<a name="line.162"></a>
+<span class="sourceLineNo">163</span> new StringBuilder("pid=").append(pid).append(" updating hbase:meta row=")<a name="line.163"></a>
+<span class="sourceLineNo">164</span> .append(regionInfo.getEncodedName()).append(", regionState=").append(state);<a name="line.164"></a>
+<span class="sourceLineNo">165</span> if (openSeqNum >= 0) {<a name="line.165"></a>
+<span class="sourceLineNo">166</span> Preconditions.checkArgument(state == State.OPEN && regionLocation != null,<a name="line.166"></a>
+<span class="sourceLineNo">167</span> "Open region should be on a server");<a name="line.167"></a>
+<span class="sourceLineNo">168</span> MetaTableAccessor.addLocation(put, regionLocation, openSeqNum, replicaId);<a name="line.168"></a>
+<span class="sourceLineNo">169</span> // only update replication barrier for default replica<a name="line.169"></a>
+<span class="sourceLineNo">170</span> if (regionInfo.getReplicaId() == RegionInfo.DEFAULT_REPLICA_ID &&<a name="line.170"></a>
+<span class="sourceLineNo">171</span> hasGlobalReplicationScope(regionInfo.getTable())) {<a name="line.171"></a>
+<span class="sourceLineNo">172</span> MetaTableAccessor.addReplicationBarrier(put, openSeqNum);<a name="line.172"></a>
+<span class="sourceLineNo">173</span> info.append(", repBarrier=").append(openSeqNum);<a name="line.173"></a>
+<span class="sourceLineNo">174</span> }<a name="line.174"></a>
+<span class="sourceLineNo">175</span> info.append(", openSeqNum=").append(openSeqNum);<a name="line.175"></a>
+<span class="sourceLineNo">176</span> info.append(", regionLocation=").append(regionLocation);<a name="line.176"></a>
+<span class="sourceLineNo">177</span> } else if (regionLocation != null && !regionLocation.equals(lastHost)) {<a name="line.177"></a>
+<span class="sourceLineNo">178</span> // Ideally, if no regionLocation, write null to the hbase:meta but this will confuse clients<a name="line.178"></a>
+<span class="sourceLineNo">179</span> // currently; they want a server to hit. TODO: Make clients wait if no location.<a name="line.179"></a>
+<span class="sourceLineNo">180</span> put.add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.180"></a>
+<span class="sourceLineNo">181</span> .setRow(put.getRow())<a name="line.181"></a>
+<span class="sourceLineNo">182</span> .setFamily(HConstants.CATALOG_FAMILY)<a name="line.182"></a>
+<span class="sourceLineNo">183</span> .setQualifier(getServerNameColumn(replicaId))<a name="line.183"></a>
+<span class="sourceLineNo">184</span> .setTimestamp(put.getTimestamp())<a name="line.184"></a>
+<span class="sourceLineNo">185</span> .setType(Cell.Type.Put)<a name="line.185"></a>
+<span class="sourceLineNo">186</span> .setValue(Bytes.toBytes(regionLocation.getServerName()))<a name="line.186"></a>
+<span class="sourceLineNo">187</span> .build());<a name="line.187"></a>
+<span class="sourceLineNo">188</span> info.append(", regionLocation=").append(regionLocation);<a name="line.188"></a>
+<span class="sourceLineNo">189</span> }<a name="line.189"></a>
+<span class="sourceLineNo">190</span> put.add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.190"></a>
+<span class="sourceLineNo">191</span> .setRow(put.getRow())<a name="line.191"></a>
+<span class="sourceLineNo">192</span> .setFamily(HConstants.CATALOG_FAMILY)<a name="line.192"></a>
+<span class="sourceLineNo">193</span> .setQualifier(getStateColumn(replicaId))<a name="line.193"></a>
+<span class="sourceLineNo">194</span> .setTimestamp(put.getTimestamp())<a name="line.194"></a>
+<span class="sourceLineNo">195</span> .setType(Cell.Type.Put)<a name="line.195"></a>
+<span class="sourceLineNo">196</span> .setValue(Bytes.toBytes(state.name()))<a name="line.196"></a>
+<span class="sourceLineNo">197</span> .build());<a name="line.197"></a>
+<span class="sourceLineNo">198</span> LOG.info(info.toString());<a name="line.198"></a>
+<span class="sourceLineNo">199</span> updateRegionLocation(regionInfo, state, put);<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 updateRegionLocation(RegionInfo regionInfo, State state, Put put)<a name="line.202"></a>
+<span class="sourceLineNo">203</span> throws IOException {<a name="line.203"></a>
+<span class="sourceLineNo">204</span> try (Table table = master.getConnection().getTable(TableName.META_TABLE_NAME)) {<a name="line.204"></a>
+<span class="sourceLineNo">205</span> table.put(put);<a name="line.205"></a>
+<span class="sourceLineNo">206</span> } catch (IOException e) {<a name="line.206"></a>
+<span class="sourceLineNo">207</span> // TODO: Revist!!!! Means that if a server is loaded, then we will abort our host!<a name="line.207"></a>
+<span class="sourceLineNo">208</span> // In tests we abort the Master!<a name="line.208"></a>
+<span class="sourceLineNo">209</span> String msg = String.format("FAILED persisting region=%s state=%s",<a name="line.209"></a>
+<span class="sourceLineNo">210</span> regionInfo.getShortNameToLog(), state);<a name="line.210"></a>
+<span class="sourceLineNo">211</span> LOG.error(msg, e);<a name="line.211"></a>
+<span class="sourceLineNo">212</span> master.abort(msg, e);<a name="line.212"></a>
+<span class="sourceLineNo">213</span> throw e;<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 long getOpenSeqNumForParentRegion(RegionInfo region) throws IOException {<a name="line.217"></a>
+<span class="sourceLineNo">218</span> MasterFileSystem mfs = master.getMasterFileSystem();<a name="line.218"></a>
+<span class="sourceLineNo">219</span> long maxSeqId =<a name="line.219"></a>
+<span class="sourceLineNo">220</span> WALSplitter.getMaxRegionSequenceId(mfs.getFileSystem(), mfs.getRegionDir(region));<a name="line.220"></a>
+<span class="sourceLineNo">221</span> return maxSeqId > 0 ? maxSeqId + 1 : HConstants.NO_SEQNUM;<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>
+<span class="sourceLineNo">225</span> // Update Region Splitting State helpers<a name="line.225"></a>
+<span class="sourceLineNo">226</span> // ============================================================================================<a name="line.226"></a>
+<span class="sourceLineNo">227</span> public void splitRegion(RegionInfo parent, RegionInfo hriA, RegionInfo hriB,<a name="line.227"></a>
+<span class="sourceLineNo">228</span> ServerName serverName) throws IOException {<a name="line.228"></a>
+<span class="sourceLineNo">229</span> TableDescriptor htd = getTableDescriptor(parent.getTable());<a name="line.229"></a>
+<span class="sourceLineNo">230</span> long parentOpenSeqNum = HConstants.NO_SEQNUM;<a name="line.230"></a>
+<span class="sourceLineNo">231</span> if (htd.hasGlobalReplicationScope()) {<a name="line.231"></a>
+<span class="sourceLineNo">232</span> parentOpenSeqNum = getOpenSeqNumForParentRegion(parent);<a name="line.232"></a>
+<span class="sourceLineNo">233</span> }<a name="line.233"></a>
+<span class="sourceLineNo">234</span> MetaTableAccessor.splitRegion(master.getConnection(), parent, parentOpenSeqNum, hriA, hriB,<a name="line.234"></a>
+<span class="sourceLineNo">235</span> serverName, getRegionReplication(htd));<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> // ============================================================================================<a name="line.238"></a>
+<span class="sourceLineNo">239</span> // Update Region Merging State helpers<a name="line.239"></a>
+<span class="sourceLineNo">240</span> // ============================================================================================<a name="line.240"></a>
+<span class="sourceLineNo">241</span> public void mergeRegions(RegionInfo child, RegionInfo hriA, RegionInfo hriB,<a name="line.241"></a>
+<span class="sourceLineNo">242</span> ServerName serverName) throws IOException {<a name="line.242"></a>
+<span class="sourceLineNo">243</span> TableDescriptor htd = getTableDescriptor(child.getTable());<a name="line.243"></a>
+<span class="sourceLineNo">244</span> long regionAOpenSeqNum = -1L;<a name="line.244"></a>
+<span class="sourceLineNo">245</span> long regionBOpenSeqNum = -1L;<a name="line.245"></a>
+<span class="sourceLineNo">246</span> if (htd.hasGlobalReplicationScope()) {<a name="line.246"></a>
+<span class="sourceLineNo">247</span> regionAOpenSeqNum = getOpenSeqNumForParentRegion(hriA);<a name="line.247"></a>
+<span class="sourceLineNo">248</span> regionBOpenSeqNum = getOpenSeqNumForParentRegion(hriB);<a name="line.248"></a>
+<span class="sourceLineNo">249</span> }<a name="line.249"></a>
+<span class="sourceLineNo">250</span> MetaTableAccessor.mergeRegions(master.getConnection(), child, hriA, regionAOpenSeqNum, hriB,<a name="line.250"></a>
+<span class="sourceLineNo">251</span> regionBOpenSeqNum, serverName, getRegionReplication(htd));<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> // Delete Region State helpers<a name="line.255"></a>
+<span class="sourceLineNo">256</span> // ============================================================================================<a name="line.256"></a>
+<span class="sourceLineNo">257</span> public void deleteRegion(final RegionInfo regionInfo) throws IOException {<a name="line.257"></a>
+<span class="sourceLineNo">258</span> deleteRegions(Collections.singletonList(regionInfo));<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 void deleteRegions(final List<RegionInfo> regions) throws IOException {<a name="line.261"></a>
+<span class="sourceLineNo">262</span> MetaTableAccessor.deleteRegions(master.getConnection(), regions);<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> // Table Descriptors helpers<a name="line.266"></a>
+<span class="sourceLineNo">267</span> // ==========================================================================<a name="line.267"></a>
+<span class="sourceLineNo">268</span> private boolean hasGlobalReplicationScope(TableName tableName) throws IOException {<a name="line.268"></a>
+<span class="sourceLineNo">269</span> return hasGlobalReplicationScope(getTableDescriptor(tableName));<a name="line.269"></a>
+<span class="sourceLineNo">270</span> }<a name="line.270"></a>
+<span class="sourceLineNo">271</span><a name="line.271"></a>
+<span class="sourceLineNo">272</span> private boolean hasGlobalReplicationScope(TableDescriptor htd) {<a name="line.272"></a>
+<span class="sourceLineNo">273</span> return htd != null ? htd.hasGlobalReplicationScope() : false;<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 int getRegionReplication(TableDescriptor htd) {<a name="line.276"></a>
+<span class="sourceLineNo">277</span> return htd != null ? htd.getRegionReplication() : 1;<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> private TableDescriptor getTableDescriptor(TableName tableName) throws IOException {<a name="line.280"></a>
+<span class="sourceLineNo">281</span> return master.getTableDescriptors().get(tableName);<a name="line.281"></a>
+<span class="sourceLineNo">282</span> }<a name="line.282"></a>
+<span class="sourceLineNo">283</span><a name="line.283"></a>
+<span class="sourceLineNo">284</span> // ==========================================================================<a name="line.284"></a>
+<span class="sourceLineNo">285</span> // Server Name<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> * Returns the {@link ServerName} from catalog table {@link Result}<a name="line.289"></a>
+<span class="sourceLineNo">290</span> * where the region is transitioning. It should be the same as<a name="line.290"></a>
+<span class="sourceLineNo">291</span> * {@link MetaTableAccessor#getServerName(Result,int)} if the server is at OPEN state.<a name="line.291"></a>
+<span class="sourceLineNo">292</span> * @param r Result to pull the transitioning server name from<a name="line.292"></a>
+<span class="sourceLineNo">293</span> * @return A ServerName instance or {@link MetaTableAccessor#getServerName(Result,int)}<a name="line.293"></a>
+<span class="sourceLineNo">294</span> * if necessary fields not found or empty.<a name="line.294"></a>
+<span class="sourceLineNo">295</span> */<a name="line.295"></a>
+<span class="sourceLineNo">296</span> static ServerName getRegionServer(final Result r, int replicaId) {<a name="line.296"></a>
+<span class="sourceLineNo">297</span> final Cell cell = r.getColumnLatestCell(HConstants.CATALOG_FAMILY,<a name="line.297"></a>
+<span class="sourceLineNo">298</span> getServerNameColumn(replicaId));<a name="line.298"></a>
+<span class="sourceLineNo">299</span> if (cell == null || cell.getValueLength() == 0) {<a name="line.299"></a>
+<span class="sourceLineNo">300</span> RegionLocations locations = MetaTableAccessor.getRegionLocations(r);<a name="line.300"></a>
+<span class="sourceLineNo">301</span> if (locations != null) {<a name="line.301"></a>
+<span class="sourceLineNo">302</span> HRegionLocation location = locations.getRegionLocation(replicaId);<a name="line.302"></a>
+<span class="sourceLineNo">303</span> if (location != null) {<a name="line.303"></a>
+<span class="sourceLineNo">304</span> return location.getServerName();<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> return null;<a name="line.307"></a>
+<span class="sourceLineNo">308</span> }<a name="line.308"></a>
+<span class="sourceLineNo">309</span> return ServerName.parseServerName(Bytes.toString(cell.getValueArray(),<a name="line.309"></a>
+<span class="sourceLineNo">310</span> cell.getValueOffset(), cell.getValueLength()));<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> private static byte[] getServerNameColumn(int replicaId) {<a name="line.313"></a>
+<span class="sourceLineNo">314</span> return replicaId == 0<a name="line.314"></a>
+<span class="sourceLineNo">315</span> ? HConstants.SERVERNAME_QUALIFIER<a name="line.315"></a>
+<span class="sourceLineNo">316</span> : Bytes.toBytes(HConstants.SERVERNAME_QUALIFIER_STR + META_REPLICA_ID_DELIMITER<a name="line.316"></a>
+<span class="sourceLineNo">317</span> + String.format(RegionInfo.REPLICA_ID_FORMAT, replicaId));<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> // Region State<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> /**<a name="line.324"></a>
+<span class="sourceLineNo">325</span> * Pull the region state from a catalog table {@link Result}.<a name="line.325"></a>
+<span class="sourceLineNo">326</span> * @param r Result to pull the region state from<a name="line.326"></a>
+<span class="sourceLineNo">327</span> * @return the region state, or null if unknown.<a name="line.327"></a>
+<span class="sourceLineNo">328</span> */<a name="line.328"></a>
+<span class="sourceLineNo">329</span> @VisibleForTesting<a name="line.329"></a>
+<span class="sourceLineNo">330</span> public static State getRegionState(final Result r, int replicaId) {<a name="line.330"></a>
+<span class="sourceLineNo">331</span> Cell cell = r.getColumnLatestCell(HConstants.CATALOG_FAMILY, getStateColumn(replicaId));<a name="line.331"></a>
+<span class="sourceLineNo">332</span> if (cell == null || cell.getValueLength() == 0) {<a name="line.332"></a>
+<span class="sourceLineNo">333</span> return null;<a name="line.333"></a>
+<span class="sourceLineNo">334</span> }<a name="line.334"></a>
+<span class="sourceLineNo">335</span> return State.valueOf(Bytes.toString(cell.getValueArray(), cell.getValueOffset(),<a name="line.335"></a>
+<span class="sourceLineNo">336</span> cell.getValueLength()));<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> private static byte[] getStateColumn(int replicaId) {<a name="line.339"></a>
+<span class="sourceLineNo">340</span> return replicaId == 0<a name="line.340"></a>
+<span class="sourceLineNo">341</span> ? HConstants.STATE_QUALIFIER<a name="line.341"></a>
+<span class="sourceLineNo">342</span> : Bytes.toBytes(HConstants.STATE_QUALIFIER_STR + META_REPLICA_ID_DELIMITER<a name="line.342"></a>
+<span class="sourceLineNo">343</span> + String.format(RegionInfo.REPLICA_ID_FORMAT, replicaId));<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>
[41/51] [partial] hbase-site git commit: Published site at
9101fc246f86445006bfbcdfda5cc495016dc280.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/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 c6822d1..2405d9a 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":9,"i34":10,"i35":10,"i36":10,"i37":10,"i38":10,"i39":10,"i40":10,"i41":10,"i42":9,"i43":10,"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":9,"i63":10,"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":9,"i121":10,"i122":10,"i123":10,"i124":10,"i125":10,"i126":10,"i127":10,"i128":10,"i129":10,"i130":10,"i131":10,"i132":10,"i133":10,"i134":9,"i135":10,"i136":10,"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":9};
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":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":9,"i121":10,"i122":10,"i123":10,"i124":10,"i125":10,"i126":10,"i127":10,"i128":10,"i129":10,"i130":10,"i131":10,"i132":10,"i133":9,"i134":10,"i135":10,"i136":10,"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":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.237">HMaster</a>
+public class <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.240">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
@@ -422,42 +422,38 @@ 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#rsFatals">rsFatals</a></span></code> </td>
</tr>
<tr class="rowColor">
-<td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureEvent.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureEvent</a><?></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#serverCrashProcessingEnabled">serverCrashProcessingEnabled</a></span></code> </td>
-</tr>
-<tr class="altColor">
<td class="colFirst"><code>private <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#serverManager">serverManager</a></span></code> </td>
</tr>
-<tr class="rowColor">
+<tr 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#serviceStarted">serviceStarted</a></span></code> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>(package private) <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#snapshotManager">snapshotManager</a></span></code> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>private <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#snapshotQuotaChore">snapshotQuotaChore</a></span></code> </td>
</tr>
-<tr class="altColor">
+<tr 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#spaceQuotaSnapshotNotifier">spaceQuotaSnapshotNotifier</a></span></code> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>private <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#splitOrMergeTracker">splitOrMergeTracker</a></span></code> </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/master/HMaster.html#splitPlanCount">splitPlanCount</a></span></code> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>private <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#tableStateManager">tableStateManager</a></span></code> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>private <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#walManager">walManager</a></span></code> </td>
</tr>
@@ -649,27 +645,31 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
</td>
</tr>
<tr id="i27" 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#createProcedureExecutor--">createProcedureExecutor</a></span>()</code> </td>
+</tr>
+<tr id="i28" class="altColor">
<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> </td>
</tr>
-<tr id="i28" class="altColor">
+<tr id="i29" class="rowColor">
<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> </td>
</tr>
-<tr id="i29" class="rowColor">
+<tr id="i30" class="altColor">
<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> 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="i30" class="altColor">
+<tr id="i31" 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#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> tableDescriptor)</code>
<div class="block">Create a system table using the given table definition.</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#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> tableDescriptor,
byte[][] splitKeys,
@@ -678,7 +678,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="i32" 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/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><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>> servers,
boolean offload)</code>
@@ -686,13 +686,13 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
regions from getting assigned to them.</div>
</td>
</tr>
-<tr id="i33" class="rowColor">
+<tr id="i34" class="altColor">
<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 conf)</code>
<div class="block">This method modifies the master's configuration in order to inject replication-related features</div>
</td>
</tr>
-<tr id="i34" class="altColor">
+<tr id="i35" 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#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> tableName,
byte[] columnName,
@@ -701,7 +701,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="i35" class="rowColor">
+<tr id="i36" 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#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> name,
long nonceGroup,
@@ -709,7 +709,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
<div class="block">Delete an existing Namespace.</div>
</td>
</tr>
-<tr id="i36" class="altColor">
+<tr id="i37" 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#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> tableName,
long nonceGroup,
@@ -717,13 +717,13 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
<div class="block">Delete a table</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#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> peerId)</code>
<div class="block">Stop the replication stream to the specified peer</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#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> tableName,
long nonceGroup,
@@ -731,13 +731,13 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
<div class="block">Disable an existing table</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#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> peerId)</code>
<div class="block">Restart the replication stream to the specified peer</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#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> tableName,
long nonceGroup,
@@ -745,264 +745,260 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
<div class="block">Enable an existing table</div>
</td>
</tr>
-<tr id="i41" class="rowColor">
+<tr id="i42" class="altColor">
<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.ModifyPeerProcedure-">executePeerProcedure</a></span>(<a href="../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html" title="class in org.apache.hadoop.hbase.master.replication">ModifyPeerProcedure</a> procedure)</code> </td>
</tr>
-<tr id="i42" class="altColor">
+<tr id="i43" class="rowColor">
<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><<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>> 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> pattern)</code>
<div class="block">Removes the table descriptors that don't match the pattern.</div>
</td>
</tr>
-<tr id="i43" class="rowColor">
+<tr id="i44" 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#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> status)</code>
<div class="block">Finish initialization of HMaster after becoming the primary master.</div>
</td>
</tr>
-<tr id="i44" class="altColor">
+<tr id="i45" class="rowColor">
<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> </td>
</tr>
-<tr id="i45" class="rowColor">
+<tr id="i46" class="altColor">
<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="i46" class="altColor">
+<tr id="i47" class="rowColor">
<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><<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#getBackupMasters--">getBackupMasters</a></span>()</code> </td>
</tr>
-<tr id="i47" class="rowColor">
+<tr id="i48" class="altColor">
<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> </td>
</tr>
-<tr id="i48" class="altColor">
+<tr id="i49" 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#getClientIdAuditPrefix--">getClientIdAuditPrefix</a></span>()</code> </td>
</tr>
-<tr id="i49" class="rowColor">
+<tr id="i50" 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--">getClusterMetrics</a></span>()</code> </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-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><<a href="../../../../../org/apache/hadoop/hbase/ClusterMetrics.Option.html" title="enum in org.apache.hadoop.hbase">ClusterMetrics.Option</a>> options)</code> </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#getClusterMetricsWithoutCoprocessor--">getClusterMetricsWithoutCoprocessor</a></span>()</code> </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-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><<a href="../../../../../org/apache/hadoop/hbase/ClusterMetrics.Option.html" title="enum in org.apache.hadoop.hbase">ClusterMetrics.Option</a>> options)</code> </td>
</tr>
-<tr id="i53" class="rowColor">
+<tr id="i54" class="altColor">
<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> </td>
</tr>
-<tr id="i54" class="altColor">
+<tr id="i55" class="rowColor">
<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><? extends javax.servlet.http.HttpServlet></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getDumpServlet--">getDumpServlet</a></span>()</code> </td>
</tr>
-<tr id="i55" class="rowColor">
+<tr id="i56" class="altColor">
<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> </td>
</tr>
-<tr id="i56" class="altColor">
+<tr id="i57" class="rowColor">
<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> </td>
</tr>
-<tr id="i57" class="rowColor">
+<tr id="i58" class="altColor">
<td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureEvent.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureEvent</a><?></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getInitializedEvent--">getInitializedEvent</a></span>()</code> </td>
</tr>
-<tr id="i58" class="altColor">
+<tr id="i59" 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#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> table)</code> </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#getLastMajorCompactionTimestampForRegion-byte:A-">getLastMajorCompactionTimestampForRegion</a></span>(byte[] regionName)</code> </td>
</tr>
-<tr id="i60" class="altColor">
+<tr id="i61" class="rowColor">
<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> </td>
</tr>
-<tr id="i61" class="rowColor">
+<tr id="i62" 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#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="i62" class="altColor">
+<tr id="i63" 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/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="i63" class="rowColor">
+<tr id="i64" class="altColor">
<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> </td>
</tr>
-<tr id="i64" class="altColor">
+<tr id="i65" 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><<a href="../../../../../org/apache/hadoop/hbase/procedure2/LockedResource.html" title="class in org.apache.hadoop.hbase.procedure2">LockedResource</a>></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="i65" class="rowColor">
+<tr id="i66" class="altColor">
<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> </td>
</tr>
-<tr id="i66" class="altColor">
+<tr id="i67" 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#getMasterActiveTime--">getMasterActiveTime</a></span>()</code> </td>
</tr>
-<tr id="i67" class="rowColor">
+<tr id="i68" class="altColor">
<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> </td>
</tr>
-<tr id="i68" class="altColor">
+<tr id="i69" 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#getMasterCoprocessors--">getMasterCoprocessors</a></span>()</code> </td>
</tr>
-<tr id="i69" class="rowColor">
+<tr id="i70" class="altColor">
<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> </td>
</tr>
-<tr id="i70" class="altColor">
+<tr id="i71" 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#getMasterFinishedInitializationTime--">getMasterFinishedInitializationTime</a></span>()</code> </td>
</tr>
-<tr id="i71" class="rowColor">
+<tr id="i72" class="altColor">
<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> </td>
</tr>
-<tr id="i72" class="altColor">
+<tr id="i73" class="rowColor">
<td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureExecutor</a><<a href="../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterProcedureExecutor--">getMasterProcedureExecutor</a></span>()</code> </td>
</tr>
-<tr id="i73" class="rowColor">
+<tr id="i74" class="altColor">
<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> </td>
</tr>
-<tr id="i74" class="altColor">
+<tr id="i75" class="rowColor">
<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> </td>
</tr>
-<tr id="i75" class="rowColor">
+<tr id="i76" class="altColor">
<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> </td>
</tr>
-<tr id="i76" class="altColor">
+<tr id="i77" 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#getMasterStartTime--">getMasterStartTime</a></span>()</code> </td>
</tr>
-<tr id="i77" class="rowColor">
+<tr id="i78" class="altColor">
<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> </td>
</tr>
-<tr id="i78" class="altColor">
+<tr id="i79" 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#getMaxBalancingTime--">getMaxBalancingTime</a></span>()</code> </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#getMaxRegionsInTransition--">getMaxRegionsInTransition</a></span>()</code> </td>
</tr>
-<tr id="i80" class="altColor">
+<tr id="i81" 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#getMergePlanCount--">getMergePlanCount</a></span>()</code> </td>
</tr>
-<tr id="i81" class="rowColor">
+<tr id="i82" class="altColor">
<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><<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>></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMetaTableObserver--">getMetaTableObserver</a></span>()</code> </td>
</tr>
-<tr id="i82" class="altColor">
+<tr id="i83" class="rowColor">
<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> tableName)</code>
<div class="block">Gets the mob file compaction state for a specific table.</div>
</td>
</tr>
-<tr id="i83" class="rowColor">
+<tr id="i84" class="altColor">
<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> name)</code>
<div class="block">Get a Namespace</div>
</td>
</tr>
-<tr id="i84" class="altColor">
+<tr id="i85" class="rowColor">
<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><<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#getNamespaces--">getNamespaces</a></span>()</code>
<div class="block">Get all Namespaces</div>
</td>
</tr>
-<tr id="i85" class="rowColor">
+<tr id="i86" 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#getNumWALFiles--">getNumWALFiles</a></span>()</code> </td>
</tr>
-<tr id="i86" class="altColor">
+<tr id="i87" 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><<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?>></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="i87" class="rowColor">
+<tr id="i88" class="altColor">
<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> </td>
</tr>
-<tr id="i88" class="altColor">
+<tr id="i89" class="rowColor">
<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> </td>
</tr>
-<tr id="i89" class="rowColor">
+<tr id="i90" class="altColor">
<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> </td>
</tr>
-<tr id="i90" class="altColor">
+<tr id="i91" class="rowColor">
<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> </td>
</tr>
-<tr id="i91" class="rowColor">
+<tr id="i92" class="altColor">
<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> </td>
</tr>
-<tr id="i92" class="altColor">
+<tr id="i93" 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#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> sn)</code> </td>
</tr>
-<tr id="i93" class="rowColor">
+<tr id="i94" 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#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> sn)</code> </td>
</tr>
-<tr id="i94" class="altColor">
+<tr id="i95" class="rowColor">
<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 port,
long serverStartCode)</code> </td>
</tr>
-<tr id="i95" class="rowColor">
+<tr id="i96" class="altColor">
<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><<a href="../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>,?></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getRemoteProcedure-long-">getRemoteProcedure</a></span>(long procId)</code> </td>
</tr>
-<tr id="i96" class="altColor">
+<tr id="i97" 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> peerId)</code>
<div class="block">Returns the configured ReplicationPeerConfig for the specified peer</div>
</td>
</tr>
-<tr id="i97" class="rowColor">
+<tr id="i98" 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="i98" class="altColor">
-<td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureEvent.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureEvent</a><?></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getServerCrashProcessingEnabledEvent--">getServerCrashProcessingEnabledEvent</a></span>()</code> </td>
-</tr>
<tr id="i99" 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> </td>
@@ -1133,31 +1129,24 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
</tr>
<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#isServerCrashProcessingEnabled--">isServerCrashProcessingEnabled</a></span>()</code>
-<div class="block">ServerCrashProcessingEnabled is set false before completing assignMeta to prevent processing
- of crashed servers.</div>
-</td>
-</tr>
-<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#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> 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="i127" class="rowColor">
+<tr id="i126" 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><<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#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="i128" class="altColor">
+<tr id="i127" 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><<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerDescription.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerDescription</a>></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> regex)</code>
<div class="block">Return a list of replication peers.</div>
</td>
</tr>
-<tr id="i129" class="rowColor">
+<tr id="i128" 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><<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>></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> 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> regex,
@@ -1166,13 +1155,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="i130" class="altColor">
+<tr id="i129" 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><<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>></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> name)</code>
<div class="block">Get list of table descriptors by namespace</div>
</td>
</tr>
-<tr id="i131" 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><<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>></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> 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> regex,
@@ -1180,24 +1169,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="i132" 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><<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>></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> name)</code>
<div class="block">Get list of table names by namespace</div>
</td>
</tr>
-<tr id="i133" class="rowColor">
+<tr id="i132" 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> 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> host)</code>
<div class="block">For compatibility, if failed with regionserver credentials, try the master one</div>
</td>
</tr>
-<tr id="i134" class="altColor">
+<tr id="i133" 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>[] args)</code> </td>
</tr>
-<tr id="i135" class="rowColor">
+<tr id="i134" 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>[] regionsToMerge,
boolean forcible,
@@ -1206,7 +1195,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
<div class="block">Merge regions in a table.</div>
</td>
</tr>
-<tr id="i136" class="altColor">
+<tr id="i135" 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> tableName,
<a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a> descriptor,
@@ -1215,7 +1204,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="i137" class="rowColor">
+<tr id="i136" 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> newNsDescriptor,
long nonceGroup,
@@ -1223,7 +1212,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
<div class="block">Modify an existing Namespace.</div>
</td>
</tr>
-<tr id="i138" class="altColor">
+<tr id="i137" 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#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> tableName,
<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a> newDescriptor,
@@ -1232,22 +1221,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="i139" class="rowColor">
+<tr id="i138" 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#move-byte:A-byte:A-">move</a></span>(byte[] encodedRegionName,
byte[] destServerName)</code> </td>
</tr>
-<tr id="i140" class="altColor">
+<tr id="i139" 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#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="i141" class="rowColor">
+<tr id="i140" 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#putUpJettyServer--">putUpJettyServer</a></span>()</code> </td>
</tr>
-<tr id="i142" class="altColor">
+<tr id="i141" 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#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> 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><byte[]> encodedRegionNames)</code>
@@ -1255,43 +1244,37 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
assignments.</div>
</td>
</tr>
-<tr id="i143" 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#recoverMeta--">recoverMeta</a></span>()</code>
-<div class="block">Recover meta table.</div>
-</td>
-</tr>
-<tr id="i144" class="altColor">
+<tr id="i142" 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#registerService-com.google.protobuf.Service-">registerService</a></span>(com.google.protobuf.Service 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="i145" class="rowColor">
+<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#remoteProcedureCompleted-long-">remoteProcedureCompleted</a></span>(long procId)</code> </td>
</tr>
-<tr id="i146" class="altColor">
+<tr id="i144" 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#remoteProcedureFailed-long-org.apache.hadoop.hbase.procedure2.RemoteProcedureException-">remoteProcedureFailed</a></span>(long procId,
<a href="../../../../../org/apache/hadoop/hbase/procedure2/RemoteProcedureException.html" title="class in org.apache.hadoop.hbase.procedure2">RemoteProcedureException</a> error)</code> </td>
</tr>
-<tr id="i147" class="rowColor">
+<tr id="i145" 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#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> peerId)</code>
<div class="block">Removes a peer and stops the replication</div>
</td>
</tr>
-<tr id="i148" class="altColor">
+<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#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> tableName)</code> </td>
</tr>
-<tr id="i149" class="rowColor">
+<tr id="i147" 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#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> tableName)</code> </td>
</tr>
-<tr id="i150" class="altColor">
+<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#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> 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><<a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>> columns,
@@ -1299,47 +1282,43 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
<div class="block">Requests mob compaction.</div>
</td>
</tr>
-<tr id="i151" class="rowColor">
+<tr id="i149" 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#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 snapshotDesc,
long nonceGroup,
long nonce,
boolean restoreAcl)</code> </td>
</tr>
-<tr id="i152" class="altColor">
+<tr id="i150" 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#run--">run</a></span>()</code>
<div class="block">The HRegionServer sticks in this loop until closed.</div>
</td>
</tr>
-<tr id="i153" class="rowColor">
+<tr id="i151" 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#sanityCheckTableDescriptor-org.apache.hadoop.hbase.client.TableDescriptor-">sanityCheckTableDescriptor</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a> htd)</code>
<div class="block">Checks whether the table conforms to some sane limits, and configured
values (compression, etc) work.</div>
</td>
</tr>
-<tr id="i154" class="altColor">
+<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#setCatalogJanitorEnabled-boolean-">setCatalogJanitorEnabled</a></span>(boolean b)</code>
<div class="block">Switch for the background CatalogJanitor thread.</div>
</td>
</tr>
-<tr id="i155" class="rowColor">
+<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#setInitialized-boolean-">setInitialized</a></span>(boolean isInitialized)</code> </td>
</tr>
-<tr id="i156" 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#setServerCrashProcessingEnabled-boolean-">setServerCrashProcessingEnabled</a></span>(boolean b)</code> </td>
-</tr>
-<tr id="i157" class="rowColor">
+<tr id="i154" 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#shutdown--">shutdown</a></span>()</code>
<div class="block">Shutdown the cluster.</div>
</td>
</tr>
-<tr id="i158" class="altColor">
+<tr id="i155" 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#splitRegion-org.apache.hadoop.hbase.client.RegionInfo-byte:A-long-long-">splitRegion</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo,
byte[] splitRow,
@@ -1348,43 +1327,43 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
<div class="block">Split a region.</div>
</td>
</tr>
-<tr id="i159" class="rowColor">
+<tr id="i156" 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#startActiveMasterManager-int-">startActiveMasterManager</a></span>(int infoPort)</code> </td>
</tr>
-<tr id="i160" class="altColor">
+<tr id="i157" 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#startProcedureExecutor--">startProcedureExecutor</a></span>()</code> </td>
</tr>
-<tr id="i161" class="rowColor">
+<tr id="i158" 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#startServiceThreads--">startServiceThreads</a></span>()</code> </td>
</tr>
-<tr id="i162" class="altColor">
+<tr id="i159" 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#stop-java.lang.String-">stop</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> msg)</code>
<div class="block">Stop this service.</div>
</td>
</tr>
-<tr id="i163" class="rowColor">
+<tr id="i160" 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#stopChores--">stopChores</a></span>()</code> </td>
</tr>
-<tr id="i164" class="altColor">
+<tr id="i161" 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#stopMaster--">stopMaster</a></span>()</code> </td>
</tr>
-<tr id="i165" class="rowColor">
+<tr id="i162" 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#stopProcedureExecutor--">stopProcedureExecutor</a></span>()</code> </td>
</tr>
-<tr id="i166" class="altColor">
+<tr id="i163" 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#stopServiceThreads--">stopServiceThreads</a></span>()</code>
<div class="block">Wait on all threads to finish.</div>
</td>
</tr>
-<tr id="i167" class="rowColor">
+<tr id="i164" 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#truncateTable-org.apache.hadoop.hbase.TableName-boolean-long-long-">truncateTable</a></span>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> tableName,
boolean preserveSplits,
@@ -1393,32 +1372,32 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
<div class="block">Truncate a table</div>
</td>
</tr>
-<tr id="i168" class="altColor">
+<tr id="i165" 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#updateConfigurationForSpaceQuotaObserver-org.apache.hadoop.conf.Configuration-">updateConfigurationForSpaceQuotaObserver</a></span>(org.apache.hadoop.conf.Configuration conf)</code>
<div class="block">Adds the <code>MasterSpaceQuotaObserver</code> to the list of configured Master observers to
automatically remove space quotas for a table when that table is deleted.</div>
</td>
</tr>
-<tr id="i169" class="rowColor">
+<tr id="i166" 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#updateReplicationPeerConfig-java.lang.String-org.apache.hadoop.hbase.replication.ReplicationPeerConfig-">updateReplicationPeerConfig</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> peerId,
<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig</a> peerConfig)</code>
<div class="block">Update the peerConfig for the specified peer</div>
</td>
</tr>
-<tr id="i170" class="altColor">
+<tr id="i167" 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#waitForMasterActive--">waitForMasterActive</a></span>()</code>
<div class="block">If configured to put regions on active master,
wait till a backup master becomes active.</div>
</td>
</tr>
-<tr id="i171" class="rowColor">
+<tr id="i168" 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#waitForRegionServers-org.apache.hadoop.hbase.monitoring.MonitoredTask-">waitForRegionServers</a></span>(<a href="../../../../../org/apache/hadoop/hbase/monitoring/MonitoredTask.html" title="interface in org.apache.hadoop.hbase.monitoring">MonitoredTask</a> status)</code> </td>
</tr>
-<tr id="i172" class="altColor">
+<tr id="i169" class="rowColor">
<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#warnOrThrowExceptionForFailure-boolean-java.lang.String-java.lang.String-java.lang.Exception-">warnOrThrowExceptionForFailure</a></span>(boolean logWarn,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> confKey,
@@ -1495,7 +1474,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
<ul class="blockList">
<li class="blockList">
<h4>LOG</h4>
-<pre>private static org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.238">LOG</a></pre>
+<pre>private static org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.241">LOG</a></pre>
</li>
</ul>
<a name="MASTER">
@@ -1504,7 +1483,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
<ul class="blockList">
<li class="blockList">
<h4>MASTER</h4>
-<pre>public static final <a href="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.html#line.294">MASTER</a></pre>
+<pre>public static final <a href="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.html#line.297">MASTER</a></pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.master.HMaster.MASTER">Constant Field Values</a></dd>
@@ -1517,7 +1496,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
<ul class="blockList">
<li class="blockList">
<h4>activeMasterManager</h4>
-<pre>private final <a href="../../../../../org/apache/hadoop/hbase/master/ActiveMasterManager.html" title="class in org.apache.hadoop.hbase.master">ActiveMasterManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.297">activeMasterManager</a></pre>
+<pre>private final <a href="../../../../../org/apache/hadoop/hbase/master/ActiveMasterManager.html" title="class in org.apache.hadoop.hbase.master">ActiveMasterManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.300">activeMasterManager</a></pre>
</li>
</ul>
<a name="regionServerTracker">
@@ -1526,7 +1505,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
<ul class="blockList">
<li class="blockList">
<h4>regionServerTracker</h4>
-<pre>private <a href="../../../../../org/apache/hadoop/hbase/master/RegionServerTracker.html" title="class in org.apache.hadoop.hbase.master">RegionServerTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.299">regionServerTracker</a></pre>
+<pre>private <a href="../../../../../org/apache/hadoop/hbase/master/RegionServerTracker.html" title="class in org.apache.hadoop.hbase.master">RegionServerTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.302">regionServerTracker</a></pre>
</li>
</ul>
<a name="drainingServerTracker">
@@ -1535,7 +1514,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
<ul class="blockList">
<li class="blockList">
<h4>drainingServerTracker</h4>
-<pre>private <a href="../../../../../org/apache/hadoop/hbase/master/DrainingServerTracker.html" title="class in org.apache.hadoop.hbase.master">DrainingServerTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.301">drainingServerTracker</a></pre>
+<pre>private <a href="../../../../../org/apache/hadoop/hbase/master/DrainingServerTracker.html" title="class in org.apache.hadoop.hbase.master">DrainingServerTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.304">drainingServerTracker</a></pre>
</li>
</ul>
<a name="loadBalancerTracker">
@@ -1544,7 +1523,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
<ul class="blockList">
<li class="blockList">
<h4>loadBalancerTracker</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/zookeeper/LoadBalancerTracker.html" title="class in org.apache.hadoop.hbase.zookeeper">LoadBalancerTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.303">loadBalancerTracker</a></pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/zookeeper/LoadBalancerTracker.html" title="class in org.apache.hadoop.hbase.zookeeper">LoadBalancerTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.306">loadBalancerTracker</a></pre>
</li>
</ul>
<a name="metaLocationSyncer">
@@ -1553,7 +1532,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
<ul class="blockList">
<li class="blockList">
<h4>metaLocationSyncer</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/master/zksyncer/MetaLocationSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">MetaLocationSyncer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.305">metaLocationSyncer</a></pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/master/zksyncer/MetaLocationSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">MetaLocationSyncer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.308">metaLocationSyncer</a></pre>
</li>
</ul>
<a name="masterAddressSyncer">
@@ -1562,7 +1541,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
<ul class="blockList">
<li class="blockList">
<h4>masterAddressSyncer</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/master/zksyncer/MasterAddressSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">MasterAddressSyncer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.307">masterAddressSyncer</a></pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/master/zksyncer/MasterAddressSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">MasterAddressSyncer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.310">masterAddressSyncer</a></pre>
</li>
</ul>
<a name="splitOrMergeTracker">
@@ -1571,7 +1550,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
<ul class="blockList">
<li class="blockList">
<h4>splitOrMergeTracker</h4>
-<pre>private <a href="../../../../../org/apache/hadoop/hbase/master/SplitOrMergeTracker.html" title="class in org.apache.hadoop.hbase.master">SplitOrMergeTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.310">splitOrMergeTracker</a></pre>
+<pre>private <a href="../../../../../org/apache/hadoop/hbase/master/SplitOrMergeTracker.html" title="class in org.apache.hadoop.hbase.master">SplitOrMergeTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.313">splitOrMergeTracker</a></pre>
</li>
</ul>
<a name="regionNormalizerTracker">
@@ -1580,7 +1559,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
<ul class="blockList">
<li class="blockList">
<h4>regionNormalizerTracker</h4>
-<pre>private <a href="../../../../../org/apache/hadoop/hbase/zookeeper/RegionNormalizerTracker.html" title="class in org.apache.hadoop.hbase.zookeeper">RegionNormalizerTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.313">regionNormalizerTracker</a></pre>
+<pre>private <a href="../../../../../org/apache/hadoop/hbase/zookeeper/RegionNormalizerTracker.html" title="class in org.apache.hadoop.hbase.zookeeper">RegionNormalizerTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.316">regionNormalizerTracker</a></pre>
</li>
</ul>
<a name="maintenanceModeTracker">
@@ -1589,7 +1568,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
<ul class="blockList">
<li class="blockList">
<h4>maintenanceModeTracker</h4>
-<pre>private <a href="../../../../../org/apache/hadoop/hbase/zookeeper/MasterMaintenanceModeTracker.html" title="class in org.apache.hadoop.hbase.zookeeper">MasterMaintenanceModeTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.316">maintenanceModeTracker</a></pre>
+<pre>private <a href="../../../../../org/apache/hadoop/hbase/zookeeper/MasterMaintenanceModeTracker.html" title="class in org.apache.hadoop.hbase.zookeeper">MasterMaintenanceModeTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.319">maintenanceModeTracker</a></pre>
</li>
</ul>
<a name="clusterSchemaService">
@@ -1598,7 +1577,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
<ul class="blockList">
<li class="blockList">
<h4>clusterSchemaService</h4>
-<pre>private <a href="../../../../../org/apache/hadoop/hbase/master/ClusterSchemaService.html" title="interface in org.apache.hadoop.hbase.master">ClusterSchemaService</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.318">clusterSchemaService</a></pre>
+<pre>private <a href="../../../../../org/apache/hadoop/hbase/master/ClusterSchemaService.html" title="interface in org.apache.hadoop.hbase.master">ClusterSchemaService</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.321">clusterSchemaService</a></pre>
</li>
</ul>
<a name="HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS">
@@ -1607,7 +1586,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
<ul class="blockList">
<li class="blockList">
<h4>HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS</h4>
-<pre>public static final <a href="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.html#line.320">HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS</a></pre>
+<pre>public static final <a href="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.html#line.323">HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS</a></pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.master.HMaster.HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS">Constant Field Values</a></dd>
@@ -1620,7 +1599,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
<ul class="blockList">
<li class="blockList">
<h4>DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS</h4>
-<pre>public static final int <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.322">DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS</a></pre>
+<pre>public static final int <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.325">DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS</a></pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.master.HMaster.DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS">Constant Field Values</a></dd>
@@ -1633,7 +1612,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
<ul class="blockList">
<li class="blockList">
<h4>metricsMaster</h4>
-<pre>final <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMaster.html" title="class in org.apache.hadoop.hbase.master">MetricsMaster</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.325">metricsMaster</a></pre>
+<pre>final <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMaster.html" title="class in org.apache.hadoop.hbase.master">MetricsMaster</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.328">metricsMaster</a></pre>
</li>
</ul>
<a name="fileSystemManager">
@@ -1642,7 +1621,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
<ul class="blockList">
<li class="blockList">
<h4>fileSystemManager</h4>
-<pre>private <a href="../../../../../org/apache/hadoop/hbase/master/MasterFileSystem.html" title="class in org.apache.hadoop.hbase.ma
<TRUNCATED>
[11/51] [partial] hbase-site git commit: Published site at
9101fc246f86445006bfbcdfda5cc495016dc280.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/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 eb16038..74bacd8 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
@@ -6,7 +6,7 @@
</head>
<body>
<div class="sourceContainer">
-<pre><span class="sourceLineNo">001</span>/*<a name="line.1"></a>
+<pre><span class="sourceLineNo">001</span>/**<a name="line.1"></a>
<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
<span class="sourceLineNo">003</span> * or more contributor license agreements. See the NOTICE file<a name="line.3"></a>
<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
@@ -48,692 +48,692 @@
<span class="sourceLineNo">040</span>import java.util.Map;<a name="line.40"></a>
<span class="sourceLineNo">041</span>import java.util.Map.Entry;<a name="line.41"></a>
<span class="sourceLineNo">042</span>import java.util.Objects;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import java.util.Set;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import java.util.concurrent.ExecutionException;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import java.util.concurrent.Future;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import java.util.concurrent.TimeUnit;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import java.util.concurrent.TimeoutException;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import java.util.concurrent.atomic.AtomicInteger;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import java.util.concurrent.atomic.AtomicReference;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import java.util.function.Function;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import java.util.regex.Pattern;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import java.util.stream.Collectors;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import javax.servlet.ServletException;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import javax.servlet.http.HttpServlet;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import javax.servlet.http.HttpServletRequest;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import javax.servlet.http.HttpServletResponse;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.commons.lang3.StringUtils;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.conf.Configuration;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.fs.Path;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.ClusterId;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.ClusterMetrics;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.ClusterMetrics.Option;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.ClusterMetricsBuilder;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.HBaseIOException;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.HBaseInterfaceAudience;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.HConstants;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.InvalidFamilyOperationException;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.MasterNotRunningException;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.MetaTableAccessor;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.PleaseHoldException;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.ReplicationPeerNotFoundException;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.ScheduledChore;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.ServerName;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.TableDescriptors;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.TableName;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.TableNotDisabledException;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.TableNotFoundException;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.UnknownRegionException;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.client.MasterSwitchType;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.client.Result;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.client.TableState;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.client.VersionInfoUtil;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.coprocessor.CoprocessorHost;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.exceptions.MergeRegionException;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.executor.ExecutorType;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.favored.FavoredNodesManager;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.favored.FavoredNodesPromoter;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.http.InfoServer;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcUtils;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.ipc.ServerNotRunningYetException;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.log.HBaseMarkers;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.master.MasterRpcServices.BalanceSwitchMode;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.master.assignment.AssignmentManager;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.master.assignment.MergeTableRegionsProcedure;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.master.assignment.RegionStates;<a name="line.104"></a>
-<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.master.assignment.RegionStates.RegionStateNode;<a name="line.105"></a>
-<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.master.balancer.BalancerChore;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.master.balancer.BaseLoadBalancer;<a name="line.107"></a>
-<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.master.balancer.ClusterStatusChore;<a name="line.108"></a>
-<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.master.balancer.LoadBalancerFactory;<a name="line.109"></a>
-<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.master.cleaner.CleanerChore;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.master.cleaner.HFileCleaner;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.master.cleaner.LogCleaner;<a name="line.112"></a>
-<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.master.cleaner.ReplicationBarrierCleaner;<a name="line.113"></a>
-<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.master.locking.LockManager;<a name="line.114"></a>
-<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.master.normalizer.NormalizationPlan;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.master.normalizer.NormalizationPlan.PlanType;<a name="line.116"></a>
-<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizer;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizerChore;<a name="line.118"></a>
-<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizerFactory;<a name="line.119"></a>
-<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.master.procedure.CreateTableProcedure;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.master.procedure.DeleteNamespaceProcedure;<a name="line.121"></a>
-<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.master.procedure.DeleteTableProcedure;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.master.procedure.DisableTableProcedure;<a name="line.123"></a>
-<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.master.procedure.EnableTableProcedure;<a name="line.124"></a>
-<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureConstants;<a name="line.125"></a>
-<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv;<a name="line.126"></a>
-<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureScheduler;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureUtil;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.master.procedure.ModifyTableProcedure;<a name="line.129"></a>
-<span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.master.procedure.ProcedurePrepareLatch;<a name="line.130"></a>
-<span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.master.procedure.RecoverMetaProcedure;<a name="line.131"></a>
-<span class="sourceLineNo">132</span>import org.apache.hadoop.hbase.master.procedure.TruncateTableProcedure;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>import org.apache.hadoop.hbase.master.replication.AddPeerProcedure;<a name="line.133"></a>
-<span class="sourceLineNo">134</span>import org.apache.hadoop.hbase.master.replication.DisablePeerProcedure;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>import org.apache.hadoop.hbase.master.replication.EnablePeerProcedure;<a name="line.135"></a>
-<span class="sourceLineNo">136</span>import org.apache.hadoop.hbase.master.replication.ModifyPeerProcedure;<a name="line.136"></a>
-<span class="sourceLineNo">137</span>import org.apache.hadoop.hbase.master.replication.RemovePeerProcedure;<a name="line.137"></a>
-<span class="sourceLineNo">138</span>import org.apache.hadoop.hbase.master.replication.ReplicationPeerManager;<a name="line.138"></a>
-<span class="sourceLineNo">139</span>import org.apache.hadoop.hbase.master.replication.UpdatePeerConfigProcedure;<a name="line.139"></a>
-<span class="sourceLineNo">140</span>import org.apache.hadoop.hbase.master.snapshot.SnapshotManager;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.master.zksyncer.MasterAddressSyncer;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.master.zksyncer.MetaLocationSyncer;<a name="line.142"></a>
-<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.mob.MobConstants;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.monitoring.MemoryBoundedLogMessageBuffer;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.146"></a>
-<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.procedure.MasterProcedureManagerHost;<a name="line.147"></a>
-<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.procedure.flush.MasterFlushTableProcedureManager;<a name="line.148"></a>
-<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.procedure2.LockedResource;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.procedure2.Procedure;<a name="line.150"></a>
-<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.procedure2.ProcedureEvent;<a name="line.151"></a>
-<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.procedure2.ProcedureExecutor;<a name="line.152"></a>
-<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureDispatcher.RemoteProcedure;<a name="line.153"></a>
-<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureException;<a name="line.154"></a>
-<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.procedure2.store.wal.WALProcedureStore;<a name="line.155"></a>
-<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.quotas.MasterQuotaManager;<a name="line.156"></a>
-<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.quotas.MasterSpaceQuotaObserver;<a name="line.157"></a>
-<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.quotas.QuotaObserverChore;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.159"></a>
-<span class="sourceLineNo">160</span>import org.apache.hadoop.hbase.quotas.SnapshotQuotaObserverChore;<a name="line.160"></a>
-<span class="sourceLineNo">161</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifier;<a name="line.161"></a>
-<span class="sourceLineNo">162</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifierFactory;<a name="line.162"></a>
-<span class="sourceLineNo">163</span>import org.apache.hadoop.hbase.regionserver.DefaultStoreEngine;<a name="line.163"></a>
-<span class="sourceLineNo">164</span>import org.apache.hadoop.hbase.regionserver.HRegionServer;<a name="line.164"></a>
-<span class="sourceLineNo">165</span>import org.apache.hadoop.hbase.regionserver.HStore;<a name="line.165"></a>
-<span class="sourceLineNo">166</span>import org.apache.hadoop.hbase.regionserver.RSRpcServices;<a name="line.166"></a>
-<span class="sourceLineNo">167</span>import org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost;<a name="line.167"></a>
-<span class="sourceLineNo">168</span>import org.apache.hadoop.hbase.regionserver.RegionSplitPolicy;<a name="line.168"></a>
-<span class="sourceLineNo">169</span>import org.apache.hadoop.hbase.regionserver.compactions.ExploringCompactionPolicy;<a name="line.169"></a>
-<span class="sourceLineNo">170</span>import org.apache.hadoop.hbase.regionserver.compactions.FIFOCompactionPolicy;<a name="line.170"></a>
-<span class="sourceLineNo">171</span>import org.apache.hadoop.hbase.replication.ReplicationException;<a name="line.171"></a>
-<span class="sourceLineNo">172</span>import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;<a name="line.172"></a>
-<span class="sourceLineNo">173</span>import org.apache.hadoop.hbase.replication.ReplicationPeerDescription;<a name="line.173"></a>
-<span class="sourceLineNo">174</span>import org.apache.hadoop.hbase.replication.ReplicationUtils;<a name="line.174"></a>
-<span class="sourceLineNo">175</span>import org.apache.hadoop.hbase.replication.master.ReplicationHFileCleaner;<a name="line.175"></a>
-<span class="sourceLineNo">176</span>import org.apache.hadoop.hbase.replication.master.ReplicationLogCleaner;<a name="line.176"></a>
-<span class="sourceLineNo">177</span>import org.apache.hadoop.hbase.replication.master.ReplicationPeerConfigUpgrader;<a name="line.177"></a>
-<span class="sourceLineNo">178</span>import org.apache.hadoop.hbase.security.AccessDeniedException;<a name="line.178"></a>
-<span class="sourceLineNo">179</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.179"></a>
-<span class="sourceLineNo">180</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.180"></a>
-<span class="sourceLineNo">181</span>import org.apache.hadoop.hbase.util.Addressing;<a name="line.181"></a>
-<span class="sourceLineNo">182</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.182"></a>
-<span class="sourceLineNo">183</span>import org.apache.hadoop.hbase.util.CompressionTest;<a name="line.183"></a>
-<span class="sourceLineNo">184</span>import org.apache.hadoop.hbase.util.EncryptionTest;<a name="line.184"></a>
-<span class="sourceLineNo">185</span>import org.apache.hadoop.hbase.util.HFileArchiveUtil;<a name="line.185"></a>
-<span class="sourceLineNo">186</span>import org.apache.hadoop.hbase.util.HasThread;<a name="line.186"></a>
-<span class="sourceLineNo">187</span>import org.apache.hadoop.hbase.util.IdLock;<a name="line.187"></a>
-<span class="sourceLineNo">188</span>import org.apache.hadoop.hbase.util.ModifyRegionUtils;<a name="line.188"></a>
-<span class="sourceLineNo">189</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.189"></a>
-<span class="sourceLineNo">190</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.190"></a>
-<span class="sourceLineNo">191</span>import org.apache.hadoop.hbase.util.VersionInfo;<a name="line.191"></a>
-<span class="sourceLineNo">192</span>import org.apache.hadoop.hbase.zookeeper.LoadBalancerTracker;<a name="line.192"></a>
-<span class="sourceLineNo">193</span>import org.apache.hadoop.hbase.zookeeper.MasterAddressTracker;<a name="line.193"></a>
-<span class="sourceLineNo">194</span>import org.apache.hadoop.hbase.zookeeper.MasterMaintenanceModeTracker;<a name="line.194"></a>
-<span class="sourceLineNo">195</span>import org.apache.hadoop.hbase.zookeeper.RegionNormalizerTracker;<a name="line.195"></a>
-<span class="sourceLineNo">196</span>import org.apache.hadoop.hbase.zookeeper.ZKClusterId;<a name="line.196"></a>
-<span class="sourceLineNo">197</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.197"></a>
-<span class="sourceLineNo">198</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.198"></a>
-<span class="sourceLineNo">199</span>import org.apache.hadoop.hbase.zookeeper.ZNodePaths;<a name="line.199"></a>
-<span class="sourceLineNo">200</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.200"></a>
-<span class="sourceLineNo">201</span>import org.apache.zookeeper.KeeperException;<a name="line.201"></a>
-<span class="sourceLineNo">202</span>import org.eclipse.jetty.server.Server;<a name="line.202"></a>
-<span class="sourceLineNo">203</span>import org.eclipse.jetty.server.ServerConnector;<a name="line.203"></a>
-<span class="sourceLineNo">204</span>import org.eclipse.jetty.servlet.ServletHolder;<a name="line.204"></a>
-<span class="sourceLineNo">205</span>import org.eclipse.jetty.webapp.WebAppContext;<a name="line.205"></a>
-<span class="sourceLineNo">206</span>import org.slf4j.Logger;<a name="line.206"></a>
-<span class="sourceLineNo">207</span>import org.slf4j.LoggerFactory;<a name="line.207"></a>
-<span class="sourceLineNo">208</span><a name="line.208"></a>
-<span class="sourceLineNo">209</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.209"></a>
-<span class="sourceLineNo">210</span>import org.apache.hbase.thirdparty.com.google.common.collect.Lists;<a name="line.210"></a>
-<span class="sourceLineNo">211</span>import org.apache.hbase.thirdparty.com.google.common.collect.Maps;<a name="line.211"></a>
-<span class="sourceLineNo">212</span><a name="line.212"></a>
-<span class="sourceLineNo">213</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.213"></a>
-<span class="sourceLineNo">214</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoResponse.CompactionState;<a name="line.214"></a>
-<span class="sourceLineNo">215</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.Quotas;<a name="line.215"></a>
-<span class="sourceLineNo">216</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.SpaceViolationPolicy;<a name="line.216"></a>
-<span class="sourceLineNo">217</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;<a name="line.217"></a>
-<span class="sourceLineNo">218</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos;<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">221</span> * HMaster is the "master server" for HBase. An HBase cluster has one active<a name="line.221"></a>
-<span class="sourceLineNo">222</span> * master. If many masters are started, all compete. Whichever wins goes on to<a name="line.222"></a>
-<span class="sourceLineNo">223</span> * run the cluster. All others park themselves in their constructor until<a name="line.223"></a>
-<span class="sourceLineNo">224</span> * master or cluster shutdown or until the active master loses its lease in<a name="line.224"></a>
-<span class="sourceLineNo">225</span> * zookeeper. Thereafter, all running master jostle to take over master role.<a name="line.225"></a>
-<span class="sourceLineNo">226</span> *<a name="line.226"></a>
-<span class="sourceLineNo">227</span> * <p>The Master can be asked shutdown the cluster. See {@link #shutdown()}. In<a name="line.227"></a>
-<span class="sourceLineNo">228</span> * this case it will tell all regionservers to go down and then wait on them<a name="line.228"></a>
-<span class="sourceLineNo">229</span> * all reporting in that they are down. This master will then shut itself down.<a name="line.229"></a>
-<span class="sourceLineNo">230</span> *<a name="line.230"></a>
-<span class="sourceLineNo">231</span> * <p>You can also shutdown just this master. Call {@link #stopMaster()}.<a name="line.231"></a>
-<span class="sourceLineNo">232</span> *<a name="line.232"></a>
-<span class="sourceLineNo">233</span> * @see org.apache.zookeeper.Watcher<a name="line.233"></a>
-<span class="sourceLineNo">234</span> */<a name="line.234"></a>
-<span class="sourceLineNo">235</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS)<a name="line.235"></a>
-<span class="sourceLineNo">236</span>@SuppressWarnings("deprecation")<a name="line.236"></a>
-<span class="sourceLineNo">237</span>public class HMaster extends HRegionServer implements MasterServices {<a name="line.237"></a>
-<span class="sourceLineNo">238</span> private static Logger LOG = LoggerFactory.getLogger(HMaster.class.getName());<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> * Protection against zombie master. Started once Master accepts active responsibility and<a name="line.241"></a>
-<span class="sourceLineNo">242</span> * starts taking over responsibilities. Allows a finite time window before giving up ownership.<a name="line.242"></a>
-<span class="sourceLineNo">243</span> */<a name="line.243"></a>
-<span class="sourceLineNo">244</span> private static class InitializationMonitor extends HasThread {<a name="line.244"></a>
-<span class="sourceLineNo">245</span> /** The amount of time in milliseconds to sleep before checking initialization status. */<a name="line.245"></a>
-<span class="sourceLineNo">246</span> public static final String TIMEOUT_KEY = "hbase.master.initializationmonitor.timeout";<a name="line.246"></a>
-<span class="sourceLineNo">247</span> public static final long TIMEOUT_DEFAULT = TimeUnit.MILLISECONDS.convert(15, TimeUnit.MINUTES);<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> * When timeout expired and initialization has not complete, call {@link System#exit(int)} when<a name="line.250"></a>
-<span class="sourceLineNo">251</span> * true, do nothing otherwise.<a name="line.251"></a>
-<span class="sourceLineNo">252</span> */<a name="line.252"></a>
-<span class="sourceLineNo">253</span> public static final String HALT_KEY = "hbase.master.initializationmonitor.haltontimeout";<a name="line.253"></a>
-<span class="sourceLineNo">254</span> public static final boolean HALT_DEFAULT = false;<a name="line.254"></a>
-<span class="sourceLineNo">255</span><a name="line.255"></a>
-<span class="sourceLineNo">256</span> private final HMaster master;<a name="line.256"></a>
-<span class="sourceLineNo">257</span> private final long timeout;<a name="line.257"></a>
-<span class="sourceLineNo">258</span> private final boolean haltOnTimeout;<a name="line.258"></a>
-<span class="sourceLineNo">259</span><a name="line.259"></a>
-<span class="sourceLineNo">260</span> /** Creates a Thread that monitors the {@link #isInitialized()} state. */<a name="line.260"></a>
-<span class="sourceLineNo">261</span> InitializationMonitor(HMaster master) {<a name="line.261"></a>
-<span class="sourceLineNo">262</span> super("MasterInitializationMonitor");<a name="line.262"></a>
-<span class="sourceLineNo">263</span> this.master = master;<a name="line.263"></a>
-<span class="sourceLineNo">264</span> this.timeout = master.getConfiguration().getLong(TIMEOUT_KEY, TIMEOUT_DEFAULT);<a name="line.264"></a>
-<span class="sourceLineNo">265</span> this.haltOnTimeout = master.getConfiguration().getBoolean(HALT_KEY, HALT_DEFAULT);<a name="line.265"></a>
-<span class="sourceLineNo">266</span> this.setDaemon(true);<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> @Override<a name="line.269"></a>
-<span class="sourceLineNo">270</span> public void run() {<a name="line.270"></a>
-<span class="sourceLineNo">271</span> try {<a name="line.271"></a>
-<span class="sourceLineNo">272</span> while (!master.isStopped() && master.isActiveMaster()) {<a name="line.272"></a>
-<span class="sourceLineNo">273</span> Thread.sleep(timeout);<a name="line.273"></a>
-<span class="sourceLineNo">274</span> if (master.isInitialized()) {<a name="line.274"></a>
-<span class="sourceLineNo">275</span> LOG.debug("Initialization completed within allotted tolerance. Monitor exiting.");<a name="line.275"></a>
-<span class="sourceLineNo">276</span> } else {<a name="line.276"></a>
-<span class="sourceLineNo">277</span> LOG.error("Master failed to complete initialization after " + timeout + "ms. Please"<a name="line.277"></a>
-<span class="sourceLineNo">278</span> + " consider submitting a bug report including a thread dump of this process.");<a name="line.278"></a>
-<span class="sourceLineNo">279</span> if (haltOnTimeout) {<a name="line.279"></a>
-<span class="sourceLineNo">280</span> LOG.error("Zombie Master exiting. Thread dump to stdout");<a name="line.280"></a>
-<span class="sourceLineNo">281</span> Threads.printThreadInfo(System.out, "Zombie HMaster");<a name="line.281"></a>
-<span class="sourceLineNo">282</span> System.exit(-1);<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> } catch (InterruptedException ie) {<a name="line.286"></a>
-<span class="sourceLineNo">287</span> LOG.trace("InitMonitor thread interrupted. Existing.");<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> }<a name="line.290"></a>
-<span class="sourceLineNo">291</span><a name="line.291"></a>
-<span class="sourceLineNo">292</span> // MASTER is name of the webapp and the attribute name used stuffing this<a name="line.292"></a>
-<span class="sourceLineNo">293</span> //instance into web context.<a name="line.293"></a>
-<span class="sourceLineNo">294</span> public static final String MASTER = "master";<a name="line.294"></a>
-<span class="sourceLineNo">295</span><a name="line.295"></a>
-<span class="sourceLineNo">296</span> // Manager and zk listener for master election<a name="line.296"></a>
-<span class="sourceLineNo">297</span> private final ActiveMasterManager activeMasterManager;<a name="line.297"></a>
-<span class="sourceLineNo">298</span> // Region server tracker<a name="line.298"></a>
-<span class="sourceLineNo">299</span> private RegionServerTracker regionServerTracker;<a name="line.299"></a>
-<span class="sourceLineNo">300</span> // Draining region server tracker<a name="line.300"></a>
-<span class="sourceLineNo">301</span> private DrainingServerTracker drainingServerTracker;<a name="line.301"></a>
-<span class="sourceLineNo">302</span> // Tracker for load balancer state<a name="line.302"></a>
-<span class="sourceLineNo">303</span> LoadBalancerTracker loadBalancerTracker;<a name="line.303"></a>
-<span class="sourceLineNo">304</span> // Tracker for meta location, if any client ZK quorum specified<a name="line.304"></a>
-<span class="sourceLineNo">305</span> MetaLocationSyncer metaLocationSyncer;<a name="line.305"></a>
-<span class="sourceLineNo">306</span> // Tracker for active master location, if any client ZK quorum specified<a name="line.306"></a>
-<span class="sourceLineNo">307</span> MasterAddressSyncer masterAddressSyncer;<a name="line.307"></a>
-<span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span> // Tracker for split and merge state<a name="line.309"></a>
-<span class="sourceLineNo">310</span> private SplitOrMergeTracker splitOrMergeTracker;<a name="line.310"></a>
+<span class="sourceLineNo">043</span>import java.util.Optional;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import java.util.Set;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import java.util.concurrent.ExecutionException;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import java.util.concurrent.Future;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import java.util.concurrent.TimeUnit;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import java.util.concurrent.TimeoutException;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import java.util.concurrent.atomic.AtomicInteger;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import java.util.concurrent.atomic.AtomicReference;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import java.util.function.Function;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import java.util.regex.Pattern;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import java.util.stream.Collectors;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import javax.servlet.ServletException;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import javax.servlet.http.HttpServlet;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import javax.servlet.http.HttpServletRequest;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import javax.servlet.http.HttpServletResponse;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.commons.lang3.StringUtils;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.conf.Configuration;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.fs.Path;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.ClusterId;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.ClusterMetrics;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.ClusterMetrics.Option;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.ClusterMetricsBuilder;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.HBaseIOException;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.HBaseInterfaceAudience;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.HConstants;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.InvalidFamilyOperationException;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.MasterNotRunningException;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.MetaTableAccessor;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.PleaseHoldException;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.ReplicationPeerNotFoundException;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.ScheduledChore;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.ServerName;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.TableDescriptors;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.TableName;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.TableNotDisabledException;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.TableNotFoundException;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.UnknownRegionException;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.client.MasterSwitchType;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.client.RegionInfoBuilder;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.client.Result;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.client.TableState;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.client.VersionInfoUtil;<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.AssignmentManager;<a name="line.104"></a>
+<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.master.assignment.MergeTableRegionsProcedure;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.master.assignment.RegionStates;<a name="line.106"></a>
+<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.master.assignment.RegionStates.RegionStateNode;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.master.balancer.BalancerChore;<a name="line.108"></a>
+<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.master.balancer.BaseLoadBalancer;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.master.balancer.ClusterStatusChore;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.master.balancer.LoadBalancerFactory;<a name="line.111"></a>
+<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.master.cleaner.CleanerChore;<a name="line.112"></a>
+<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.master.cleaner.HFileCleaner;<a name="line.113"></a>
+<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.master.cleaner.LogCleaner;<a name="line.114"></a>
+<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.master.cleaner.ReplicationBarrierCleaner;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.master.locking.LockManager;<a name="line.116"></a>
+<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.master.normalizer.NormalizationPlan;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.master.normalizer.NormalizationPlan.PlanType;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizer;<a name="line.119"></a>
+<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizerChore;<a name="line.120"></a>
+<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizerFactory;<a name="line.121"></a>
+<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.master.procedure.CreateTableProcedure;<a name="line.122"></a>
+<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.master.procedure.DeleteNamespaceProcedure;<a name="line.123"></a>
+<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.master.procedure.DeleteTableProcedure;<a name="line.124"></a>
+<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.master.procedure.DisableTableProcedure;<a name="line.125"></a>
+<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.master.procedure.EnableTableProcedure;<a name="line.126"></a>
+<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.master.procedure.InitMetaProcedure;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureConstants;<a name="line.128"></a>
+<span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv;<a name="line.129"></a>
+<span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureScheduler;<a name="line.130"></a>
+<span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureUtil;<a name="line.131"></a>
+<span class="sourceLineNo">132</span>import org.apache.hadoop.hbase.master.procedure.ModifyTableProcedure;<a name="line.132"></a>
+<span class="sourceLineNo">133</span>import org.apache.hadoop.hbase.master.procedure.ProcedurePrepareLatch;<a name="line.133"></a>
+<span class="sourceLineNo">134</span>import org.apache.hadoop.hbase.master.procedure.ServerCrashProcedure;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>import org.apache.hadoop.hbase.master.procedure.TruncateTableProcedure;<a name="line.135"></a>
+<span class="sourceLineNo">136</span>import org.apache.hadoop.hbase.master.replication.AddPeerProcedure;<a name="line.136"></a>
+<span class="sourceLineNo">137</span>import org.apache.hadoop.hbase.master.replication.DisablePeerProcedure;<a name="line.137"></a>
+<span class="sourceLineNo">138</span>import org.apache.hadoop.hbase.master.replication.EnablePeerProcedure;<a name="line.138"></a>
+<span class="sourceLineNo">139</span>import org.apache.hadoop.hbase.master.replication.ModifyPeerProcedure;<a name="line.139"></a>
+<span class="sourceLineNo">140</span>import org.apache.hadoop.hbase.master.replication.RemovePeerProcedure;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.master.replication.ReplicationPeerManager;<a name="line.141"></a>
+<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.master.replication.UpdatePeerConfigProcedure;<a name="line.142"></a>
+<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.master.snapshot.SnapshotManager;<a name="line.143"></a>
+<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.master.zksyncer.MasterAddressSyncer;<a name="line.144"></a>
+<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.master.zksyncer.MetaLocationSyncer;<a name="line.145"></a>
+<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.mob.MobConstants;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.monitoring.MemoryBoundedLogMessageBuffer;<a name="line.147"></a>
+<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.148"></a>
+<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.procedure.MasterProcedureManagerHost;<a name="line.150"></a>
+<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.procedure.flush.MasterFlushTableProcedureManager;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.procedure2.LockedResource;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.procedure2.Procedure;<a name="line.153"></a>
+<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.procedure2.ProcedureEvent;<a name="line.154"></a>
+<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.procedure2.ProcedureExecutor;<a name="line.155"></a>
+<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureDispatcher.RemoteProcedure;<a name="line.156"></a>
+<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureException;<a name="line.157"></a>
+<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.procedure2.store.wal.WALProcedureStore;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.quotas.MasterQuotaManager;<a name="line.159"></a>
+<span class="sourceLineNo">160</span>import org.apache.hadoop.hbase.quotas.MasterSpaceQuotaObserver;<a name="line.160"></a>
+<span class="sourceLineNo">161</span>import org.apache.hadoop.hbase.quotas.QuotaObserverChore;<a name="line.161"></a>
+<span class="sourceLineNo">162</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.162"></a>
+<span class="sourceLineNo">163</span>import org.apache.hadoop.hbase.quotas.SnapshotQuotaObserverChore;<a name="line.163"></a>
+<span class="sourceLineNo">164</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifier;<a name="line.164"></a>
+<span class="sourceLineNo">165</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifierFactory;<a name="line.165"></a>
+<span class="sourceLineNo">166</span>import org.apache.hadoop.hbase.regionserver.DefaultStoreEngine;<a name="line.166"></a>
+<span class="sourceLineNo">167</span>import org.apache.hadoop.hbase.regionserver.HRegionServer;<a name="line.167"></a>
+<span class="sourceLineNo">168</span>import org.apache.hadoop.hbase.regionserver.HStore;<a name="line.168"></a>
+<span class="sourceLineNo">169</span>import org.apache.hadoop.hbase.regionserver.RSRpcServices;<a name="line.169"></a>
+<span class="sourceLineNo">170</span>import org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost;<a name="line.170"></a>
+<span class="sourceLineNo">171</span>import org.apache.hadoop.hbase.regionserver.RegionSplitPolicy;<a name="line.171"></a>
+<span class="sourceLineNo">172</span>import org.apache.hadoop.hbase.regionserver.compactions.ExploringCompactionPolicy;<a name="line.172"></a>
+<span class="sourceLineNo">173</span>import org.apache.hadoop.hbase.regionserver.compactions.FIFOCompactionPolicy;<a name="line.173"></a>
+<span class="sourceLineNo">174</span>import org.apache.hadoop.hbase.replication.ReplicationException;<a name="line.174"></a>
+<span class="sourceLineNo">175</span>import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;<a name="line.175"></a>
+<span class="sourceLineNo">176</span>import org.apache.hadoop.hbase.replication.ReplicationPeerDescription;<a name="line.176"></a>
+<span class="sourceLineNo">177</span>import org.apache.hadoop.hbase.replication.ReplicationUtils;<a name="line.177"></a>
+<span class="sourceLineNo">178</span>import org.apache.hadoop.hbase.replication.master.ReplicationHFileCleaner;<a name="line.178"></a>
+<span class="sourceLineNo">179</span>import org.apache.hadoop.hbase.replication.master.ReplicationLogCleaner;<a name="line.179"></a>
+<span class="sourceLineNo">180</span>import org.apache.hadoop.hbase.replication.master.ReplicationPeerConfigUpgrader;<a name="line.180"></a>
+<span class="sourceLineNo">181</span>import org.apache.hadoop.hbase.security.AccessDeniedException;<a name="line.181"></a>
+<span class="sourceLineNo">182</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.182"></a>
+<span class="sourceLineNo">183</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.183"></a>
+<span class="sourceLineNo">184</span>import org.apache.hadoop.hbase.util.Addressing;<a name="line.184"></a>
+<span class="sourceLineNo">185</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.185"></a>
+<span class="sourceLineNo">186</span>import org.apache.hadoop.hbase.util.CompressionTest;<a name="line.186"></a>
+<span class="sourceLineNo">187</span>import org.apache.hadoop.hbase.util.EncryptionTest;<a name="line.187"></a>
+<span class="sourceLineNo">188</span>import org.apache.hadoop.hbase.util.HFileArchiveUtil;<a name="line.188"></a>
+<span class="sourceLineNo">189</span>import org.apache.hadoop.hbase.util.HasThread;<a name="line.189"></a>
+<span class="sourceLineNo">190</span>import org.apache.hadoop.hbase.util.IdLock;<a name="line.190"></a>
+<span class="sourceLineNo">191</span>import org.apache.hadoop.hbase.util.ModifyRegionUtils;<a name="line.191"></a>
+<span class="sourceLineNo">192</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.192"></a>
+<span class="sourceLineNo">193</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.193"></a>
+<span class="sourceLineNo">194</span>import org.apache.hadoop.hbase.util.VersionInfo;<a name="line.194"></a>
+<span class="sourceLineNo">195</span>import org.apache.hadoop.hbase.zookeeper.LoadBalancerTracker;<a name="line.195"></a>
+<span class="sourceLineNo">196</span>import org.apache.hadoop.hbase.zookeeper.MasterAddressTracker;<a name="line.196"></a>
+<span class="sourceLineNo">197</span>import org.apache.hadoop.hbase.zookeeper.MasterMaintenanceModeTracker;<a name="line.197"></a>
+<span class="sourceLineNo">198</span>import org.apache.hadoop.hbase.zookeeper.RegionNormalizerTracker;<a name="line.198"></a>
+<span class="sourceLineNo">199</span>import org.apache.hadoop.hbase.zookeeper.ZKClusterId;<a name="line.199"></a>
+<span class="sourceLineNo">200</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.200"></a>
+<span class="sourceLineNo">201</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.201"></a>
+<span class="sourceLineNo">202</span>import org.apache.hadoop.hbase.zookeeper.ZNodePaths;<a name="line.202"></a>
+<span class="sourceLineNo">203</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.203"></a>
+<span class="sourceLineNo">204</span>import org.apache.zookeeper.KeeperException;<a name="line.204"></a>
+<span class="sourceLineNo">205</span>import org.eclipse.jetty.server.Server;<a name="line.205"></a>
+<span class="sourceLineNo">206</span>import org.eclipse.jetty.server.ServerConnector;<a name="line.206"></a>
+<span class="sourceLineNo">207</span>import org.eclipse.jetty.servlet.ServletHolder;<a name="line.207"></a>
+<span class="sourceLineNo">208</span>import org.eclipse.jetty.webapp.WebAppContext;<a name="line.208"></a>
+<span class="sourceLineNo">209</span>import org.slf4j.Logger;<a name="line.209"></a>
+<span class="sourceLineNo">210</span>import org.slf4j.LoggerFactory;<a name="line.210"></a>
+<span class="sourceLineNo">211</span><a name="line.211"></a>
+<span class="sourceLineNo">212</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.212"></a>
+<span class="sourceLineNo">213</span>import org.apache.hbase.thirdparty.com.google.common.collect.Lists;<a name="line.213"></a>
+<span class="sourceLineNo">214</span>import org.apache.hbase.thirdparty.com.google.common.collect.Maps;<a name="line.214"></a>
+<span class="sourceLineNo">215</span><a name="line.215"></a>
+<span class="sourceLineNo">216</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.216"></a>
+<span class="sourceLineNo">217</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoResponse.CompactionState;<a name="line.217"></a>
+<span class="sourceLineNo">218</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.Quotas;<a name="line.218"></a>
+<span class="sourceLineNo">219</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.SpaceViolationPolicy;<a name="line.219"></a>
+<span class="sourceLineNo">220</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;<a name="line.220"></a>
+<span class="sourceLineNo">221</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos;<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> * HMaster is the "master server" for HBase. An HBase cluster has one active<a name="line.224"></a>
+<span class="sourceLineNo">225</span> * master. If many masters are started, all compete. Whichever wins goes on to<a name="line.225"></a>
+<span class="sourceLineNo">226</span> * run the cluster. All others park themselves in their constructor until<a name="line.226"></a>
+<span class="sourceLineNo">227</span> * master or cluster shutdown or until the active master loses its lease in<a name="line.227"></a>
+<span class="sourceLineNo">228</span> * zookeeper. Thereafter, all running master jostle to take over master role.<a name="line.228"></a>
+<span class="sourceLineNo">229</span> *<a name="line.229"></a>
+<span class="sourceLineNo">230</span> * <p>The Master can be asked shutdown the cluster. See {@link #shutdown()}. In<a name="line.230"></a>
+<span class="sourceLineNo">231</span> * this case it will tell all regionservers to go down and then wait on them<a name="line.231"></a>
+<span class="sourceLineNo">232</span> * all reporting in that they are down. This master will then shut itself down.<a name="line.232"></a>
+<span class="sourceLineNo">233</span> *<a name="line.233"></a>
+<span class="sourceLineNo">234</span> * <p>You can also shutdown just this master. Call {@link #stopMaster()}.<a name="line.234"></a>
+<span class="sourceLineNo">235</span> *<a name="line.235"></a>
+<span class="sourceLineNo">236</span> * @see org.apache.zookeeper.Watcher<a name="line.236"></a>
+<span class="sourceLineNo">237</span> */<a name="line.237"></a>
+<span class="sourceLineNo">238</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS)<a name="line.238"></a>
+<span class="sourceLineNo">239</span>@SuppressWarnings("deprecation")<a name="line.239"></a>
+<span class="sourceLineNo">240</span>public class HMaster extends HRegionServer implements MasterServices {<a name="line.240"></a>
+<span class="sourceLineNo">241</span> private static Logger LOG = LoggerFactory.getLogger(HMaster.class);<a name="line.241"></a>
+<span class="sourceLineNo">242</span><a name="line.242"></a>
+<span class="sourceLineNo">243</span> /**<a name="line.243"></a>
+<span class="sourceLineNo">244</span> * Protection against zombie master. Started once Master accepts active responsibility and<a name="line.244"></a>
+<span class="sourceLineNo">245</span> * starts taking over responsibilities. Allows a finite time window before giving up ownership.<a name="line.245"></a>
+<span class="sourceLineNo">246</span> */<a name="line.246"></a>
+<span class="sourceLineNo">247</span> private static class InitializationMonitor extends HasThread {<a name="line.247"></a>
+<span class="sourceLineNo">248</span> /** The amount of time in milliseconds to sleep before checking initialization status. */<a name="line.248"></a>
+<span class="sourceLineNo">249</span> public static final String TIMEOUT_KEY = "hbase.master.initializationmonitor.timeout";<a name="line.249"></a>
+<span class="sourceLineNo">250</span> public static final long TIMEOUT_DEFAULT = TimeUnit.MILLISECONDS.convert(15, TimeUnit.MINUTES);<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> * When timeout expired and initialization has not complete, call {@link System#exit(int)} when<a name="line.253"></a>
+<span class="sourceLineNo">254</span> * true, do nothing otherwise.<a name="line.254"></a>
+<span class="sourceLineNo">255</span> */<a name="line.255"></a>
+<span class="sourceLineNo">256</span> public static final String HALT_KEY = "hbase.master.initializationmonitor.haltontimeout";<a name="line.256"></a>
+<span class="sourceLineNo">257</span> public static final boolean HALT_DEFAULT = false;<a name="line.257"></a>
+<span class="sourceLineNo">258</span><a name="line.258"></a>
+<span class="sourceLineNo">259</span> private final HMaster master;<a name="line.259"></a>
+<span class="sourceLineNo">260</span> private final long timeout;<a name="line.260"></a>
+<span class="sourceLineNo">261</span> private final boolean haltOnTimeout;<a name="line.261"></a>
+<span class="sourceLineNo">262</span><a name="line.262"></a>
+<span class="sourceLineNo">263</span> /** Creates a Thread that monitors the {@link #isInitialized()} state. */<a name="line.263"></a>
+<span class="sourceLineNo">264</span> InitializationMonitor(HMaster master) {<a name="line.264"></a>
+<span class="sourceLineNo">265</span> super("MasterInitializationMonitor");<a name="line.265"></a>
+<span class="sourceLineNo">266</span> this.master = master;<a name="line.266"></a>
+<span class="sourceLineNo">267</span> this.timeout = master.getConfiguration().getLong(TIMEOUT_KEY, TIMEOUT_DEFAULT);<a name="line.267"></a>
+<span class="sourceLineNo">268</span> this.haltOnTimeout = master.getConfiguration().getBoolean(HALT_KEY, HALT_DEFAULT);<a name="line.268"></a>
+<span class="sourceLineNo">269</span> this.setDaemon(true);<a name="line.269"></a>
+<span class="sourceLineNo">270</span> }<a name="line.270"></a>
+<span class="sourceLineNo">271</span><a name="line.271"></a>
+<span class="sourceLineNo">272</span> @Override<a name="line.272"></a>
+<span class="sourceLineNo">273</span> public void run() {<a name="line.273"></a>
+<span class="sourceLineNo">274</span> try {<a name="line.274"></a>
+<span class="sourceLineNo">275</span> while (!master.isStopped() && master.isActiveMaster()) {<a name="line.275"></a>
+<span class="sourceLineNo">276</span> Thread.sleep(timeout);<a name="line.276"></a>
+<span class="sourceLineNo">277</span> if (master.isInitialized()) {<a name="line.277"></a>
+<span class="sourceLineNo">278</span> LOG.debug("Initialization completed within allotted tolerance. Monitor exiting.");<a name="line.278"></a>
+<span class="sourceLineNo">279</span> } else {<a name="line.279"></a>
+<span class="sourceLineNo">280</span> LOG.error("Master failed to complete initialization after " + timeout + "ms. Please"<a name="line.280"></a>
+<span class="sourceLineNo">281</span> + " consider submitting a bug report including a thread dump of this process.");<a name="line.281"></a>
+<span class="sourceLineNo">282</span> if (haltOnTimeout) {<a name="line.282"></a>
+<span class="sourceLineNo">283</span> LOG.error("Zombie Master exiting. Thread dump to stdout");<a name="line.283"></a>
+<span class="sourceLineNo">284</span> Threads.printThreadInfo(System.out, "Zombie HMaster");<a name="line.284"></a>
+<span class="sourceLineNo">285</span> System.exit(-1);<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> } catch (InterruptedException ie) {<a name="line.289"></a>
+<span class="sourceLineNo">290</span> LOG.trace("InitMonitor thread interrupted. Existing.");<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> }<a name="line.293"></a>
+<span class="sourceLineNo">294</span><a name="line.294"></a>
+<span class="sourceLineNo">295</span> // MASTER is name of the webapp and the attribute name used stuffing this<a name="line.295"></a>
+<span class="sourceLineNo">296</span> //instance into web context.<a name="line.296"></a>
+<span class="sourceLineNo">297</span> public static final String MASTER = "master";<a name="line.297"></a>
+<span class="sourceLineNo">298</span><a name="line.298"></a>
+<span class="sourceLineNo">299</span> // Manager and zk listener for master election<a name="line.299"></a>
+<span class="sourceLineNo">300</span> private final ActiveMasterManager activeMasterManager;<a name="line.300"></a>
+<span class="sourceLineNo">301</span> // Region server tracker<a name="line.301"></a>
+<span class="sourceLineNo">302</span> private RegionServerTracker regionServerTracker;<a name="line.302"></a>
+<span class="sourceLineNo">303</span> // Draining region server tracker<a name="line.303"></a>
+<span class="sourceLineNo">304</span> private DrainingServerTracker drainingServerTracker;<a name="line.304"></a>
+<span class="sourceLineNo">305</span> // Tracker for load balancer state<a name="line.305"></a>
+<span class="sourceLineNo">306</span> LoadBalancerTracker loadBalancerTracker;<a name="line.306"></a>
+<span class="sourceLineNo">307</span> // Tracker for meta location, if any client ZK quorum specified<a name="line.307"></a>
+<span class="sourceLineNo">308</span> MetaLocationSyncer metaLocationSyncer;<a name="line.308"></a>
+<span class="sourceLineNo">309</span> // Tracker for active master location, if any client ZK quorum specified<a name="line.309"></a>
+<span class="sourceLineNo">310</span> MasterAddressSyncer masterAddressSyncer;<a name="line.310"></a>
<span class="sourceLineNo">311</span><a name="line.311"></a>
-<span class="sourceLineNo">312</span> // Tracker for region normalizer state<a name="line.312"></a>
-<span class="sourceLineNo">313</span> private RegionNormalizerTracker regionNormalizerTracker;<a name="line.313"></a>
+<span class="sourceLineNo">312</span> // Tracker for split and merge state<a name="line.312"></a>
+<span class="sourceLineNo">313</span> private SplitOrMergeTracker splitOrMergeTracker;<a name="line.313"></a>
<span class="sourceLineNo">314</span><a name="line.314"></a>
-<span class="sourceLineNo">315</span> //Tracker for master maintenance mode setting<a name="line.315"></a>
-<span class="sourceLineNo">316</span> private MasterMaintenanceModeTracker maintenanceModeTracker;<a name="line.316"></a>
+<span class="sourceLineNo">315</span> // Tracker for region normalizer state<a name="line.315"></a>
+<span class="sourceLineNo">316</span> private RegionNormalizerTracker regionNormalizerTracker;<a name="line.316"></a>
<span class="sourceLineNo">317</span><a name="line.317"></a>
-<span class="sourceLineNo">318</span> private ClusterSchemaService clusterSchemaService;<a name="line.318"></a>
-<span class="sourceLineNo">319</span><a name="line.319"></a>
-<span class="sourceLineNo">320</span> public static final String HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS =<a name="line.320"></a>
-<span class="sourceLineNo">321</span> "hbase.master.wait.on.service.seconds";<a name="line.321"></a>
-<span class="sourceLineNo">322</span> public static final int DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS = 5 * 60;<a name="line.322"></a>
-<span class="sourceLineNo">323</span><a name="line.323"></a>
-<span class="sourceLineNo">324</span> // Metrics for the HMaster<a name="line.324"></a>
-<span class="sourceLineNo">325</span> final MetricsMaster metricsMaster;<a name="line.325"></a>
-<span class="sourceLineNo">326</span> // file system manager for the master FS operations<a name="line.326"></a>
-<span class="sourceLineNo">327</span> private MasterFileSystem fileSystemManager;<a name="line.327"></a>
-<span class="sourceLineNo">328</span> private MasterWalManager walManager;<a name="line.328"></a>
-<span class="sourceLineNo">329</span><a name="line.329"></a>
-<span class="sourceLineNo">330</span> // server manager to deal with region server info<a name="line.330"></a>
-<span class="sourceLineNo">331</span> private volatile ServerManager serverManager;<a name="line.331"></a>
+<span class="sourceLineNo">318</span> //Tracker for master maintenance mode setting<a name="line.318"></a>
+<span class="sourceLineNo">319</span> private MasterMaintenanceModeTracker maintenanceModeTracker;<a name="line.319"></a>
+<span class="sourceLineNo">320</span><a name="line.320"></a>
+<span class="sourceLineNo">321</span> private ClusterSchemaService clusterSchemaService;<a name="line.321"></a>
+<span class="sourceLineNo">322</span><a name="line.322"></a>
+<span class="sourceLineNo">323</span> public static final String HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS =<a name="line.323"></a>
+<span class="sourceLineNo">324</span> "hbase.master.wait.on.service.seconds";<a name="line.324"></a>
+<span class="sourceLineNo">325</span> public static final int DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS = 5 * 60;<a name="line.325"></a>
+<span class="sourceLineNo">326</span><a name="line.326"></a>
+<span class="sourceLineNo">327</span> // Metrics for the HMaster<a name="line.327"></a>
+<span class="sourceLineNo">328</span> final MetricsMaster metricsMaster;<a name="line.328"></a>
+<span class="sourceLineNo">329</span> // file system manager for the master FS operations<a name="line.329"></a>
+<span class="sourceLineNo">330</span> private MasterFileSystem fileSystemManager;<a name="line.330"></a>
+<span class="sourceLineNo">331</span> private MasterWalManager walManager;<a name="line.331"></a>
<span class="sourceLineNo">332</span><a name="line.332"></a>
-<span class="sourceLineNo">333</span> // manager of assignment nodes in zookeeper<a name="line.333"></a>
-<span class="sourceLineNo">334</span> private AssignmentManager assignmentManager;<a name="line.334"></a>
+<span class="sourceLineNo">333</span> // server manager to deal with region server info<a name="line.333"></a>
+<span class="sourceLineNo">334</span> private volatile ServerManager serverManager;<a name="line.334"></a>
<span class="sourceLineNo">335</span><a name="line.335"></a>
-<span class="sourceLineNo">336</span> // manager of replication<a name="line.336"></a>
-<span class="sourceLineNo">337</span> private ReplicationPeerManager replicationPeerManager;<a name="line.337"></a>
+<span class="sourceLineNo">336</span> // manager of assignment nodes in zookeeper<a name="line.336"></a>
+<span class="sourceLineNo">337</span> private AssignmentManager assignmentManager;<a name="line.337"></a>
<span class="sourceLineNo">338</span><a name="line.338"></a>
-<span class="sourceLineNo">339</span> // buffer for "fatal error" notices from region servers<a name="line.339"></a>
-<span class="sourceLineNo">340</span> // in the cluster. This is only used for assisting<a name="line.340"></a>
-<span class="sourceLineNo">341</span> // operations/debugging.<a name="line.341"></a>
-<span class="sourceLineNo">342</span> MemoryBoundedLogMessageBuffer rsFatals;<a name="line.342"></a>
-<span class="sourceLineNo">343</span><a name="line.343"></a>
-<span class="sourceLineNo">344</span> // flag set after we become the active master (used for testing)<a name="line.344"></a>
-<span class="sourceLineNo">345</span> private volatile boolean activeMaster = false;<a name="line.345"></a>
+<span class="sourceLineNo">339</span> // manager of replication<a name="line.339"></a>
+<span class="sourceLineNo">340</span> private ReplicationPeerManager replicationPeerManager;<a name="line.340"></a>
+<span class="sourceLineNo">341</span><a name="line.341"></a>
+<span class="sourceLineNo">342</span> // buffer for "fatal error" notices from region servers<a name="line.342"></a>
+<span class="sourceLineNo">343</span> // in the cluster. This is only used for assisting<a name="line.343"></a>
+<span class="sourceLineNo">344</span> // operations/debugging.<a name="line.344"></a>
+<span class="sourceLineNo">345</span> MemoryBoundedLogMessageBuffer rsFatals;<a name="line.345"></a>
<span class="sourceLineNo">346</span><a name="line.346"></a>
-<span class="sourceLineNo">347</span> // flag set after we complete initialization once active<a name="line.347"></a>
-<span class="sourceLineNo">348</span> private final ProcedureEvent<?> initialized = new ProcedureEvent<>("master initialized");<a name="line.348"></a>
+<span class="sourceLineNo">347</span> // flag set after we become the active master (used for testing)<a name="line.347"></a>
+<span class="sourceLineNo">348</span> private volatile boolean activeMaster = false;<a name="line.348"></a>
<span class="sourceLineNo">349</span><a name="line.349"></a>
-<span class="sourceLineNo">350</span> // flag set after master services are started,<a name="line.350"></a>
-<span class="sourceLineNo">351</span> // initialization may have not completed yet.<a name="line.351"></a>
-<span class="sourceLineNo">352</span> volatile boolean serviceStarted = false;<a name="line.352"></a>
-<span class="sourceLineNo">353</span><a name="line.353"></a>
-<span class="sourceLineNo">354</span> // flag set after we complete assignMeta.<a name="line.354"></a>
-<span class="sourceLineNo">355</span> private final ProcedureEvent<?> serverCrashProcessingEnabled =<a name="line.355"></a>
-<span class="sourceLineNo">356</span> new ProcedureEvent<>("server crash processing");<a name="line.356"></a>
-<span class="sourceLineNo">357</span><a name="line.357"></a>
-<span class="sourceLineNo">358</span> // Maximum time we should run balancer for<a name="line.358"></a>
-<span class="sourceLineNo">359</span> private final int maxBlancingTime;<a name="line.359"></a>
-<span class="sourceLineNo">360</span> // Maximum percent of regions in transition when balancing<a name="line.360"></a>
-<span class="sourceLineNo">361</span> private final double maxRitPercent;<a name="line.361"></a>
-<span class="sourceLineNo">362</span><a name="line.362"></a>
-<span class="sourceLineNo">363</span> private final LockManager lockManager = new LockManager(this);<a name="line.363"></a>
-<span class="sourceLineNo">364</span><a name="line.364"></a>
-<span class="sourceLineNo">365</span> private LoadBalancer balancer;<a name="line.365"></a>
-<span class="sourceLineNo">366</span> private RegionNormalizer normalizer;<a name="line.366"></a>
-<span class="sourceLineNo">367</span> private BalancerChore balancerChore;<a name="line.367"></a>
-<span class="sourceLineNo">368</span> private RegionNormalizerChore normalizerChore;<a name="line.368"></a>
-<span class="sourceLineNo">369</span> private ClusterStatusChore clusterStatusChore;<a name="line.369"></a>
-<span class="sourceLineNo">370</span> private ClusterStatusPublisher clusterStatusPublisherChore = null;<a name="line.370"></a>
-<span class="sourceLineNo">371</span><a name="line.371"></a>
-<span class="sourceLineNo">372</span> CatalogJanitor catalogJanitorChore;<a name="line.372"></a>
-<span class="sourceLineNo">373</span> private LogCleaner logCleaner;<a name="line.373"></a>
-<span class="sourceLineNo">374</span> private HFileCleaner hfileCleaner;<a name="line.374"></a>
-<span class="sourceLineNo">375</span> private ReplicationBarrierCleaner replicationBarrierCleaner;<a name="line.375"></a>
-<span class="sourceLineNo">376</span> private ExpiredMobFileCleanerChore expiredMobFileCleanerChore;<a name="line.376"></a>
-<span class="sourceLineNo">377</span> private MobCompactionChore mobCompactChore;<a name="line.377"></a>
-<span class="sourceLineNo">378</span> private MasterMobCompactionThread mobCompactThread;<a name="line.378"></a>
-<span class="sourceLineNo">379</span> // used to synchronize the mobCompactionStates<a name="line.379"></a>
-<span class="sourceLineNo">380</span> private final IdLock mobCompactionLock = new IdLock();<a name="line.380"></a>
-<span class="sourceLineNo">381</span> // save the information of mob compactions in tables.<a name="line.381"></a>
-<span class="sourceLineNo">382</span> // the key is table name, the value is the number of compactions in that table.<a name="line.382"></a>
-<span class="sourceLineNo">383</span> private Map<TableName, AtomicInteger> mobCompactionStates = Maps.newConcurrentMap();<a name="line.383"></a>
-<span class="sourceLineNo">384</span><a name="line.384"></a>
-<span class="sourceLineNo">385</span> MasterCoprocessorHost cpHost;<a name="line.385"></a>
-<span class="sourceLineNo">386</span><a name="line.386"></a>
-<span class="sourceLineNo">387</span> private final boolean preLoadTableDescriptors;<a name="line.387"></a>
-<span class="sourceLineNo">388</span><a name="line.388"></a>
-<span class="sourceLineNo">389</span> // Time stamps for when a hmaster became active<a name="line.389"></a>
-<span class="sourceLineNo">390</span> private long masterActiveTime;<a name="line.390"></a>
-<span class="sourceLineNo">391</span><a name="line.391"></a>
-<span class="sourceLineNo">392</span> // Time stamp for when HMaster finishes becoming Active Master<a name="line.392"></a>
-<span class="sourceLineNo">393</span> private long masterFinishedInitializationTime;<a name="line.393"></a>
-<span class="sourceLineNo">394</span><a name="line.394"></a>
-<span class="sourceLineNo">395</span> //should we check the compression codec type at master side, default true, HBASE-6370<a name="line.395"></a>
-<span class="sourceLineNo">396</span> private final boolean masterCheckCompression;<a name="line.396"></a>
-<span class="sourceLineNo">397</span><a name="line.397"></a>
-<span class="sourceLineNo">398</span> //should we check encryption settings at master side, default true<a name="line.398"></a>
-<span class="sourceLineNo">399</span> private final boolean masterCheckEncryption;<a name="line.399"></a>
-<span class="sourceLineNo">400</span><a name="line.400"></a>
-<span class="sourceLineNo">401</span> Map<String, Service> coprocessorServiceHandlers = Maps.newHashMap();<a name="line.401"></a>
-<span class="sourceLineNo">402</span><a name="line.402"></a>
-<span class="sourceLineNo">403</span> // monitor for snapshot of hbase tables<a name="line.403"></a>
-<span class="sourceLineNo">404</span> SnapshotManager snapshotManager;<a name="line.404"></a>
-<span class="sourceLineNo">405</span> // monitor for distributed procedures<a name="line.405"></a>
-<span class="sourceLineNo">406</span> private MasterProcedureManagerHost mpmHost;<a name="line.406"></a>
-<span class="sourceLineNo">407</span><a name="line.407"></a>
-<span class="sourceLineNo">408</span> // it is assigned after 'initialized' guard set to true, so should be volatile<a name="line.408"></a>
-<span class="sourceLineNo">409</span> private volatile MasterQuotaManager quotaManager;<a name="line.409"></a>
-<span class="sourceLineNo">410</span> private SpaceQuotaSnapshotNotifier spaceQuotaSnapshotNotifier;<a name="line.410"></a>
-<span class="sourceLineNo">411</span> private QuotaObserverChore quotaObserverChore;<a name="line.411"></a>
-<span class="sourceLineNo">412</span> private SnapshotQuotaObserverChore snapshotQuotaChore;<a name="line.412"></a>
-<span class="sourceLineNo">413</span><a name="line.413"></a>
-<span class="sourceLineNo">414</span> private ProcedureExecutor<MasterProcedureEnv> procedureExecutor;<a name="line.414"></a>
-<span class="sourceLineNo">415</span> private WALProcedureStore procedureStore;<a name="line.415"></a>
-<span class="sourceLineNo">416</span><a name="line.416"></a>
-<span class="sourceLineNo">417</span> // handle table states<a name="line.417"></a>
-<span class="sourceLineNo">418</span> private TableStateManager tableStateManager;<a name="line.418"></a>
-<span class="sourceLineNo">419</span><a name="line.419"></a>
-<span class="sourceLineNo">420</span> private long splitPlanCount;<a name="line.420"></a>
-<span class="sourceLineNo">421</span> private long mergePlanCount;<a name="line.421"></a>
-<span class="sourceLineNo">422</span><a name="line.422"></a>
-<span class="sourceLineNo">423</span> /* Handle favored nodes information */<a name="line.423"></a>
-<span class="sourceLineNo">424</span> private FavoredNodesManager favoredNodesManager;<a name="line.424"></a>
-<span class="sourceLineNo">425</span><a name="line.425"></a>
-<span class="sourceLineNo">426</span> /** jetty server for master to redirect requests to regionserver infoServer */<a name="line.426"></a>
-<span class="sourceLineNo">427</span> private Server masterJettyServer;<a name="line.427"></a>
-<span class="sourceLineNo">428</span><a name="line.428"></a>
-<span class="sourceLineNo">429</span> public static class RedirectServlet extends HttpServlet {<a name="line.429"></a>
-<span class="sourceLineNo">430</span> private static final long serialVersionUID = 2894774810058302473L;<a name="line.430"></a>
-<span class="sourceLineNo">431</span> private final int regionServerInfoPort;<a name="line.431"></a>
-<span class="sourceLineNo">432</span> private final String regionServerHostname;<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> * @param infoServer that we're trying to send all requests to<a name="line.435"></a>
-<span class="sourceLineNo">436</span> * @param hostname may be null. if given, will be used for redirects instead of host from client.<a name="line.436"></a>
-<span class="sourceLineNo">437</span> */<a name="line.437"></a>
-<span class="sourceLineNo">438</span> public RedirectServlet(InfoServer infoServer, String hostname) {<a name="line.438"></a>
-<span class="sourceLineNo">439</span> regionServerInfoPort = infoServer.getPort();<a name="line.439"></a>
-<span class="sourceLineNo">440</span> regionServerHostname = hostname;<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> @Override<a name="line.443"></a>
-<span class="sourceLineNo">444</span> public void doGet(HttpServletRequest request,<a name="line.444"></a>
-<span class="sourceLineNo">445</span> HttpServletResponse response) throws ServletException, IOException {<a name="line.445"></a>
-<span class="sourceLineNo">446</span> String redirectHost = regionServerHostname;<a name="line.446"></a>
-<span class="sourceLineNo">447</span> if(redirectHost == null) {<a name="line.447"></a>
-<span class="sourceLineNo">448</span> redirectHost = request.getServerName();<a name="line.448"></a>
-<span class="sourceLineNo">449</span> if(!Addressing.isLocalAddress(InetAddress.getByName(redirectHost))) {<a name="line.449"></a>
-<span class="sourceLineNo">450</span> LOG.warn("Couldn't resolve '" + redirectHost + "' as an address local to this node and '" +<a name="line.450"></a>
-<span class="sourceLineNo">451</span> MASTER_HOSTNAME_KEY + "' is not set; client will get a HTTP 400 response. If " +<a name="line.451"></a>
-<span class="sourceLineNo">452</span> "your HBase deployment relies on client accessible names that the region server process " +<a name="line.452"></a>
-<span class="sourceLineNo">453</span> "can't resolve locally, then you should set the previously mentioned configuration variable " +<a name="line.453"></a>
-<span class="sourceLineNo">454</span> "to an appropriate hostname.");<a name="line.454"></a>
-<span class="sourceLineNo">455</span> // no sending client provided input back to the client, so the goal host is just in the logs.<a name="line.455"></a>
-<span class="sourceLineNo">456</span> response.sendError(400, "Request was to a host that I can't resolve for any of the network interfaces on " +<a name="line.456"></a>
-<span class="sourceLineNo">457</span> "this node. If this is due to an intermediary such as an HTTP load balancer or other proxy, your HBase " +<a name="line.457"></a>
-<span class="sourceLineNo">458</span> "administrator can set '" + MASTER_HOSTNAME_KEY + "' to point to the correct hostname.");<a name="line.458"></a>
-<span class="sourceLineNo">459</span> return;<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> // TODO this scheme should come from looking at the scheme registered in the infoserver's http server for the<a name="line.462"></a>
-<span class="sourceLineNo">463</span> // host and port we're using, but it's buried way too deep to do that ATM.<a name="line.463"></a>
-<span class="sourceLineNo">464</span> String redirectUrl = request.getScheme() + "://"<a name="line.464"></a>
-<span class="sourceLineNo">465</span> + redirectHost + ":" + regionServerInfoPort<a name="line.465"></a>
-<span class="sourceLineNo">466</span> + request.getRequestURI();<a name="line.466"></a>
-<span class="sourceLineNo">467</span> response.sendRedirect(redirectUrl);<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><a name="line.470"></a>
-<span class="sourceLineNo">471</span> /**<a name="line.471"></a>
-<span class="sourceLineNo">472</span> * Initializes the HMaster. The steps are as follows:<a name="line.472"></a>
-<span class="sourceLineNo">473</span> * <p><a name="line.473"></a>
-<span class="sourceLineNo">474</span> * <ol><a name="line.474"></a>
-<span class="sourceLineNo">475</span> * <li>Initialize the local HRegionServer<a name="line.475"></a>
-<span class="sourceLineNo">476</span> * <li>Start the ActiveMasterManager.<a name="line.476"></a>
-<span class="sourceLineNo">477</span> * </ol><a name="line.477"></a>
-<span class="sourceLineNo">478</span> * <p><a name="line.478"></a>
-<span class="sourceLineNo">479</span> * Remaining steps of initialization occur in<a name="line.479"></a>
-<span class="sourceLineNo">480</span> * #finishActiveMasterInitialization(MonitoredTask) after<a name="line.480"></a>
-<span class="sourceLineNo">481</span> * the master becomes the active one.<a name="line.481"></a>
-<span class="sourceLineNo">482</span> */<a name="line.482"></a>
-<span class="sourceLineNo">483</span> public HMaster(final Configuration conf)<a name="line.483"></a>
-<span class="sourceLineNo">484</span> throws IOException, KeeperException {<a name="line.484"></a>
-<span class="sourceLineNo">485</span> super(conf);<a name="line.485"></a>
-<span class="sourceLineNo">486</span> TraceUtil.initTracer(conf);<a name="line.486"></a>
-<span class="sourceLineNo">487</span> try {<a name="line.487"></a>
-<span class="sourceLineNo">488</span> this.rsFatals = new MemoryBoundedLogMessageBuffer(<a name="line.488"></a>
-<span class="sourceLineNo">489</span> conf.getLong("hbase.master.buffer.for.rs.fatals", 1 * 1024 * 1024));<a name="line.489"></a>
-<span class="sourceLineNo">490</span> LOG.info("hbase.rootdir=" + getRootDir() +<a name="line.490"></a>
-<span class="sourceLineNo">491</span> ", hbase.cluster.distributed=" + this.conf.getBoolean(HConstants.CLUSTER_DISTRIBUTED, false));<a name="line.491"></a>
-<span class="sourceLineNo">492</span><a name="line.492"></a>
-<span class="sourceLineNo">493</span> // Disable usage of meta replicas in the master<a name="line.493"></a>
-<span class="sourceLineNo">494</span> this.conf.setBoolean(HConstants.USE_META_REPLICAS, false);<a name="line.494"></a>
-<span class="sourceLineNo">495</span><a name="line.495"></a>
-<span class="sourceLineNo">496</span> decorateMasterConfiguration(this.conf);<a name="line.496"></a>
-<span class="sourceLineNo">497</span><a name="line.497"></a>
-<span class="sourceLineNo">498</span> // Hack! Maps DFSClient => Master for logs. HDFS made this<a name="line.498"></a>
-<span class="sourceLineNo">499</span> // config param for task trackers, but we can piggyback off of it.<a name="line.499"></a>
-<span class="sourceLineNo">500</span> if (this.conf.get("mapreduce.task.attempt.id") == null) {<a name="line.500"></a>
-<span class="sourceLineNo">501</span> this.conf.set("mapreduce.task.attempt.id", "hb_m_" + this.serverName.toString());<a name="line.501"></a>
-<span class="sourceLineNo">502</span> }<a name="line.502"></a>
-<span class="sourceLineNo">503</span><a name="line.503"></a>
-<span class="sourceLineNo">504</span> // should we check the compression codec type at master side, default true, HBASE-6370<a name="line.504"></a>
-<span class="sourceLineNo">505</span> this.masterCheckCompression = conf.getBoolean("hbase.master.check.compression", true);<a name="line.505"></a>
-<span class="sourceLineNo">506</span><a name="line.506"></a>
-<span class="sourceLineNo">507</span> // should we check encryption settings at master side, default true<a name="line.507"></a>
-<span class="sourceLineNo">508</span> this.masterCheckEncryption = conf.getBoolean("hbase.master.check.encryption", true);<a name="line.508"></a>
-<span class="sourceLineNo">509</span><a name="line.509"></a>
-<span class="sourceLineNo">510</span> this.metricsMaster = new MetricsMaster(new MetricsMasterWrapperImpl(this));<a name="line.510"></a>
-<span class="sourceLineNo">511</span><a name="line.511"></a>
-<span class="sourceLineNo">512</span> // preload table descriptor at startup<a name="line.512"></a>
-<span class="sourceLineNo">513</span> this.preLoadTableDescriptors = conf.getBoolean("hbase.master.preload.tabledescriptors", true);<a name="line.513"></a>
-<span class="sourceLineNo">514</span><a name="line.514"></a>
-<span class="sourceLineNo">515</span> this.maxBlancingTime = getMaxBalancingTime();<a name="line.515"></a>
-<span class="sourceLineNo">516</span> this.maxRitPercent = conf.getDouble(HConstants.HBASE_MASTER_BALANCER_MAX_RIT_PERCENT,<a name="line.516"></a>
-<span class="sourceLineNo">517</span> HConstants.DEFAULT_HBASE_MASTER_BALANCER_MAX_RIT_PERCENT);<a name="line.517"></a>
-<span class="sourceLineNo">518</span><a name="line.518"></a>
-<span class="sourceLineNo">519</span> // Do we publish the status?<a name="line.519"></a>
-<span class="sourceLineNo">520</span><a name="line.520"></a>
-<span class="sourceLineNo">521</span> boolean shouldPublish = conf.getBoolean(HConstants.STATUS_PUBLISHED,<a name="line.521"></a>
-<span class="sourceLineNo">522</span> HConstants.STATUS_PUBLISHED_DEFAULT);<a name="line.522"></a>
-<span class="sourceLineNo">523</span> Class<? extends ClusterStatusPublisher.Publisher> publisherClass =<a name="line.523"></a>
-<span class="sourceLineNo">524</span> conf.getClass(ClusterStatusPublisher.STATUS_PUBLISHER_CLASS,<a name="line.524"></a>
-<span class="sourceLineNo">525</span> ClusterStatusPublisher.DEFAULT_STATUS_PUBLISHER_CLASS,<a name="line.525"></a>
-<span class="sourceLineNo">526</span> ClusterStatusPublisher.Publisher.class);<a name="line.526"></a>
-<span class="sourceLineNo">527</span><a name="line.527"></a>
-<span class="sourceLineNo">528</span> if (shouldPublish) {<a name="line.528"></a>
-<span class="sourceLineNo">529</span> if (publisherClass == null) {<a name="line.529"></a>
-<span class="sourceLineNo">530</span> LOG.warn(HConstants.STATUS_PUBLISHED + " is true, but " +<a name="line.530"></a>
-<span class="sourceLineNo">531</span> ClusterStatusPublisher.DEFAULT_STATUS_PUBLISHER_CLASS +<a name="line.531"></a>
-<span class="sourceLineNo">532</span> " is not set - not publishing status");<a name="line.532"></a>
-<span class="sourceLineNo">533</span> } else {<a name="line.533"></a>
-<span class="sourceLineNo">534</span> clusterStatusPublisherChore = new ClusterStatusPublisher(this, conf, publisherClass);<a name="line.534"></a>
-<span class="sourceLineNo">535</span> getC
<TRUNCATED>
[15/51] [partial] hbase-site git commit: Published site at
9101fc246f86445006bfbcdfda5cc495016dc280.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/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 0b11000..02beab3 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 = "78da0e366970cf9bab6add9ba9fd74ca37c75be3";<a name="line.11"></a>
+<span class="sourceLineNo">011</span> public static final String revision = "9101fc246f86445006bfbcdfda5cc495016dc280";<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 = "Tue Jun 19 00:28:02 UTC 2018";<a name="line.13"></a>
+<span class="sourceLineNo">013</span> public static final String date = "Wed Jun 20 04:15:39 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 = "72ef87fb3fa82a7c510def4b3609400b";<a name="line.15"></a>
+<span class="sourceLineNo">015</span> public static final String srcChecksum = "bc4bb89ad408bf39c503a300c7481e65";<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/65565d77/devapidocs/src-html/org/apache/hadoop/hbase/master/CatalogJanitor.SplitParentFirstComparator.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/CatalogJanitor.SplitParentFirstComparator.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/CatalogJanitor.SplitParentFirstComparator.html
index 4229646..1814633 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/CatalogJanitor.SplitParentFirstComparator.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/CatalogJanitor.SplitParentFirstComparator.html
@@ -119,358 +119,355 @@
<span class="sourceLineNo">111</span> protected void chore() {<a name="line.111"></a>
<span class="sourceLineNo">112</span> try {<a name="line.112"></a>
<span class="sourceLineNo">113</span> AssignmentManager am = this.services.getAssignmentManager();<a name="line.113"></a>
-<span class="sourceLineNo">114</span> if (this.enabled.get()<a name="line.114"></a>
-<span class="sourceLineNo">115</span> && !this.services.isInMaintenanceMode()<a name="line.115"></a>
-<span class="sourceLineNo">116</span> && am != null<a name="line.116"></a>
-<span class="sourceLineNo">117</span> && am.isFailoverCleanupDone()<a name="line.117"></a>
-<span class="sourceLineNo">118</span> && !am.hasRegionsInTransition()) {<a name="line.118"></a>
-<span class="sourceLineNo">119</span> scan();<a name="line.119"></a>
-<span class="sourceLineNo">120</span> } else {<a name="line.120"></a>
-<span class="sourceLineNo">121</span> LOG.warn("CatalogJanitor is disabled! Enabled=" + this.enabled.get() +<a name="line.121"></a>
-<span class="sourceLineNo">122</span> ", maintenanceMode=" + this.services.isInMaintenanceMode() +<a name="line.122"></a>
-<span class="sourceLineNo">123</span> ", am=" + am + ", failoverCleanupDone=" + (am != null && am.isFailoverCleanupDone()) +<a name="line.123"></a>
-<span class="sourceLineNo">124</span> ", hasRIT=" + (am != null && am.hasRegionsInTransition()));<a name="line.124"></a>
-<span class="sourceLineNo">125</span> }<a name="line.125"></a>
-<span class="sourceLineNo">126</span> } catch (IOException e) {<a name="line.126"></a>
-<span class="sourceLineNo">127</span> LOG.warn("Failed scan of catalog table", 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> /**<a name="line.131"></a>
-<span class="sourceLineNo">132</span> * Scans hbase:meta and returns a number of scanned rows, and a map of merged<a name="line.132"></a>
-<span class="sourceLineNo">133</span> * regions, and an ordered map of split parents.<a name="line.133"></a>
-<span class="sourceLineNo">134</span> * @return triple of scanned rows, map of merged regions and map of split<a name="line.134"></a>
-<span class="sourceLineNo">135</span> * parent regioninfos<a name="line.135"></a>
-<span class="sourceLineNo">136</span> * @throws IOException<a name="line.136"></a>
-<span class="sourceLineNo">137</span> */<a name="line.137"></a>
-<span class="sourceLineNo">138</span> Triple<Integer, Map<RegionInfo, Result>, Map<RegionInfo, Result>><a name="line.138"></a>
-<span class="sourceLineNo">139</span> getMergedRegionsAndSplitParents() throws IOException {<a name="line.139"></a>
-<span class="sourceLineNo">140</span> return getMergedRegionsAndSplitParents(null);<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> /**<a name="line.143"></a>
-<span class="sourceLineNo">144</span> * Scans hbase:meta and returns a number of scanned rows, and a map of merged<a name="line.144"></a>
-<span class="sourceLineNo">145</span> * regions, and an ordered map of split parents. if the given table name is<a name="line.145"></a>
-<span class="sourceLineNo">146</span> * null, return merged regions and split parents of all tables, else only the<a name="line.146"></a>
-<span class="sourceLineNo">147</span> * specified table<a name="line.147"></a>
-<span class="sourceLineNo">148</span> * @param tableName null represents all tables<a name="line.148"></a>
-<span class="sourceLineNo">149</span> * @return triple of scanned rows, and map of merged regions, and map of split<a name="line.149"></a>
-<span class="sourceLineNo">150</span> * parent regioninfos<a name="line.150"></a>
-<span class="sourceLineNo">151</span> * @throws IOException<a name="line.151"></a>
-<span class="sourceLineNo">152</span> */<a name="line.152"></a>
-<span class="sourceLineNo">153</span> Triple<Integer, Map<RegionInfo, Result>, Map<RegionInfo, Result>><a name="line.153"></a>
-<span class="sourceLineNo">154</span> getMergedRegionsAndSplitParents(final TableName tableName) throws IOException {<a name="line.154"></a>
-<span class="sourceLineNo">155</span> final boolean isTableSpecified = (tableName != null);<a name="line.155"></a>
-<span class="sourceLineNo">156</span> // TODO: Only works with single hbase:meta region currently. Fix.<a name="line.156"></a>
-<span class="sourceLineNo">157</span> final AtomicInteger count = new AtomicInteger(0);<a name="line.157"></a>
-<span class="sourceLineNo">158</span> // Keep Map of found split parents. There are candidates for cleanup.<a name="line.158"></a>
-<span class="sourceLineNo">159</span> // Use a comparator that has split parents come before its daughters.<a name="line.159"></a>
-<span class="sourceLineNo">160</span> final Map<RegionInfo, Result> splitParents = new TreeMap<>(new SplitParentFirstComparator());<a name="line.160"></a>
-<span class="sourceLineNo">161</span> final Map<RegionInfo, Result> mergedRegions = new TreeMap<>(RegionInfo.COMPARATOR);<a name="line.161"></a>
-<span class="sourceLineNo">162</span> // This visitor collects split parents and counts rows in the hbase:meta table<a name="line.162"></a>
-<span class="sourceLineNo">163</span><a name="line.163"></a>
-<span class="sourceLineNo">164</span> MetaTableAccessor.Visitor visitor = new MetaTableAccessor.Visitor() {<a name="line.164"></a>
-<span class="sourceLineNo">165</span> @Override<a name="line.165"></a>
-<span class="sourceLineNo">166</span> public boolean visit(Result r) throws IOException {<a name="line.166"></a>
-<span class="sourceLineNo">167</span> if (r == null || r.isEmpty()) return true;<a name="line.167"></a>
-<span class="sourceLineNo">168</span> count.incrementAndGet();<a name="line.168"></a>
-<span class="sourceLineNo">169</span> RegionInfo info = MetaTableAccessor.getRegionInfo(r);<a name="line.169"></a>
-<span class="sourceLineNo">170</span> if (info == null) return true; // Keep scanning<a name="line.170"></a>
-<span class="sourceLineNo">171</span> if (isTableSpecified<a name="line.171"></a>
-<span class="sourceLineNo">172</span> && info.getTable().compareTo(tableName) > 0) {<a name="line.172"></a>
-<span class="sourceLineNo">173</span> // Another table, stop scanning<a name="line.173"></a>
-<span class="sourceLineNo">174</span> return false;<a name="line.174"></a>
-<span class="sourceLineNo">175</span> }<a name="line.175"></a>
-<span class="sourceLineNo">176</span> if (LOG.isTraceEnabled()) LOG.trace("" + info + " IS-SPLIT_PARENT=" + info.isSplitParent());<a name="line.176"></a>
-<span class="sourceLineNo">177</span> if (info.isSplitParent()) splitParents.put(info, r);<a name="line.177"></a>
-<span class="sourceLineNo">178</span> if (r.getValue(HConstants.CATALOG_FAMILY, HConstants.MERGEA_QUALIFIER) != null) {<a name="line.178"></a>
-<span class="sourceLineNo">179</span> mergedRegions.put(info, r);<a name="line.179"></a>
-<span class="sourceLineNo">180</span> }<a name="line.180"></a>
-<span class="sourceLineNo">181</span> // Returning true means "keep scanning"<a name="line.181"></a>
-<span class="sourceLineNo">182</span> return true;<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> // Run full scan of hbase:meta catalog table passing in our custom visitor with<a name="line.186"></a>
-<span class="sourceLineNo">187</span> // the start row<a name="line.187"></a>
-<span class="sourceLineNo">188</span> MetaTableAccessor.scanMetaForTableRegions(this.connection, visitor, tableName);<a name="line.188"></a>
+<span class="sourceLineNo">114</span> if (this.enabled.get() && !this.services.isInMaintenanceMode() && am != null &&<a name="line.114"></a>
+<span class="sourceLineNo">115</span> am.isMetaLoaded() && !am.hasRegionsInTransition()) {<a name="line.115"></a>
+<span class="sourceLineNo">116</span> scan();<a name="line.116"></a>
+<span class="sourceLineNo">117</span> } else {<a name="line.117"></a>
+<span class="sourceLineNo">118</span> LOG.warn("CatalogJanitor is disabled! Enabled=" + this.enabled.get() +<a name="line.118"></a>
+<span class="sourceLineNo">119</span> ", maintenanceMode=" + this.services.isInMaintenanceMode() + ", am=" + am +<a name="line.119"></a>
+<span class="sourceLineNo">120</span> ", metaLoaded=" + (am != null && am.isMetaLoaded()) + ", hasRIT=" +<a name="line.120"></a>
+<span class="sourceLineNo">121</span> (am != null && am.hasRegionsInTransition()));<a name="line.121"></a>
+<span class="sourceLineNo">122</span> }<a name="line.122"></a>
+<span class="sourceLineNo">123</span> } catch (IOException e) {<a name="line.123"></a>
+<span class="sourceLineNo">124</span> LOG.warn("Failed scan of catalog table", e);<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> /**<a name="line.128"></a>
+<span class="sourceLineNo">129</span> * Scans hbase:meta and returns a number of scanned rows, and a map of merged<a name="line.129"></a>
+<span class="sourceLineNo">130</span> * regions, and an ordered map of split parents.<a name="line.130"></a>
+<span class="sourceLineNo">131</span> * @return triple of scanned rows, map of merged regions and map of split<a name="line.131"></a>
+<span class="sourceLineNo">132</span> * parent regioninfos<a name="line.132"></a>
+<span class="sourceLineNo">133</span> * @throws IOException<a name="line.133"></a>
+<span class="sourceLineNo">134</span> */<a name="line.134"></a>
+<span class="sourceLineNo">135</span> Triple<Integer, Map<RegionInfo, Result>, Map<RegionInfo, Result>><a name="line.135"></a>
+<span class="sourceLineNo">136</span> getMergedRegionsAndSplitParents() throws IOException {<a name="line.136"></a>
+<span class="sourceLineNo">137</span> return getMergedRegionsAndSplitParents(null);<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> /**<a name="line.140"></a>
+<span class="sourceLineNo">141</span> * Scans hbase:meta and returns a number of scanned rows, and a map of merged<a name="line.141"></a>
+<span class="sourceLineNo">142</span> * regions, and an ordered map of split parents. if the given table name is<a name="line.142"></a>
+<span class="sourceLineNo">143</span> * null, return merged regions and split parents of all tables, else only the<a name="line.143"></a>
+<span class="sourceLineNo">144</span> * specified table<a name="line.144"></a>
+<span class="sourceLineNo">145</span> * @param tableName null represents all tables<a name="line.145"></a>
+<span class="sourceLineNo">146</span> * @return triple of scanned rows, and map of merged regions, and map of split<a name="line.146"></a>
+<span class="sourceLineNo">147</span> * parent regioninfos<a name="line.147"></a>
+<span class="sourceLineNo">148</span> * @throws IOException<a name="line.148"></a>
+<span class="sourceLineNo">149</span> */<a name="line.149"></a>
+<span class="sourceLineNo">150</span> Triple<Integer, Map<RegionInfo, Result>, Map<RegionInfo, Result>><a name="line.150"></a>
+<span class="sourceLineNo">151</span> getMergedRegionsAndSplitParents(final TableName tableName) throws IOException {<a name="line.151"></a>
+<span class="sourceLineNo">152</span> final boolean isTableSpecified = (tableName != null);<a name="line.152"></a>
+<span class="sourceLineNo">153</span> // TODO: Only works with single hbase:meta region currently. Fix.<a name="line.153"></a>
+<span class="sourceLineNo">154</span> final AtomicInteger count = new AtomicInteger(0);<a name="line.154"></a>
+<span class="sourceLineNo">155</span> // Keep Map of found split parents. There are candidates for cleanup.<a name="line.155"></a>
+<span class="sourceLineNo">156</span> // Use a comparator that has split parents come before its daughters.<a name="line.156"></a>
+<span class="sourceLineNo">157</span> final Map<RegionInfo, Result> splitParents = new TreeMap<>(new SplitParentFirstComparator());<a name="line.157"></a>
+<span class="sourceLineNo">158</span> final Map<RegionInfo, Result> mergedRegions = new TreeMap<>(RegionInfo.COMPARATOR);<a name="line.158"></a>
+<span class="sourceLineNo">159</span> // This visitor collects split parents and counts rows in the hbase:meta table<a name="line.159"></a>
+<span class="sourceLineNo">160</span><a name="line.160"></a>
+<span class="sourceLineNo">161</span> MetaTableAccessor.Visitor visitor = new MetaTableAccessor.Visitor() {<a name="line.161"></a>
+<span class="sourceLineNo">162</span> @Override<a name="line.162"></a>
+<span class="sourceLineNo">163</span> public boolean visit(Result r) throws IOException {<a name="line.163"></a>
+<span class="sourceLineNo">164</span> if (r == null || r.isEmpty()) return true;<a name="line.164"></a>
+<span class="sourceLineNo">165</span> count.incrementAndGet();<a name="line.165"></a>
+<span class="sourceLineNo">166</span> RegionInfo info = MetaTableAccessor.getRegionInfo(r);<a name="line.166"></a>
+<span class="sourceLineNo">167</span> if (info == null) return true; // Keep scanning<a name="line.167"></a>
+<span class="sourceLineNo">168</span> if (isTableSpecified<a name="line.168"></a>
+<span class="sourceLineNo">169</span> && info.getTable().compareTo(tableName) > 0) {<a name="line.169"></a>
+<span class="sourceLineNo">170</span> // Another table, stop scanning<a name="line.170"></a>
+<span class="sourceLineNo">171</span> return false;<a name="line.171"></a>
+<span class="sourceLineNo">172</span> }<a name="line.172"></a>
+<span class="sourceLineNo">173</span> if (LOG.isTraceEnabled()) LOG.trace("" + info + " IS-SPLIT_PARENT=" + info.isSplitParent());<a name="line.173"></a>
+<span class="sourceLineNo">174</span> if (info.isSplitParent()) splitParents.put(info, r);<a name="line.174"></a>
+<span class="sourceLineNo">175</span> if (r.getValue(HConstants.CATALOG_FAMILY, HConstants.MERGEA_QUALIFIER) != null) {<a name="line.175"></a>
+<span class="sourceLineNo">176</span> mergedRegions.put(info, r);<a name="line.176"></a>
+<span class="sourceLineNo">177</span> }<a name="line.177"></a>
+<span class="sourceLineNo">178</span> // Returning true means "keep scanning"<a name="line.178"></a>
+<span class="sourceLineNo">179</span> return true;<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> // Run full scan of hbase:meta catalog table passing in our custom visitor with<a name="line.183"></a>
+<span class="sourceLineNo">184</span> // the start row<a name="line.184"></a>
+<span class="sourceLineNo">185</span> MetaTableAccessor.scanMetaForTableRegions(this.connection, visitor, tableName);<a name="line.185"></a>
+<span class="sourceLineNo">186</span><a name="line.186"></a>
+<span class="sourceLineNo">187</span> return new Triple<>(count.get(), mergedRegions, splitParents);<a name="line.187"></a>
+<span class="sourceLineNo">188</span> }<a name="line.188"></a>
<span class="sourceLineNo">189</span><a name="line.189"></a>
-<span class="sourceLineNo">190</span> return new Triple<>(count.get(), mergedRegions, splitParents);<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> * If merged region no longer holds reference to the merge regions, archive<a name="line.194"></a>
-<span class="sourceLineNo">195</span> * merge region on hdfs and perform deleting references in hbase:meta<a name="line.195"></a>
-<span class="sourceLineNo">196</span> * @param mergedRegion<a name="line.196"></a>
-<span class="sourceLineNo">197</span> * @return true if we delete references in merged region on hbase:meta and archive<a name="line.197"></a>
-<span class="sourceLineNo">198</span> * the files on the file system<a name="line.198"></a>
-<span class="sourceLineNo">199</span> * @throws IOException<a name="line.199"></a>
-<span class="sourceLineNo">200</span> */<a name="line.200"></a>
-<span class="sourceLineNo">201</span> boolean cleanMergeRegion(final RegionInfo mergedRegion,<a name="line.201"></a>
-<span class="sourceLineNo">202</span> final RegionInfo regionA, final RegionInfo regionB) throws IOException {<a name="line.202"></a>
-<span class="sourceLineNo">203</span> FileSystem fs = this.services.getMasterFileSystem().getFileSystem();<a name="line.203"></a>
-<span class="sourceLineNo">204</span> Path rootdir = this.services.getMasterFileSystem().getRootDir();<a name="line.204"></a>
-<span class="sourceLineNo">205</span> Path tabledir = FSUtils.getTableDir(rootdir, mergedRegion.getTable());<a name="line.205"></a>
-<span class="sourceLineNo">206</span> TableDescriptor htd = getTableDescriptor(mergedRegion.getTable());<a name="line.206"></a>
-<span class="sourceLineNo">207</span> HRegionFileSystem regionFs = null;<a name="line.207"></a>
-<span class="sourceLineNo">208</span> try {<a name="line.208"></a>
-<span class="sourceLineNo">209</span> regionFs = HRegionFileSystem.openRegionFromFileSystem(<a name="line.209"></a>
-<span class="sourceLineNo">210</span> this.services.getConfiguration(), fs, tabledir, mergedRegion, true);<a name="line.210"></a>
-<span class="sourceLineNo">211</span> } catch (IOException e) {<a name="line.211"></a>
-<span class="sourceLineNo">212</span> LOG.warn("Merged region does not exist: " + mergedRegion.getEncodedName());<a name="line.212"></a>
-<span class="sourceLineNo">213</span> }<a name="line.213"></a>
-<span class="sourceLineNo">214</span> if (regionFs == null || !regionFs.hasReferences(htd)) {<a name="line.214"></a>
-<span class="sourceLineNo">215</span> LOG.debug("Deleting region " + regionA.getShortNameToLog() + " and "<a name="line.215"></a>
-<span class="sourceLineNo">216</span> + regionB.getShortNameToLog()<a name="line.216"></a>
-<span class="sourceLineNo">217</span> + " from fs because merged region no longer holds references");<a name="line.217"></a>
-<span class="sourceLineNo">218</span> ProcedureExecutor<MasterProcedureEnv> pe = this.services.getMasterProcedureExecutor();<a name="line.218"></a>
-<span class="sourceLineNo">219</span> pe.submitProcedure(new GCMergedRegionsProcedure(pe.getEnvironment(),<a name="line.219"></a>
-<span class="sourceLineNo">220</span> mergedRegion, regionA, regionB));<a name="line.220"></a>
-<span class="sourceLineNo">221</span> // Remove from in-memory states<a name="line.221"></a>
-<span class="sourceLineNo">222</span> this.services.getAssignmentManager().getRegionStates().deleteRegion(regionA);<a name="line.222"></a>
-<span class="sourceLineNo">223</span> this.services.getAssignmentManager().getRegionStates().deleteRegion(regionB);<a name="line.223"></a>
-<span class="sourceLineNo">224</span> this.services.getServerManager().removeRegion(regionA);<a name="line.224"></a>
-<span class="sourceLineNo">225</span> this.services.getServerManager().removeRegion(regionB);<a name="line.225"></a>
-<span class="sourceLineNo">226</span> return true;<a name="line.226"></a>
-<span class="sourceLineNo">227</span> }<a name="line.227"></a>
-<span class="sourceLineNo">228</span> return false;<a name="line.228"></a>
-<span class="sourceLineNo">229</span> }<a name="line.229"></a>
-<span class="sourceLineNo">230</span><a name="line.230"></a>
-<span class="sourceLineNo">231</span> /**<a name="line.231"></a>
-<span class="sourceLineNo">232</span> * Run janitorial scan of catalog <code>hbase:meta</code> table looking for<a name="line.232"></a>
-<span class="sourceLineNo">233</span> * garbage to collect.<a name="line.233"></a>
-<span class="sourceLineNo">234</span> * @return number of archiving jobs started.<a name="line.234"></a>
-<span class="sourceLineNo">235</span> * @throws IOException<a name="line.235"></a>
-<span class="sourceLineNo">236</span> */<a name="line.236"></a>
-<span class="sourceLineNo">237</span> int scan() throws IOException {<a name="line.237"></a>
-<span class="sourceLineNo">238</span> int result = 0;<a name="line.238"></a>
-<span class="sourceLineNo">239</span><a name="line.239"></a>
-<span class="sourceLineNo">240</span> try {<a name="line.240"></a>
-<span class="sourceLineNo">241</span> if (!alreadyRunning.compareAndSet(false, true)) {<a name="line.241"></a>
-<span class="sourceLineNo">242</span> LOG.debug("CatalogJanitor already running");<a name="line.242"></a>
-<span class="sourceLineNo">243</span> return result;<a name="line.243"></a>
-<span class="sourceLineNo">244</span> }<a name="line.244"></a>
-<span class="sourceLineNo">245</span> Triple<Integer, Map<RegionInfo, Result>, Map<RegionInfo, Result>> scanTriple =<a name="line.245"></a>
-<span class="sourceLineNo">246</span> getMergedRegionsAndSplitParents();<a name="line.246"></a>
-<span class="sourceLineNo">247</span> /**<a name="line.247"></a>
-<span class="sourceLineNo">248</span> * clean merge regions first<a name="line.248"></a>
-<span class="sourceLineNo">249</span> */<a name="line.249"></a>
-<span class="sourceLineNo">250</span> Map<RegionInfo, Result> mergedRegions = scanTriple.getSecond();<a name="line.250"></a>
-<span class="sourceLineNo">251</span> for (Map.Entry<RegionInfo, Result> e : mergedRegions.entrySet()) {<a name="line.251"></a>
-<span class="sourceLineNo">252</span> if (this.services.isInMaintenanceMode()) {<a name="line.252"></a>
-<span class="sourceLineNo">253</span> // Stop cleaning if the master is in maintenance mode<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> PairOfSameType<RegionInfo> p = MetaTableAccessor.getMergeRegions(e.getValue());<a name="line.257"></a>
-<span class="sourceLineNo">258</span> RegionInfo regionA = p.getFirst();<a name="line.258"></a>
-<span class="sourceLineNo">259</span> RegionInfo regionB = p.getSecond();<a name="line.259"></a>
-<span class="sourceLineNo">260</span> if (regionA == null || regionB == null) {<a name="line.260"></a>
-<span class="sourceLineNo">261</span> LOG.warn("Unexpected references regionA="<a name="line.261"></a>
-<span class="sourceLineNo">262</span> + (regionA == null ? "null" : regionA.getShortNameToLog())<a name="line.262"></a>
-<span class="sourceLineNo">263</span> + ",regionB="<a name="line.263"></a>
-<span class="sourceLineNo">264</span> + (regionB == null ? "null" : regionB.getShortNameToLog())<a name="line.264"></a>
-<span class="sourceLineNo">265</span> + " in merged region " + e.getKey().getShortNameToLog());<a name="line.265"></a>
-<span class="sourceLineNo">266</span> } else {<a name="line.266"></a>
-<span class="sourceLineNo">267</span> if (cleanMergeRegion(e.getKey(), regionA, regionB)) {<a name="line.267"></a>
-<span class="sourceLineNo">268</span> result++;<a name="line.268"></a>
-<span class="sourceLineNo">269</span> }<a name="line.269"></a>
-<span class="sourceLineNo">270</span> }<a name="line.270"></a>
-<span class="sourceLineNo">271</span> }<a name="line.271"></a>
-<span class="sourceLineNo">272</span> /**<a name="line.272"></a>
-<span class="sourceLineNo">273</span> * clean split parents<a name="line.273"></a>
-<span class="sourceLineNo">274</span> */<a name="line.274"></a>
-<span class="sourceLineNo">275</span> Map<RegionInfo, Result> splitParents = scanTriple.getThird();<a name="line.275"></a>
-<span class="sourceLineNo">276</span><a name="line.276"></a>
-<span class="sourceLineNo">277</span> // Now work on our list of found parents. See if any we can clean up.<a name="line.277"></a>
-<span class="sourceLineNo">278</span> // regions whose parents are still around<a name="line.278"></a>
-<span class="sourceLineNo">279</span> HashSet<String> parentNotCleaned = new HashSet<>();<a name="line.279"></a>
-<span class="sourceLineNo">280</span> for (Map.Entry<RegionInfo, Result> e : splitParents.entrySet()) {<a name="line.280"></a>
-<span class="sourceLineNo">281</span> if (this.services.isInMaintenanceMode()) {<a name="line.281"></a>
-<span class="sourceLineNo">282</span> // Stop cleaning if the master is in maintenance mode<a name="line.282"></a>
-<span class="sourceLineNo">283</span> break;<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 (!parentNotCleaned.contains(e.getKey().getEncodedName()) &&<a name="line.286"></a>
-<span class="sourceLineNo">287</span> cleanParent(e.getKey(), e.getValue())) {<a name="line.287"></a>
-<span class="sourceLineNo">288</span> result++;<a name="line.288"></a>
-<span class="sourceLineNo">289</span> } else {<a name="line.289"></a>
-<span class="sourceLineNo">290</span> // We could not clean the parent, so it's daughters should not be<a name="line.290"></a>
-<span class="sourceLineNo">291</span> // cleaned either (HBASE-6160)<a name="line.291"></a>
-<span class="sourceLineNo">292</span> PairOfSameType<RegionInfo> daughters =<a name="line.292"></a>
-<span class="sourceLineNo">293</span> MetaTableAccessor.getDaughterRegions(e.getValue());<a name="line.293"></a>
-<span class="sourceLineNo">294</span> parentNotCleaned.add(daughters.getFirst().getEncodedName());<a name="line.294"></a>
-<span class="sourceLineNo">295</span> parentNotCleaned.add(daughters.getSecond().getEncodedName());<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> return result;<a name="line.298"></a>
-<span class="sourceLineNo">299</span> } finally {<a name="line.299"></a>
-<span class="sourceLineNo">300</span> alreadyRunning.set(false);<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> /**<a name="line.304"></a>
-<span class="sourceLineNo">305</span> * Compare HRegionInfos in a way that has split parents sort BEFORE their<a name="line.305"></a>
-<span class="sourceLineNo">306</span> * daughters.<a name="line.306"></a>
-<span class="sourceLineNo">307</span> */<a name="line.307"></a>
-<span class="sourceLineNo">308</span> static class SplitParentFirstComparator implements Comparator<RegionInfo> {<a name="line.308"></a>
-<span class="sourceLineNo">309</span> Comparator<byte[]> rowEndKeyComparator = new Bytes.RowEndKeyComparator();<a name="line.309"></a>
-<span class="sourceLineNo">310</span> @Override<a name="line.310"></a>
-<span class="sourceLineNo">311</span> public int compare(RegionInfo left, RegionInfo right) {<a name="line.311"></a>
-<span class="sourceLineNo">312</span> // This comparator differs from the one RegionInfo in that it sorts<a name="line.312"></a>
-<span class="sourceLineNo">313</span> // parent before daughters.<a name="line.313"></a>
-<span class="sourceLineNo">314</span> if (left == null) return -1;<a name="line.314"></a>
-<span class="sourceLineNo">315</span> if (right == null) return 1;<a name="line.315"></a>
-<span class="sourceLineNo">316</span> // Same table name.<a name="line.316"></a>
-<span class="sourceLineNo">317</span> int result = left.getTable().compareTo(right.getTable());<a name="line.317"></a>
+<span class="sourceLineNo">190</span> /**<a name="line.190"></a>
+<span class="sourceLineNo">191</span> * If merged region no longer holds reference to the merge regions, archive<a name="line.191"></a>
+<span class="sourceLineNo">192</span> * merge region on hdfs and perform deleting references in hbase:meta<a name="line.192"></a>
+<span class="sourceLineNo">193</span> * @param mergedRegion<a name="line.193"></a>
+<span class="sourceLineNo">194</span> * @return true if we delete references in merged region on hbase:meta and archive<a name="line.194"></a>
+<span class="sourceLineNo">195</span> * the files on the file system<a name="line.195"></a>
+<span class="sourceLineNo">196</span> * @throws IOException<a name="line.196"></a>
+<span class="sourceLineNo">197</span> */<a name="line.197"></a>
+<span class="sourceLineNo">198</span> boolean cleanMergeRegion(final RegionInfo mergedRegion,<a name="line.198"></a>
+<span class="sourceLineNo">199</span> final RegionInfo regionA, final RegionInfo regionB) throws IOException {<a name="line.199"></a>
+<span class="sourceLineNo">200</span> FileSystem fs = this.services.getMasterFileSystem().getFileSystem();<a name="line.200"></a>
+<span class="sourceLineNo">201</span> Path rootdir = this.services.getMasterFileSystem().getRootDir();<a name="line.201"></a>
+<span class="sourceLineNo">202</span> Path tabledir = FSUtils.getTableDir(rootdir, mergedRegion.getTable());<a name="line.202"></a>
+<span class="sourceLineNo">203</span> TableDescriptor htd = getTableDescriptor(mergedRegion.getTable());<a name="line.203"></a>
+<span class="sourceLineNo">204</span> HRegionFileSystem regionFs = null;<a name="line.204"></a>
+<span class="sourceLineNo">205</span> try {<a name="line.205"></a>
+<span class="sourceLineNo">206</span> regionFs = HRegionFileSystem.openRegionFromFileSystem(<a name="line.206"></a>
+<span class="sourceLineNo">207</span> this.services.getConfiguration(), fs, tabledir, mergedRegion, true);<a name="line.207"></a>
+<span class="sourceLineNo">208</span> } catch (IOException e) {<a name="line.208"></a>
+<span class="sourceLineNo">209</span> LOG.warn("Merged region does not exist: " + mergedRegion.getEncodedName());<a name="line.209"></a>
+<span class="sourceLineNo">210</span> }<a name="line.210"></a>
+<span class="sourceLineNo">211</span> if (regionFs == null || !regionFs.hasReferences(htd)) {<a name="line.211"></a>
+<span class="sourceLineNo">212</span> LOG.debug("Deleting region " + regionA.getShortNameToLog() + " and "<a name="line.212"></a>
+<span class="sourceLineNo">213</span> + regionB.getShortNameToLog()<a name="line.213"></a>
+<span class="sourceLineNo">214</span> + " from fs because merged region no longer holds references");<a name="line.214"></a>
+<span class="sourceLineNo">215</span> ProcedureExecutor<MasterProcedureEnv> pe = this.services.getMasterProcedureExecutor();<a name="line.215"></a>
+<span class="sourceLineNo">216</span> pe.submitProcedure(new GCMergedRegionsProcedure(pe.getEnvironment(),<a name="line.216"></a>
+<span class="sourceLineNo">217</span> mergedRegion, regionA, regionB));<a name="line.217"></a>
+<span class="sourceLineNo">218</span> // Remove from in-memory states<a name="line.218"></a>
+<span class="sourceLineNo">219</span> this.services.getAssignmentManager().getRegionStates().deleteRegion(regionA);<a name="line.219"></a>
+<span class="sourceLineNo">220</span> this.services.getAssignmentManager().getRegionStates().deleteRegion(regionB);<a name="line.220"></a>
+<span class="sourceLineNo">221</span> this.services.getServerManager().removeRegion(regionA);<a name="line.221"></a>
+<span class="sourceLineNo">222</span> this.services.getServerManager().removeRegion(regionB);<a name="line.222"></a>
+<span class="sourceLineNo">223</span> return true;<a name="line.223"></a>
+<span class="sourceLineNo">224</span> }<a name="line.224"></a>
+<span class="sourceLineNo">225</span> return false;<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> * Run janitorial scan of catalog <code>hbase:meta</code> table looking for<a name="line.229"></a>
+<span class="sourceLineNo">230</span> * garbage to collect.<a name="line.230"></a>
+<span class="sourceLineNo">231</span> * @return number of archiving jobs started.<a name="line.231"></a>
+<span class="sourceLineNo">232</span> * @throws IOException<a name="line.232"></a>
+<span class="sourceLineNo">233</span> */<a name="line.233"></a>
+<span class="sourceLineNo">234</span> int scan() throws IOException {<a name="line.234"></a>
+<span class="sourceLineNo">235</span> int result = 0;<a name="line.235"></a>
+<span class="sourceLineNo">236</span><a name="line.236"></a>
+<span class="sourceLineNo">237</span> try {<a name="line.237"></a>
+<span class="sourceLineNo">238</span> if (!alreadyRunning.compareAndSet(false, true)) {<a name="line.238"></a>
+<span class="sourceLineNo">239</span> LOG.debug("CatalogJanitor already running");<a name="line.239"></a>
+<span class="sourceLineNo">240</span> return result;<a name="line.240"></a>
+<span class="sourceLineNo">241</span> }<a name="line.241"></a>
+<span class="sourceLineNo">242</span> Triple<Integer, Map<RegionInfo, Result>, Map<RegionInfo, Result>> scanTriple =<a name="line.242"></a>
+<span class="sourceLineNo">243</span> getMergedRegionsAndSplitParents();<a name="line.243"></a>
+<span class="sourceLineNo">244</span> /**<a name="line.244"></a>
+<span class="sourceLineNo">245</span> * clean merge regions first<a name="line.245"></a>
+<span class="sourceLineNo">246</span> */<a name="line.246"></a>
+<span class="sourceLineNo">247</span> Map<RegionInfo, Result> mergedRegions = scanTriple.getSecond();<a name="line.247"></a>
+<span class="sourceLineNo">248</span> for (Map.Entry<RegionInfo, Result> e : mergedRegions.entrySet()) {<a name="line.248"></a>
+<span class="sourceLineNo">249</span> if (this.services.isInMaintenanceMode()) {<a name="line.249"></a>
+<span class="sourceLineNo">250</span> // Stop cleaning if the master is in maintenance mode<a name="line.250"></a>
+<span class="sourceLineNo">251</span> break;<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> PairOfSameType<RegionInfo> p = MetaTableAccessor.getMergeRegions(e.getValue());<a name="line.254"></a>
+<span class="sourceLineNo">255</span> RegionInfo regionA = p.getFirst();<a name="line.255"></a>
+<span class="sourceLineNo">256</span> RegionInfo regionB = p.getSecond();<a name="line.256"></a>
+<span class="sourceLineNo">257</span> if (regionA == null || regionB == null) {<a name="line.257"></a>
+<span class="sourceLineNo">258</span> LOG.warn("Unexpected references regionA="<a name="line.258"></a>
+<span class="sourceLineNo">259</span> + (regionA == null ? "null" : regionA.getShortNameToLog())<a name="line.259"></a>
+<span class="sourceLineNo">260</span> + ",regionB="<a name="line.260"></a>
+<span class="sourceLineNo">261</span> + (regionB == null ? "null" : regionB.getShortNameToLog())<a name="line.261"></a>
+<span class="sourceLineNo">262</span> + " in merged region " + e.getKey().getShortNameToLog());<a name="line.262"></a>
+<span class="sourceLineNo">263</span> } else {<a name="line.263"></a>
+<span class="sourceLineNo">264</span> if (cleanMergeRegion(e.getKey(), regionA, regionB)) {<a name="line.264"></a>
+<span class="sourceLineNo">265</span> result++;<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> /**<a name="line.269"></a>
+<span class="sourceLineNo">270</span> * clean split parents<a name="line.270"></a>
+<span class="sourceLineNo">271</span> */<a name="line.271"></a>
+<span class="sourceLineNo">272</span> Map<RegionInfo, Result> splitParents = scanTriple.getThird();<a name="line.272"></a>
+<span class="sourceLineNo">273</span><a name="line.273"></a>
+<span class="sourceLineNo">274</span> // Now work on our list of found parents. See if any we can clean up.<a name="line.274"></a>
+<span class="sourceLineNo">275</span> // regions whose parents are still around<a name="line.275"></a>
+<span class="sourceLineNo">276</span> HashSet<String> parentNotCleaned = new HashSet<>();<a name="line.276"></a>
+<span class="sourceLineNo">277</span> for (Map.Entry<RegionInfo, Result> e : splitParents.entrySet()) {<a name="line.277"></a>
+<span class="sourceLineNo">278</span> if (this.services.isInMaintenanceMode()) {<a name="line.278"></a>
+<span class="sourceLineNo">279</span> // Stop cleaning if the master is in maintenance mode<a name="line.279"></a>
+<span class="sourceLineNo">280</span> break;<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> if (!parentNotCleaned.contains(e.getKey().getEncodedName()) &&<a name="line.283"></a>
+<span class="sourceLineNo">284</span> cleanParent(e.getKey(), e.getValue())) {<a name="line.284"></a>
+<span class="sourceLineNo">285</span> result++;<a name="line.285"></a>
+<span class="sourceLineNo">286</span> } else {<a name="line.286"></a>
+<span class="sourceLineNo">287</span> // We could not clean the parent, so it's daughters should not be<a name="line.287"></a>
+<span class="sourceLineNo">288</span> // cleaned either (HBASE-6160)<a name="line.288"></a>
+<span class="sourceLineNo">289</span> PairOfSameType<RegionInfo> daughters =<a name="line.289"></a>
+<span class="sourceLineNo">290</span> MetaTableAccessor.getDaughterRegions(e.getValue());<a name="line.290"></a>
+<span class="sourceLineNo">291</span> parentNotCleaned.add(daughters.getFirst().getEncodedName());<a name="line.291"></a>
+<span class="sourceLineNo">292</span> parentNotCleaned.add(daughters.getSecond().getEncodedName());<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> return result;<a name="line.295"></a>
+<span class="sourceLineNo">296</span> } finally {<a name="line.296"></a>
+<span class="sourceLineNo">297</span> alreadyRunning.set(false);<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> /**<a name="line.301"></a>
+<span class="sourceLineNo">302</span> * Compare HRegionInfos in a way that has split parents sort BEFORE their<a name="line.302"></a>
+<span class="sourceLineNo">303</span> * daughters.<a name="line.303"></a>
+<span class="sourceLineNo">304</span> */<a name="line.304"></a>
+<span class="sourceLineNo">305</span> static class SplitParentFirstComparator implements Comparator<RegionInfo> {<a name="line.305"></a>
+<span class="sourceLineNo">306</span> Comparator<byte[]> rowEndKeyComparator = new Bytes.RowEndKeyComparator();<a name="line.306"></a>
+<span class="sourceLineNo">307</span> @Override<a name="line.307"></a>
+<span class="sourceLineNo">308</span> public int compare(RegionInfo left, RegionInfo right) {<a name="line.308"></a>
+<span class="sourceLineNo">309</span> // This comparator differs from the one RegionInfo in that it sorts<a name="line.309"></a>
+<span class="sourceLineNo">310</span> // parent before daughters.<a name="line.310"></a>
+<span class="sourceLineNo">311</span> if (left == null) return -1;<a name="line.311"></a>
+<span class="sourceLineNo">312</span> if (right == null) return 1;<a name="line.312"></a>
+<span class="sourceLineNo">313</span> // Same table name.<a name="line.313"></a>
+<span class="sourceLineNo">314</span> int result = left.getTable().compareTo(right.getTable());<a name="line.314"></a>
+<span class="sourceLineNo">315</span> if (result != 0) return result;<a name="line.315"></a>
+<span class="sourceLineNo">316</span> // Compare start keys.<a name="line.316"></a>
+<span class="sourceLineNo">317</span> result = Bytes.compareTo(left.getStartKey(), right.getStartKey());<a name="line.317"></a>
<span class="sourceLineNo">318</span> if (result != 0) return result;<a name="line.318"></a>
-<span class="sourceLineNo">319</span> // Compare start keys.<a name="line.319"></a>
-<span class="sourceLineNo">320</span> result = Bytes.compareTo(left.getStartKey(), right.getStartKey());<a name="line.320"></a>
-<span class="sourceLineNo">321</span> if (result != 0) return result;<a name="line.321"></a>
-<span class="sourceLineNo">322</span> // Compare end keys, but flip the operands so parent comes first<a name="line.322"></a>
-<span class="sourceLineNo">323</span> result = rowEndKeyComparator.compare(right.getEndKey(), left.getEndKey());<a name="line.323"></a>
-<span class="sourceLineNo">324</span><a name="line.324"></a>
-<span class="sourceLineNo">325</span> return result;<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> /**<a name="line.329"></a>
-<span class="sourceLineNo">330</span> * If daughters no longer hold reference to the parents, delete the parent.<a name="line.330"></a>
-<span class="sourceLineNo">331</span> * @param parent RegionInfo of split offlined parent<a name="line.331"></a>
-<span class="sourceLineNo">332</span> * @param rowContent Content of <code>parent</code> row in<a name="line.332"></a>
-<span class="sourceLineNo">333</span> * <code>metaRegionName</code><a name="line.333"></a>
-<span class="sourceLineNo">334</span> * @return True if we removed <code>parent</code> from meta table and from<a name="line.334"></a>
-<span class="sourceLineNo">335</span> * the filesystem.<a name="line.335"></a>
-<span class="sourceLineNo">336</span> * @throws IOException<a name="line.336"></a>
-<span class="sourceLineNo">337</span> */<a name="line.337"></a>
-<span class="sourceLineNo">338</span> boolean cleanParent(final RegionInfo parent, Result rowContent)<a name="line.338"></a>
-<span class="sourceLineNo">339</span> throws IOException {<a name="line.339"></a>
-<span class="sourceLineNo">340</span> // Check whether it is a merged region and not clean reference<a name="line.340"></a>
-<span class="sourceLineNo">341</span> // No necessary to check MERGEB_QUALIFIER because these two qualifiers will<a name="line.341"></a>
-<span class="sourceLineNo">342</span> // be inserted/deleted together<a name="line.342"></a>
-<span class="sourceLineNo">343</span> if (rowContent.getValue(HConstants.CATALOG_FAMILY, HConstants.MERGEA_QUALIFIER) != null) {<a name="line.343"></a>
-<span class="sourceLineNo">344</span> // wait cleaning merge region first<a name="line.344"></a>
-<span class="sourceLineNo">345</span> return false;<a name="line.345"></a>
-<span class="sourceLineNo">346</span> }<a name="line.346"></a>
-<span class="sourceLineNo">347</span> // Run checks on each daughter split.<a name="line.347"></a>
-<span class="sourceLineNo">348</span> PairOfSameType<RegionInfo> daughters = MetaTableAccessor.getDaughterRegions(rowContent);<a name="line.348"></a>
-<span class="sourceLineNo">349</span> Pair<Boolean, Boolean> a = checkDaughterInFs(parent, daughters.getFirst());<a name="line.349"></a>
-<span class="sourceLineNo">350</span> Pair<Boolean, Boolean> b = checkDaughterInFs(parent, daughters.getSecond());<a name="line.350"></a>
-<span class="sourceLineNo">351</span> if (hasNoReferences(a) && hasNoReferences(b)) {<a name="line.351"></a>
-<span class="sourceLineNo">352</span> String daughterA = daughters.getFirst() != null?<a name="line.352"></a>
-<span class="sourceLineNo">353</span> daughters.getFirst().getShortNameToLog(): "null";<a name="line.353"></a>
-<span class="sourceLineNo">354</span> String daughterB = daughters.getSecond() != null?<a name="line.354"></a>
-<span class="sourceLineNo">355</span> daughters.getSecond().getShortNameToLog(): "null";<a name="line.355"></a>
-<span class="sourceLineNo">356</span> LOG.debug("Deleting region " + parent.getShortNameToLog() +<a name="line.356"></a>
-<span class="sourceLineNo">357</span> " because daughters -- " + daughterA + ", " + daughterB +<a name="line.357"></a>
-<span class="sourceLineNo">358</span> " -- no longer hold references");<a name="line.358"></a>
-<span class="sourceLineNo">359</span> ProcedureExecutor<MasterProcedureEnv> pe = this.services.getMasterProcedureExecutor();<a name="line.359"></a>
-<span class="sourceLineNo">360</span> pe.submitProcedure(new GCRegionProcedure(pe.getEnvironment(), parent));<a name="line.360"></a>
-<span class="sourceLineNo">361</span> // Remove from in-memory states<a name="line.361"></a>
-<span class="sourceLineNo">362</span> this.services.getAssignmentManager().getRegionStates().deleteRegion(parent);<a name="line.362"></a>
-<span class="sourceLineNo">363</span> this.services.getServerManager().removeRegion(parent);<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> return false;<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> /**<a name="line.369"></a>
-<span class="sourceLineNo">370</span> * @param p A pair where the first boolean says whether or not the daughter<a name="line.370"></a>
-<span class="sourceLineNo">371</span> * region directory exists in the filesystem and then the second boolean says<a name="line.371"></a>
-<span class="sourceLineNo">372</span> * whether the daughter has references to the parent.<a name="line.372"></a>
-<span class="sourceLineNo">373</span> * @return True the passed <code>p</code> signifies no references.<a name="line.373"></a>
-<span class="sourceLineNo">374</span> */<a name="line.374"></a>
-<span class="sourceLineNo">375</span> private boolean hasNoReferences(final Pair<Boolean, Boolean> p) {<a name="line.375"></a>
-<span class="sourceLineNo">376</span> return !p.getFirst() || !p.getSecond();<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> /**<a name="line.379"></a>
-<span class="sourceLineNo">380</span> * Checks if a daughter region -- either splitA or splitB -- still holds<a name="line.380"></a>
-<span class="sourceLineNo">381</span> * references to parent.<a name="line.381"></a>
-<span class="sourceLineNo">382</span> * @param parent Parent region<a name="line.382"></a>
-<span class="sourceLineNo">383</span> * @param daughter Daughter region<a name="line.383"></a>
-<span class="sourceLineNo">384</span> * @return A pair where the first boolean says whether or not the daughter<a name="line.384"></a>
-<span class="sourceLineNo">385</span> * region directory exists in the filesystem and then the second boolean says<a name="line.385"></a>
-<span class="sourceLineNo">386</span> * whether the daughter has references to the parent.<a name="line.386"></a>
-<span class="sourceLineNo">387</span> * @throws IOException<a name="line.387"></a>
-<span class="sourceLineNo">388</span> */<a name="line.388"></a>
-<span class="sourceLineNo">389</span> Pair<Boolean, Boolean> checkDaughterInFs(final RegionInfo parent, final RegionInfo daughter)<a name="line.389"></a>
-<span class="sourceLineNo">390</span> throws IOException {<a name="line.390"></a>
-<span class="sourceLineNo">391</span> if (daughter == null) {<a name="line.391"></a>
-<span class="sourceLineNo">392</span> return new Pair<>(Boolean.FALSE, Boolean.FALSE);<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> FileSystem fs = this.services.getMasterFileSystem().getFileSystem();<a name="line.395"></a>
-<span class="sourceLineNo">396</span> Path rootdir = this.services.getMasterFileSystem().getRootDir();<a name="line.396"></a>
-<span class="sourceLineNo">397</span> Path tabledir = FSUtils.getTableDir(rootdir, daughter.getTable());<a name="line.397"></a>
-<span class="sourceLineNo">398</span><a name="line.398"></a>
-<span class="sourceLineNo">399</span> Path daughterRegionDir = new Path(tabledir, daughter.getEncodedName());<a name="line.399"></a>
-<span class="sourceLineNo">400</span><a name="line.400"></a>
-<span class="sourceLineNo">401</span> HRegionFileSystem regionFs = null;<a name="line.401"></a>
-<span class="sourceLineNo">402</span><a name="line.402"></a>
-<span class="sourceLineNo">403</span> try {<a name="line.403"></a>
-<span class="sourceLineNo">404</span> if (!FSUtils.isExists(fs, daughterRegionDir)) {<a name="line.404"></a>
-<span class="sourceLineNo">405</span> return new Pair<>(Boolean.FALSE, Boolean.FALSE);<a name="line.405"></a>
-<span class="sourceLineNo">406</span> }<a name="line.406"></a>
-<span class="sourceLineNo">407</span> } catch (IOException ioe) {<a name="line.407"></a>
-<span class="sourceLineNo">408</span> LOG.error("Error trying to determine if daughter region exists, " +<a name="line.408"></a>
-<span class="sourceLineNo">409</span> "assuming exists and has references", ioe);<a name="line.409"></a>
-<span class="sourceLineNo">410</span> return new Pair<>(Boolean.TRUE, Boolean.TRUE);<a name="line.410"></a>
-<span class="sourceLineNo">411</span> }<a name="line.411"></a>
-<span class="sourceLineNo">412</span><a name="line.412"></a>
-<span class="sourceLineNo">413</span> boolean references = false;<a name="line.413"></a>
-<span class="sourceLineNo">414</span> TableDescriptor parentDescriptor = getTableDescriptor(parent.getTable());<a name="line.414"></a>
-<span class="sourceLineNo">415</span> try {<a name="line.415"></a>
-<span class="sourceLineNo">416</span> regionFs = HRegionFileSystem.openRegionFromFileSystem(<a name="line.416"></a>
-<span class="sourceLineNo">417</span> this.services.getConfiguration(), fs, tabledir, daughter, true);<a name="line.417"></a>
-<span class="sourceLineNo">418</span><a name="line.418"></a>
-<span class="sourceLineNo">419</span> for (ColumnFamilyDescriptor family: parentDescriptor.getColumnFamilies()) {<a name="line.419"></a>
-<span class="sourceLineNo">420</span> if ((references = regionFs.hasReferences(family.getNameAsString()))) {<a name="line.420"></a>
-<span class="sourceLineNo">421</span> break;<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> } catch (IOException e) {<a name="line.424"></a>
-<span class="sourceLineNo">425</span> LOG.error("Error trying to determine referenced files from : " + daughter.getEncodedName()<a name="line.425"></a>
-<span class="sourceLineNo">426</span> + ", to: " + parent.getEncodedName() + " assuming has references", e);<a name="line.426"></a>
-<span class="sourceLineNo">427</span> return new Pair<>(Boolean.TRUE, Boolean.TRUE);<a name="line.427"></a>
-<span class="sourceLineNo">428</span> }<a name="line.428"></a>
-<span class="sourceLineNo">429</span> return new Pair<>(Boolean.TRUE, Boolean.valueOf(references));<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> private TableDescriptor getTableDescriptor(final TableName tableName)<a name="line.432"></a>
-<span class="sourceLineNo">433</span> throws FileNotFoundException, IOException {<a name="line.433"></a>
-<span class="sourceLineNo">434</span> return this.services.getTableDescriptors().get(tableName);<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> * Checks if the specified region has merge qualifiers, if so, try to clean<a name="line.438"></a>
-<span class="sourceLineNo">439</span> * them<a name="line.439"></a>
-<span class="sourceLineNo">440</span> * @param region<a name="line.440"></a>
-<span class="sourceLineNo">441</span> * @return true if the specified region doesn't have merge qualifier now<a name="line.441"></a>
-<span class="sourceLineNo">442</span> * @throws IOException<a name="line.442"></a>
-<span class="sourceLineNo">443</span> */<a name="line.443"></a>
-<span class="sourceLineNo">444</span> public boolean cleanMergeQualifier(final RegionInfo region)<a name="line.444"></a>
-<span class="sourceLineNo">445</span> throws IOException {<a name="line.445"></a>
-<span class="sourceLineNo">446</span> // Get merge regions if it is a merged region and already has merge<a name="line.446"></a>
-<span class="sourceLineNo">447</span> // qualifier<a name="line.447"></a>
-<span class="sourceLineNo">448</span> Pair<RegionInfo, RegionInfo> mergeRegions = MetaTableAccessor<a name="line.448"></a>
-<span class="sourceLineNo">449</span> .getRegionsFromMergeQualifier(this.services.getConnection(),<a name="line.449"></a>
-<span class="sourceLineNo">450</span> region.getRegionName());<a name="line.450"></a>
-<span class="sourceLineNo">451</span> if (mergeRegions == null<a name="line.451"></a>
-<span class="sourceLineNo">452</span> || (mergeRegions.getFirst() == null && mergeRegions.getSecond() == null)) {<a name="line.452"></a>
-<span class="sourceLineNo">453</span> // It doesn't have merge qualifier, no need to clean<a name="line.453"></a>
-<span class="sourceLineNo">454</span> return true;<a name="line.454"></a>
-<span class="sourceLineNo">455</span> }<a name="line.455"></a>
-<span class="sourceLineNo">456</span> // It shouldn't happen, we must insert/delete these two qualifiers together<a name="line.456"></a>
-<span class="sourceLineNo">457</span> if (mergeRegions.getFirst() == null || mergeRegions.getSecond() == null) {<a name="line.457"></a>
-<span class="sourceLineNo">458</span> LOG.error("Merged region " + region.getRegionNameAsString()<a name="line.458"></a>
-<span class="sourceLineNo">459</span> + " has only one merge qualifier in META.");<a name="line.459"></a>
-<span class="sourceLineNo">460</span> return false;<a name="line.460"></a>
-<span class="sourceLineNo">461</span> }<a name="line.461"></a>
-<span class="sourceLineNo">462</span> return cleanMergeRegion(region, mergeRegions.getFirst(),<a name="line.462"></a>
-<span class="sourceLineNo">463</span> mergeRegions.getSecond());<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">319</span> // Compare end keys, but flip the operands so parent comes first<a name="line.319"></a>
+<span class="sourceLineNo">320</span> result = rowEndKeyComparator.compare(right.getEndKey(), left.getEndKey());<a name="line.320"></a>
+<span class="sourceLineNo">321</span><a name="line.321"></a>
+<span class="sourceLineNo">322</span> return result;<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> /**<a name="line.326"></a>
+<span class="sourceLineNo">327</span> * If daughters no longer hold reference to the parents, delete the parent.<a name="line.327"></a>
+<span class="sourceLineNo">328</span> * @param parent RegionInfo of split offlined parent<a name="line.328"></a>
+<span class="sourceLineNo">329</span> * @param rowContent Content of <code>parent</code> row in<a name="line.329"></a>
+<span class="sourceLineNo">330</span> * <code>metaRegionName</code><a name="line.330"></a>
+<span class="sourceLineNo">331</span> * @return True if we removed <code>parent</code> from meta table and from<a name="line.331"></a>
+<span class="sourceLineNo">332</span> * the filesystem.<a name="line.332"></a>
+<span class="sourceLineNo">333</span> * @throws IOException<a name="line.333"></a>
+<span class="sourceLineNo">334</span> */<a name="line.334"></a>
+<span class="sourceLineNo">335</span> boolean cleanParent(final RegionInfo parent, Result rowContent)<a name="line.335"></a>
+<span class="sourceLineNo">336</span> throws IOException {<a name="line.336"></a>
+<span class="sourceLineNo">337</span> // Check whether it is a merged region and not clean reference<a name="line.337"></a>
+<span class="sourceLineNo">338</span> // No necessary to check MERGEB_QUALIFIER because these two qualifiers will<a name="line.338"></a>
+<span class="sourceLineNo">339</span> // be inserted/deleted together<a name="line.339"></a>
+<span class="sourceLineNo">340</span> if (rowContent.getValue(HConstants.CATALOG_FAMILY, HConstants.MERGEA_QUALIFIER) != null) {<a name="line.340"></a>
+<span class="sourceLineNo">341</span> // wait cleaning merge region first<a name="line.341"></a>
+<span class="sourceLineNo">342</span> return false;<a name="line.342"></a>
+<span class="sourceLineNo">343</span> }<a name="line.343"></a>
+<span class="sourceLineNo">344</span> // Run checks on each daughter split.<a name="line.344"></a>
+<span class="sourceLineNo">345</span> PairOfSameType<RegionInfo> daughters = MetaTableAccessor.getDaughterRegions(rowContent);<a name="line.345"></a>
+<span class="sourceLineNo">346</span> Pair<Boolean, Boolean> a = checkDaughterInFs(parent, daughters.getFirst());<a name="line.346"></a>
+<span class="sourceLineNo">347</span> Pair<Boolean, Boolean> b = checkDaughterInFs(parent, daughters.getSecond());<a name="line.347"></a>
+<span class="sourceLineNo">348</span> if (hasNoReferences(a) && hasNoReferences(b)) {<a name="line.348"></a>
+<span class="sourceLineNo">349</span> String daughterA = daughters.getFirst() != null?<a name="line.349"></a>
+<span class="sourceLineNo">350</span> daughters.getFirst().getShortNameToLog(): "null";<a name="line.350"></a>
+<span class="sourceLineNo">351</span> String daughterB = daughters.getSecond() != null?<a name="line.351"></a>
+<span class="sourceLineNo">352</span> daughters.getSecond().getShortNameToLog(): "null";<a name="line.352"></a>
+<span class="sourceLineNo">353</span> LOG.debug("Deleting region " + parent.getShortNameToLog() +<a name="line.353"></a>
+<span class="sourceLineNo">354</span> " because daughters -- " + daughterA + ", " + daughterB +<a name="line.354"></a>
+<span class="sourceLineNo">355</span> " -- no longer hold references");<a name="line.355"></a>
+<span class="sourceLineNo">356</span> ProcedureExecutor<MasterProcedureEnv> pe = this.services.getMasterProcedureExecutor();<a name="line.356"></a>
+<span class="sourceLineNo">357</span> pe.submitProcedure(new GCRegionProcedure(pe.getEnvironment(), parent));<a name="line.357"></a>
+<span class="sourceLineNo">358</span> // Remove from in-memory states<a name="line.358"></a>
+<span class="sourceLineNo">359</span> this.services.getAssignmentManager().getRegionStates().deleteRegion(parent);<a name="line.359"></a>
+<span class="sourceLineNo">360</span> this.services.getServerManager().removeRegion(parent);<a name="line.360"></a>
+<span class="sourceLineNo">361</span> return true;<a name="line.361"></a>
+<span class="sourceLineNo">362</span> }<a name="line.362"></a>
+<span class="sourceLineNo">363</span> return false;<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> /**<a name="line.366"></a>
+<span class="sourceLineNo">367</span> * @param p A pair where the first boolean says whether or not the daughter<a name="line.367"></a>
+<span class="sourceLineNo">368</span> * region directory exists in the filesystem and then the second boolean says<a name="line.368"></a>
+<span class="sourceLineNo">369</span> * whether the daughter has references to the parent.<a name="line.369"></a>
+<span class="sourceLineNo">370</span> * @return True the passed <code>p</code> signifies no references.<a name="line.370"></a>
+<span class="sourceLineNo">371</span> */<a name="line.371"></a>
+<span class="sourceLineNo">372</span> private boolean hasNoReferences(final Pair<Boolean, Boolean> p) {<a name="line.372"></a>
+<span class="sourceLineNo">373</span> return !p.getFirst() || !p.getSecond();<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> /**<a name="line.376"></a>
+<span class="sourceLineNo">377</span> * Checks if a daughter region -- either splitA or splitB -- still holds<a name="line.377"></a>
+<span class="sourceLineNo">378</span> * references to parent.<a name="line.378"></a>
+<span class="sourceLineNo">379</span> * @param parent Parent region<a name="line.379"></a>
+<span class="sourceLineNo">380</span> * @param daughter Daughter region<a name="line.380"></a>
+<span class="sourceLineNo">381</span> * @return A pair where the first boolean says whether or not the daughter<a name="line.381"></a>
+<span class="sourceLineNo">382</span> * region directory exists in the filesystem and then the second boolean says<a name="line.382"></a>
+<span class="sourceLineNo">383</span> * whether the daughter has references to the parent.<a name="line.383"></a>
+<span class="sourceLineNo">384</span> * @throws IOException<a name="line.384"></a>
+<span class="sourceLineNo">385</span> */<a name="line.385"></a>
+<span class="sourceLineNo">386</span> Pair<Boolean, Boolean> checkDaughterInFs(final RegionInfo parent, final RegionInfo daughter)<a name="line.386"></a>
+<span class="sourceLineNo">387</span> throws IOException {<a name="line.387"></a>
+<span class="sourceLineNo">388</span> if (daughter == null) {<a name="line.388"></a>
+<span class="sourceLineNo">389</span> return new Pair<>(Boolean.FALSE, Boolean.FALSE);<a name="line.389"></a>
+<span class="sourceLineNo">390</span> }<a name="line.390"></a>
+<span class="sourceLineNo">391</span><a name="line.391"></a>
+<span class="sourceLineNo">392</span> FileSystem fs = this.services.getMasterFileSystem().getFileSystem();<a name="line.392"></a>
+<span class="sourceLineNo">393</span> Path rootdir = this.services.getMasterFileSystem().getRootDir();<a name="line.393"></a>
+<span class="sourceLineNo">394</span> Path tabledir = FSUtils.getTableDir(rootdir, daughter.getTable());<a name="line.394"></a>
+<span class="sourceLineNo">395</span><a name="line.395"></a>
+<span class="sourceLineNo">396</span> Path daughterRegionDir = new Path(tabledir, daughter.getEncodedName());<a name="line.396"></a>
+<span class="sourceLineNo">397</span><a name="line.397"></a>
+<span class="sourceLineNo">398</span> HRegionFileSystem regionFs = null;<a name="line.398"></a>
+<span class="sourceLineNo">399</span><a name="line.399"></a>
+<span class="sourceLineNo">400</span> try {<a name="line.400"></a>
+<span class="sourceLineNo">401</span> if (!FSUtils.isExists(fs, daughterRegionDir)) {<a name="line.401"></a>
+<span class="sourceLineNo">402</span> return new Pair<>(Boolean.FALSE, Boolean.FALSE);<a name="line.402"></a>
+<span class="sourceLineNo">403</span> }<a name="line.403"></a>
+<span class="sourceLineNo">404</span> } catch (IOException ioe) {<a name="line.404"></a>
+<span class="sourceLineNo">405</span> LOG.error("Error trying to determine if daughter region exists, " +<a name="line.405"></a>
+<span class="sourceLineNo">406</span> "assuming exists and has references", ioe);<a name="line.406"></a>
+<span class="sourceLineNo">407</span> return new Pair<>(Boolean.TRUE, Boolean.TRUE);<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> boolean references = false;<a name="line.410"></a>
+<span class="sourceLineNo">411</span> TableDescriptor parentDescriptor = getTableDescriptor(parent.getTable());<a name="line.411"></a>
+<span class="sourceLineNo">412</span> try {<a name="line.412"></a>
+<span class="sourceLineNo">413</span> regionFs = HRegionFileSystem.openRegionFromFileSystem(<a name="line.413"></a>
+<span class="sourceLineNo">414</span> this.services.getConfiguration(), fs, tabledir, daughter, true);<a name="line.414"></a>
+<span class="sourceLineNo">415</span><a name="line.415"></a>
+<span class="sourceLineNo">416</span> for (ColumnFamilyDescriptor family: parentDescriptor.getColumnFamilies()) {<a name="line.416"></a>
+<span class="sourceLineNo">417</span> if ((references = regionFs.hasReferences(family.getNameAsString()))) {<a name="line.417"></a>
+<span class="sourceLineNo">418</span> break;<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> } catch (IOException e) {<a name="line.421"></a>
+<span class="sourceLineNo">422</span> LOG.error("Error trying to determine referenced files from : " + daughter.getEncodedName()<a name="line.422"></a>
+<span class="sourceLineNo">423</span> + ", to: " + parent.getEncodedName() + " assuming has references", e);<a name="line.423"></a>
+<span class="sourceLineNo">424</span> return new Pair<>(Boolean.TRUE, Boolean.TRUE);<a name="line.424"></a>
+<span class="sourceLineNo">425</span> }<a name="line.425"></a>
+<span class="sourceLineNo">426</span> return new Pair<>(Boolean.TRUE, Boolean.valueOf(references));<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> private TableDescriptor getTableDescriptor(final TableName tableName)<a name="line.429"></a>
+<span class="sourceLineNo">430</span> throws FileNotFoundException, IOException {<a name="line.430"></a>
+<span class="sourceLineNo">431</span> return this.services.getTableDescriptors().get(tableName);<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> /**<a name="line.434"></a>
+<span class="sourceLineNo">435</span> * Checks if the specified region has merge qualifiers, if so, try to clean<a name="line.435"></a>
+<span class="sourceLineNo">436</span> * them<a name="line.436"></a>
+<span class="sourceLineNo">437</span> * @param region<a name="line.437"></a>
+<span class="sourceLineNo">438</span> * @return true if the specified region doesn't have merge qualifier now<a name="line.438"></a>
+<span class="sourceLineNo">439</span> * @throws IOException<a name="line.439"></a>
+<span class="sourceLineNo">440</span> */<a name="line.440"></a>
+<span class="sourceLineNo">441</span> public boolean cleanMergeQualifier(final RegionInfo region)<a name="line.441"></a>
+<span class="sourceLineNo">442</span> throws IOException {<a name="line.442"></a>
+<span class="sourceLineNo">443</span> // Get merge regions if it is a merged region and already has merge<a name="line.443"></a>
+<span class="sourceLineNo">444</span> // qualifier<a name="line.444"></a>
+<span class="sourceLineNo">445</span> Pair<RegionInfo, RegionInfo> mergeRegions = MetaTableAccessor<a name="line.445"></a>
+<span class="sourceLineNo">446</span> .getRegionsFromMergeQualifier(this.services.getConnection(),<a name="line.446"></a>
+<span class="sourceLineNo">447</span> region.getRegionName());<a name="line.447"></a>
+<span class="sourceLineNo">448</span> if (mergeRegions == null<a name="line.448"></a>
+<span class="sourceLineNo">449</span> || (mergeRegions.getFirst() == null && mergeRegions.getSecond() == null)) {<a name="line.449"></a>
+<span class="sourceLineNo">450</span> // It doesn't have merge qualifier, no need to clean<a name="line.450"></a>
+<span class="sourceLineNo">451</span> return true;<a name="line.451"></a>
+<span class="sourceLineNo">452</span> }<a name="line.452"></a>
+<span class="sourceLineNo">453</span> // It shouldn't happen, we must insert/delete these two qualifiers together<a name="line.453"></a>
+<span class="sourceLineNo">454</span> if (mergeRegions.getFirst() == null || mergeRegions.getSecond() == null) {<a name="line.454"></a>
+<span class="sourceLineNo">455</span> LOG.error("Merged region " + region.getRegionNameAsString()<a name="line.455"></a>
+<span class="sourceLineNo">456</span> + " has only one merge qualifier in META.");<a name="line.456"></a>
+<span class="sourceLineNo">457</span> return false;<a name="line.457"></a>
+<span class="sourceLineNo">458</span> }<a name="line.458"></a>
+<span class="sourceLineNo">459</span> return cleanMergeRegion(region, mergeRegions.getFirst(),<a name="line.459"></a>
+<span class="sourceLineNo">460</span> mergeRegions.getSecond());<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>
[32/51] [partial] hbase-site git commit: Published site at
9101fc246f86445006bfbcdfda5cc495016dc280.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html
index 1d20bab..15825d6 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html
@@ -18,8 +18,8 @@
catch(err) {
}
//-->
-var methods = {"i0":9,"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":9,"i15":10,"i16":9,"i17":10,"i18":9,"i19":10,"i20":9,"i21":9,"i22":9,"i23":9,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":9,"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};
-var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var methods = {"i0":9,"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":9,"i15":10,"i16":9,"i17":10,"i18":9,"i19":10,"i20":9,"i21":9,"i22":9,"i23":9,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":9,"i30":10,"i31":10,"i32":10,"i33":42,"i34":10,"i35":10,"i36":10,"i37":10,"i38":10,"i39":10,"i40":10,"i41":10,"i42":42,"i43":10,"i44":10,"i45":10,"i46":10,"i47":10,"i48":10,"i49":10,"i50":10};
+var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"],32:["t6","Deprecated Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
@@ -119,7 +119,7 @@ var activeTableTab = "activeTableTab";
<hr>
<br>
<pre>@InterfaceAudience.Private
-public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.95">MasterProcedureScheduler</a>
+public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.94">MasterProcedureScheduler</a>
extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractProcedureScheduler.html" title="class in org.apache.hadoop.hbase.procedure2">AbstractProcedureScheduler</a></pre>
<div class="block">ProcedureScheduler for the Master Procedures.
This ProcedureScheduler tries to provide to the ProcedureExecutor procedures
@@ -269,7 +269,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
</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"> </span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </span></span></caption>
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </span></span><span id="t6" class="tableTab"><span><a href="javascript:show(32);">Deprecated Methods</a></span><span class="tabEnd"> </span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
@@ -443,12 +443,15 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
<tr id="i33" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#waitMetaExclusiveLock-org.apache.hadoop.hbase.procedure2.Procedure-">waitMetaExclusiveLock</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> procedure)</code>
-<div class="block">Try to acquire the exclusive lock on meta.</div>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span>
+<div class="block"><span class="deprecationComment">only used for <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>RecoverMetaProcedure</code></a>. Should be removed along with
+ <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>RecoverMetaProcedure</code></a>.</span></div>
+</div>
</td>
</tr>
<tr id="i34" class="altColor">
<td class="colFirst"><code>boolean</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#waitNamespaceExclusiveLock-org.apache.hadoop.hbase.procedure2.Procedure-java.lang.String-">waitNamespaceExclusiveLock</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> procedure,
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#waitNamespaceExclusiveLock-org.apache.hadoop.hbase.procedure2.Procedure-java.lang.String-">waitNamespaceExclusiveLock</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> procedure,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> namespace)</code>
<div class="block">Suspend the procedure if the specified namespace is already locked.</div>
</td>
@@ -462,14 +465,14 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
</tr>
<tr id="i36" class="altColor">
<td class="colFirst"><code>boolean</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#waitRegion-org.apache.hadoop.hbase.procedure2.Procedure-org.apache.hadoop.hbase.client.RegionInfo-">waitRegion</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> procedure,
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#waitRegion-org.apache.hadoop.hbase.procedure2.Procedure-org.apache.hadoop.hbase.client.RegionInfo-">waitRegion</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> procedure,
<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo)</code>
<div class="block">Suspend the procedure if the specified region is already locked.</div>
</td>
</tr>
<tr id="i37" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#waitRegions-org.apache.hadoop.hbase.procedure2.Procedure-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.client.RegionInfo...-">waitRegions</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> procedure,
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#waitRegions-org.apache.hadoop.hbase.procedure2.Procedure-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.client.RegionInfo...-">waitRegions</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> procedure,
<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> table,
<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>... regionInfo)</code>
<div class="block">Suspend the procedure if the specified set of regions are already locked.</div>
@@ -484,7 +487,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
</tr>
<tr id="i39" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#waitTableExclusiveLock-org.apache.hadoop.hbase.procedure2.Procedure-org.apache.hadoop.hbase.TableName-">waitTableExclusiveLock</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> procedure,
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#waitTableExclusiveLock-org.apache.hadoop.hbase.procedure2.Procedure-org.apache.hadoop.hbase.TableName-">waitTableExclusiveLock</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> procedure,
<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> table)</code>
<div class="block">Suspend the procedure if the specified table is already locked.</div>
</td>
@@ -496,7 +499,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
</tr>
<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/master/procedure/MasterProcedureScheduler.html#waitTableSharedLock-org.apache.hadoop.hbase.procedure2.Procedure-org.apache.hadoop.hbase.TableName-">waitTableSharedLock</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> procedure,
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#waitTableSharedLock-org.apache.hadoop.hbase.procedure2.Procedure-org.apache.hadoop.hbase.TableName-">waitTableSharedLock</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> procedure,
<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> table)</code>
<div class="block">Suspend the procedure if the specified table is already locked.</div>
</td>
@@ -504,12 +507,15 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
<tr id="i42" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#wakeMetaExclusiveLock-org.apache.hadoop.hbase.procedure2.Procedure-">wakeMetaExclusiveLock</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> procedure)</code>
-<div class="block">Wake the procedures waiting for meta.</div>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span>
+<div class="block"><span class="deprecationComment">only used for <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>RecoverMetaProcedure</code></a>. Should be removed along with
+ <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>RecoverMetaProcedure</code></a>.</span></div>
+</div>
</td>
</tr>
<tr id="i43" class="rowColor">
<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#wakeNamespaceExclusiveLock-org.apache.hadoop.hbase.procedure2.Procedure-java.lang.String-">wakeNamespaceExclusiveLock</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> procedure,
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#wakeNamespaceExclusiveLock-org.apache.hadoop.hbase.procedure2.Procedure-java.lang.String-">wakeNamespaceExclusiveLock</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> procedure,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> namespace)</code>
<div class="block">Wake the procedures waiting for the specified namespace</div>
</td>
@@ -523,14 +529,14 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
</tr>
<tr id="i45" class="rowColor">
<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#wakeRegion-org.apache.hadoop.hbase.procedure2.Procedure-org.apache.hadoop.hbase.client.RegionInfo-">wakeRegion</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> procedure,
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#wakeRegion-org.apache.hadoop.hbase.procedure2.Procedure-org.apache.hadoop.hbase.client.RegionInfo-">wakeRegion</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> procedure,
<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo)</code>
<div class="block">Wake the procedures waiting for the specified region</div>
</td>
</tr>
<tr id="i46" class="altColor">
<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#wakeRegions-org.apache.hadoop.hbase.procedure2.Procedure-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.client.RegionInfo...-">wakeRegions</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> procedure,
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#wakeRegions-org.apache.hadoop.hbase.procedure2.Procedure-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.client.RegionInfo...-">wakeRegions</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> procedure,
<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> table,
<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>... regionInfo)</code>
<div class="block">Wake the procedures waiting for the specified regions</div>
@@ -545,14 +551,14 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
</tr>
<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/master/procedure/MasterProcedureScheduler.html#wakeTableExclusiveLock-org.apache.hadoop.hbase.procedure2.Procedure-org.apache.hadoop.hbase.TableName-">wakeTableExclusiveLock</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> procedure,
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#wakeTableExclusiveLock-org.apache.hadoop.hbase.procedure2.Procedure-org.apache.hadoop.hbase.TableName-">wakeTableExclusiveLock</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> procedure,
<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> table)</code>
<div class="block">Wake the procedures waiting for the specified table</div>
</td>
</tr>
<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/master/procedure/MasterProcedureScheduler.html#wakeTableSharedLock-org.apache.hadoop.hbase.procedure2.Procedure-org.apache.hadoop.hbase.TableName-">wakeTableSharedLock</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> procedure,
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#wakeTableSharedLock-org.apache.hadoop.hbase.procedure2.Procedure-org.apache.hadoop.hbase.TableName-">wakeTableSharedLock</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> procedure,
<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> table)</code>
<div class="block">Wake the procedures waiting for the specified table</div>
</td>
@@ -598,7 +604,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
<ul class="blockList">
<li class="blockList">
<h4>LOG</h4>
-<pre>private static final org.slf4j.Logger <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.96">LOG</a></pre>
+<pre>private static final org.slf4j.Logger <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.95">LOG</a></pre>
</li>
</ul>
<a name="SERVER_QUEUE_KEY_COMPARATOR">
@@ -607,7 +613,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
<ul class="blockList">
<li class="blockList">
<h4>SERVER_QUEUE_KEY_COMPARATOR</h4>
-<pre>private static final <a href="../../../../../../org/apache/hadoop/hbase/util/AvlUtil.AvlKeyComparator.html" title="interface in org.apache.hadoop.hbase.util">AvlUtil.AvlKeyComparator</a><<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">ServerQueue</a>> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.98">SERVER_QUEUE_KEY_COMPARATOR</a></pre>
+<pre>private static final <a href="../../../../../../org/apache/hadoop/hbase/util/AvlUtil.AvlKeyComparator.html" title="interface in org.apache.hadoop.hbase.util">AvlUtil.AvlKeyComparator</a><<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">ServerQueue</a>> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.97">SERVER_QUEUE_KEY_COMPARATOR</a></pre>
</li>
</ul>
<a name="TABLE_QUEUE_KEY_COMPARATOR">
@@ -616,7 +622,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
<ul class="blockList">
<li class="blockList">
<h4>TABLE_QUEUE_KEY_COMPARATOR</h4>
-<pre>private static final <a href="../../../../../../org/apache/hadoop/hbase/util/AvlUtil.AvlKeyComparator.html" title="interface in org.apache.hadoop.hbase.util">AvlUtil.AvlKeyComparator</a><<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">TableQueue</a>> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.100">TABLE_QUEUE_KEY_COMPARATOR</a></pre>
+<pre>private static final <a href="../../../../../../org/apache/hadoop/hbase/util/AvlUtil.AvlKeyComparator.html" title="interface in org.apache.hadoop.hbase.util">AvlUtil.AvlKeyComparator</a><<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">TableQueue</a>> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.99">TABLE_QUEUE_KEY_COMPARATOR</a></pre>
</li>
</ul>
<a name="PEER_QUEUE_KEY_COMPARATOR">
@@ -625,7 +631,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
<ul class="blockList">
<li class="blockList">
<h4>PEER_QUEUE_KEY_COMPARATOR</h4>
-<pre>private static final <a href="../../../../../../org/apache/hadoop/hbase/util/AvlUtil.AvlKeyComparator.html" title="interface in org.apache.hadoop.hbase.util">AvlUtil.AvlKeyComparator</a><<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/PeerQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">PeerQueue</a>> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.102">PEER_QUEUE_KEY_COMPARATOR</a></pre>
+<pre>private static final <a href="../../../../../../org/apache/hadoop/hbase/util/AvlUtil.AvlKeyComparator.html" title="interface in org.apache.hadoop.hbase.util">AvlUtil.AvlKeyComparator</a><<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/PeerQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">PeerQueue</a>> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.101">PEER_QUEUE_KEY_COMPARATOR</a></pre>
</li>
</ul>
<a name="META_QUEUE_KEY_COMPARATOR">
@@ -634,7 +640,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
<ul class="blockList">
<li class="blockList">
<h4>META_QUEUE_KEY_COMPARATOR</h4>
-<pre>private static final <a href="../../../../../../org/apache/hadoop/hbase/util/AvlUtil.AvlKeyComparator.html" title="interface in org.apache.hadoop.hbase.util">AvlUtil.AvlKeyComparator</a><<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MetaQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">MetaQueue</a>> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.104">META_QUEUE_KEY_COMPARATOR</a></pre>
+<pre>private static final <a href="../../../../../../org/apache/hadoop/hbase/util/AvlUtil.AvlKeyComparator.html" title="interface in org.apache.hadoop.hbase.util">AvlUtil.AvlKeyComparator</a><<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MetaQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">MetaQueue</a>> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.103">META_QUEUE_KEY_COMPARATOR</a></pre>
</li>
</ul>
<a name="serverRunQueue">
@@ -643,7 +649,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
<ul class="blockList">
<li class="blockList">
<h4>serverRunQueue</h4>
-<pre>private final <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/FairQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">FairQueue</a><<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.107">serverRunQueue</a></pre>
+<pre>private final <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/FairQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">FairQueue</a><<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.106">serverRunQueue</a></pre>
</li>
</ul>
<a name="tableRunQueue">
@@ -652,7 +658,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
<ul class="blockList">
<li class="blockList">
<h4>tableRunQueue</h4>
-<pre>private final <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/FairQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">FairQueue</a><<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.108">tableRunQueue</a></pre>
+<pre>private final <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/FairQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">FairQueue</a><<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.107">tableRunQueue</a></pre>
</li>
</ul>
<a name="peerRunQueue">
@@ -661,7 +667,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
<ul class="blockList">
<li class="blockList">
<h4>peerRunQueue</h4>
-<pre>private final <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/FairQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">FairQueue</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>> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.109">peerRunQueue</a></pre>
+<pre>private final <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/FairQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">FairQueue</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>> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.108">peerRunQueue</a></pre>
</li>
</ul>
<a name="metaRunQueue">
@@ -670,7 +676,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
<ul class="blockList">
<li class="blockList">
<h4>metaRunQueue</h4>
-<pre>private final <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/FairQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">FairQueue</a><<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.110">metaRunQueue</a></pre>
+<pre>private final <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/FairQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">FairQueue</a><<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.109">metaRunQueue</a></pre>
</li>
</ul>
<a name="serverBuckets">
@@ -679,7 +685,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
<ul class="blockList">
<li class="blockList">
<h4>serverBuckets</h4>
-<pre>private final <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">ServerQueue</a>[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.112">serverBuckets</a></pre>
+<pre>private final <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">ServerQueue</a>[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.111">serverBuckets</a></pre>
</li>
</ul>
<a name="tableMap">
@@ -688,7 +694,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
<ul class="blockList">
<li class="blockList">
<h4>tableMap</h4>
-<pre>private <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">TableQueue</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.113">tableMap</a></pre>
+<pre>private <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">TableQueue</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.112">tableMap</a></pre>
</li>
</ul>
<a name="peerMap">
@@ -697,7 +703,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
<ul class="blockList">
<li class="blockList">
<h4>peerMap</h4>
-<pre>private <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/PeerQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">PeerQueue</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.114">peerMap</a></pre>
+<pre>private <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/PeerQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">PeerQueue</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.113">peerMap</a></pre>
</li>
</ul>
<a name="metaMap">
@@ -706,7 +712,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
<ul class="blockList">
<li class="blockList">
<h4>metaMap</h4>
-<pre>private <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MetaQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">MetaQueue</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.115">metaMap</a></pre>
+<pre>private <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MetaQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">MetaQueue</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.114">metaMap</a></pre>
</li>
</ul>
<a name="locking">
@@ -715,7 +721,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
<ul class="blockListLast">
<li class="blockList">
<h4>locking</h4>
-<pre>private final <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/SchemaLocking.html" title="class in org.apache.hadoop.hbase.master.procedure">SchemaLocking</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.117">locking</a></pre>
+<pre>private final <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/SchemaLocking.html" title="class in org.apache.hadoop.hbase.master.procedure">SchemaLocking</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.116">locking</a></pre>
</li>
</ul>
</li>
@@ -732,7 +738,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
<ul class="blockListLast">
<li class="blockList">
<h4>MasterProcedureScheduler</h4>
-<pre>public <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.95">MasterProcedureScheduler</a>()</pre>
+<pre>public <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.94">MasterProcedureScheduler</a>()</pre>
</li>
</ul>
</li>
@@ -749,7 +755,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
<ul class="blockList">
<li class="blockList">
<h4>yield</h4>
-<pre>public void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.120">yield</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> proc)</pre>
+<pre>public void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.119">yield</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> proc)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface: <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureScheduler.html#yield-org.apache.hadoop.hbase.procedure2.Procedure-">ProcedureScheduler</a></code></span></div>
<div class="block">The procedure can't run at the moment.
add it back to the queue, giving priority to someone else.</div>
@@ -765,7 +771,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
<ul class="blockList">
<li class="blockList">
<h4>enqueue</h4>
-<pre>protected void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.125">enqueue</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> proc,
+<pre>protected void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.124">enqueue</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> proc,
boolean addFront)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class: <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractProcedureScheduler.html#enqueue-org.apache.hadoop.hbase.procedure2.Procedure-boolean-">AbstractProcedureScheduler</a></code></span></div>
<div class="block">Add the procedure to the queue.
@@ -785,7 +791,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
<ul class="blockList">
<li class="blockList">
<h4>doAdd</h4>
-<pre>private <T extends <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><T>> void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.144">doAdd</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/FairQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">FairQueue</a><T> fairq,
+<pre>private <T extends <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><T>> void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.143">doAdd</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/FairQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">FairQueue</a><T> fairq,
<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Queue.html" title="class in org.apache.hadoop.hbase.master.procedure">Queue</a><T> queue,
<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> proc,
boolean addFront)</pre>
@@ -797,7 +803,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
<ul class="blockList">
<li class="blockList">
<h4>queueHasRunnables</h4>
-<pre>protected boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.161">queueHasRunnables</a>()</pre>
+<pre>protected boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.160">queueHasRunnables</a>()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class: <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractProcedureScheduler.html#queueHasRunnables--">AbstractProcedureScheduler</a></code></span></div>
<div class="block">Returns true if there are procedures available to process.
NOTE: this method is called with the sched lock held.</div>
@@ -815,7 +821,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
<ul class="blockList">
<li class="blockList">
<h4>dequeue</h4>
-<pre>protected <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.167">dequeue</a>()</pre>
+<pre>protected <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.166">dequeue</a>()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class: <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractProcedureScheduler.html#dequeue--">AbstractProcedureScheduler</a></code></span></div>
<div class="block">Fetch one Procedure from the queue
NOTE: this method is called with the sched lock held.</div>
@@ -833,7 +839,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
<ul class="blockList">
<li class="blockList">
<h4>doPoll</h4>
-<pre>private <T extends <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><T>> <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.185">doPoll</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/FairQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">FairQueue</a><T> fairq)</pre>
+<pre>private <T extends <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><T>> <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.184">doPoll</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/FairQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">FairQueue</a><T> fairq)</pre>
</li>
</ul>
<a name="getLocks--">
@@ -842,7 +848,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
<ul class="blockList">
<li class="blockList">
<h4>getLocks</h4>
-<pre>public <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><<a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockedResource.html" title="class in org.apache.hadoop.hbase.procedure2">LockedResource</a>> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.219">getLocks</a>()</pre>
+<pre>public <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><<a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockedResource.html" title="class in org.apache.hadoop.hbase.procedure2">LockedResource</a>> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.218">getLocks</a>()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface: <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureScheduler.html#getLocks--">ProcedureScheduler</a></code></span></div>
<div class="block">List lock queues.</div>
<dl>
@@ -857,7 +863,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
<ul class="blockList">
<li class="blockList">
<h4>getLockResource</h4>
-<pre>public <a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockedResource.html" title="class in org.apache.hadoop.hbase.procedure2">LockedResource</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.229">getLockResource</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockedResourceType.html" title="enum in org.apache.hadoop.hbase.procedure2">LockedResourceType</a> resourceType,
+<pre>public <a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockedResource.html" title="class in org.apache.hadoop.hbase.procedure2">LockedResource</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.228">getLockResource</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockedResourceType.html" title="enum in org.apache.hadoop.hbase.procedure2">LockedResourceType</a> resourceType,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> resourceName)</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
@@ -871,7 +877,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
<ul class="blockList">
<li class="blockList">
<h4>clear</h4>
-<pre>public void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.239">clear</a>()</pre>
+<pre>public void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.238">clear</a>()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface: <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureScheduler.html#clear--">ProcedureScheduler</a></code></span></div>
<div class="block">Clear current state of scheduler such that it is equivalent to newly created scheduler.
Used for testing failure and recovery. To emulate server crash/restart,
@@ -884,7 +890,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
<ul class="blockList">
<li class="blockList">
<h4>clearQueue</h4>
-<pre>private void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.249">clearQueue</a>()</pre>
+<pre>private void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.248">clearQueue</a>()</pre>
</li>
</ul>
<a name="clear-org.apache.hadoop.hbase.master.procedure.Queue-org.apache.hadoop.hbase.master.procedure.FairQueue-org.apache.hadoop.hbase.util.AvlUtil.AvlKeyComparator-">
@@ -895,7 +901,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
<ul class="blockList">
<li class="blockList">
<h4>clear</h4>
-<pre>private <T extends <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><T>,TNode extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Queue.html" title="class in org.apache.hadoop.hbase.master.procedure">Queue</a><T>> void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.267">clear</a>(TNode treeMap,
+<pre>private <T extends <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><T>,TNode extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Queue.html" title="class in org.apache.hadoop.hbase.master.procedure">Queue</a><T>> void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.266">clear</a>(TNode treeMap,
<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/FairQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">FairQueue</a><T> fairq,
<a href="../../../../../../org/apache/hadoop/hbase/util/AvlUtil.AvlKeyComparator.html" title="interface in org.apache.hadoop.hbase.util">AvlUtil.AvlKeyComparator</a><TNode> comparator)</pre>
</li>
@@ -906,7 +912,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
<ul class="blockList">
<li class="blockList">
<h4>queueSize</h4>
-<pre>private int <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.276">queueSize</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Queue.html" title="class in org.apache.hadoop.hbase.master.procedure">Queue</a><?> head)</pre>
+<pre>private int <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.275">queueSize</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Queue.html" title="class in org.apache.hadoop.hbase.master.procedure">Queue</a><?> head)</pre>
</li>
</ul>
<a name="queueSize--">
@@ -915,7 +921,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
<ul class="blockList">
<li class="blockList">
<h4>queueSize</h4>
-<pre>protected int <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.286">queueSize</a>()</pre>
+<pre>protected int <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.285">queueSize</a>()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class: <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractProcedureScheduler.html#queueSize--">AbstractProcedureScheduler</a></code></span></div>
<div class="block">Returns the number of elements in this queue.
NOTE: this method is called with the sched lock held.</div>
@@ -933,7 +939,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
<ul class="blockList">
<li class="blockList">
<h4>completionCleanup</h4>
-<pre>public void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.298">completionCleanup</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> proc)</pre>
+<pre>public void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.297">completionCleanup</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> proc)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface: <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureScheduler.html#completionCleanup-org.apache.hadoop.hbase.procedure2.Procedure-">ProcedureScheduler</a></code></span></div>
<div class="block">The procedure in execution completed.
This can be implemented to perform cleanups.</div>
@@ -949,7 +955,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
<ul class="blockList">
<li class="blockList">
<h4>addToRunQueue</h4>
-<pre>private static <T extends <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><T>> void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.328">addToRunQueue</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/FairQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">FairQueue</a><T> fairq,
+<pre>private static <T extends <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><T>> void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.327">addToRunQueue</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/FairQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">FairQueue</a><T> fairq,
<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Queue.html" title="class in org.apache.hadoop.hbase.master.procedure">Queue</a><T> queue)</pre>
</li>
</ul>
@@ -959,7 +965,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
<ul class="blockList">
<li class="blockList">
<h4>removeFromRunQueue</h4>
-<pre>private static <T extends <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><T>> void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.334">removeFromRunQueue</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/FairQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">FairQueue</a><T> fairq,
+<pre>private static <T extends <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><T>> void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.333">removeFromRunQueue</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/FairQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">FairQueue</a><T> fairq,
<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Queue.html" title="class in org.apache.hadoop.hbase.master.procedure">Queue</a><T> queue)</pre>
</li>
</ul>
@@ -969,7 +975,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
<ul class="blockList">
<li class="blockList">
<h4>getTableQueue</h4>
-<pre>private <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">TableQueue</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.344">getTableQueue</a>(<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> tableName)</pre>
+<pre>private <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">TableQueue</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.343">getTableQueue</a>(<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> tableName)</pre>
</li>
</ul>
<a name="removeTableQueue-org.apache.hadoop.hbase.TableName-">
@@ -978,7 +984,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
<ul class="blockList">
<li class="blockList">
<h4>removeTableQueue</h4>
-<pre>private void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.354">removeTableQueue</a>(<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> tableName)</pre>
+<pre>private void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.353">removeTableQueue</a>(<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> tableName)</pre>
</li>
</ul>
<a name="isTableProcedure-org.apache.hadoop.hbase.procedure2.Procedure-">
@@ -987,7 +993,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
<ul class="blockList">
<li class="blockList">
<h4>isTableProcedure</h4>
-<pre>private static boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.359">isTableProcedure</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> proc)</pre>
+<pre>private static boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.358">isTableProcedure</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> proc)</pre>
</li>
</ul>
<a name="getTableName-org.apache.hadoop.hbase.procedure2.Procedure-">
@@ -996,7 +1002,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
<ul class="blockList">
<li class="blockList">
<h4>getTableName</h4>
-<pre>private static <a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.363">getTableName</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> proc)</pre>
+<pre>private static <a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.362">getTableName</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> proc)</pre>
</li>
</ul>
<a name="getServerQueue-org.apache.hadoop.hbase.ServerName-">
@@ -1005,7 +1011,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
<ul class="blockList">
<li class="blockList">
<h4>getServerQueue</h4>
-<pre>private <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">ServerQueue</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.370">getServerQueue</a>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName)</pre>
+<pre>private <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">ServerQueue</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.369">getServerQueue</a>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName)</pre>
</li>
</ul>
<a name="getBucketIndex-java.lang.Object:A-int-">
@@ -1014,7 +1020,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
<ul class="blockList">
<li class="blockList">
<h4>getBucketIndex</h4>
-<pre>private static int <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.380">getBucketIndex</a>(<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>[] buckets,
+<pre>private static int <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.379">getBucketIndex</a>(<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>[] buckets,
int hashCode)</pre>
</li>
</ul>
@@ -1024,7 +1030,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
<ul class="blockList">
<li class="blockList">
<h4>isServerProcedure</h4>
-<pre>private static boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.384">isServerProcedure</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> proc)</pre>
+<pre>private static boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.383">isServerProcedure</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> proc)</pre>
</li>
</ul>
<a name="getServerName-org.apache.hadoop.hbase.procedure2.Procedure-">
@@ -1033,7 +1039,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
<ul class="blockList">
<li class="blockList">
<h4>getServerName</h4>
-<pre>private static <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.388">getServerName</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> proc)</pre>
+<pre>private static <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.387">getServerName</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> proc)</pre>
</li>
</ul>
<a name="getPeerQueue-java.lang.String-">
@@ -1042,7 +1048,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
<ul class="blockList">
<li class="blockList">
<h4>getPeerQueue</h4>
-<pre>private <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/PeerQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">PeerQueue</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.395">getPeerQueue</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> peerId)</pre>
+<pre>private <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/PeerQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">PeerQueue</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.394">getPeerQueue</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> peerId)</pre>
</li>
</ul>
<a name="removePeerQueue-java.lang.String-">
@@ -1051,7 +1057,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
<ul class="blockList">
<li class="blockList">
<h4>removePeerQueue</h4>
-<pre>private void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.405">removePeerQueue</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> peerId)</pre>
+<pre>private void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.404">removePeerQueue</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> peerId)</pre>
</li>
</ul>
<a name="tryCleanupPeerQueue-java.lang.String-org.apache.hadoop.hbase.procedure2.Procedure-">
@@ -1060,7 +1066,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
<ul class="blockList">
<li class="blockList">
<h4>tryCleanupPeerQueue</h4>
-<pre>private void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.410">tryCleanupPeerQueue</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> peerId,
+<pre>private void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.409">tryCleanupPeerQueue</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> peerId,
<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> procedure)</pre>
</li>
</ul>
@@ -1070,7 +1076,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
<ul class="blockList">
<li class="blockList">
<h4>isPeerProcedure</h4>
-<pre>private static boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.428">isPeerProcedure</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> proc)</pre>
+<pre>private static boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.427">isPeerProcedure</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> proc)</pre>
</li>
</ul>
<a name="getPeerId-org.apache.hadoop.hbase.procedure2.Procedure-">
@@ -1079,7 +1085,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
<ul class="blockList">
<li class="blockList">
<h4>getPeerId</h4>
-<pre>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> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.432">getPeerId</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> proc)</pre>
+<pre>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> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.431">getPeerId</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> proc)</pre>
</li>
</ul>
<a name="getMetaQueue--">
@@ -1088,7 +1094,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
<ul class="blockList">
<li class="blockList">
<h4>getMetaQueue</h4>
-<pre>private <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MetaQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">MetaQueue</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.439">getMetaQueue</a>()</pre>
+<pre>private <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MetaQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">MetaQueue</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.438">getMetaQueue</a>()</pre>
</li>
</ul>
<a name="isMetaProcedure-org.apache.hadoop.hbase.procedure2.Procedure-">
@@ -1097,7 +1103,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
<ul class="blockList">
<li class="blockList">
<h4>isMetaProcedure</h4>
-<pre>private static boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.449">isMetaProcedure</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> proc)</pre>
+<pre>private static boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.448">isMetaProcedure</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> proc)</pre>
</li>
</ul>
<a name="logLockedResource-org.apache.hadoop.hbase.procedure2.LockedResourceType-java.lang.String-">
@@ -1106,7 +1112,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
<ul class="blockList">
<li class="blockList">
<h4>logLockedResource</h4>
-<pre>private void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.458">logLockedResource</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockedResourceType.html" title="enum in org.apache.hadoop.hbase.procedure2">LockedResourceType</a> resourceType,
+<pre>private void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.457">logLockedResource</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockedResourceType.html" title="enum in org.apache.hadoop.hbase.procedure2">LockedResourceType</a> resourceType,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> resourceName)</pre>
<div class="block">Get lock info for a resource of specified type and name and log details</div>
</li>
@@ -1117,7 +1123,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
<ul class="blockList">
<li class="blockList">
<h4>waitTableExclusiveLock</h4>
-<pre>public boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.483">waitTableExclusiveLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> procedure,
+<pre>public boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.482">waitTableExclusiveLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> procedure,
<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> table)</pre>
<div class="block">Suspend the procedure if the specified table is already locked.
Other operations in the table-queue will be executed after the lock is released.</div>
@@ -1136,7 +1142,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
<ul class="blockList">
<li class="blockList">
<h4>wakeTableExclusiveLock</h4>
-<pre>public void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.512">wakeTableExclusiveLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> procedure,
+<pre>public void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.511">wakeTableExclusiveLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> procedure,
<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> table)</pre>
<div class="block">Wake the procedures waiting for the specified table</div>
<dl>
@@ -1152,7 +1158,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
<ul class="blockList">
<li class="blockList">
<h4>waitTableSharedLock</h4>
-<pre>public boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.540">waitTableSharedLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> procedure,
+<pre>public boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.539">waitTableSharedLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> procedure,
<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> table)</pre>
<div class="block">Suspend the procedure if the specified table is already locked.
other "read" operations in the table-queue may be executed concurrently,</div>
@@ -1171,7 +1177,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
<ul class="blockList">
<li class="blockList">
<h4>waitTableQueueSharedLock</h4>
-<pre>private <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">TableQueue</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.544">waitTableQueueSharedLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> procedure,
+<pre>private <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">TableQueue</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.543">waitTableQueueSharedLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> procedure,
<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> table)</pre>
</li>
</ul>
@@ -1181,7 +1187,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
<ul class="blockList">
<li class="blockList">
<h4>wakeTableSharedLock</h4>
-<pre>public void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.571">wakeTableSharedLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> procedure,
+<pre>public void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.570">wakeTableSharedLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> procedure,
<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> table)</pre>
<div class="block">Wake the procedures waiting for the specified table</div>
<dl>
@@ -1197,7 +1203,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
<ul class="blockList">
<li class="blockList">
<h4>markTableAsDeleted</h4>
-<pre>boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.600">markTableAsDeleted</a>(<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> table,
+<pre>boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.599">markTableAsDeleted</a>(<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> table,
<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> procedure)</pre>
<div class="block">Tries to remove the queue and the table-lock of the specified table.
If there are new operations pending (e.g. a new create),
@@ -1218,7 +1224,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
<ul class="blockList">
<li class="blockList">
<h4>waitRegion</h4>
-<pre>public boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.632">waitRegion</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> procedure,
+<pre>public boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.631">waitRegion</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> procedure,
<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo)</pre>
<div class="block">Suspend the procedure if the specified region is already locked.</div>
<dl>
@@ -1236,7 +1242,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
<ul class="blockList">
<li class="blockList">
<h4>waitRegions</h4>
-<pre>public boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.643">waitRegions</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> procedure,
+<pre>public boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.642">waitRegions</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> procedure,
<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> table,
<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>... regionInfo)</pre>
<div class="block">Suspend the procedure if the specified set of regions are already locked.</div>
@@ -1256,7 +1262,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
<ul class="blockList">
<li class="blockList">
<h4>wakeRegion</h4>
-<pre>public void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.691">wakeRegion</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> procedure,
+<pre>public void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.690">wakeRegion</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> procedure,
<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo)</pre>
<div class="block">Wake the procedures waiting for the specified region</div>
<dl>
@@ -1272,7 +1278,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
<ul class="blockList">
<li class="blockList">
<h4>wakeRegions</h4>
-<pre>public void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.700">wakeRegions</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> procedure,
+<pre>public void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.699">wakeRegions</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> procedure,
<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> table,
<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>... regionInfo)</pre>
<div class="block">Wake the procedures waiting for the specified regions</div>
@@ -1289,7 +1295,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
<ul class="blockList">
<li class="blockList">
<h4>waitNamespaceExclusiveLock</h4>
-<pre>public boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.747">waitNamespaceExclusiveLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> procedure,
+<pre>public boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.746">waitNamespaceExclusiveLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> procedure,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> namespace)</pre>
<div class="block">Suspend the procedure if the specified namespace is already locked.</div>
<dl>
@@ -1309,7 +1315,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
<ul class="blockList">
<li class="blockList">
<h4>wakeNamespaceExclusiveLock</h4>
-<pre>public void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.778">wakeNamespaceExclusiveLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> procedure,
+<pre>public void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.777">wakeNamespaceExclusiveLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> procedure,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> namespace)</pre>
<div class="block">Wake the procedures waiting for the specified namespace</div>
<dl>
@@ -1327,7 +1333,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
<ul class="blockList">
<li class="blockList">
<h4>waitServerExclusiveLock</h4>
-<pre>public boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.807">waitServerExclusiveLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> procedure,
+<pre>public boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.806">waitServerExclusiveLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> procedure,
<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName)</pre>
<div class="block">Try to acquire the exclusive lock on the specified server.</div>
<dl>
@@ -1347,7 +1353,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
<ul class="blockList">
<li class="blockList">
<h4>wakeServerExclusiveLock</h4>
-<pre>public void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.830">wakeServerExclusiveLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> procedure,
+<pre>public void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.829">wakeServerExclusiveLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> procedure,
<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName)</pre>
<div class="block">Wake the procedures waiting for the specified server</div>
<dl>
@@ -1365,7 +1371,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
<ul class="blockList">
<li class="blockList">
<h4>waitPeerExclusiveLock</h4>
-<pre>public boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.853">waitPeerExclusiveLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> procedure,
+<pre>public boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.852">waitPeerExclusiveLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> procedure,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> peerId)</pre>
<div class="block">Try to acquire the exclusive lock on the specified peer.</div>
<dl>
@@ -1385,7 +1391,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Abstra
<TRUNCATED>
[09/51] [partial] hbase-site git commit: Published site at
9101fc246f86445006bfbcdfda5cc495016dc280.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/src-html/org/apache/hadoop/hbase/master/MasterMetaBootstrap.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/MasterMetaBootstrap.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/MasterMetaBootstrap.html
index e73540e..7b680e9 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/MasterMetaBootstrap.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/MasterMetaBootstrap.html
@@ -28,135 +28,100 @@
<span class="sourceLineNo">020</span><a name="line.20"></a>
<span class="sourceLineNo">021</span>import java.io.IOException;<a name="line.21"></a>
<span class="sourceLineNo">022</span>import java.util.List;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import java.util.Set;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import org.apache.hadoop.hbase.HConstants;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.ServerName;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.client.RegionInfoBuilder;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.client.RegionReplicaUtil;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.master.assignment.AssignmentManager;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.zookeeper.MetaTableLocator;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.zookeeper.KeeperException;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.slf4j.Logger;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.slf4j.LoggerFactory;<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> * Used by the HMaster on startup to split meta logs and assign the meta table.<a name="line.39"></a>
-<span class="sourceLineNo">040</span> */<a name="line.40"></a>
-<span class="sourceLineNo">041</span>@InterfaceAudience.Private<a name="line.41"></a>
-<span class="sourceLineNo">042</span>public class MasterMetaBootstrap {<a name="line.42"></a>
-<span class="sourceLineNo">043</span> private static final Logger LOG = LoggerFactory.getLogger(MasterMetaBootstrap.class);<a name="line.43"></a>
-<span class="sourceLineNo">044</span><a name="line.44"></a>
-<span class="sourceLineNo">045</span> private final HMaster master;<a name="line.45"></a>
-<span class="sourceLineNo">046</span><a name="line.46"></a>
-<span class="sourceLineNo">047</span> public MasterMetaBootstrap(HMaster master) {<a name="line.47"></a>
-<span class="sourceLineNo">048</span> this.master = master;<a name="line.48"></a>
-<span class="sourceLineNo">049</span> }<a name="line.49"></a>
-<span class="sourceLineNo">050</span><a name="line.50"></a>
-<span class="sourceLineNo">051</span> public void recoverMeta() throws InterruptedException, IOException {<a name="line.51"></a>
-<span class="sourceLineNo">052</span> // This is a blocking call that waits until hbase:meta is deployed.<a name="line.52"></a>
-<span class="sourceLineNo">053</span> master.recoverMeta();<a name="line.53"></a>
-<span class="sourceLineNo">054</span> // Now we can start the TableStateManager. It is backed by hbase:meta.<a name="line.54"></a>
-<span class="sourceLineNo">055</span> master.getTableStateManager().start();<a name="line.55"></a>
-<span class="sourceLineNo">056</span> // Enable server crash procedure handling<a name="line.56"></a>
-<span class="sourceLineNo">057</span> enableCrashedServerProcessing();<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> public void processDeadServers() {<a name="line.60"></a>
-<span class="sourceLineNo">061</span> // get a list for previously failed RS which need log splitting work<a name="line.61"></a>
-<span class="sourceLineNo">062</span> // we recover hbase:meta region servers inside master initialization and<a name="line.62"></a>
-<span class="sourceLineNo">063</span> // handle other failed servers in SSH in order to start up master node ASAP<a name="line.63"></a>
-<span class="sourceLineNo">064</span> Set<ServerName> previouslyFailedServers =<a name="line.64"></a>
-<span class="sourceLineNo">065</span> master.getMasterWalManager().getFailedServersFromLogFolders();<a name="line.65"></a>
-<span class="sourceLineNo">066</span><a name="line.66"></a>
-<span class="sourceLineNo">067</span> // Master has recovered hbase:meta region server and we put<a name="line.67"></a>
-<span class="sourceLineNo">068</span> // other failed region servers in a queue to be handled later by SSH<a name="line.68"></a>
-<span class="sourceLineNo">069</span> for (ServerName tmpServer : previouslyFailedServers) {<a name="line.69"></a>
-<span class="sourceLineNo">070</span> master.getServerManager().processDeadServer(tmpServer, true);<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> /**<a name="line.74"></a>
-<span class="sourceLineNo">075</span> * For assigning hbase:meta replicas only.<a name="line.75"></a>
-<span class="sourceLineNo">076</span> * TODO: The way this assign runs, nothing but chance to stop all replicas showing up on same<a name="line.76"></a>
-<span class="sourceLineNo">077</span> * server as the hbase:meta region.<a name="line.77"></a>
-<span class="sourceLineNo">078</span> */<a name="line.78"></a>
-<span class="sourceLineNo">079</span> protected void assignMetaReplicas()<a name="line.79"></a>
-<span class="sourceLineNo">080</span> throws IOException, InterruptedException, KeeperException {<a name="line.80"></a>
-<span class="sourceLineNo">081</span> int numReplicas = master.getConfiguration().getInt(HConstants.META_REPLICAS_NUM,<a name="line.81"></a>
-<span class="sourceLineNo">082</span> HConstants.DEFAULT_META_REPLICA_NUM);<a name="line.82"></a>
-<span class="sourceLineNo">083</span> if (numReplicas <= 1) {<a name="line.83"></a>
-<span class="sourceLineNo">084</span> // No replicaas to assign. Return.<a name="line.84"></a>
-<span class="sourceLineNo">085</span> return;<a name="line.85"></a>
-<span class="sourceLineNo">086</span> }<a name="line.86"></a>
-<span class="sourceLineNo">087</span> final AssignmentManager assignmentManager = master.getAssignmentManager();<a name="line.87"></a>
-<span class="sourceLineNo">088</span> if (!assignmentManager.isMetaInitialized()) {<a name="line.88"></a>
-<span class="sourceLineNo">089</span> throw new IllegalStateException("hbase:meta must be initialized first before we can " +<a name="line.89"></a>
-<span class="sourceLineNo">090</span> "assign out its replicas");<a name="line.90"></a>
-<span class="sourceLineNo">091</span> }<a name="line.91"></a>
-<span class="sourceLineNo">092</span> ServerName metaServername =<a name="line.92"></a>
-<span class="sourceLineNo">093</span> this.master.getMetaTableLocator().getMetaRegionLocation(this.master.getZooKeeper());<a name="line.93"></a>
-<span class="sourceLineNo">094</span> for (int i = 1; i < numReplicas; i++) {<a name="line.94"></a>
-<span class="sourceLineNo">095</span> // Get current meta state for replica from zk.<a name="line.95"></a>
-<span class="sourceLineNo">096</span> RegionState metaState = MetaTableLocator.getMetaRegionState(master.getZooKeeper(), i);<a name="line.96"></a>
-<span class="sourceLineNo">097</span> RegionInfo hri = RegionReplicaUtil.getRegionInfoForReplica(<a name="line.97"></a>
-<span class="sourceLineNo">098</span> RegionInfoBuilder.FIRST_META_REGIONINFO, i);<a name="line.98"></a>
-<span class="sourceLineNo">099</span> LOG.debug(hri.getRegionNameAsString() + " replica region state from zookeeper=" + metaState);<a name="line.99"></a>
-<span class="sourceLineNo">100</span> if (metaServername.equals(metaState.getServerName())) {<a name="line.100"></a>
-<span class="sourceLineNo">101</span> metaState = null;<a name="line.101"></a>
-<span class="sourceLineNo">102</span> LOG.info(hri.getRegionNameAsString() +<a name="line.102"></a>
-<span class="sourceLineNo">103</span> " old location is same as current hbase:meta location; setting location as null...");<a name="line.103"></a>
-<span class="sourceLineNo">104</span> }<a name="line.104"></a>
-<span class="sourceLineNo">105</span> // These assigns run inline. All is blocked till they complete. Only interrupt is shutting<a name="line.105"></a>
-<span class="sourceLineNo">106</span> // down hosting server which calls AM#stop.<a name="line.106"></a>
-<span class="sourceLineNo">107</span> if (metaState != null && metaState.getServerName() != null) {<a name="line.107"></a>
-<span class="sourceLineNo">108</span> // Try to retain old assignment.<a name="line.108"></a>
-<span class="sourceLineNo">109</span> assignmentManager.assign(hri, metaState.getServerName());<a name="line.109"></a>
-<span class="sourceLineNo">110</span> } else {<a name="line.110"></a>
-<span class="sourceLineNo">111</span> assignmentManager.assign(hri);<a name="line.111"></a>
-<span class="sourceLineNo">112</span> }<a name="line.112"></a>
-<span class="sourceLineNo">113</span> }<a name="line.113"></a>
-<span class="sourceLineNo">114</span> unassignExcessMetaReplica(numReplicas);<a name="line.114"></a>
+<span class="sourceLineNo">023</span>import org.apache.hadoop.hbase.HConstants;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import org.apache.hadoop.hbase.ServerName;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.client.RegionInfoBuilder;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.client.RegionReplicaUtil;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.master.assignment.AssignmentManager;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.zookeeper.MetaTableLocator;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.zookeeper.KeeperException;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.slf4j.Logger;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.slf4j.LoggerFactory;<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> * Used by the HMaster on startup to split meta logs and assign the meta table.<a name="line.38"></a>
+<span class="sourceLineNo">039</span> */<a name="line.39"></a>
+<span class="sourceLineNo">040</span>@InterfaceAudience.Private<a name="line.40"></a>
+<span class="sourceLineNo">041</span>class MasterMetaBootstrap {<a name="line.41"></a>
+<span class="sourceLineNo">042</span> private static final Logger LOG = LoggerFactory.getLogger(MasterMetaBootstrap.class);<a name="line.42"></a>
+<span class="sourceLineNo">043</span><a name="line.43"></a>
+<span class="sourceLineNo">044</span> private final HMaster master;<a name="line.44"></a>
+<span class="sourceLineNo">045</span><a name="line.45"></a>
+<span class="sourceLineNo">046</span> public MasterMetaBootstrap(HMaster master) {<a name="line.46"></a>
+<span class="sourceLineNo">047</span> this.master = master;<a name="line.47"></a>
+<span class="sourceLineNo">048</span> }<a name="line.48"></a>
+<span class="sourceLineNo">049</span><a name="line.49"></a>
+<span class="sourceLineNo">050</span> /**<a name="line.50"></a>
+<span class="sourceLineNo">051</span> * For assigning hbase:meta replicas only.<a name="line.51"></a>
+<span class="sourceLineNo">052</span> * TODO: The way this assign runs, nothing but chance to stop all replicas showing up on same<a name="line.52"></a>
+<span class="sourceLineNo">053</span> * server as the hbase:meta region.<a name="line.53"></a>
+<span class="sourceLineNo">054</span> */<a name="line.54"></a>
+<span class="sourceLineNo">055</span> void assignMetaReplicas()<a name="line.55"></a>
+<span class="sourceLineNo">056</span> throws IOException, InterruptedException, KeeperException {<a name="line.56"></a>
+<span class="sourceLineNo">057</span> int numReplicas = master.getConfiguration().getInt(HConstants.META_REPLICAS_NUM,<a name="line.57"></a>
+<span class="sourceLineNo">058</span> HConstants.DEFAULT_META_REPLICA_NUM);<a name="line.58"></a>
+<span class="sourceLineNo">059</span> if (numReplicas <= 1) {<a name="line.59"></a>
+<span class="sourceLineNo">060</span> // No replicaas to assign. Return.<a name="line.60"></a>
+<span class="sourceLineNo">061</span> return;<a name="line.61"></a>
+<span class="sourceLineNo">062</span> }<a name="line.62"></a>
+<span class="sourceLineNo">063</span> final AssignmentManager assignmentManager = master.getAssignmentManager();<a name="line.63"></a>
+<span class="sourceLineNo">064</span> if (!assignmentManager.isMetaLoaded()) {<a name="line.64"></a>
+<span class="sourceLineNo">065</span> throw new IllegalStateException("hbase:meta must be initialized first before we can " +<a name="line.65"></a>
+<span class="sourceLineNo">066</span> "assign out its replicas");<a name="line.66"></a>
+<span class="sourceLineNo">067</span> }<a name="line.67"></a>
+<span class="sourceLineNo">068</span> ServerName metaServername =<a name="line.68"></a>
+<span class="sourceLineNo">069</span> this.master.getMetaTableLocator().getMetaRegionLocation(this.master.getZooKeeper());<a name="line.69"></a>
+<span class="sourceLineNo">070</span> for (int i = 1; i < numReplicas; i++) {<a name="line.70"></a>
+<span class="sourceLineNo">071</span> // Get current meta state for replica from zk.<a name="line.71"></a>
+<span class="sourceLineNo">072</span> RegionState metaState = MetaTableLocator.getMetaRegionState(master.getZooKeeper(), i);<a name="line.72"></a>
+<span class="sourceLineNo">073</span> RegionInfo hri = RegionReplicaUtil.getRegionInfoForReplica(<a name="line.73"></a>
+<span class="sourceLineNo">074</span> RegionInfoBuilder.FIRST_META_REGIONINFO, i);<a name="line.74"></a>
+<span class="sourceLineNo">075</span> LOG.debug(hri.getRegionNameAsString() + " replica region state from zookeeper=" + metaState);<a name="line.75"></a>
+<span class="sourceLineNo">076</span> if (metaServername.equals(metaState.getServerName())) {<a name="line.76"></a>
+<span class="sourceLineNo">077</span> metaState = null;<a name="line.77"></a>
+<span class="sourceLineNo">078</span> LOG.info(hri.getRegionNameAsString() +<a name="line.78"></a>
+<span class="sourceLineNo">079</span> " old location is same as current hbase:meta location; setting location as null...");<a name="line.79"></a>
+<span class="sourceLineNo">080</span> }<a name="line.80"></a>
+<span class="sourceLineNo">081</span> // These assigns run inline. All is blocked till they complete. Only interrupt is shutting<a name="line.81"></a>
+<span class="sourceLineNo">082</span> // down hosting server which calls AM#stop.<a name="line.82"></a>
+<span class="sourceLineNo">083</span> if (metaState != null && metaState.getServerName() != null) {<a name="line.83"></a>
+<span class="sourceLineNo">084</span> // Try to retain old assignment.<a name="line.84"></a>
+<span class="sourceLineNo">085</span> assignmentManager.assign(hri, metaState.getServerName());<a name="line.85"></a>
+<span class="sourceLineNo">086</span> } else {<a name="line.86"></a>
+<span class="sourceLineNo">087</span> assignmentManager.assign(hri);<a name="line.87"></a>
+<span class="sourceLineNo">088</span> }<a name="line.88"></a>
+<span class="sourceLineNo">089</span> }<a name="line.89"></a>
+<span class="sourceLineNo">090</span> unassignExcessMetaReplica(numReplicas);<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> private void unassignExcessMetaReplica(int numMetaReplicasConfigured) {<a name="line.93"></a>
+<span class="sourceLineNo">094</span> final ZKWatcher zooKeeper = master.getZooKeeper();<a name="line.94"></a>
+<span class="sourceLineNo">095</span> // unassign the unneeded replicas (for e.g., if the previous master was configured<a name="line.95"></a>
+<span class="sourceLineNo">096</span> // with a replication of 3 and now it is 2, we need to unassign the 1 unneeded replica)<a name="line.96"></a>
+<span class="sourceLineNo">097</span> try {<a name="line.97"></a>
+<span class="sourceLineNo">098</span> List<String> metaReplicaZnodes = zooKeeper.getMetaReplicaNodes();<a name="line.98"></a>
+<span class="sourceLineNo">099</span> for (String metaReplicaZnode : metaReplicaZnodes) {<a name="line.99"></a>
+<span class="sourceLineNo">100</span> int replicaId = zooKeeper.getZNodePaths().getMetaReplicaIdFromZnode(metaReplicaZnode);<a name="line.100"></a>
+<span class="sourceLineNo">101</span> if (replicaId >= numMetaReplicasConfigured) {<a name="line.101"></a>
+<span class="sourceLineNo">102</span> RegionState r = MetaTableLocator.getMetaRegionState(zooKeeper, replicaId);<a name="line.102"></a>
+<span class="sourceLineNo">103</span> LOG.info("Closing excess replica of meta region " + r.getRegion());<a name="line.103"></a>
+<span class="sourceLineNo">104</span> // send a close and wait for a max of 30 seconds<a name="line.104"></a>
+<span class="sourceLineNo">105</span> ServerManager.closeRegionSilentlyAndWait(master.getClusterConnection(),<a name="line.105"></a>
+<span class="sourceLineNo">106</span> r.getServerName(), r.getRegion(), 30000);<a name="line.106"></a>
+<span class="sourceLineNo">107</span> ZKUtil.deleteNode(zooKeeper, zooKeeper.getZNodePaths().getZNodeForReplica(replicaId));<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> } catch (Exception ex) {<a name="line.110"></a>
+<span class="sourceLineNo">111</span> // ignore the exception since we don't want the master to be wedged due to potential<a name="line.111"></a>
+<span class="sourceLineNo">112</span> // issues in the cleanup of the extra regions. We can do that cleanup via hbck or manually<a name="line.112"></a>
+<span class="sourceLineNo">113</span> LOG.warn("Ignoring exception " + ex);<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><a name="line.116"></a>
-<span class="sourceLineNo">117</span> private void unassignExcessMetaReplica(int numMetaReplicasConfigured) {<a name="line.117"></a>
-<span class="sourceLineNo">118</span> final ZKWatcher zooKeeper = master.getZooKeeper();<a name="line.118"></a>
-<span class="sourceLineNo">119</span> // unassign the unneeded replicas (for e.g., if the previous master was configured<a name="line.119"></a>
-<span class="sourceLineNo">120</span> // with a replication of 3 and now it is 2, we need to unassign the 1 unneeded replica)<a name="line.120"></a>
-<span class="sourceLineNo">121</span> try {<a name="line.121"></a>
-<span class="sourceLineNo">122</span> List<String> metaReplicaZnodes = zooKeeper.getMetaReplicaNodes();<a name="line.122"></a>
-<span class="sourceLineNo">123</span> for (String metaReplicaZnode : metaReplicaZnodes) {<a name="line.123"></a>
-<span class="sourceLineNo">124</span> int replicaId = zooKeeper.getZNodePaths().getMetaReplicaIdFromZnode(metaReplicaZnode);<a name="line.124"></a>
-<span class="sourceLineNo">125</span> if (replicaId >= numMetaReplicasConfigured) {<a name="line.125"></a>
-<span class="sourceLineNo">126</span> RegionState r = MetaTableLocator.getMetaRegionState(zooKeeper, replicaId);<a name="line.126"></a>
-<span class="sourceLineNo">127</span> LOG.info("Closing excess replica of meta region " + r.getRegion());<a name="line.127"></a>
-<span class="sourceLineNo">128</span> // send a close and wait for a max of 30 seconds<a name="line.128"></a>
-<span class="sourceLineNo">129</span> ServerManager.closeRegionSilentlyAndWait(master.getClusterConnection(),<a name="line.129"></a>
-<span class="sourceLineNo">130</span> r.getServerName(), r.getRegion(), 30000);<a name="line.130"></a>
-<span class="sourceLineNo">131</span> ZKUtil.deleteNode(zooKeeper, zooKeeper.getZNodePaths().getZNodeForReplica(replicaId));<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> } catch (Exception ex) {<a name="line.134"></a>
-<span class="sourceLineNo">135</span> // ignore the exception since we don't want the master to be wedged due to potential<a name="line.135"></a>
-<span class="sourceLineNo">136</span> // issues in the cleanup of the extra regions. We can do that cleanup via hbck or manually<a name="line.136"></a>
-<span class="sourceLineNo">137</span> LOG.warn("Ignoring exception " + ex);<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><a name="line.140"></a>
-<span class="sourceLineNo">141</span> private void enableCrashedServerProcessing() throws InterruptedException {<a name="line.141"></a>
-<span class="sourceLineNo">142</span> // If crashed server processing is disabled, we enable it and expire those dead but not expired<a name="line.142"></a>
-<span class="sourceLineNo">143</span> // servers. This is required so that if meta is assigning to a server which dies after<a name="line.143"></a>
-<span class="sourceLineNo">144</span> // assignMeta starts assignment, ServerCrashProcedure can re-assign it. Otherwise, we will be<a name="line.144"></a>
-<span class="sourceLineNo">145</span> // stuck here waiting forever if waitForMeta is specified.<a name="line.145"></a>
-<span class="sourceLineNo">146</span> if (!master.isServerCrashProcessingEnabled()) {<a name="line.146"></a>
-<span class="sourceLineNo">147</span> master.setServerCrashProcessingEnabled(true);<a name="line.147"></a>
-<span class="sourceLineNo">148</span> master.getServerManager().processQueuedDeadServers();<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>}<a name="line.151"></a>
+<span class="sourceLineNo">116</span>}<a name="line.116"></a>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/src-html/org/apache/hadoop/hbase/master/MasterServices.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/MasterServices.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/MasterServices.html
index 23d8d73..76cc763 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/MasterServices.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/MasterServices.html
@@ -329,193 +329,181 @@
<span class="sourceLineNo">321</span> TableDescriptors getTableDescriptors();<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> * @return true if master enables ServerShutdownHandler;<a name="line.324"></a>
-<span class="sourceLineNo">325</span> */<a name="line.325"></a>
-<span class="sourceLineNo">326</span> boolean isServerCrashProcessingEnabled();<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> * Registers a new protocol buffer {@link Service} subclass as a master coprocessor endpoint.<a name="line.329"></a>
-<span class="sourceLineNo">330</span> *<a name="line.330"></a>
-<span class="sourceLineNo">331</span> * <p><a name="line.331"></a>
-<span class="sourceLineNo">332</span> * Only a single instance may be registered for a given {@link Service} subclass (the<a name="line.332"></a>
-<span class="sourceLineNo">333</span> * instances are keyed on {@link com.google.protobuf.Descriptors.ServiceDescriptor#getFullName()}.<a name="line.333"></a>
-<span class="sourceLineNo">334</span> * After the first registration, subsequent calls with the same service name will fail with<a name="line.334"></a>
-<span class="sourceLineNo">335</span> * a return value of {@code false}.<a name="line.335"></a>
-<span class="sourceLineNo">336</span> * </p><a name="line.336"></a>
-<span class="sourceLineNo">337</span> * @param instance the {@code Service} subclass instance to expose as a coprocessor endpoint<a name="line.337"></a>
-<span class="sourceLineNo">338</span> * @return {@code true} if the registration was successful, {@code false}<a name="line.338"></a>
-<span class="sourceLineNo">339</span> * otherwise<a name="line.339"></a>
+<span class="sourceLineNo">324</span> * Registers a new protocol buffer {@link Service} subclass as a master coprocessor endpoint.<a name="line.324"></a>
+<span class="sourceLineNo">325</span> *<a name="line.325"></a>
+<span class="sourceLineNo">326</span> * <p><a name="line.326"></a>
+<span class="sourceLineNo">327</span> * Only a single instance may be registered for a given {@link Service} subclass (the<a name="line.327"></a>
+<span class="sourceLineNo">328</span> * instances are keyed on {@link com.google.protobuf.Descriptors.ServiceDescriptor#getFullName()}.<a name="line.328"></a>
+<span class="sourceLineNo">329</span> * After the first registration, subsequent calls with the same service name will fail with<a name="line.329"></a>
+<span class="sourceLineNo">330</span> * a return value of {@code false}.<a name="line.330"></a>
+<span class="sourceLineNo">331</span> * </p><a name="line.331"></a>
+<span class="sourceLineNo">332</span> * @param instance the {@code Service} subclass instance to expose as a coprocessor endpoint<a name="line.332"></a>
+<span class="sourceLineNo">333</span> * @return {@code true} if the registration was successful, {@code false}<a name="line.333"></a>
+<span class="sourceLineNo">334</span> * otherwise<a name="line.334"></a>
+<span class="sourceLineNo">335</span> */<a name="line.335"></a>
+<span class="sourceLineNo">336</span> boolean registerService(Service instance);<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> * @return true if master is the active one<a name="line.339"></a>
<span class="sourceLineNo">340</span> */<a name="line.340"></a>
-<span class="sourceLineNo">341</span> boolean registerService(Service instance);<a name="line.341"></a>
+<span class="sourceLineNo">341</span> boolean isActiveMaster();<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> * @return true if master is the active one<a name="line.344"></a>
+<span class="sourceLineNo">344</span> * @return true if master is initialized<a name="line.344"></a>
<span class="sourceLineNo">345</span> */<a name="line.345"></a>
-<span class="sourceLineNo">346</span> boolean isActiveMaster();<a name="line.346"></a>
+<span class="sourceLineNo">346</span> boolean isInitialized();<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 true if master is initialized<a name="line.349"></a>
-<span class="sourceLineNo">350</span> */<a name="line.350"></a>
-<span class="sourceLineNo">351</span> boolean isInitialized();<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> * @return true if master is in maintanceMode<a name="line.354"></a>
-<span class="sourceLineNo">355</span> * @throws IOException if the inquiry failed due to an IO problem<a name="line.355"></a>
-<span class="sourceLineNo">356</span> */<a name="line.356"></a>
-<span class="sourceLineNo">357</span> boolean isInMaintenanceMode() throws IOException;<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> * Abort a procedure.<a name="line.360"></a>
-<span class="sourceLineNo">361</span> * @param procId ID of the procedure<a name="line.361"></a>
-<span class="sourceLineNo">362</span> * @param mayInterruptIfRunning if the proc completed at least one step, should it be aborted?<a name="line.362"></a>
-<span class="sourceLineNo">363</span> * @return true if aborted, false if procedure already completed or does not exist<a name="line.363"></a>
-<span class="sourceLineNo">364</span> * @throws IOException<a name="line.364"></a>
-<span class="sourceLineNo">365</span> */<a name="line.365"></a>
-<span class="sourceLineNo">366</span> public boolean abortProcedure(final long procId, final boolean mayInterruptIfRunning)<a name="line.366"></a>
-<span class="sourceLineNo">367</span> throws IOException;<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> * Get procedures<a name="line.370"></a>
-<span class="sourceLineNo">371</span> * @return procedure list<a name="line.371"></a>
-<span class="sourceLineNo">372</span> * @throws IOException<a name="line.372"></a>
-<span class="sourceLineNo">373</span> */<a name="line.373"></a>
-<span class="sourceLineNo">374</span> public List<Procedure<?>> getProcedures() throws IOException;<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> * Get locks<a name="line.377"></a>
-<span class="sourceLineNo">378</span> * @return lock list<a name="line.378"></a>
-<span class="sourceLineNo">379</span> * @throws IOException<a name="line.379"></a>
-<span class="sourceLineNo">380</span> */<a name="line.380"></a>
-<span class="sourceLineNo">381</span> public List<LockedResource> getLocks() throws IOException;<a name="line.381"></a>
-<span class="sourceLineNo">382</span><a name="line.382"></a>
-<span class="sourceLineNo">383</span> /**<a name="line.383"></a>
-<span class="sourceLineNo">384</span> * Get list of table descriptors by namespace<a name="line.384"></a>
-<span class="sourceLineNo">385</span> * @param name namespace name<a name="line.385"></a>
-<span class="sourceLineNo">386</span> * @return descriptors<a name="line.386"></a>
-<span class="sourceLineNo">387</span> * @throws IOException<a name="line.387"></a>
-<span class="sourceLineNo">388</span> */<a name="line.388"></a>
-<span class="sourceLineNo">389</span> public List<TableDescriptor> listTableDescriptorsByNamespace(String name) throws IOException;<a name="line.389"></a>
-<span class="sourceLineNo">390</span><a name="line.390"></a>
-<span class="sourceLineNo">391</span> /**<a name="line.391"></a>
-<span class="sourceLineNo">392</span> * Get list of table names by namespace<a name="line.392"></a>
-<span class="sourceLineNo">393</span> * @param name namespace name<a name="line.393"></a>
-<span class="sourceLineNo">394</span> * @return table names<a name="line.394"></a>
-<span class="sourceLineNo">395</span> * @throws IOException<a name="line.395"></a>
-<span class="sourceLineNo">396</span> */<a name="line.396"></a>
-<span class="sourceLineNo">397</span> public List<TableName> listTableNamesByNamespace(String name) throws IOException;<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> * @param table the table for which last successful major compaction time is queried<a name="line.400"></a>
-<span class="sourceLineNo">401</span> * @return the timestamp of the last successful major compaction for the passed table,<a name="line.401"></a>
-<span class="sourceLineNo">402</span> * or 0 if no HFile resulting from a major compaction exists<a name="line.402"></a>
-<span class="sourceLineNo">403</span> * @throws IOException<a name="line.403"></a>
-<span class="sourceLineNo">404</span> */<a name="line.404"></a>
-<span class="sourceLineNo">405</span> public long getLastMajorCompactionTimestamp(TableName table) throws IOException;<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> * @param regionName<a name="line.408"></a>
-<span class="sourceLineNo">409</span> * @return the timestamp of the last successful major compaction for the passed region<a name="line.409"></a>
-<span class="sourceLineNo">410</span> * or 0 if no HFile resulting from a major compaction exists<a name="line.410"></a>
-<span class="sourceLineNo">411</span> * @throws IOException<a name="line.411"></a>
+<span class="sourceLineNo">349</span> * @return true if master is in maintanceMode<a name="line.349"></a>
+<span class="sourceLineNo">350</span> * @throws IOException if the inquiry failed due to an IO problem<a name="line.350"></a>
+<span class="sourceLineNo">351</span> */<a name="line.351"></a>
+<span class="sourceLineNo">352</span> boolean isInMaintenanceMode() throws IOException;<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> * Abort a procedure.<a name="line.355"></a>
+<span class="sourceLineNo">356</span> * @param procId ID of the procedure<a name="line.356"></a>
+<span class="sourceLineNo">357</span> * @param mayInterruptIfRunning if the proc completed at least one step, should it be aborted?<a name="line.357"></a>
+<span class="sourceLineNo">358</span> * @return true if aborted, false if procedure already completed or does not exist<a name="line.358"></a>
+<span class="sourceLineNo">359</span> * @throws IOException<a name="line.359"></a>
+<span class="sourceLineNo">360</span> */<a name="line.360"></a>
+<span class="sourceLineNo">361</span> public boolean abortProcedure(final long procId, final boolean mayInterruptIfRunning)<a name="line.361"></a>
+<span class="sourceLineNo">362</span> throws IOException;<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> * Get procedures<a name="line.365"></a>
+<span class="sourceLineNo">366</span> * @return procedure list<a name="line.366"></a>
+<span class="sourceLineNo">367</span> * @throws IOException<a name="line.367"></a>
+<span class="sourceLineNo">368</span> */<a name="line.368"></a>
+<span class="sourceLineNo">369</span> public List<Procedure<?>> getProcedures() throws IOException;<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> * Get locks<a name="line.372"></a>
+<span class="sourceLineNo">373</span> * @return lock list<a name="line.373"></a>
+<span class="sourceLineNo">374</span> * @throws IOException<a name="line.374"></a>
+<span class="sourceLineNo">375</span> */<a name="line.375"></a>
+<span class="sourceLineNo">376</span> public List<LockedResource> getLocks() throws IOException;<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> * Get list of table descriptors by namespace<a name="line.379"></a>
+<span class="sourceLineNo">380</span> * @param name namespace name<a name="line.380"></a>
+<span class="sourceLineNo">381</span> * @return descriptors<a name="line.381"></a>
+<span class="sourceLineNo">382</span> * @throws IOException<a name="line.382"></a>
+<span class="sourceLineNo">383</span> */<a name="line.383"></a>
+<span class="sourceLineNo">384</span> public List<TableDescriptor> listTableDescriptorsByNamespace(String name) throws IOException;<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> * Get list of table names by namespace<a name="line.387"></a>
+<span class="sourceLineNo">388</span> * @param name namespace name<a name="line.388"></a>
+<span class="sourceLineNo">389</span> * @return table names<a name="line.389"></a>
+<span class="sourceLineNo">390</span> * @throws IOException<a name="line.390"></a>
+<span class="sourceLineNo">391</span> */<a name="line.391"></a>
+<span class="sourceLineNo">392</span> public List<TableName> listTableNamesByNamespace(String name) throws IOException;<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> * @param table the table for which last successful major compaction time is queried<a name="line.395"></a>
+<span class="sourceLineNo">396</span> * @return the timestamp of the last successful major compaction for the passed table,<a name="line.396"></a>
+<span class="sourceLineNo">397</span> * or 0 if no HFile resulting from a major compaction exists<a name="line.397"></a>
+<span class="sourceLineNo">398</span> * @throws IOException<a name="line.398"></a>
+<span class="sourceLineNo">399</span> */<a name="line.399"></a>
+<span class="sourceLineNo">400</span> public long getLastMajorCompactionTimestamp(TableName table) throws IOException;<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> * @param regionName<a name="line.403"></a>
+<span class="sourceLineNo">404</span> * @return the timestamp of the last successful major compaction for the passed region<a name="line.404"></a>
+<span class="sourceLineNo">405</span> * or 0 if no HFile resulting from a major compaction exists<a name="line.405"></a>
+<span class="sourceLineNo">406</span> * @throws IOException<a name="line.406"></a>
+<span class="sourceLineNo">407</span> */<a name="line.407"></a>
+<span class="sourceLineNo">408</span> public long getLastMajorCompactionTimestampForRegion(byte[] regionName) throws IOException;<a name="line.408"></a>
+<span class="sourceLineNo">409</span><a name="line.409"></a>
+<span class="sourceLineNo">410</span> /**<a name="line.410"></a>
+<span class="sourceLineNo">411</span> * @return load balancer<a name="line.411"></a>
<span class="sourceLineNo">412</span> */<a name="line.412"></a>
-<span class="sourceLineNo">413</span> public long getLastMajorCompactionTimestampForRegion(byte[] regionName) throws IOException;<a name="line.413"></a>
+<span class="sourceLineNo">413</span> public LoadBalancer getLoadBalancer();<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> * @return load balancer<a name="line.416"></a>
-<span class="sourceLineNo">417</span> */<a name="line.417"></a>
-<span class="sourceLineNo">418</span> public LoadBalancer getLoadBalancer();<a name="line.418"></a>
-<span class="sourceLineNo">419</span><a name="line.419"></a>
-<span class="sourceLineNo">420</span> boolean isSplitOrMergeEnabled(MasterSwitchType switchType);<a name="line.420"></a>
+<span class="sourceLineNo">415</span> boolean isSplitOrMergeEnabled(MasterSwitchType switchType);<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> * @return Favored Nodes Manager<a name="line.418"></a>
+<span class="sourceLineNo">419</span> */<a name="line.419"></a>
+<span class="sourceLineNo">420</span> public FavoredNodesManager getFavoredNodesManager();<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> * @return Favored Nodes Manager<a name="line.423"></a>
-<span class="sourceLineNo">424</span> */<a name="line.424"></a>
-<span class="sourceLineNo">425</span> public FavoredNodesManager getFavoredNodesManager();<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> * Add a new replication peer for replicating data to slave cluster<a name="line.428"></a>
-<span class="sourceLineNo">429</span> * @param peerId a short name that identifies the peer<a name="line.429"></a>
-<span class="sourceLineNo">430</span> * @param peerConfig configuration for the replication slave cluster<a name="line.430"></a>
-<span class="sourceLineNo">431</span> * @param enabled peer state, true if ENABLED and false if DISABLED<a name="line.431"></a>
-<span class="sourceLineNo">432</span> */<a name="line.432"></a>
-<span class="sourceLineNo">433</span> long addReplicationPeer(String peerId, ReplicationPeerConfig peerConfig, boolean enabled)<a name="line.433"></a>
-<span class="sourceLineNo">434</span> throws ReplicationException, IOException;<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> * Removes a peer and stops the replication<a name="line.437"></a>
-<span class="sourceLineNo">438</span> * @param peerId a short name that identifies the peer<a name="line.438"></a>
-<span class="sourceLineNo">439</span> */<a name="line.439"></a>
-<span class="sourceLineNo">440</span> long removeReplicationPeer(String peerId) throws ReplicationException, IOException;<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> * Restart the replication stream to the specified peer<a name="line.443"></a>
-<span class="sourceLineNo">444</span> * @param peerId a short name that identifies the peer<a name="line.444"></a>
-<span class="sourceLineNo">445</span> */<a name="line.445"></a>
-<span class="sourceLineNo">446</span> long enableReplicationPeer(String peerId) throws ReplicationException, IOException;<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> * Stop the replication stream to the specified peer<a name="line.449"></a>
-<span class="sourceLineNo">450</span> * @param peerId a short name that identifies the peer<a name="line.450"></a>
-<span class="sourceLineNo">451</span> */<a name="line.451"></a>
-<span class="sourceLineNo">452</span> long disableReplicationPeer(String peerId) throws ReplicationException, IOException;<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> * Returns the configured ReplicationPeerConfig for the specified peer<a name="line.455"></a>
-<span class="sourceLineNo">456</span> * @param peerId a short name that identifies the peer<a name="line.456"></a>
-<span class="sourceLineNo">457</span> * @return ReplicationPeerConfig for the peer<a name="line.457"></a>
-<span class="sourceLineNo">458</span> */<a name="line.458"></a>
-<span class="sourceLineNo">459</span> ReplicationPeerConfig getReplicationPeerConfig(String peerId) throws ReplicationException,<a name="line.459"></a>
-<span class="sourceLineNo">460</span> IOException;<a name="line.460"></a>
+<span class="sourceLineNo">423</span> * Add a new replication peer for replicating data to slave cluster<a name="line.423"></a>
+<span class="sourceLineNo">424</span> * @param peerId a short name that identifies the peer<a name="line.424"></a>
+<span class="sourceLineNo">425</span> * @param peerConfig configuration for the replication slave cluster<a name="line.425"></a>
+<span class="sourceLineNo">426</span> * @param enabled peer state, true if ENABLED and false if DISABLED<a name="line.426"></a>
+<span class="sourceLineNo">427</span> */<a name="line.427"></a>
+<span class="sourceLineNo">428</span> long addReplicationPeer(String peerId, ReplicationPeerConfig peerConfig, boolean enabled)<a name="line.428"></a>
+<span class="sourceLineNo">429</span> throws ReplicationException, IOException;<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> * Removes a peer and stops the replication<a name="line.432"></a>
+<span class="sourceLineNo">433</span> * @param peerId a short name that identifies the peer<a name="line.433"></a>
+<span class="sourceLineNo">434</span> */<a name="line.434"></a>
+<span class="sourceLineNo">435</span> long removeReplicationPeer(String peerId) throws ReplicationException, IOException;<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> * Restart the replication stream to the specified peer<a name="line.438"></a>
+<span class="sourceLineNo">439</span> * @param peerId a short name that identifies the peer<a name="line.439"></a>
+<span class="sourceLineNo">440</span> */<a name="line.440"></a>
+<span class="sourceLineNo">441</span> long enableReplicationPeer(String peerId) throws ReplicationException, IOException;<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> * Stop the replication stream to the specified peer<a name="line.444"></a>
+<span class="sourceLineNo">445</span> * @param peerId a short name that identifies the peer<a name="line.445"></a>
+<span class="sourceLineNo">446</span> */<a name="line.446"></a>
+<span class="sourceLineNo">447</span> long disableReplicationPeer(String peerId) throws ReplicationException, IOException;<a name="line.447"></a>
+<span class="sourceLineNo">448</span><a name="line.448"></a>
+<span class="sourceLineNo">449</span> /**<a name="line.449"></a>
+<span class="sourceLineNo">450</span> * Returns the configured ReplicationPeerConfig for the specified peer<a name="line.450"></a>
+<span class="sourceLineNo">451</span> * @param peerId a short name that identifies the peer<a name="line.451"></a>
+<span class="sourceLineNo">452</span> * @return ReplicationPeerConfig for the peer<a name="line.452"></a>
+<span class="sourceLineNo">453</span> */<a name="line.453"></a>
+<span class="sourceLineNo">454</span> ReplicationPeerConfig getReplicationPeerConfig(String peerId) throws ReplicationException,<a name="line.454"></a>
+<span class="sourceLineNo">455</span> IOException;<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> * Returns the {@link ReplicationPeerManager}.<a name="line.458"></a>
+<span class="sourceLineNo">459</span> */<a name="line.459"></a>
+<span class="sourceLineNo">460</span> ReplicationPeerManager getReplicationPeerManager();<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> * Returns the {@link ReplicationPeerManager}.<a name="line.463"></a>
-<span class="sourceLineNo">464</span> */<a name="line.464"></a>
-<span class="sourceLineNo">465</span> ReplicationPeerManager getReplicationPeerManager();<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> * Update the peerConfig for the specified peer<a name="line.468"></a>
-<span class="sourceLineNo">469</span> * @param peerId a short name that identifies the peer<a name="line.469"></a>
-<span class="sourceLineNo">470</span> * @param peerConfig new config for the peer<a name="line.470"></a>
-<span class="sourceLineNo">471</span> */<a name="line.471"></a>
-<span class="sourceLineNo">472</span> long updateReplicationPeerConfig(String peerId, ReplicationPeerConfig peerConfig)<a name="line.472"></a>
-<span class="sourceLineNo">473</span> throws ReplicationException, IOException;<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> * Return a list of replication peers.<a name="line.476"></a>
-<span class="sourceLineNo">477</span> * @param regex The regular expression to match peer id<a name="line.477"></a>
-<span class="sourceLineNo">478</span> * @return a list of replication peers description<a name="line.478"></a>
-<span class="sourceLineNo">479</span> */<a name="line.479"></a>
-<span class="sourceLineNo">480</span> List<ReplicationPeerDescription> listReplicationPeers(String regex) throws ReplicationException,<a name="line.480"></a>
-<span class="sourceLineNo">481</span> IOException;<a name="line.481"></a>
+<span class="sourceLineNo">463</span> * Update the peerConfig for the specified peer<a name="line.463"></a>
+<span class="sourceLineNo">464</span> * @param peerId a short name that identifies the peer<a name="line.464"></a>
+<span class="sourceLineNo">465</span> * @param peerConfig new config for the peer<a name="line.465"></a>
+<span class="sourceLineNo">466</span> */<a name="line.466"></a>
+<span class="sourceLineNo">467</span> long updateReplicationPeerConfig(String peerId, ReplicationPeerConfig peerConfig)<a name="line.467"></a>
+<span class="sourceLineNo">468</span> throws ReplicationException, IOException;<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> * Return a list of replication peers.<a name="line.471"></a>
+<span class="sourceLineNo">472</span> * @param regex The regular expression to match peer id<a name="line.472"></a>
+<span class="sourceLineNo">473</span> * @return a list of replication peers description<a name="line.473"></a>
+<span class="sourceLineNo">474</span> */<a name="line.474"></a>
+<span class="sourceLineNo">475</span> List<ReplicationPeerDescription> listReplicationPeers(String regex) throws ReplicationException,<a name="line.475"></a>
+<span class="sourceLineNo">476</span> IOException;<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> * @return {@link LockManager} to lock namespaces/tables/regions.<a name="line.479"></a>
+<span class="sourceLineNo">480</span> */<a name="line.480"></a>
+<span class="sourceLineNo">481</span> LockManager getLockManager();<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> * @return {@link LockManager} to lock namespaces/tables/regions.<a name="line.484"></a>
-<span class="sourceLineNo">485</span> */<a name="line.485"></a>
-<span class="sourceLineNo">486</span> LockManager getLockManager();<a name="line.486"></a>
-<span class="sourceLineNo">487</span><a name="line.487"></a>
-<span class="sourceLineNo">488</span> public String getRegionServerVersion(final ServerName sn);<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> * Called when a new RegionServer is added to the cluster.<a name="line.491"></a>
-<span class="sourceLineNo">492</span> * Checks if new server has a newer version than any existing server and will move system tables<a name="line.492"></a>
-<span class="sourceLineNo">493</span> * there if so.<a name="line.493"></a>
-<span class="sourceLineNo">494</span> */<a name="line.494"></a>
-<span class="sourceLineNo">495</span> public void checkIfShouldMoveSystemRegionAsync();<a name="line.495"></a>
-<span class="sourceLineNo">496</span><a name="line.496"></a>
-<span class="sourceLineNo">497</span> /**<a name="line.497"></a>
-<span class="sourceLineNo">498</span> * Recover meta table. Will result in no-op is meta is already initialized. Any code that has<a name="line.498"></a>
-<span class="sourceLineNo">499</span> * access to master and requires to access meta during process initialization can call this<a name="line.499"></a>
-<span class="sourceLineNo">500</span> * method to make sure meta is initialized.<a name="line.500"></a>
-<span class="sourceLineNo">501</span> */<a name="line.501"></a>
-<span class="sourceLineNo">502</span> boolean recoverMeta() throws IOException;<a name="line.502"></a>
-<span class="sourceLineNo">503</span><a name="line.503"></a>
-<span class="sourceLineNo">504</span> String getClientIdAuditPrefix();<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> * @return True if cluster is up; false if cluster is not up (we are shutting down).<a name="line.507"></a>
-<span class="sourceLineNo">508</span> */<a name="line.508"></a>
-<span class="sourceLineNo">509</span> boolean isClusterUp();<a name="line.509"></a>
-<span class="sourceLineNo">510</span>}<a name="line.510"></a>
+<span class="sourceLineNo">483</span> public String getRegionServerVersion(final ServerName sn);<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> * Called when a new RegionServer is added to the cluster.<a name="line.486"></a>
+<span class="sourceLineNo">487</span> * Checks if new server has a newer version than any existing server and will move system tables<a name="line.487"></a>
+<span class="sourceLineNo">488</span> * there if so.<a name="line.488"></a>
+<span class="sourceLineNo">489</span> */<a name="line.489"></a>
+<span class="sourceLineNo">490</span> public void checkIfShouldMoveSystemRegionAsync();<a name="line.490"></a>
+<span class="sourceLineNo">491</span><a name="line.491"></a>
+<span class="sourceLineNo">492</span> String getClientIdAuditPrefix();<a name="line.492"></a>
+<span class="sourceLineNo">493</span><a name="line.493"></a>
+<span class="sourceLineNo">494</span> /**<a name="line.494"></a>
+<span class="sourceLineNo">495</span> * @return True if cluster is up; false if cluster is not up (we are shutting down).<a name="line.495"></a>
+<span class="sourceLineNo">496</span> */<a name="line.496"></a>
+<span class="sourceLineNo">497</span> boolean isClusterUp();<a name="line.497"></a>
+<span class="sourceLineNo">498</span>}<a name="line.498"></a>
[31/51] [partial] hbase-site git commit: Published site at
9101fc246f86445006bfbcdfda5cc495016dc280.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/master/procedure/MetaProcedureInterface.MetaOperationType.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/MetaProcedureInterface.MetaOperationType.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/MetaProcedureInterface.MetaOperationType.html
index 376bec0..5e09558 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/MetaProcedureInterface.MetaOperationType.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/MetaProcedureInterface.MetaOperationType.html
@@ -122,7 +122,7 @@ var activeTableTab = "activeTableTab";
</dl>
<hr>
<br>
-<pre>public static enum <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MetaProcedureInterface.html#line.25">MetaProcedureInterface.MetaOperationType</a>
+<pre>public static enum <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MetaProcedureInterface.html#line.30">MetaProcedureInterface.MetaOperationType</a>
extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang">Enum</a><<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MetaProcedureInterface.MetaOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure">MetaProcedureInterface.MetaOperationType</a>></pre>
</li>
</ul>
@@ -207,7 +207,7 @@ the order they are declared.</div>
<ul class="blockListLast">
<li class="blockList">
<h4>RECOVER</h4>
-<pre>public static final <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MetaProcedureInterface.MetaOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure">MetaProcedureInterface.MetaOperationType</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MetaProcedureInterface.MetaOperationType.html#line.26">RECOVER</a></pre>
+<pre>public static final <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MetaProcedureInterface.MetaOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure">MetaProcedureInterface.MetaOperationType</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MetaProcedureInterface.MetaOperationType.html#line.31">RECOVER</a></pre>
</li>
</ul>
</li>
@@ -224,7 +224,7 @@ the order they are declared.</div>
<ul class="blockList">
<li class="blockList">
<h4>values</h4>
-<pre>public static <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MetaProcedureInterface.MetaOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure">MetaProcedureInterface.MetaOperationType</a>[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MetaProcedureInterface.MetaOperationType.html#line.25">values</a>()</pre>
+<pre>public static <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MetaProcedureInterface.MetaOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure">MetaProcedureInterface.MetaOperationType</a>[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MetaProcedureInterface.MetaOperationType.html#line.30">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:
@@ -244,7 +244,7 @@ for (MetaProcedureInterface.MetaOperationType c : MetaProcedureInterface.MetaOpe
<ul class="blockListLast">
<li class="blockList">
<h4>valueOf</h4>
-<pre>public static <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MetaProcedureInterface.MetaOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure">MetaProcedureInterface.MetaOperationType</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MetaProcedureInterface.MetaOperationType.html#line.25">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> name)</pre>
+<pre>public static <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MetaProcedureInterface.MetaOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure">MetaProcedureInterface.MetaOperationType</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MetaProcedureInterface.MetaOperationType.html#line.30">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> 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
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/master/procedure/MetaProcedureInterface.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/MetaProcedureInterface.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/MetaProcedureInterface.html
index 46d47b9..c9e23ab 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/MetaProcedureInterface.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/MetaProcedureInterface.html
@@ -18,8 +18,8 @@
catch(err) {
}
//-->
-var methods = {"i0":18};
-var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],16:["t5","Default Methods"]};
+var methods = {"i0":50};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],16:["t5","Default Methods"],32:["t6","Deprecated Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
@@ -104,9 +104,14 @@ var activeTableTab = "activeTableTab";
<dd><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RecoverMetaProcedure</a></dd>
</dl>
<hr>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span>
+<div class="block"><span class="deprecationComment">only used for <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>RecoverMetaProcedure</code></a>. Should be removed along with
+ <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>RecoverMetaProcedure</code></a>.</span></div>
+</div>
<br>
-<pre>@InterfaceAudience.Private
-public interface <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MetaProcedureInterface.html#line.23">MetaProcedureInterface</a></pre>
+<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>
+ @InterfaceAudience.Private
+public interface <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MetaProcedureInterface.html#line.28">MetaProcedureInterface</a></pre>
</li>
</ul>
</div>
@@ -127,7 +132,9 @@ public interface <a href="../../../../../../src-html/org/apache/hadoop/hbase/mas
</tr>
<tr class="altColor">
<td class="colFirst"><code>static class </code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MetaProcedureInterface.MetaOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure">MetaProcedureInterface.MetaOperationType</a></span></code> </td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MetaProcedureInterface.MetaOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure">MetaProcedureInterface.MetaOperationType</a></span></code>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
+ </td>
</tr>
</table>
</li>
@@ -139,14 +146,16 @@ public interface <a href="../../../../../../src-html/org/apache/hadoop/hbase/mas
</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"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t5" class="tableTab"><span><a href="javascript:show(16);">Default Methods</a></span><span class="tabEnd"> </span></span></caption>
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t5" class="tableTab"><span><a href="javascript:show(16);">Default Methods</a></span><span class="tabEnd"> </span></span><span id="t6" class="tableTab"><span><a href="javascript:show(32);">Deprecated Methods</a></span><span class="tabEnd"> </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>default <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MetaProcedureInterface.MetaOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure">MetaProcedureInterface.MetaOperationType</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MetaProcedureInterface.html#getMetaOperationType--">getMetaOperationType</a></span>()</code> </td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MetaProcedureInterface.html#getMetaOperationType--">getMetaOperationType</a></span>()</code>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
+ </td>
</tr>
</table>
</li>
@@ -169,7 +178,8 @@ public interface <a href="../../../../../../src-html/org/apache/hadoop/hbase/mas
<ul class="blockListLast">
<li class="blockList">
<h4>getMetaOperationType</h4>
-<pre>default <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MetaProcedureInterface.MetaOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure">MetaProcedureInterface.MetaOperationType</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MetaProcedureInterface.html#line.29">getMetaOperationType</a>()</pre>
+<pre>default <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MetaProcedureInterface.MetaOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure">MetaProcedureInterface.MetaOperationType</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MetaProcedureInterface.html#line.34">getMetaOperationType</a>()</pre>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
</li>
</ul>
</li>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/master/procedure/MetaQueue.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/MetaQueue.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/MetaQueue.html
index 7b0ca22..2beef2b 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/MetaQueue.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/MetaQueue.html
@@ -18,8 +18,8 @@
catch(err) {
}
//-->
-var methods = {"i0":10};
-var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var methods = {"i0":42};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"],32:["t6","Deprecated Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
@@ -123,9 +123,14 @@ var activeTableTab = "activeTableTab";
<ul class="blockList">
<li class="blockList">
<hr>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span>
+<div class="block"><span class="deprecationComment">only used for <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>RecoverMetaProcedure</code></a>. Should be removed along with
+ <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>RecoverMetaProcedure</code></a>.</span></div>
+</div>
<br>
-<pre>@InterfaceAudience.Private
-class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MetaQueue.html#line.26">MetaQueue</a>
+<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>
+ @InterfaceAudience.Private
+class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MetaQueue.html#line.31">MetaQueue</a>
extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Queue.html" title="class in org.apache.hadoop.hbase.master.procedure">Queue</a><<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>></pre>
</li>
</ul>
@@ -169,7 +174,9 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Queu
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected </code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MetaQueue.html#MetaQueue-org.apache.hadoop.hbase.procedure2.LockStatus-">MetaQueue</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockStatus.html" title="interface in org.apache.hadoop.hbase.procedure2">LockStatus</a> lockStatus)</code> </td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MetaQueue.html#MetaQueue-org.apache.hadoop.hbase.procedure2.LockStatus-">MetaQueue</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockStatus.html" title="interface in org.apache.hadoop.hbase.procedure2">LockStatus</a> lockStatus)</code>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
+ </td>
</tr>
</table>
</li>
@@ -181,14 +188,16 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Queu
</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"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </span></span></caption>
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </span></span><span id="t6" class="tableTab"><span><a href="javascript:show(32);">Deprecated Methods</a></span><span class="tabEnd"> </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>(package private) boolean</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MetaQueue.html#requireExclusiveLock-org.apache.hadoop.hbase.procedure2.Procedure-">requireExclusiveLock</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> proc)</code> </td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MetaQueue.html#requireExclusiveLock-org.apache.hadoop.hbase.procedure2.Procedure-">requireExclusiveLock</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> proc)</code>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
+ </td>
</tr>
</table>
<ul class="blockList">
@@ -225,7 +234,8 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Queu
<ul class="blockListLast">
<li class="blockList">
<h4>MetaQueue</h4>
-<pre>protected <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MetaQueue.html#line.28">MetaQueue</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockStatus.html" title="interface in org.apache.hadoop.hbase.procedure2">LockStatus</a> lockStatus)</pre>
+<pre>protected <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MetaQueue.html#line.33">MetaQueue</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockStatus.html" title="interface in org.apache.hadoop.hbase.procedure2">LockStatus</a> lockStatus)</pre>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
</li>
</ul>
</li>
@@ -242,7 +252,8 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Queu
<ul class="blockListLast">
<li class="blockList">
<h4>requireExclusiveLock</h4>
-<pre>boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MetaQueue.html#line.33">requireExclusiveLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> proc)</pre>
+<pre>boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MetaQueue.html#line.38">requireExclusiveLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> proc)</pre>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Queue.html#requireExclusiveLock-org.apache.hadoop.hbase.procedure2.Procedure-">requireExclusiveLock</a></code> in class <code><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Queue.html" title="class in org.apache.hadoop.hbase.master.procedure">Queue</a><<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>></code></dd>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html
index 23ee802..947dcf9 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html
@@ -18,8 +18,8 @@
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};
-var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var methods = {"i0":42,"i1":42,"i2":42,"i3":42,"i4":42,"i5":42,"i6":42,"i7":42,"i8":42,"i9":42,"i10":42,"i11":42,"i12":42,"i13":42};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"],32:["t6","Deprecated Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
@@ -122,14 +122,26 @@ var activeTableTab = "activeTableTab";
<dd><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><<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>>>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MetaProcedureInterface.html" title="interface in org.apache.hadoop.hbase.master.procedure">MetaProcedureInterface</a></dd>
</dl>
<hr>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span>
+<div class="block"><span class="deprecationComment">Do not use any more, leave it here only for compatible. The recovery work will be
+ done in <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>ServerCrashProcedure</code></a> directly, and the initial work for meta table
+ will be done by <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>InitMetaProcedure</code></a>.</span></div>
+</div>
<br>
-<pre>@InterfaceAudience.Private
-public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#line.53">RecoverMetaProcedure</a>
+<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>
+ @InterfaceAudience.Private
+public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#line.60">RecoverMetaProcedure</a>
extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">StateMachineProcedure</a><<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>,org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RecoverMetaState>
implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MetaProcedureInterface.html" title="interface in org.apache.hadoop.hbase.master.procedure">MetaProcedureInterface</a></pre>
<div class="block">This procedure recovers meta from prior shutdown/ crash of a server, and brings meta online by
assigning meta region/s. Any place where meta is accessed and requires meta to be online, need to
- submit this procedure instead of duplicating steps to recover meta in the code.</div>
+ submit this procedure instead of duplicating steps to recover meta in the code.
+ <p/></div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>ServerCrashProcedure</code></a>,
+<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>InitMetaProcedure</code></a></dd>
+</dl>
</li>
</ul>
</div>
@@ -179,27 +191,39 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/M
</tr>
<tr class="altColor">
<td class="colFirst"><code>private <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/procedure/RecoverMetaProcedure.html#failedMetaServer">failedMetaServer</a></span></code> </td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#failedMetaServer">failedMetaServer</a></span></code>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
+ </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/master/procedure/RecoverMetaProcedure.html#LOG">LOG</a></span></code> </td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#LOG">LOG</a></span></code>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
+ </td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/master/MasterServices.html" title="interface in org.apache.hadoop.hbase.master">MasterServices</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#master">master</a></span></code> </td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#master">master</a></span></code>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
+ </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/master/procedure/RecoverMetaProcedure.html#replicaId">replicaId</a></span></code> </td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#replicaId">replicaId</a></span></code>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
+ </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/master/procedure/RecoverMetaProcedure.html#shouldSplitWal">shouldSplitWal</a></span></code> </td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#shouldSplitWal">shouldSplitWal</a></span></code>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
+ </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ProcedurePrepareLatch.html" title="class in org.apache.hadoop.hbase.master.procedure">ProcedurePrepareLatch</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#syncLatch">syncLatch</a></span></code> </td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#syncLatch">syncLatch</a></span></code>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
+ </td>
</tr>
</table>
<ul class="blockList">
@@ -224,6 +248,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/M
</tr>
<tr class="altColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#RecoverMetaProcedure--">RecoverMetaProcedure</a></span>()</code>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
<div class="block">This constructor is also used when deserializing from a procedure store; we'll construct one
of these then call #deserializeStateData(InputStream).</div>
</td>
@@ -231,6 +256,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/M
<tr class="rowColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#RecoverMetaProcedure-org.apache.hadoop.hbase.ServerName-boolean-">RecoverMetaProcedure</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> failedMetaServer,
boolean shouldSplitLog)</code>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
<div class="block">Call this constructor to queue up a <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>RecoverMetaProcedure</code></a> in response to meta
carrying server crash</div>
</td>
@@ -239,6 +265,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/M
<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#RecoverMetaProcedure-org.apache.hadoop.hbase.ServerName-boolean-org.apache.hadoop.hbase.master.procedure.ProcedurePrepareLatch-">RecoverMetaProcedure</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> failedMetaServer,
boolean shouldSplitLog,
<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ProcedurePrepareLatch.html" title="class in org.apache.hadoop.hbase.master.procedure">ProcedurePrepareLatch</a> latch)</code>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
<div class="block">Constructor with latch, for blocking/ sync usage</div>
</td>
</tr>
@@ -252,7 +279,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/M
</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"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </span></span></caption>
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </span></span><span id="t6" class="tableTab"><span><a href="javascript:show(32);">Deprecated Methods</a></span><span class="tabEnd"> </span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
@@ -260,18 +287,21 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/M
<tr id="i0" class="altColor">
<td class="colFirst"><code>protected <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.LockState.html" title="enum in org.apache.hadoop.hbase.procedure2">Procedure.LockState</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#acquireLock-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">acquireLock</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
<div class="block">The user should override this method if they need a lock on an Entity.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#completionCleanup-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">completionCleanup</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
<div class="block">Called when the procedure is marked as completed (success or rollback).</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#deserializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">deserializeStateData</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a> serializer)</code>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
<div class="block">Called on store load to allow the user to decode the previously serialized
state.</div>
</td>
@@ -280,24 +310,28 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/M
<td class="colFirst"><code>protected <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2">StateMachineProcedure.Flow</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RecoverMetaState-">executeFromState</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RecoverMetaState state)</code>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
<div class="block">called to perform a single step of the specified 'state' of the procedure</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>protected org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RecoverMetaState</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#getInitialState--">getInitialState</a></span>()</code>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
<div class="block">Return the initial state object that will be used for the first call to executeFromState().</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>protected org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RecoverMetaState</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#getState-int-">getState</a></span>(int stateId)</code>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
<div class="block">Convert an ordinal (or state id) to an Enum (or more descriptive) state object.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>protected int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#getStateId-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RecoverMetaState-">getStateId</a></span>(org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RecoverMetaState recoverMetaState)</code>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
<div class="block">Convert the Enum (or more descriptive) state object to an ordinal (or state id).</div>
</td>
</tr>
@@ -306,6 +340,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/M
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#handleRIT-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.ServerName-">handleRIT</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> ri,
<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> crashedServerName)</code>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
<div class="block">Is the region stuck assigning to this failedMetaServer? If so, cancel the call
just as we do over in ServerCrashProcedure#handleRIT except less to do here; less context
to carry.</div>
@@ -313,17 +348,21 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/M
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>private boolean</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#isRunRequired--">isRunRequired</a></span>()</code> </td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#isRunRequired--">isRunRequired</a></span>()</code>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
+ </td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#prepare-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">prepare</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
<div class="block">Prepare for execution</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#releaseLock-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">releaseLock</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
<div class="block">The user should override this method, and release lock if necessary.</div>
</td>
</tr>
@@ -331,12 +370,14 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/M
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#rollbackState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RecoverMetaState-">rollbackState</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RecoverMetaState recoverMetaState)</code>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
<div class="block">called to perform the rollback of the specified state</div>
</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#serializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">serializeStateData</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a> serializer)</code>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
<div class="block">The user-level code of the procedure may have some state to
persist (e.g.</div>
</td>
@@ -344,6 +385,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/M
<tr id="i13" class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#toStringClassDetails-java.lang.StringBuilder-">toStringClassDetails</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html?is-external=true" title="class or interface in java.lang">StringBuilder</a> sb)</code>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
<div class="block">Extend the toString() information with the procedure details
e.g.</div>
</td>
@@ -397,7 +439,8 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/M
<ul class="blockList">
<li class="blockList">
<h4>LOG</h4>
-<pre>private static final org.slf4j.Logger <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#line.56">LOG</a></pre>
+<pre>private static final org.slf4j.Logger <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#line.63">LOG</a></pre>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
</li>
</ul>
<a name="failedMetaServer">
@@ -406,7 +449,8 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/M
<ul class="blockList">
<li class="blockList">
<h4>failedMetaServer</h4>
-<pre>private <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#line.58">failedMetaServer</a></pre>
+<pre>private <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#line.65">failedMetaServer</a></pre>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
</li>
</ul>
<a name="shouldSplitWal">
@@ -415,7 +459,8 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/M
<ul class="blockList">
<li class="blockList">
<h4>shouldSplitWal</h4>
-<pre>private boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#line.59">shouldSplitWal</a></pre>
+<pre>private boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#line.66">shouldSplitWal</a></pre>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
</li>
</ul>
<a name="replicaId">
@@ -424,7 +469,8 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/M
<ul class="blockList">
<li class="blockList">
<h4>replicaId</h4>
-<pre>private int <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#line.60">replicaId</a></pre>
+<pre>private int <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#line.67">replicaId</a></pre>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
</li>
</ul>
<a name="syncLatch">
@@ -433,7 +479,8 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/M
<ul class="blockList">
<li class="blockList">
<h4>syncLatch</h4>
-<pre>private final <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ProcedurePrepareLatch.html" title="class in org.apache.hadoop.hbase.master.procedure">ProcedurePrepareLatch</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#line.62">syncLatch</a></pre>
+<pre>private final <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ProcedurePrepareLatch.html" title="class in org.apache.hadoop.hbase.master.procedure">ProcedurePrepareLatch</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#line.69">syncLatch</a></pre>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
</li>
</ul>
<a name="master">
@@ -442,7 +489,8 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/M
<ul class="blockListLast">
<li class="blockList">
<h4>master</h4>
-<pre>private <a href="../../../../../../org/apache/hadoop/hbase/master/MasterServices.html" title="interface in org.apache.hadoop.hbase.master">MasterServices</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#line.63">master</a></pre>
+<pre>private <a href="../../../../../../org/apache/hadoop/hbase/master/MasterServices.html" title="interface in org.apache.hadoop.hbase.master">MasterServices</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#line.70">master</a></pre>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
</li>
</ul>
</li>
@@ -459,8 +507,9 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/M
<ul class="blockList">
<li class="blockList">
<h4>RecoverMetaProcedure</h4>
-<pre>public <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#line.71">RecoverMetaProcedure</a>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> failedMetaServer,
+<pre>public <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#line.78">RecoverMetaProcedure</a>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> failedMetaServer,
boolean shouldSplitLog)</pre>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
<div class="block">Call this constructor to queue up a <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>RecoverMetaProcedure</code></a> in response to meta
carrying server crash</div>
<dl>
@@ -476,9 +525,10 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/M
<ul class="blockList">
<li class="blockList">
<h4>RecoverMetaProcedure</h4>
-<pre>public <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#line.78">RecoverMetaProcedure</a>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> failedMetaServer,
+<pre>public <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#line.85">RecoverMetaProcedure</a>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> failedMetaServer,
boolean shouldSplitLog,
<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ProcedurePrepareLatch.html" title="class in org.apache.hadoop.hbase.master.procedure">ProcedurePrepareLatch</a> latch)</pre>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
<div class="block">Constructor with latch, for blocking/ sync usage</div>
</li>
</ul>
@@ -488,7 +538,8 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/M
<ul class="blockListLast">
<li class="blockList">
<h4>RecoverMetaProcedure</h4>
-<pre>public <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#line.90">RecoverMetaProcedure</a>()</pre>
+<pre>public <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#line.97">RecoverMetaProcedure</a>()</pre>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
<div class="block">This constructor is also used when deserializing from a procedure store; we'll construct one
of these then call #deserializeStateData(InputStream). Do not use directly.</div>
</li>
@@ -507,11 +558,12 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/M
<ul class="blockList">
<li class="blockList">
<h4>executeFromState</h4>
-<pre>protected <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2">StateMachineProcedure.Flow</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#line.95">executeFromState</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
+<pre>protected <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2">StateMachineProcedure.Flow</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#line.102">executeFromState</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RecoverMetaState state)
throws <a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureSuspendedException.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureSuspendedException</a>,
<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureYieldException.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureYieldException</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"><span class="deprecatedLabel">Deprecated.</span> </div>
<div class="block"><span class="descfrmTypeLabel">Description copied from class: <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#executeFromState-TEnvironment-TState-">StateMachineProcedure</a></code></span></div>
<div class="block">called to perform a single step of the specified 'state' of the procedure</div>
<dl>
@@ -534,9 +586,10 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/M
<ul class="blockList">
<li class="blockList">
<h4>handleRIT</h4>
-<pre>private void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#line.183">handleRIT</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
+<pre>private void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#line.190">handleRIT</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> ri,
<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> crashedServerName)</pre>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
<div class="block">Is the region stuck assigning to this failedMetaServer? If so, cancel the call
just as we do over in ServerCrashProcedure#handleRIT except less to do here; less context
to carry.</div>
@@ -548,10 +601,11 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/M
<ul class="blockList">
<li class="blockList">
<h4>rollbackState</h4>
-<pre>protected void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#line.205">rollbackState</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
+<pre>protected void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#line.212">rollbackState</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RecoverMetaState recoverMetaState)
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"><span class="deprecatedLabel">Deprecated.</span> </div>
<div class="block"><span class="descfrmTypeLabel">Description copied from class: <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#rollbackState-TEnvironment-TState-">StateMachineProcedure</a></code></span></div>
<div class="block">called to perform the rollback of the specified state</div>
<dl>
@@ -570,7 +624,8 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/M
<ul class="blockList">
<li class="blockList">
<h4>getState</h4>
-<pre>protected org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RecoverMetaState <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#line.213">getState</a>(int stateId)</pre>
+<pre>protected org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RecoverMetaState <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#line.220">getState</a>(int stateId)</pre>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
<div class="block"><span class="descfrmTypeLabel">Description copied from class: <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getState-int-">StateMachineProcedure</a></code></span></div>
<div class="block">Convert an ordinal (or state id) to an Enum (or more descriptive) state object.</div>
<dl>
@@ -589,7 +644,8 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/M
<ul class="blockList">
<li class="blockList">
<h4>getStateId</h4>
-<pre>protected int <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#line.218">getStateId</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RecoverMetaState recoverMetaState)</pre>
+<pre>protected int <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#line.225">getStateId</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RecoverMetaState recoverMetaState)</pre>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
<div class="block"><span class="descfrmTypeLabel">Description copied from class: <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getStateId-TState-">StateMachineProcedure</a></code></span></div>
<div class="block">Convert the Enum (or more descriptive) state object to an ordinal (or state id).</div>
<dl>
@@ -608,7 +664,8 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/M
<ul class="blockList">
<li class="blockList">
<h4>getInitialState</h4>
-<pre>protected org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RecoverMetaState <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#line.223">getInitialState</a>()</pre>
+<pre>protected org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RecoverMetaState <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#line.230">getInitialState</a>()</pre>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
<div class="block"><span class="descfrmTypeLabel">Description copied from class: <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getInitialState--">StateMachineProcedure</a></code></span></div>
<div class="block">Return the initial state object that will be used for the first call to executeFromState().</div>
<dl>
@@ -625,7 +682,8 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/M
<ul class="blockList">
<li class="blockList">
<h4>toStringClassDetails</h4>
-<pre>protected void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#line.228">toStringClassDetails</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html?is-external=true" title="class or interface in java.lang">StringBuilder</a> sb)</pre>
+<pre>protected void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#line.235">toStringClassDetails</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html?is-external=true" title="class or interface in java.lang">StringBuilder</a> sb)</pre>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
<div class="block"><span class="descfrmTypeLabel">Description copied from class: <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#toStringClassDetails-java.lang.StringBuilder-">Procedure</a></code></span></div>
<div class="block">Extend the toString() information with the procedure details
e.g. className and parameters</div>
@@ -643,8 +701,9 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/M
<ul class="blockList">
<li class="blockList">
<h4>serializeStateData</h4>
-<pre>protected void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#line.237">serializeStateData</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a> serializer)
+<pre>protected void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#line.244">serializeStateData</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a> serializer)
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="deprecatedLabel">Deprecated.</span> </div>
<div class="block"><span class="descfrmTypeLabel">Description copied from class: <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#serializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">Procedure</a></code></span></div>
<div class="block">The user-level code of the procedure may have some state to
persist (e.g. input arguments or current position in the processing state) to
@@ -665,8 +724,9 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/M
<ul class="blockList">
<li class="blockList">
<h4>deserializeStateData</h4>
-<pre>protected void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#line.250">deserializeStateData</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a> serializer)
+<pre>protected void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#line.257">deserializeStateData</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a> serializer)
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="deprecatedLabel">Deprecated.</span> </div>
<div class="block"><span class="descfrmTypeLabel">Description copied from class: <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#deserializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">Procedure</a></code></span></div>
<div class="block">Called on store load to allow the user to decode the previously serialized
state.</div>
@@ -686,7 +746,8 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/M
<ul class="blockList">
<li class="blockList">
<h4>acquireLock</h4>
-<pre>protected <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.LockState.html" title="enum in org.apache.hadoop.hbase.procedure2">Procedure.LockState</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#line.262">acquireLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</pre>
+<pre>protected <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.LockState.html" title="enum in org.apache.hadoop.hbase.procedure2">Procedure.LockState</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#line.269">acquireLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</pre>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
<div class="block"><span class="descfrmTypeLabel">Description copied from class: <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#acquireLock-TEnvironment-">Procedure</a></code></span></div>
<div class="block">The user should override this method if they need a lock on an Entity.
A lock can be anything, and it is up to the implementor. The Procedure
@@ -723,7 +784,8 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/M
<ul class="blockList">
<li class="blockList">
<h4>releaseLock</h4>
-<pre>protected void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#line.270">releaseLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</pre>
+<pre>protected void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#line.277">releaseLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</pre>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
<div class="block"><span class="descfrmTypeLabel">Description copied from class: <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#releaseLock-TEnvironment-">Procedure</a></code></span></div>
<div class="block">The user should override this method, and release lock if necessary.</div>
<dl>
@@ -738,7 +800,8 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/M
<ul class="blockList">
<li class="blockList">
<h4>completionCleanup</h4>
-<pre>protected void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#line.275">completionCleanup</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</pre>
+<pre>protected void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#line.282">completionCleanup</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</pre>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
<div class="block"><span class="descfrmTypeLabel">Description copied from class: <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#completionCleanup-TEnvironment-">Procedure</a></code></span></div>
<div class="block">Called when the procedure is marked as completed (success or rollback).
The procedure implementor may use this method to cleanup in-memory states.
@@ -756,7 +819,8 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/M
<ul class="blockList">
<li class="blockList">
<h4>isRunRequired</h4>
-<pre>private boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#line.283">isRunRequired</a>()</pre>
+<pre>private boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#line.290">isRunRequired</a>()</pre>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true if failedMetaServer is not null (meta carrying server crashed) or meta is
@@ -770,7 +834,8 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/M
<ul class="blockListLast">
<li class="blockList">
<h4>prepare</h4>
-<pre>private void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#line.290">prepare</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</pre>
+<pre>private void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#line.297">prepare</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</pre>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
<div class="block">Prepare for execution</div>
</li>
</ul>
[13/51] [partial] hbase-site git commit: Published site at
9101fc246f86445006bfbcdfda5cc495016dc280.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/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 eb16038..74bacd8 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
@@ -6,7 +6,7 @@
</head>
<body>
<div class="sourceContainer">
-<pre><span class="sourceLineNo">001</span>/*<a name="line.1"></a>
+<pre><span class="sourceLineNo">001</span>/**<a name="line.1"></a>
<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
<span class="sourceLineNo">003</span> * or more contributor license agreements. See the NOTICE file<a name="line.3"></a>
<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
@@ -48,692 +48,692 @@
<span class="sourceLineNo">040</span>import java.util.Map;<a name="line.40"></a>
<span class="sourceLineNo">041</span>import java.util.Map.Entry;<a name="line.41"></a>
<span class="sourceLineNo">042</span>import java.util.Objects;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import java.util.Set;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import java.util.concurrent.ExecutionException;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import java.util.concurrent.Future;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import java.util.concurrent.TimeUnit;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import java.util.concurrent.TimeoutException;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import java.util.concurrent.atomic.AtomicInteger;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import java.util.concurrent.atomic.AtomicReference;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import java.util.function.Function;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import java.util.regex.Pattern;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import java.util.stream.Collectors;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import javax.servlet.ServletException;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import javax.servlet.http.HttpServlet;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import javax.servlet.http.HttpServletRequest;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import javax.servlet.http.HttpServletResponse;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.commons.lang3.StringUtils;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.conf.Configuration;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.fs.Path;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.ClusterId;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.ClusterMetrics;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.ClusterMetrics.Option;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.ClusterMetricsBuilder;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.HBaseIOException;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.HBaseInterfaceAudience;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.HConstants;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.InvalidFamilyOperationException;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.MasterNotRunningException;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.MetaTableAccessor;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.PleaseHoldException;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.ReplicationPeerNotFoundException;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.ScheduledChore;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.ServerName;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.TableDescriptors;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.TableName;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.TableNotDisabledException;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.TableNotFoundException;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.UnknownRegionException;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.client.MasterSwitchType;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.client.Result;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.client.TableState;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.client.VersionInfoUtil;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.coprocessor.CoprocessorHost;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.exceptions.MergeRegionException;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.executor.ExecutorType;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.favored.FavoredNodesManager;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.favored.FavoredNodesPromoter;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.http.InfoServer;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcUtils;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.ipc.ServerNotRunningYetException;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.log.HBaseMarkers;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.master.MasterRpcServices.BalanceSwitchMode;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.master.assignment.AssignmentManager;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.master.assignment.MergeTableRegionsProcedure;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.master.assignment.RegionStates;<a name="line.104"></a>
-<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.master.assignment.RegionStates.RegionStateNode;<a name="line.105"></a>
-<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.master.balancer.BalancerChore;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.master.balancer.BaseLoadBalancer;<a name="line.107"></a>
-<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.master.balancer.ClusterStatusChore;<a name="line.108"></a>
-<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.master.balancer.LoadBalancerFactory;<a name="line.109"></a>
-<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.master.cleaner.CleanerChore;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.master.cleaner.HFileCleaner;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.master.cleaner.LogCleaner;<a name="line.112"></a>
-<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.master.cleaner.ReplicationBarrierCleaner;<a name="line.113"></a>
-<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.master.locking.LockManager;<a name="line.114"></a>
-<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.master.normalizer.NormalizationPlan;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.master.normalizer.NormalizationPlan.PlanType;<a name="line.116"></a>
-<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizer;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizerChore;<a name="line.118"></a>
-<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizerFactory;<a name="line.119"></a>
-<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.master.procedure.CreateTableProcedure;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.master.procedure.DeleteNamespaceProcedure;<a name="line.121"></a>
-<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.master.procedure.DeleteTableProcedure;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.master.procedure.DisableTableProcedure;<a name="line.123"></a>
-<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.master.procedure.EnableTableProcedure;<a name="line.124"></a>
-<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureConstants;<a name="line.125"></a>
-<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv;<a name="line.126"></a>
-<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureScheduler;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureUtil;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.master.procedure.ModifyTableProcedure;<a name="line.129"></a>
-<span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.master.procedure.ProcedurePrepareLatch;<a name="line.130"></a>
-<span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.master.procedure.RecoverMetaProcedure;<a name="line.131"></a>
-<span class="sourceLineNo">132</span>import org.apache.hadoop.hbase.master.procedure.TruncateTableProcedure;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>import org.apache.hadoop.hbase.master.replication.AddPeerProcedure;<a name="line.133"></a>
-<span class="sourceLineNo">134</span>import org.apache.hadoop.hbase.master.replication.DisablePeerProcedure;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>import org.apache.hadoop.hbase.master.replication.EnablePeerProcedure;<a name="line.135"></a>
-<span class="sourceLineNo">136</span>import org.apache.hadoop.hbase.master.replication.ModifyPeerProcedure;<a name="line.136"></a>
-<span class="sourceLineNo">137</span>import org.apache.hadoop.hbase.master.replication.RemovePeerProcedure;<a name="line.137"></a>
-<span class="sourceLineNo">138</span>import org.apache.hadoop.hbase.master.replication.ReplicationPeerManager;<a name="line.138"></a>
-<span class="sourceLineNo">139</span>import org.apache.hadoop.hbase.master.replication.UpdatePeerConfigProcedure;<a name="line.139"></a>
-<span class="sourceLineNo">140</span>import org.apache.hadoop.hbase.master.snapshot.SnapshotManager;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.master.zksyncer.MasterAddressSyncer;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.master.zksyncer.MetaLocationSyncer;<a name="line.142"></a>
-<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.mob.MobConstants;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.monitoring.MemoryBoundedLogMessageBuffer;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.146"></a>
-<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.procedure.MasterProcedureManagerHost;<a name="line.147"></a>
-<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.procedure.flush.MasterFlushTableProcedureManager;<a name="line.148"></a>
-<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.procedure2.LockedResource;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.procedure2.Procedure;<a name="line.150"></a>
-<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.procedure2.ProcedureEvent;<a name="line.151"></a>
-<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.procedure2.ProcedureExecutor;<a name="line.152"></a>
-<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureDispatcher.RemoteProcedure;<a name="line.153"></a>
-<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureException;<a name="line.154"></a>
-<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.procedure2.store.wal.WALProcedureStore;<a name="line.155"></a>
-<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.quotas.MasterQuotaManager;<a name="line.156"></a>
-<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.quotas.MasterSpaceQuotaObserver;<a name="line.157"></a>
-<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.quotas.QuotaObserverChore;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.159"></a>
-<span class="sourceLineNo">160</span>import org.apache.hadoop.hbase.quotas.SnapshotQuotaObserverChore;<a name="line.160"></a>
-<span class="sourceLineNo">161</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifier;<a name="line.161"></a>
-<span class="sourceLineNo">162</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifierFactory;<a name="line.162"></a>
-<span class="sourceLineNo">163</span>import org.apache.hadoop.hbase.regionserver.DefaultStoreEngine;<a name="line.163"></a>
-<span class="sourceLineNo">164</span>import org.apache.hadoop.hbase.regionserver.HRegionServer;<a name="line.164"></a>
-<span class="sourceLineNo">165</span>import org.apache.hadoop.hbase.regionserver.HStore;<a name="line.165"></a>
-<span class="sourceLineNo">166</span>import org.apache.hadoop.hbase.regionserver.RSRpcServices;<a name="line.166"></a>
-<span class="sourceLineNo">167</span>import org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost;<a name="line.167"></a>
-<span class="sourceLineNo">168</span>import org.apache.hadoop.hbase.regionserver.RegionSplitPolicy;<a name="line.168"></a>
-<span class="sourceLineNo">169</span>import org.apache.hadoop.hbase.regionserver.compactions.ExploringCompactionPolicy;<a name="line.169"></a>
-<span class="sourceLineNo">170</span>import org.apache.hadoop.hbase.regionserver.compactions.FIFOCompactionPolicy;<a name="line.170"></a>
-<span class="sourceLineNo">171</span>import org.apache.hadoop.hbase.replication.ReplicationException;<a name="line.171"></a>
-<span class="sourceLineNo">172</span>import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;<a name="line.172"></a>
-<span class="sourceLineNo">173</span>import org.apache.hadoop.hbase.replication.ReplicationPeerDescription;<a name="line.173"></a>
-<span class="sourceLineNo">174</span>import org.apache.hadoop.hbase.replication.ReplicationUtils;<a name="line.174"></a>
-<span class="sourceLineNo">175</span>import org.apache.hadoop.hbase.replication.master.ReplicationHFileCleaner;<a name="line.175"></a>
-<span class="sourceLineNo">176</span>import org.apache.hadoop.hbase.replication.master.ReplicationLogCleaner;<a name="line.176"></a>
-<span class="sourceLineNo">177</span>import org.apache.hadoop.hbase.replication.master.ReplicationPeerConfigUpgrader;<a name="line.177"></a>
-<span class="sourceLineNo">178</span>import org.apache.hadoop.hbase.security.AccessDeniedException;<a name="line.178"></a>
-<span class="sourceLineNo">179</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.179"></a>
-<span class="sourceLineNo">180</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.180"></a>
-<span class="sourceLineNo">181</span>import org.apache.hadoop.hbase.util.Addressing;<a name="line.181"></a>
-<span class="sourceLineNo">182</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.182"></a>
-<span class="sourceLineNo">183</span>import org.apache.hadoop.hbase.util.CompressionTest;<a name="line.183"></a>
-<span class="sourceLineNo">184</span>import org.apache.hadoop.hbase.util.EncryptionTest;<a name="line.184"></a>
-<span class="sourceLineNo">185</span>import org.apache.hadoop.hbase.util.HFileArchiveUtil;<a name="line.185"></a>
-<span class="sourceLineNo">186</span>import org.apache.hadoop.hbase.util.HasThread;<a name="line.186"></a>
-<span class="sourceLineNo">187</span>import org.apache.hadoop.hbase.util.IdLock;<a name="line.187"></a>
-<span class="sourceLineNo">188</span>import org.apache.hadoop.hbase.util.ModifyRegionUtils;<a name="line.188"></a>
-<span class="sourceLineNo">189</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.189"></a>
-<span class="sourceLineNo">190</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.190"></a>
-<span class="sourceLineNo">191</span>import org.apache.hadoop.hbase.util.VersionInfo;<a name="line.191"></a>
-<span class="sourceLineNo">192</span>import org.apache.hadoop.hbase.zookeeper.LoadBalancerTracker;<a name="line.192"></a>
-<span class="sourceLineNo">193</span>import org.apache.hadoop.hbase.zookeeper.MasterAddressTracker;<a name="line.193"></a>
-<span class="sourceLineNo">194</span>import org.apache.hadoop.hbase.zookeeper.MasterMaintenanceModeTracker;<a name="line.194"></a>
-<span class="sourceLineNo">195</span>import org.apache.hadoop.hbase.zookeeper.RegionNormalizerTracker;<a name="line.195"></a>
-<span class="sourceLineNo">196</span>import org.apache.hadoop.hbase.zookeeper.ZKClusterId;<a name="line.196"></a>
-<span class="sourceLineNo">197</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.197"></a>
-<span class="sourceLineNo">198</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.198"></a>
-<span class="sourceLineNo">199</span>import org.apache.hadoop.hbase.zookeeper.ZNodePaths;<a name="line.199"></a>
-<span class="sourceLineNo">200</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.200"></a>
-<span class="sourceLineNo">201</span>import org.apache.zookeeper.KeeperException;<a name="line.201"></a>
-<span class="sourceLineNo">202</span>import org.eclipse.jetty.server.Server;<a name="line.202"></a>
-<span class="sourceLineNo">203</span>import org.eclipse.jetty.server.ServerConnector;<a name="line.203"></a>
-<span class="sourceLineNo">204</span>import org.eclipse.jetty.servlet.ServletHolder;<a name="line.204"></a>
-<span class="sourceLineNo">205</span>import org.eclipse.jetty.webapp.WebAppContext;<a name="line.205"></a>
-<span class="sourceLineNo">206</span>import org.slf4j.Logger;<a name="line.206"></a>
-<span class="sourceLineNo">207</span>import org.slf4j.LoggerFactory;<a name="line.207"></a>
-<span class="sourceLineNo">208</span><a name="line.208"></a>
-<span class="sourceLineNo">209</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.209"></a>
-<span class="sourceLineNo">210</span>import org.apache.hbase.thirdparty.com.google.common.collect.Lists;<a name="line.210"></a>
-<span class="sourceLineNo">211</span>import org.apache.hbase.thirdparty.com.google.common.collect.Maps;<a name="line.211"></a>
-<span class="sourceLineNo">212</span><a name="line.212"></a>
-<span class="sourceLineNo">213</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.213"></a>
-<span class="sourceLineNo">214</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoResponse.CompactionState;<a name="line.214"></a>
-<span class="sourceLineNo">215</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.Quotas;<a name="line.215"></a>
-<span class="sourceLineNo">216</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.SpaceViolationPolicy;<a name="line.216"></a>
-<span class="sourceLineNo">217</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;<a name="line.217"></a>
-<span class="sourceLineNo">218</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos;<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">221</span> * HMaster is the "master server" for HBase. An HBase cluster has one active<a name="line.221"></a>
-<span class="sourceLineNo">222</span> * master. If many masters are started, all compete. Whichever wins goes on to<a name="line.222"></a>
-<span class="sourceLineNo">223</span> * run the cluster. All others park themselves in their constructor until<a name="line.223"></a>
-<span class="sourceLineNo">224</span> * master or cluster shutdown or until the active master loses its lease in<a name="line.224"></a>
-<span class="sourceLineNo">225</span> * zookeeper. Thereafter, all running master jostle to take over master role.<a name="line.225"></a>
-<span class="sourceLineNo">226</span> *<a name="line.226"></a>
-<span class="sourceLineNo">227</span> * <p>The Master can be asked shutdown the cluster. See {@link #shutdown()}. In<a name="line.227"></a>
-<span class="sourceLineNo">228</span> * this case it will tell all regionservers to go down and then wait on them<a name="line.228"></a>
-<span class="sourceLineNo">229</span> * all reporting in that they are down. This master will then shut itself down.<a name="line.229"></a>
-<span class="sourceLineNo">230</span> *<a name="line.230"></a>
-<span class="sourceLineNo">231</span> * <p>You can also shutdown just this master. Call {@link #stopMaster()}.<a name="line.231"></a>
-<span class="sourceLineNo">232</span> *<a name="line.232"></a>
-<span class="sourceLineNo">233</span> * @see org.apache.zookeeper.Watcher<a name="line.233"></a>
-<span class="sourceLineNo">234</span> */<a name="line.234"></a>
-<span class="sourceLineNo">235</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS)<a name="line.235"></a>
-<span class="sourceLineNo">236</span>@SuppressWarnings("deprecation")<a name="line.236"></a>
-<span class="sourceLineNo">237</span>public class HMaster extends HRegionServer implements MasterServices {<a name="line.237"></a>
-<span class="sourceLineNo">238</span> private static Logger LOG = LoggerFactory.getLogger(HMaster.class.getName());<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> * Protection against zombie master. Started once Master accepts active responsibility and<a name="line.241"></a>
-<span class="sourceLineNo">242</span> * starts taking over responsibilities. Allows a finite time window before giving up ownership.<a name="line.242"></a>
-<span class="sourceLineNo">243</span> */<a name="line.243"></a>
-<span class="sourceLineNo">244</span> private static class InitializationMonitor extends HasThread {<a name="line.244"></a>
-<span class="sourceLineNo">245</span> /** The amount of time in milliseconds to sleep before checking initialization status. */<a name="line.245"></a>
-<span class="sourceLineNo">246</span> public static final String TIMEOUT_KEY = "hbase.master.initializationmonitor.timeout";<a name="line.246"></a>
-<span class="sourceLineNo">247</span> public static final long TIMEOUT_DEFAULT = TimeUnit.MILLISECONDS.convert(15, TimeUnit.MINUTES);<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> * When timeout expired and initialization has not complete, call {@link System#exit(int)} when<a name="line.250"></a>
-<span class="sourceLineNo">251</span> * true, do nothing otherwise.<a name="line.251"></a>
-<span class="sourceLineNo">252</span> */<a name="line.252"></a>
-<span class="sourceLineNo">253</span> public static final String HALT_KEY = "hbase.master.initializationmonitor.haltontimeout";<a name="line.253"></a>
-<span class="sourceLineNo">254</span> public static final boolean HALT_DEFAULT = false;<a name="line.254"></a>
-<span class="sourceLineNo">255</span><a name="line.255"></a>
-<span class="sourceLineNo">256</span> private final HMaster master;<a name="line.256"></a>
-<span class="sourceLineNo">257</span> private final long timeout;<a name="line.257"></a>
-<span class="sourceLineNo">258</span> private final boolean haltOnTimeout;<a name="line.258"></a>
-<span class="sourceLineNo">259</span><a name="line.259"></a>
-<span class="sourceLineNo">260</span> /** Creates a Thread that monitors the {@link #isInitialized()} state. */<a name="line.260"></a>
-<span class="sourceLineNo">261</span> InitializationMonitor(HMaster master) {<a name="line.261"></a>
-<span class="sourceLineNo">262</span> super("MasterInitializationMonitor");<a name="line.262"></a>
-<span class="sourceLineNo">263</span> this.master = master;<a name="line.263"></a>
-<span class="sourceLineNo">264</span> this.timeout = master.getConfiguration().getLong(TIMEOUT_KEY, TIMEOUT_DEFAULT);<a name="line.264"></a>
-<span class="sourceLineNo">265</span> this.haltOnTimeout = master.getConfiguration().getBoolean(HALT_KEY, HALT_DEFAULT);<a name="line.265"></a>
-<span class="sourceLineNo">266</span> this.setDaemon(true);<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> @Override<a name="line.269"></a>
-<span class="sourceLineNo">270</span> public void run() {<a name="line.270"></a>
-<span class="sourceLineNo">271</span> try {<a name="line.271"></a>
-<span class="sourceLineNo">272</span> while (!master.isStopped() && master.isActiveMaster()) {<a name="line.272"></a>
-<span class="sourceLineNo">273</span> Thread.sleep(timeout);<a name="line.273"></a>
-<span class="sourceLineNo">274</span> if (master.isInitialized()) {<a name="line.274"></a>
-<span class="sourceLineNo">275</span> LOG.debug("Initialization completed within allotted tolerance. Monitor exiting.");<a name="line.275"></a>
-<span class="sourceLineNo">276</span> } else {<a name="line.276"></a>
-<span class="sourceLineNo">277</span> LOG.error("Master failed to complete initialization after " + timeout + "ms. Please"<a name="line.277"></a>
-<span class="sourceLineNo">278</span> + " consider submitting a bug report including a thread dump of this process.");<a name="line.278"></a>
-<span class="sourceLineNo">279</span> if (haltOnTimeout) {<a name="line.279"></a>
-<span class="sourceLineNo">280</span> LOG.error("Zombie Master exiting. Thread dump to stdout");<a name="line.280"></a>
-<span class="sourceLineNo">281</span> Threads.printThreadInfo(System.out, "Zombie HMaster");<a name="line.281"></a>
-<span class="sourceLineNo">282</span> System.exit(-1);<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> } catch (InterruptedException ie) {<a name="line.286"></a>
-<span class="sourceLineNo">287</span> LOG.trace("InitMonitor thread interrupted. Existing.");<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> }<a name="line.290"></a>
-<span class="sourceLineNo">291</span><a name="line.291"></a>
-<span class="sourceLineNo">292</span> // MASTER is name of the webapp and the attribute name used stuffing this<a name="line.292"></a>
-<span class="sourceLineNo">293</span> //instance into web context.<a name="line.293"></a>
-<span class="sourceLineNo">294</span> public static final String MASTER = "master";<a name="line.294"></a>
-<span class="sourceLineNo">295</span><a name="line.295"></a>
-<span class="sourceLineNo">296</span> // Manager and zk listener for master election<a name="line.296"></a>
-<span class="sourceLineNo">297</span> private final ActiveMasterManager activeMasterManager;<a name="line.297"></a>
-<span class="sourceLineNo">298</span> // Region server tracker<a name="line.298"></a>
-<span class="sourceLineNo">299</span> private RegionServerTracker regionServerTracker;<a name="line.299"></a>
-<span class="sourceLineNo">300</span> // Draining region server tracker<a name="line.300"></a>
-<span class="sourceLineNo">301</span> private DrainingServerTracker drainingServerTracker;<a name="line.301"></a>
-<span class="sourceLineNo">302</span> // Tracker for load balancer state<a name="line.302"></a>
-<span class="sourceLineNo">303</span> LoadBalancerTracker loadBalancerTracker;<a name="line.303"></a>
-<span class="sourceLineNo">304</span> // Tracker for meta location, if any client ZK quorum specified<a name="line.304"></a>
-<span class="sourceLineNo">305</span> MetaLocationSyncer metaLocationSyncer;<a name="line.305"></a>
-<span class="sourceLineNo">306</span> // Tracker for active master location, if any client ZK quorum specified<a name="line.306"></a>
-<span class="sourceLineNo">307</span> MasterAddressSyncer masterAddressSyncer;<a name="line.307"></a>
-<span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span> // Tracker for split and merge state<a name="line.309"></a>
-<span class="sourceLineNo">310</span> private SplitOrMergeTracker splitOrMergeTracker;<a name="line.310"></a>
+<span class="sourceLineNo">043</span>import java.util.Optional;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import java.util.Set;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import java.util.concurrent.ExecutionException;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import java.util.concurrent.Future;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import java.util.concurrent.TimeUnit;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import java.util.concurrent.TimeoutException;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import java.util.concurrent.atomic.AtomicInteger;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import java.util.concurrent.atomic.AtomicReference;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import java.util.function.Function;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import java.util.regex.Pattern;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import java.util.stream.Collectors;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import javax.servlet.ServletException;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import javax.servlet.http.HttpServlet;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import javax.servlet.http.HttpServletRequest;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import javax.servlet.http.HttpServletResponse;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.commons.lang3.StringUtils;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.conf.Configuration;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.fs.Path;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.ClusterId;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.ClusterMetrics;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.ClusterMetrics.Option;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.ClusterMetricsBuilder;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.HBaseIOException;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.HBaseInterfaceAudience;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.HConstants;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.InvalidFamilyOperationException;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.MasterNotRunningException;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.MetaTableAccessor;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.PleaseHoldException;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.ReplicationPeerNotFoundException;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.ScheduledChore;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.ServerName;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.TableDescriptors;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.TableName;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.TableNotDisabledException;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.TableNotFoundException;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.UnknownRegionException;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.client.MasterSwitchType;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.client.RegionInfoBuilder;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.client.Result;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.client.TableState;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.client.VersionInfoUtil;<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.AssignmentManager;<a name="line.104"></a>
+<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.master.assignment.MergeTableRegionsProcedure;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.master.assignment.RegionStates;<a name="line.106"></a>
+<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.master.assignment.RegionStates.RegionStateNode;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.master.balancer.BalancerChore;<a name="line.108"></a>
+<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.master.balancer.BaseLoadBalancer;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.master.balancer.ClusterStatusChore;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.master.balancer.LoadBalancerFactory;<a name="line.111"></a>
+<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.master.cleaner.CleanerChore;<a name="line.112"></a>
+<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.master.cleaner.HFileCleaner;<a name="line.113"></a>
+<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.master.cleaner.LogCleaner;<a name="line.114"></a>
+<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.master.cleaner.ReplicationBarrierCleaner;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.master.locking.LockManager;<a name="line.116"></a>
+<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.master.normalizer.NormalizationPlan;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.master.normalizer.NormalizationPlan.PlanType;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizer;<a name="line.119"></a>
+<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizerChore;<a name="line.120"></a>
+<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizerFactory;<a name="line.121"></a>
+<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.master.procedure.CreateTableProcedure;<a name="line.122"></a>
+<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.master.procedure.DeleteNamespaceProcedure;<a name="line.123"></a>
+<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.master.procedure.DeleteTableProcedure;<a name="line.124"></a>
+<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.master.procedure.DisableTableProcedure;<a name="line.125"></a>
+<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.master.procedure.EnableTableProcedure;<a name="line.126"></a>
+<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.master.procedure.InitMetaProcedure;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureConstants;<a name="line.128"></a>
+<span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv;<a name="line.129"></a>
+<span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureScheduler;<a name="line.130"></a>
+<span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureUtil;<a name="line.131"></a>
+<span class="sourceLineNo">132</span>import org.apache.hadoop.hbase.master.procedure.ModifyTableProcedure;<a name="line.132"></a>
+<span class="sourceLineNo">133</span>import org.apache.hadoop.hbase.master.procedure.ProcedurePrepareLatch;<a name="line.133"></a>
+<span class="sourceLineNo">134</span>import org.apache.hadoop.hbase.master.procedure.ServerCrashProcedure;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>import org.apache.hadoop.hbase.master.procedure.TruncateTableProcedure;<a name="line.135"></a>
+<span class="sourceLineNo">136</span>import org.apache.hadoop.hbase.master.replication.AddPeerProcedure;<a name="line.136"></a>
+<span class="sourceLineNo">137</span>import org.apache.hadoop.hbase.master.replication.DisablePeerProcedure;<a name="line.137"></a>
+<span class="sourceLineNo">138</span>import org.apache.hadoop.hbase.master.replication.EnablePeerProcedure;<a name="line.138"></a>
+<span class="sourceLineNo">139</span>import org.apache.hadoop.hbase.master.replication.ModifyPeerProcedure;<a name="line.139"></a>
+<span class="sourceLineNo">140</span>import org.apache.hadoop.hbase.master.replication.RemovePeerProcedure;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.master.replication.ReplicationPeerManager;<a name="line.141"></a>
+<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.master.replication.UpdatePeerConfigProcedure;<a name="line.142"></a>
+<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.master.snapshot.SnapshotManager;<a name="line.143"></a>
+<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.master.zksyncer.MasterAddressSyncer;<a name="line.144"></a>
+<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.master.zksyncer.MetaLocationSyncer;<a name="line.145"></a>
+<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.mob.MobConstants;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.monitoring.MemoryBoundedLogMessageBuffer;<a name="line.147"></a>
+<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.148"></a>
+<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.procedure.MasterProcedureManagerHost;<a name="line.150"></a>
+<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.procedure.flush.MasterFlushTableProcedureManager;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.procedure2.LockedResource;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.procedure2.Procedure;<a name="line.153"></a>
+<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.procedure2.ProcedureEvent;<a name="line.154"></a>
+<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.procedure2.ProcedureExecutor;<a name="line.155"></a>
+<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureDispatcher.RemoteProcedure;<a name="line.156"></a>
+<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureException;<a name="line.157"></a>
+<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.procedure2.store.wal.WALProcedureStore;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.quotas.MasterQuotaManager;<a name="line.159"></a>
+<span class="sourceLineNo">160</span>import org.apache.hadoop.hbase.quotas.MasterSpaceQuotaObserver;<a name="line.160"></a>
+<span class="sourceLineNo">161</span>import org.apache.hadoop.hbase.quotas.QuotaObserverChore;<a name="line.161"></a>
+<span class="sourceLineNo">162</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.162"></a>
+<span class="sourceLineNo">163</span>import org.apache.hadoop.hbase.quotas.SnapshotQuotaObserverChore;<a name="line.163"></a>
+<span class="sourceLineNo">164</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifier;<a name="line.164"></a>
+<span class="sourceLineNo">165</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifierFactory;<a name="line.165"></a>
+<span class="sourceLineNo">166</span>import org.apache.hadoop.hbase.regionserver.DefaultStoreEngine;<a name="line.166"></a>
+<span class="sourceLineNo">167</span>import org.apache.hadoop.hbase.regionserver.HRegionServer;<a name="line.167"></a>
+<span class="sourceLineNo">168</span>import org.apache.hadoop.hbase.regionserver.HStore;<a name="line.168"></a>
+<span class="sourceLineNo">169</span>import org.apache.hadoop.hbase.regionserver.RSRpcServices;<a name="line.169"></a>
+<span class="sourceLineNo">170</span>import org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost;<a name="line.170"></a>
+<span class="sourceLineNo">171</span>import org.apache.hadoop.hbase.regionserver.RegionSplitPolicy;<a name="line.171"></a>
+<span class="sourceLineNo">172</span>import org.apache.hadoop.hbase.regionserver.compactions.ExploringCompactionPolicy;<a name="line.172"></a>
+<span class="sourceLineNo">173</span>import org.apache.hadoop.hbase.regionserver.compactions.FIFOCompactionPolicy;<a name="line.173"></a>
+<span class="sourceLineNo">174</span>import org.apache.hadoop.hbase.replication.ReplicationException;<a name="line.174"></a>
+<span class="sourceLineNo">175</span>import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;<a name="line.175"></a>
+<span class="sourceLineNo">176</span>import org.apache.hadoop.hbase.replication.ReplicationPeerDescription;<a name="line.176"></a>
+<span class="sourceLineNo">177</span>import org.apache.hadoop.hbase.replication.ReplicationUtils;<a name="line.177"></a>
+<span class="sourceLineNo">178</span>import org.apache.hadoop.hbase.replication.master.ReplicationHFileCleaner;<a name="line.178"></a>
+<span class="sourceLineNo">179</span>import org.apache.hadoop.hbase.replication.master.ReplicationLogCleaner;<a name="line.179"></a>
+<span class="sourceLineNo">180</span>import org.apache.hadoop.hbase.replication.master.ReplicationPeerConfigUpgrader;<a name="line.180"></a>
+<span class="sourceLineNo">181</span>import org.apache.hadoop.hbase.security.AccessDeniedException;<a name="line.181"></a>
+<span class="sourceLineNo">182</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.182"></a>
+<span class="sourceLineNo">183</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.183"></a>
+<span class="sourceLineNo">184</span>import org.apache.hadoop.hbase.util.Addressing;<a name="line.184"></a>
+<span class="sourceLineNo">185</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.185"></a>
+<span class="sourceLineNo">186</span>import org.apache.hadoop.hbase.util.CompressionTest;<a name="line.186"></a>
+<span class="sourceLineNo">187</span>import org.apache.hadoop.hbase.util.EncryptionTest;<a name="line.187"></a>
+<span class="sourceLineNo">188</span>import org.apache.hadoop.hbase.util.HFileArchiveUtil;<a name="line.188"></a>
+<span class="sourceLineNo">189</span>import org.apache.hadoop.hbase.util.HasThread;<a name="line.189"></a>
+<span class="sourceLineNo">190</span>import org.apache.hadoop.hbase.util.IdLock;<a name="line.190"></a>
+<span class="sourceLineNo">191</span>import org.apache.hadoop.hbase.util.ModifyRegionUtils;<a name="line.191"></a>
+<span class="sourceLineNo">192</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.192"></a>
+<span class="sourceLineNo">193</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.193"></a>
+<span class="sourceLineNo">194</span>import org.apache.hadoop.hbase.util.VersionInfo;<a name="line.194"></a>
+<span class="sourceLineNo">195</span>import org.apache.hadoop.hbase.zookeeper.LoadBalancerTracker;<a name="line.195"></a>
+<span class="sourceLineNo">196</span>import org.apache.hadoop.hbase.zookeeper.MasterAddressTracker;<a name="line.196"></a>
+<span class="sourceLineNo">197</span>import org.apache.hadoop.hbase.zookeeper.MasterMaintenanceModeTracker;<a name="line.197"></a>
+<span class="sourceLineNo">198</span>import org.apache.hadoop.hbase.zookeeper.RegionNormalizerTracker;<a name="line.198"></a>
+<span class="sourceLineNo">199</span>import org.apache.hadoop.hbase.zookeeper.ZKClusterId;<a name="line.199"></a>
+<span class="sourceLineNo">200</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.200"></a>
+<span class="sourceLineNo">201</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.201"></a>
+<span class="sourceLineNo">202</span>import org.apache.hadoop.hbase.zookeeper.ZNodePaths;<a name="line.202"></a>
+<span class="sourceLineNo">203</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.203"></a>
+<span class="sourceLineNo">204</span>import org.apache.zookeeper.KeeperException;<a name="line.204"></a>
+<span class="sourceLineNo">205</span>import org.eclipse.jetty.server.Server;<a name="line.205"></a>
+<span class="sourceLineNo">206</span>import org.eclipse.jetty.server.ServerConnector;<a name="line.206"></a>
+<span class="sourceLineNo">207</span>import org.eclipse.jetty.servlet.ServletHolder;<a name="line.207"></a>
+<span class="sourceLineNo">208</span>import org.eclipse.jetty.webapp.WebAppContext;<a name="line.208"></a>
+<span class="sourceLineNo">209</span>import org.slf4j.Logger;<a name="line.209"></a>
+<span class="sourceLineNo">210</span>import org.slf4j.LoggerFactory;<a name="line.210"></a>
+<span class="sourceLineNo">211</span><a name="line.211"></a>
+<span class="sourceLineNo">212</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.212"></a>
+<span class="sourceLineNo">213</span>import org.apache.hbase.thirdparty.com.google.common.collect.Lists;<a name="line.213"></a>
+<span class="sourceLineNo">214</span>import org.apache.hbase.thirdparty.com.google.common.collect.Maps;<a name="line.214"></a>
+<span class="sourceLineNo">215</span><a name="line.215"></a>
+<span class="sourceLineNo">216</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.216"></a>
+<span class="sourceLineNo">217</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoResponse.CompactionState;<a name="line.217"></a>
+<span class="sourceLineNo">218</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.Quotas;<a name="line.218"></a>
+<span class="sourceLineNo">219</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.SpaceViolationPolicy;<a name="line.219"></a>
+<span class="sourceLineNo">220</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;<a name="line.220"></a>
+<span class="sourceLineNo">221</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos;<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> * HMaster is the "master server" for HBase. An HBase cluster has one active<a name="line.224"></a>
+<span class="sourceLineNo">225</span> * master. If many masters are started, all compete. Whichever wins goes on to<a name="line.225"></a>
+<span class="sourceLineNo">226</span> * run the cluster. All others park themselves in their constructor until<a name="line.226"></a>
+<span class="sourceLineNo">227</span> * master or cluster shutdown or until the active master loses its lease in<a name="line.227"></a>
+<span class="sourceLineNo">228</span> * zookeeper. Thereafter, all running master jostle to take over master role.<a name="line.228"></a>
+<span class="sourceLineNo">229</span> *<a name="line.229"></a>
+<span class="sourceLineNo">230</span> * <p>The Master can be asked shutdown the cluster. See {@link #shutdown()}. In<a name="line.230"></a>
+<span class="sourceLineNo">231</span> * this case it will tell all regionservers to go down and then wait on them<a name="line.231"></a>
+<span class="sourceLineNo">232</span> * all reporting in that they are down. This master will then shut itself down.<a name="line.232"></a>
+<span class="sourceLineNo">233</span> *<a name="line.233"></a>
+<span class="sourceLineNo">234</span> * <p>You can also shutdown just this master. Call {@link #stopMaster()}.<a name="line.234"></a>
+<span class="sourceLineNo">235</span> *<a name="line.235"></a>
+<span class="sourceLineNo">236</span> * @see org.apache.zookeeper.Watcher<a name="line.236"></a>
+<span class="sourceLineNo">237</span> */<a name="line.237"></a>
+<span class="sourceLineNo">238</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS)<a name="line.238"></a>
+<span class="sourceLineNo">239</span>@SuppressWarnings("deprecation")<a name="line.239"></a>
+<span class="sourceLineNo">240</span>public class HMaster extends HRegionServer implements MasterServices {<a name="line.240"></a>
+<span class="sourceLineNo">241</span> private static Logger LOG = LoggerFactory.getLogger(HMaster.class);<a name="line.241"></a>
+<span class="sourceLineNo">242</span><a name="line.242"></a>
+<span class="sourceLineNo">243</span> /**<a name="line.243"></a>
+<span class="sourceLineNo">244</span> * Protection against zombie master. Started once Master accepts active responsibility and<a name="line.244"></a>
+<span class="sourceLineNo">245</span> * starts taking over responsibilities. Allows a finite time window before giving up ownership.<a name="line.245"></a>
+<span class="sourceLineNo">246</span> */<a name="line.246"></a>
+<span class="sourceLineNo">247</span> private static class InitializationMonitor extends HasThread {<a name="line.247"></a>
+<span class="sourceLineNo">248</span> /** The amount of time in milliseconds to sleep before checking initialization status. */<a name="line.248"></a>
+<span class="sourceLineNo">249</span> public static final String TIMEOUT_KEY = "hbase.master.initializationmonitor.timeout";<a name="line.249"></a>
+<span class="sourceLineNo">250</span> public static final long TIMEOUT_DEFAULT = TimeUnit.MILLISECONDS.convert(15, TimeUnit.MINUTES);<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> * When timeout expired and initialization has not complete, call {@link System#exit(int)} when<a name="line.253"></a>
+<span class="sourceLineNo">254</span> * true, do nothing otherwise.<a name="line.254"></a>
+<span class="sourceLineNo">255</span> */<a name="line.255"></a>
+<span class="sourceLineNo">256</span> public static final String HALT_KEY = "hbase.master.initializationmonitor.haltontimeout";<a name="line.256"></a>
+<span class="sourceLineNo">257</span> public static final boolean HALT_DEFAULT = false;<a name="line.257"></a>
+<span class="sourceLineNo">258</span><a name="line.258"></a>
+<span class="sourceLineNo">259</span> private final HMaster master;<a name="line.259"></a>
+<span class="sourceLineNo">260</span> private final long timeout;<a name="line.260"></a>
+<span class="sourceLineNo">261</span> private final boolean haltOnTimeout;<a name="line.261"></a>
+<span class="sourceLineNo">262</span><a name="line.262"></a>
+<span class="sourceLineNo">263</span> /** Creates a Thread that monitors the {@link #isInitialized()} state. */<a name="line.263"></a>
+<span class="sourceLineNo">264</span> InitializationMonitor(HMaster master) {<a name="line.264"></a>
+<span class="sourceLineNo">265</span> super("MasterInitializationMonitor");<a name="line.265"></a>
+<span class="sourceLineNo">266</span> this.master = master;<a name="line.266"></a>
+<span class="sourceLineNo">267</span> this.timeout = master.getConfiguration().getLong(TIMEOUT_KEY, TIMEOUT_DEFAULT);<a name="line.267"></a>
+<span class="sourceLineNo">268</span> this.haltOnTimeout = master.getConfiguration().getBoolean(HALT_KEY, HALT_DEFAULT);<a name="line.268"></a>
+<span class="sourceLineNo">269</span> this.setDaemon(true);<a name="line.269"></a>
+<span class="sourceLineNo">270</span> }<a name="line.270"></a>
+<span class="sourceLineNo">271</span><a name="line.271"></a>
+<span class="sourceLineNo">272</span> @Override<a name="line.272"></a>
+<span class="sourceLineNo">273</span> public void run() {<a name="line.273"></a>
+<span class="sourceLineNo">274</span> try {<a name="line.274"></a>
+<span class="sourceLineNo">275</span> while (!master.isStopped() && master.isActiveMaster()) {<a name="line.275"></a>
+<span class="sourceLineNo">276</span> Thread.sleep(timeout);<a name="line.276"></a>
+<span class="sourceLineNo">277</span> if (master.isInitialized()) {<a name="line.277"></a>
+<span class="sourceLineNo">278</span> LOG.debug("Initialization completed within allotted tolerance. Monitor exiting.");<a name="line.278"></a>
+<span class="sourceLineNo">279</span> } else {<a name="line.279"></a>
+<span class="sourceLineNo">280</span> LOG.error("Master failed to complete initialization after " + timeout + "ms. Please"<a name="line.280"></a>
+<span class="sourceLineNo">281</span> + " consider submitting a bug report including a thread dump of this process.");<a name="line.281"></a>
+<span class="sourceLineNo">282</span> if (haltOnTimeout) {<a name="line.282"></a>
+<span class="sourceLineNo">283</span> LOG.error("Zombie Master exiting. Thread dump to stdout");<a name="line.283"></a>
+<span class="sourceLineNo">284</span> Threads.printThreadInfo(System.out, "Zombie HMaster");<a name="line.284"></a>
+<span class="sourceLineNo">285</span> System.exit(-1);<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> } catch (InterruptedException ie) {<a name="line.289"></a>
+<span class="sourceLineNo">290</span> LOG.trace("InitMonitor thread interrupted. Existing.");<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> }<a name="line.293"></a>
+<span class="sourceLineNo">294</span><a name="line.294"></a>
+<span class="sourceLineNo">295</span> // MASTER is name of the webapp and the attribute name used stuffing this<a name="line.295"></a>
+<span class="sourceLineNo">296</span> //instance into web context.<a name="line.296"></a>
+<span class="sourceLineNo">297</span> public static final String MASTER = "master";<a name="line.297"></a>
+<span class="sourceLineNo">298</span><a name="line.298"></a>
+<span class="sourceLineNo">299</span> // Manager and zk listener for master election<a name="line.299"></a>
+<span class="sourceLineNo">300</span> private final ActiveMasterManager activeMasterManager;<a name="line.300"></a>
+<span class="sourceLineNo">301</span> // Region server tracker<a name="line.301"></a>
+<span class="sourceLineNo">302</span> private RegionServerTracker regionServerTracker;<a name="line.302"></a>
+<span class="sourceLineNo">303</span> // Draining region server tracker<a name="line.303"></a>
+<span class="sourceLineNo">304</span> private DrainingServerTracker drainingServerTracker;<a name="line.304"></a>
+<span class="sourceLineNo">305</span> // Tracker for load balancer state<a name="line.305"></a>
+<span class="sourceLineNo">306</span> LoadBalancerTracker loadBalancerTracker;<a name="line.306"></a>
+<span class="sourceLineNo">307</span> // Tracker for meta location, if any client ZK quorum specified<a name="line.307"></a>
+<span class="sourceLineNo">308</span> MetaLocationSyncer metaLocationSyncer;<a name="line.308"></a>
+<span class="sourceLineNo">309</span> // Tracker for active master location, if any client ZK quorum specified<a name="line.309"></a>
+<span class="sourceLineNo">310</span> MasterAddressSyncer masterAddressSyncer;<a name="line.310"></a>
<span class="sourceLineNo">311</span><a name="line.311"></a>
-<span class="sourceLineNo">312</span> // Tracker for region normalizer state<a name="line.312"></a>
-<span class="sourceLineNo">313</span> private RegionNormalizerTracker regionNormalizerTracker;<a name="line.313"></a>
+<span class="sourceLineNo">312</span> // Tracker for split and merge state<a name="line.312"></a>
+<span class="sourceLineNo">313</span> private SplitOrMergeTracker splitOrMergeTracker;<a name="line.313"></a>
<span class="sourceLineNo">314</span><a name="line.314"></a>
-<span class="sourceLineNo">315</span> //Tracker for master maintenance mode setting<a name="line.315"></a>
-<span class="sourceLineNo">316</span> private MasterMaintenanceModeTracker maintenanceModeTracker;<a name="line.316"></a>
+<span class="sourceLineNo">315</span> // Tracker for region normalizer state<a name="line.315"></a>
+<span class="sourceLineNo">316</span> private RegionNormalizerTracker regionNormalizerTracker;<a name="line.316"></a>
<span class="sourceLineNo">317</span><a name="line.317"></a>
-<span class="sourceLineNo">318</span> private ClusterSchemaService clusterSchemaService;<a name="line.318"></a>
-<span class="sourceLineNo">319</span><a name="line.319"></a>
-<span class="sourceLineNo">320</span> public static final String HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS =<a name="line.320"></a>
-<span class="sourceLineNo">321</span> "hbase.master.wait.on.service.seconds";<a name="line.321"></a>
-<span class="sourceLineNo">322</span> public static final int DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS = 5 * 60;<a name="line.322"></a>
-<span class="sourceLineNo">323</span><a name="line.323"></a>
-<span class="sourceLineNo">324</span> // Metrics for the HMaster<a name="line.324"></a>
-<span class="sourceLineNo">325</span> final MetricsMaster metricsMaster;<a name="line.325"></a>
-<span class="sourceLineNo">326</span> // file system manager for the master FS operations<a name="line.326"></a>
-<span class="sourceLineNo">327</span> private MasterFileSystem fileSystemManager;<a name="line.327"></a>
-<span class="sourceLineNo">328</span> private MasterWalManager walManager;<a name="line.328"></a>
-<span class="sourceLineNo">329</span><a name="line.329"></a>
-<span class="sourceLineNo">330</span> // server manager to deal with region server info<a name="line.330"></a>
-<span class="sourceLineNo">331</span> private volatile ServerManager serverManager;<a name="line.331"></a>
+<span class="sourceLineNo">318</span> //Tracker for master maintenance mode setting<a name="line.318"></a>
+<span class="sourceLineNo">319</span> private MasterMaintenanceModeTracker maintenanceModeTracker;<a name="line.319"></a>
+<span class="sourceLineNo">320</span><a name="line.320"></a>
+<span class="sourceLineNo">321</span> private ClusterSchemaService clusterSchemaService;<a name="line.321"></a>
+<span class="sourceLineNo">322</span><a name="line.322"></a>
+<span class="sourceLineNo">323</span> public static final String HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS =<a name="line.323"></a>
+<span class="sourceLineNo">324</span> "hbase.master.wait.on.service.seconds";<a name="line.324"></a>
+<span class="sourceLineNo">325</span> public static final int DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS = 5 * 60;<a name="line.325"></a>
+<span class="sourceLineNo">326</span><a name="line.326"></a>
+<span class="sourceLineNo">327</span> // Metrics for the HMaster<a name="line.327"></a>
+<span class="sourceLineNo">328</span> final MetricsMaster metricsMaster;<a name="line.328"></a>
+<span class="sourceLineNo">329</span> // file system manager for the master FS operations<a name="line.329"></a>
+<span class="sourceLineNo">330</span> private MasterFileSystem fileSystemManager;<a name="line.330"></a>
+<span class="sourceLineNo">331</span> private MasterWalManager walManager;<a name="line.331"></a>
<span class="sourceLineNo">332</span><a name="line.332"></a>
-<span class="sourceLineNo">333</span> // manager of assignment nodes in zookeeper<a name="line.333"></a>
-<span class="sourceLineNo">334</span> private AssignmentManager assignmentManager;<a name="line.334"></a>
+<span class="sourceLineNo">333</span> // server manager to deal with region server info<a name="line.333"></a>
+<span class="sourceLineNo">334</span> private volatile ServerManager serverManager;<a name="line.334"></a>
<span class="sourceLineNo">335</span><a name="line.335"></a>
-<span class="sourceLineNo">336</span> // manager of replication<a name="line.336"></a>
-<span class="sourceLineNo">337</span> private ReplicationPeerManager replicationPeerManager;<a name="line.337"></a>
+<span class="sourceLineNo">336</span> // manager of assignment nodes in zookeeper<a name="line.336"></a>
+<span class="sourceLineNo">337</span> private AssignmentManager assignmentManager;<a name="line.337"></a>
<span class="sourceLineNo">338</span><a name="line.338"></a>
-<span class="sourceLineNo">339</span> // buffer for "fatal error" notices from region servers<a name="line.339"></a>
-<span class="sourceLineNo">340</span> // in the cluster. This is only used for assisting<a name="line.340"></a>
-<span class="sourceLineNo">341</span> // operations/debugging.<a name="line.341"></a>
-<span class="sourceLineNo">342</span> MemoryBoundedLogMessageBuffer rsFatals;<a name="line.342"></a>
-<span class="sourceLineNo">343</span><a name="line.343"></a>
-<span class="sourceLineNo">344</span> // flag set after we become the active master (used for testing)<a name="line.344"></a>
-<span class="sourceLineNo">345</span> private volatile boolean activeMaster = false;<a name="line.345"></a>
+<span class="sourceLineNo">339</span> // manager of replication<a name="line.339"></a>
+<span class="sourceLineNo">340</span> private ReplicationPeerManager replicationPeerManager;<a name="line.340"></a>
+<span class="sourceLineNo">341</span><a name="line.341"></a>
+<span class="sourceLineNo">342</span> // buffer for "fatal error" notices from region servers<a name="line.342"></a>
+<span class="sourceLineNo">343</span> // in the cluster. This is only used for assisting<a name="line.343"></a>
+<span class="sourceLineNo">344</span> // operations/debugging.<a name="line.344"></a>
+<span class="sourceLineNo">345</span> MemoryBoundedLogMessageBuffer rsFatals;<a name="line.345"></a>
<span class="sourceLineNo">346</span><a name="line.346"></a>
-<span class="sourceLineNo">347</span> // flag set after we complete initialization once active<a name="line.347"></a>
-<span class="sourceLineNo">348</span> private final ProcedureEvent<?> initialized = new ProcedureEvent<>("master initialized");<a name="line.348"></a>
+<span class="sourceLineNo">347</span> // flag set after we become the active master (used for testing)<a name="line.347"></a>
+<span class="sourceLineNo">348</span> private volatile boolean activeMaster = false;<a name="line.348"></a>
<span class="sourceLineNo">349</span><a name="line.349"></a>
-<span class="sourceLineNo">350</span> // flag set after master services are started,<a name="line.350"></a>
-<span class="sourceLineNo">351</span> // initialization may have not completed yet.<a name="line.351"></a>
-<span class="sourceLineNo">352</span> volatile boolean serviceStarted = false;<a name="line.352"></a>
-<span class="sourceLineNo">353</span><a name="line.353"></a>
-<span class="sourceLineNo">354</span> // flag set after we complete assignMeta.<a name="line.354"></a>
-<span class="sourceLineNo">355</span> private final ProcedureEvent<?> serverCrashProcessingEnabled =<a name="line.355"></a>
-<span class="sourceLineNo">356</span> new ProcedureEvent<>("server crash processing");<a name="line.356"></a>
-<span class="sourceLineNo">357</span><a name="line.357"></a>
-<span class="sourceLineNo">358</span> // Maximum time we should run balancer for<a name="line.358"></a>
-<span class="sourceLineNo">359</span> private final int maxBlancingTime;<a name="line.359"></a>
-<span class="sourceLineNo">360</span> // Maximum percent of regions in transition when balancing<a name="line.360"></a>
-<span class="sourceLineNo">361</span> private final double maxRitPercent;<a name="line.361"></a>
-<span class="sourceLineNo">362</span><a name="line.362"></a>
-<span class="sourceLineNo">363</span> private final LockManager lockManager = new LockManager(this);<a name="line.363"></a>
-<span class="sourceLineNo">364</span><a name="line.364"></a>
-<span class="sourceLineNo">365</span> private LoadBalancer balancer;<a name="line.365"></a>
-<span class="sourceLineNo">366</span> private RegionNormalizer normalizer;<a name="line.366"></a>
-<span class="sourceLineNo">367</span> private BalancerChore balancerChore;<a name="line.367"></a>
-<span class="sourceLineNo">368</span> private RegionNormalizerChore normalizerChore;<a name="line.368"></a>
-<span class="sourceLineNo">369</span> private ClusterStatusChore clusterStatusChore;<a name="line.369"></a>
-<span class="sourceLineNo">370</span> private ClusterStatusPublisher clusterStatusPublisherChore = null;<a name="line.370"></a>
-<span class="sourceLineNo">371</span><a name="line.371"></a>
-<span class="sourceLineNo">372</span> CatalogJanitor catalogJanitorChore;<a name="line.372"></a>
-<span class="sourceLineNo">373</span> private LogCleaner logCleaner;<a name="line.373"></a>
-<span class="sourceLineNo">374</span> private HFileCleaner hfileCleaner;<a name="line.374"></a>
-<span class="sourceLineNo">375</span> private ReplicationBarrierCleaner replicationBarrierCleaner;<a name="line.375"></a>
-<span class="sourceLineNo">376</span> private ExpiredMobFileCleanerChore expiredMobFileCleanerChore;<a name="line.376"></a>
-<span class="sourceLineNo">377</span> private MobCompactionChore mobCompactChore;<a name="line.377"></a>
-<span class="sourceLineNo">378</span> private MasterMobCompactionThread mobCompactThread;<a name="line.378"></a>
-<span class="sourceLineNo">379</span> // used to synchronize the mobCompactionStates<a name="line.379"></a>
-<span class="sourceLineNo">380</span> private final IdLock mobCompactionLock = new IdLock();<a name="line.380"></a>
-<span class="sourceLineNo">381</span> // save the information of mob compactions in tables.<a name="line.381"></a>
-<span class="sourceLineNo">382</span> // the key is table name, the value is the number of compactions in that table.<a name="line.382"></a>
-<span class="sourceLineNo">383</span> private Map<TableName, AtomicInteger> mobCompactionStates = Maps.newConcurrentMap();<a name="line.383"></a>
-<span class="sourceLineNo">384</span><a name="line.384"></a>
-<span class="sourceLineNo">385</span> MasterCoprocessorHost cpHost;<a name="line.385"></a>
-<span class="sourceLineNo">386</span><a name="line.386"></a>
-<span class="sourceLineNo">387</span> private final boolean preLoadTableDescriptors;<a name="line.387"></a>
-<span class="sourceLineNo">388</span><a name="line.388"></a>
-<span class="sourceLineNo">389</span> // Time stamps for when a hmaster became active<a name="line.389"></a>
-<span class="sourceLineNo">390</span> private long masterActiveTime;<a name="line.390"></a>
-<span class="sourceLineNo">391</span><a name="line.391"></a>
-<span class="sourceLineNo">392</span> // Time stamp for when HMaster finishes becoming Active Master<a name="line.392"></a>
-<span class="sourceLineNo">393</span> private long masterFinishedInitializationTime;<a name="line.393"></a>
-<span class="sourceLineNo">394</span><a name="line.394"></a>
-<span class="sourceLineNo">395</span> //should we check the compression codec type at master side, default true, HBASE-6370<a name="line.395"></a>
-<span class="sourceLineNo">396</span> private final boolean masterCheckCompression;<a name="line.396"></a>
-<span class="sourceLineNo">397</span><a name="line.397"></a>
-<span class="sourceLineNo">398</span> //should we check encryption settings at master side, default true<a name="line.398"></a>
-<span class="sourceLineNo">399</span> private final boolean masterCheckEncryption;<a name="line.399"></a>
-<span class="sourceLineNo">400</span><a name="line.400"></a>
-<span class="sourceLineNo">401</span> Map<String, Service> coprocessorServiceHandlers = Maps.newHashMap();<a name="line.401"></a>
-<span class="sourceLineNo">402</span><a name="line.402"></a>
-<span class="sourceLineNo">403</span> // monitor for snapshot of hbase tables<a name="line.403"></a>
-<span class="sourceLineNo">404</span> SnapshotManager snapshotManager;<a name="line.404"></a>
-<span class="sourceLineNo">405</span> // monitor for distributed procedures<a name="line.405"></a>
-<span class="sourceLineNo">406</span> private MasterProcedureManagerHost mpmHost;<a name="line.406"></a>
-<span class="sourceLineNo">407</span><a name="line.407"></a>
-<span class="sourceLineNo">408</span> // it is assigned after 'initialized' guard set to true, so should be volatile<a name="line.408"></a>
-<span class="sourceLineNo">409</span> private volatile MasterQuotaManager quotaManager;<a name="line.409"></a>
-<span class="sourceLineNo">410</span> private SpaceQuotaSnapshotNotifier spaceQuotaSnapshotNotifier;<a name="line.410"></a>
-<span class="sourceLineNo">411</span> private QuotaObserverChore quotaObserverChore;<a name="line.411"></a>
-<span class="sourceLineNo">412</span> private SnapshotQuotaObserverChore snapshotQuotaChore;<a name="line.412"></a>
-<span class="sourceLineNo">413</span><a name="line.413"></a>
-<span class="sourceLineNo">414</span> private ProcedureExecutor<MasterProcedureEnv> procedureExecutor;<a name="line.414"></a>
-<span class="sourceLineNo">415</span> private WALProcedureStore procedureStore;<a name="line.415"></a>
-<span class="sourceLineNo">416</span><a name="line.416"></a>
-<span class="sourceLineNo">417</span> // handle table states<a name="line.417"></a>
-<span class="sourceLineNo">418</span> private TableStateManager tableStateManager;<a name="line.418"></a>
-<span class="sourceLineNo">419</span><a name="line.419"></a>
-<span class="sourceLineNo">420</span> private long splitPlanCount;<a name="line.420"></a>
-<span class="sourceLineNo">421</span> private long mergePlanCount;<a name="line.421"></a>
-<span class="sourceLineNo">422</span><a name="line.422"></a>
-<span class="sourceLineNo">423</span> /* Handle favored nodes information */<a name="line.423"></a>
-<span class="sourceLineNo">424</span> private FavoredNodesManager favoredNodesManager;<a name="line.424"></a>
-<span class="sourceLineNo">425</span><a name="line.425"></a>
-<span class="sourceLineNo">426</span> /** jetty server for master to redirect requests to regionserver infoServer */<a name="line.426"></a>
-<span class="sourceLineNo">427</span> private Server masterJettyServer;<a name="line.427"></a>
-<span class="sourceLineNo">428</span><a name="line.428"></a>
-<span class="sourceLineNo">429</span> public static class RedirectServlet extends HttpServlet {<a name="line.429"></a>
-<span class="sourceLineNo">430</span> private static final long serialVersionUID = 2894774810058302473L;<a name="line.430"></a>
-<span class="sourceLineNo">431</span> private final int regionServerInfoPort;<a name="line.431"></a>
-<span class="sourceLineNo">432</span> private final String regionServerHostname;<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> * @param infoServer that we're trying to send all requests to<a name="line.435"></a>
-<span class="sourceLineNo">436</span> * @param hostname may be null. if given, will be used for redirects instead of host from client.<a name="line.436"></a>
-<span class="sourceLineNo">437</span> */<a name="line.437"></a>
-<span class="sourceLineNo">438</span> public RedirectServlet(InfoServer infoServer, String hostname) {<a name="line.438"></a>
-<span class="sourceLineNo">439</span> regionServerInfoPort = infoServer.getPort();<a name="line.439"></a>
-<span class="sourceLineNo">440</span> regionServerHostname = hostname;<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> @Override<a name="line.443"></a>
-<span class="sourceLineNo">444</span> public void doGet(HttpServletRequest request,<a name="line.444"></a>
-<span class="sourceLineNo">445</span> HttpServletResponse response) throws ServletException, IOException {<a name="line.445"></a>
-<span class="sourceLineNo">446</span> String redirectHost = regionServerHostname;<a name="line.446"></a>
-<span class="sourceLineNo">447</span> if(redirectHost == null) {<a name="line.447"></a>
-<span class="sourceLineNo">448</span> redirectHost = request.getServerName();<a name="line.448"></a>
-<span class="sourceLineNo">449</span> if(!Addressing.isLocalAddress(InetAddress.getByName(redirectHost))) {<a name="line.449"></a>
-<span class="sourceLineNo">450</span> LOG.warn("Couldn't resolve '" + redirectHost + "' as an address local to this node and '" +<a name="line.450"></a>
-<span class="sourceLineNo">451</span> MASTER_HOSTNAME_KEY + "' is not set; client will get a HTTP 400 response. If " +<a name="line.451"></a>
-<span class="sourceLineNo">452</span> "your HBase deployment relies on client accessible names that the region server process " +<a name="line.452"></a>
-<span class="sourceLineNo">453</span> "can't resolve locally, then you should set the previously mentioned configuration variable " +<a name="line.453"></a>
-<span class="sourceLineNo">454</span> "to an appropriate hostname.");<a name="line.454"></a>
-<span class="sourceLineNo">455</span> // no sending client provided input back to the client, so the goal host is just in the logs.<a name="line.455"></a>
-<span class="sourceLineNo">456</span> response.sendError(400, "Request was to a host that I can't resolve for any of the network interfaces on " +<a name="line.456"></a>
-<span class="sourceLineNo">457</span> "this node. If this is due to an intermediary such as an HTTP load balancer or other proxy, your HBase " +<a name="line.457"></a>
-<span class="sourceLineNo">458</span> "administrator can set '" + MASTER_HOSTNAME_KEY + "' to point to the correct hostname.");<a name="line.458"></a>
-<span class="sourceLineNo">459</span> return;<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> // TODO this scheme should come from looking at the scheme registered in the infoserver's http server for the<a name="line.462"></a>
-<span class="sourceLineNo">463</span> // host and port we're using, but it's buried way too deep to do that ATM.<a name="line.463"></a>
-<span class="sourceLineNo">464</span> String redirectUrl = request.getScheme() + "://"<a name="line.464"></a>
-<span class="sourceLineNo">465</span> + redirectHost + ":" + regionServerInfoPort<a name="line.465"></a>
-<span class="sourceLineNo">466</span> + request.getRequestURI();<a name="line.466"></a>
-<span class="sourceLineNo">467</span> response.sendRedirect(redirectUrl);<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><a name="line.470"></a>
-<span class="sourceLineNo">471</span> /**<a name="line.471"></a>
-<span class="sourceLineNo">472</span> * Initializes the HMaster. The steps are as follows:<a name="line.472"></a>
-<span class="sourceLineNo">473</span> * <p><a name="line.473"></a>
-<span class="sourceLineNo">474</span> * <ol><a name="line.474"></a>
-<span class="sourceLineNo">475</span> * <li>Initialize the local HRegionServer<a name="line.475"></a>
-<span class="sourceLineNo">476</span> * <li>Start the ActiveMasterManager.<a name="line.476"></a>
-<span class="sourceLineNo">477</span> * </ol><a name="line.477"></a>
-<span class="sourceLineNo">478</span> * <p><a name="line.478"></a>
-<span class="sourceLineNo">479</span> * Remaining steps of initialization occur in<a name="line.479"></a>
-<span class="sourceLineNo">480</span> * #finishActiveMasterInitialization(MonitoredTask) after<a name="line.480"></a>
-<span class="sourceLineNo">481</span> * the master becomes the active one.<a name="line.481"></a>
-<span class="sourceLineNo">482</span> */<a name="line.482"></a>
-<span class="sourceLineNo">483</span> public HMaster(final Configuration conf)<a name="line.483"></a>
-<span class="sourceLineNo">484</span> throws IOException, KeeperException {<a name="line.484"></a>
-<span class="sourceLineNo">485</span> super(conf);<a name="line.485"></a>
-<span class="sourceLineNo">486</span> TraceUtil.initTracer(conf);<a name="line.486"></a>
-<span class="sourceLineNo">487</span> try {<a name="line.487"></a>
-<span class="sourceLineNo">488</span> this.rsFatals = new MemoryBoundedLogMessageBuffer(<a name="line.488"></a>
-<span class="sourceLineNo">489</span> conf.getLong("hbase.master.buffer.for.rs.fatals", 1 * 1024 * 1024));<a name="line.489"></a>
-<span class="sourceLineNo">490</span> LOG.info("hbase.rootdir=" + getRootDir() +<a name="line.490"></a>
-<span class="sourceLineNo">491</span> ", hbase.cluster.distributed=" + this.conf.getBoolean(HConstants.CLUSTER_DISTRIBUTED, false));<a name="line.491"></a>
-<span class="sourceLineNo">492</span><a name="line.492"></a>
-<span class="sourceLineNo">493</span> // Disable usage of meta replicas in the master<a name="line.493"></a>
-<span class="sourceLineNo">494</span> this.conf.setBoolean(HConstants.USE_META_REPLICAS, false);<a name="line.494"></a>
-<span class="sourceLineNo">495</span><a name="line.495"></a>
-<span class="sourceLineNo">496</span> decorateMasterConfiguration(this.conf);<a name="line.496"></a>
-<span class="sourceLineNo">497</span><a name="line.497"></a>
-<span class="sourceLineNo">498</span> // Hack! Maps DFSClient => Master for logs. HDFS made this<a name="line.498"></a>
-<span class="sourceLineNo">499</span> // config param for task trackers, but we can piggyback off of it.<a name="line.499"></a>
-<span class="sourceLineNo">500</span> if (this.conf.get("mapreduce.task.attempt.id") == null) {<a name="line.500"></a>
-<span class="sourceLineNo">501</span> this.conf.set("mapreduce.task.attempt.id", "hb_m_" + this.serverName.toString());<a name="line.501"></a>
-<span class="sourceLineNo">502</span> }<a name="line.502"></a>
-<span class="sourceLineNo">503</span><a name="line.503"></a>
-<span class="sourceLineNo">504</span> // should we check the compression codec type at master side, default true, HBASE-6370<a name="line.504"></a>
-<span class="sourceLineNo">505</span> this.masterCheckCompression = conf.getBoolean("hbase.master.check.compression", true);<a name="line.505"></a>
-<span class="sourceLineNo">506</span><a name="line.506"></a>
-<span class="sourceLineNo">507</span> // should we check encryption settings at master side, default true<a name="line.507"></a>
-<span class="sourceLineNo">508</span> this.masterCheckEncryption = conf.getBoolean("hbase.master.check.encryption", true);<a name="line.508"></a>
-<span class="sourceLineNo">509</span><a name="line.509"></a>
-<span class="sourceLineNo">510</span> this.metricsMaster = new MetricsMaster(new MetricsMasterWrapperImpl(this));<a name="line.510"></a>
-<span class="sourceLineNo">511</span><a name="line.511"></a>
-<span class="sourceLineNo">512</span> // preload table descriptor at startup<a name="line.512"></a>
-<span class="sourceLineNo">513</span> this.preLoadTableDescriptors = conf.getBoolean("hbase.master.preload.tabledescriptors", true);<a name="line.513"></a>
-<span class="sourceLineNo">514</span><a name="line.514"></a>
-<span class="sourceLineNo">515</span> this.maxBlancingTime = getMaxBalancingTime();<a name="line.515"></a>
-<span class="sourceLineNo">516</span> this.maxRitPercent = conf.getDouble(HConstants.HBASE_MASTER_BALANCER_MAX_RIT_PERCENT,<a name="line.516"></a>
-<span class="sourceLineNo">517</span> HConstants.DEFAULT_HBASE_MASTER_BALANCER_MAX_RIT_PERCENT);<a name="line.517"></a>
-<span class="sourceLineNo">518</span><a name="line.518"></a>
-<span class="sourceLineNo">519</span> // Do we publish the status?<a name="line.519"></a>
-<span class="sourceLineNo">520</span><a name="line.520"></a>
-<span class="sourceLineNo">521</span> boolean shouldPublish = conf.getBoolean(HConstants.STATUS_PUBLISHED,<a name="line.521"></a>
-<span class="sourceLineNo">522</span> HConstants.STATUS_PUBLISHED_DEFAULT);<a name="line.522"></a>
-<span class="sourceLineNo">523</span> Class<? extends ClusterStatusPublisher.Publisher> publisherClass =<a name="line.523"></a>
-<span class="sourceLineNo">524</span> conf.getClass(ClusterStatusPublisher.STATUS_PUBLISHER_CLASS,<a name="line.524"></a>
-<span class="sourceLineNo">525</span> ClusterStatusPublisher.DEFAULT_STATUS_PUBLISHER_CLASS,<a name="line.525"></a>
-<span class="sourceLineNo">526</span> ClusterStatusPublisher.Publisher.class);<a name="line.526"></a>
-<span class="sourceLineNo">527</span><a name="line.527"></a>
-<span class="sourceLineNo">528</span> if (shouldPublish) {<a name="line.528"></a>
-<span class="sourceLineNo">529</span> if (publisherClass == null) {<a name="line.529"></a>
-<span class="sourceLineNo">530</span> LOG.warn(HConstants.STATUS_PUBLISHED + " is true, but " +<a name="line.530"></a>
-<span class="sourceLineNo">531</span> ClusterStatusPublisher.DEFAULT_STATUS_PUBLISHER_CLASS +<a name="line.531"></a>
-<span class="sourceLineNo">532</span> " is not set - not publishing status");<a name="line.532"></a>
-<span class="sourceLineNo">533</span> } else {<a name="line.533"></a>
-<span class="sourceLineNo">534</span> clusterStatusPublisherChore = new ClusterStatusPublisher(this, conf, publisherClass);<a name="line.534"></a>
-<span class="sourceLi
<TRUNCATED>
[24/51] [partial] hbase-site git commit: Published site at
9101fc246f86445006bfbcdfda5cc495016dc280.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.CloseableVisitor.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.CloseableVisitor.html b/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.CloseableVisitor.html
index fea2b5a..c7a6cc4 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.CloseableVisitor.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.CloseableVisitor.html
@@ -1354,816 +1354,824 @@
<span class="sourceLineNo">1346</span> */<a name="line.1346"></a>
<span class="sourceLineNo">1347</span> public static void putsToMetaTable(final Connection connection, final List<Put> ps)<a name="line.1347"></a>
<span class="sourceLineNo">1348</span> throws IOException {<a name="line.1348"></a>
-<span class="sourceLineNo">1349</span> try (Table t = getMetaHTable(connection)) {<a name="line.1349"></a>
-<span class="sourceLineNo">1350</span> debugLogMutations(ps);<a name="line.1350"></a>
-<span class="sourceLineNo">1351</span> t.put(ps);<a name="line.1351"></a>
-<span class="sourceLineNo">1352</span> }<a name="line.1352"></a>
-<span class="sourceLineNo">1353</span> }<a name="line.1353"></a>
-<span class="sourceLineNo">1354</span><a name="line.1354"></a>
-<span class="sourceLineNo">1355</span> /**<a name="line.1355"></a>
-<span class="sourceLineNo">1356</span> * Delete the passed <code>d</code> from the <code>hbase:meta</code> table.<a name="line.1356"></a>
-<span class="sourceLineNo">1357</span> * @param connection connection we're using<a name="line.1357"></a>
-<span class="sourceLineNo">1358</span> * @param d Delete to add to hbase:meta<a name="line.1358"></a>
-<span class="sourceLineNo">1359</span> */<a name="line.1359"></a>
-<span class="sourceLineNo">1360</span> private static void deleteFromMetaTable(final Connection connection, final Delete d)<a name="line.1360"></a>
-<span class="sourceLineNo">1361</span> throws IOException {<a name="line.1361"></a>
-<span class="sourceLineNo">1362</span> List<Delete> dels = new ArrayList<>(1);<a name="line.1362"></a>
-<span class="sourceLineNo">1363</span> dels.add(d);<a name="line.1363"></a>
-<span class="sourceLineNo">1364</span> deleteFromMetaTable(connection, dels);<a name="line.1364"></a>
-<span class="sourceLineNo">1365</span> }<a name="line.1365"></a>
-<span class="sourceLineNo">1366</span><a name="line.1366"></a>
-<span class="sourceLineNo">1367</span> /**<a name="line.1367"></a>
-<span class="sourceLineNo">1368</span> * Delete the passed <code>deletes</code> from the <code>hbase:meta</code> table.<a name="line.1368"></a>
-<span class="sourceLineNo">1369</span> * @param connection connection we're using<a name="line.1369"></a>
-<span class="sourceLineNo">1370</span> * @param deletes Deletes to add to hbase:meta This list should support #remove.<a name="line.1370"></a>
-<span class="sourceLineNo">1371</span> */<a name="line.1371"></a>
-<span class="sourceLineNo">1372</span> private static void deleteFromMetaTable(final Connection connection, final List<Delete> deletes)<a name="line.1372"></a>
-<span class="sourceLineNo">1373</span> throws IOException {<a name="line.1373"></a>
-<span class="sourceLineNo">1374</span> try (Table t = getMetaHTable(connection)) {<a name="line.1374"></a>
-<span class="sourceLineNo">1375</span> debugLogMutations(deletes);<a name="line.1375"></a>
-<span class="sourceLineNo">1376</span> t.delete(deletes);<a name="line.1376"></a>
-<span class="sourceLineNo">1377</span> }<a name="line.1377"></a>
-<span class="sourceLineNo">1378</span> }<a name="line.1378"></a>
-<span class="sourceLineNo">1379</span><a name="line.1379"></a>
-<span class="sourceLineNo">1380</span> /**<a name="line.1380"></a>
-<span class="sourceLineNo">1381</span> * Deletes some replica columns corresponding to replicas for the passed rows<a name="line.1381"></a>
-<span class="sourceLineNo">1382</span> * @param metaRows rows in hbase:meta<a name="line.1382"></a>
-<span class="sourceLineNo">1383</span> * @param replicaIndexToDeleteFrom the replica ID we would start deleting from<a name="line.1383"></a>
-<span class="sourceLineNo">1384</span> * @param numReplicasToRemove how many replicas to remove<a name="line.1384"></a>
-<span class="sourceLineNo">1385</span> * @param connection connection we're using to access meta table<a name="line.1385"></a>
-<span class="sourceLineNo">1386</span> */<a name="line.1386"></a>
-<span class="sourceLineNo">1387</span> public static void removeRegionReplicasFromMeta(Set<byte[]> metaRows,<a name="line.1387"></a>
-<span class="sourceLineNo">1388</span> int replicaIndexToDeleteFrom, int numReplicasToRemove, Connection connection)<a name="line.1388"></a>
-<span class="sourceLineNo">1389</span> throws IOException {<a name="line.1389"></a>
-<span class="sourceLineNo">1390</span> int absoluteIndex = replicaIndexToDeleteFrom + numReplicasToRemove;<a name="line.1390"></a>
-<span class="sourceLineNo">1391</span> for (byte[] row : metaRows) {<a name="line.1391"></a>
-<span class="sourceLineNo">1392</span> long now = EnvironmentEdgeManager.currentTime();<a name="line.1392"></a>
-<span class="sourceLineNo">1393</span> Delete deleteReplicaLocations = new Delete(row);<a name="line.1393"></a>
-<span class="sourceLineNo">1394</span> for (int i = replicaIndexToDeleteFrom; i < absoluteIndex; i++) {<a name="line.1394"></a>
-<span class="sourceLineNo">1395</span> deleteReplicaLocations.addColumns(getCatalogFamily(),<a name="line.1395"></a>
-<span class="sourceLineNo">1396</span> getServerColumn(i), now);<a name="line.1396"></a>
-<span class="sourceLineNo">1397</span> deleteReplicaLocations.addColumns(getCatalogFamily(),<a name="line.1397"></a>
-<span class="sourceLineNo">1398</span> getSeqNumColumn(i), now);<a name="line.1398"></a>
-<span class="sourceLineNo">1399</span> deleteReplicaLocations.addColumns(getCatalogFamily(),<a name="line.1399"></a>
-<span class="sourceLineNo">1400</span> getStartCodeColumn(i), now);<a name="line.1400"></a>
-<span class="sourceLineNo">1401</span> }<a name="line.1401"></a>
-<span class="sourceLineNo">1402</span> deleteFromMetaTable(connection, deleteReplicaLocations);<a name="line.1402"></a>
-<span class="sourceLineNo">1403</span> }<a name="line.1403"></a>
-<span class="sourceLineNo">1404</span> }<a name="line.1404"></a>
-<span class="sourceLineNo">1405</span><a name="line.1405"></a>
-<span class="sourceLineNo">1406</span> /**<a name="line.1406"></a>
-<span class="sourceLineNo">1407</span> * Execute the passed <code>mutations</code> against <code>hbase:meta</code> table.<a name="line.1407"></a>
-<span class="sourceLineNo">1408</span> * @param connection connection we're using<a name="line.1408"></a>
-<span class="sourceLineNo">1409</span> * @param mutations Puts and Deletes to execute on hbase:meta<a name="line.1409"></a>
-<span class="sourceLineNo">1410</span> * @throws IOException<a name="line.1410"></a>
-<span class="sourceLineNo">1411</span> */<a name="line.1411"></a>
-<span class="sourceLineNo">1412</span> public static void mutateMetaTable(final Connection connection,<a name="line.1412"></a>
-<span class="sourceLineNo">1413</span> final List<Mutation> mutations)<a name="line.1413"></a>
-<span class="sourceLineNo">1414</span> throws IOException {<a name="line.1414"></a>
-<span class="sourceLineNo">1415</span> Table t = getMetaHTable(connection);<a name="line.1415"></a>
-<span class="sourceLineNo">1416</span> try {<a name="line.1416"></a>
-<span class="sourceLineNo">1417</span> debugLogMutations(mutations);<a name="line.1417"></a>
-<span class="sourceLineNo">1418</span> t.batch(mutations, null);<a name="line.1418"></a>
-<span class="sourceLineNo">1419</span> } catch (InterruptedException e) {<a name="line.1419"></a>
-<span class="sourceLineNo">1420</span> InterruptedIOException ie = new InterruptedIOException(e.getMessage());<a name="line.1420"></a>
-<span class="sourceLineNo">1421</span> ie.initCause(e);<a name="line.1421"></a>
-<span class="sourceLineNo">1422</span> throw ie;<a name="line.1422"></a>
-<span class="sourceLineNo">1423</span> } finally {<a name="line.1423"></a>
-<span class="sourceLineNo">1424</span> t.close();<a name="line.1424"></a>
-<span class="sourceLineNo">1425</span> }<a name="line.1425"></a>
-<span class="sourceLineNo">1426</span> }<a name="line.1426"></a>
-<span class="sourceLineNo">1427</span><a name="line.1427"></a>
-<span class="sourceLineNo">1428</span> private static void addRegionStateToPut(Put put, RegionState.State state) throws IOException {<a name="line.1428"></a>
-<span class="sourceLineNo">1429</span> put.add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.1429"></a>
-<span class="sourceLineNo">1430</span> .setRow(put.getRow())<a name="line.1430"></a>
-<span class="sourceLineNo">1431</span> .setFamily(HConstants.CATALOG_FAMILY)<a name="line.1431"></a>
-<span class="sourceLineNo">1432</span> .setQualifier(getRegionStateColumn())<a name="line.1432"></a>
-<span class="sourceLineNo">1433</span> .setTimestamp(put.getTimestamp())<a name="line.1433"></a>
-<span class="sourceLineNo">1434</span> .setType(Cell.Type.Put)<a name="line.1434"></a>
-<span class="sourceLineNo">1435</span> .setValue(Bytes.toBytes(state.name()))<a name="line.1435"></a>
-<span class="sourceLineNo">1436</span> .build());<a name="line.1436"></a>
-<span class="sourceLineNo">1437</span> }<a name="line.1437"></a>
-<span class="sourceLineNo">1438</span><a name="line.1438"></a>
-<span class="sourceLineNo">1439</span> /**<a name="line.1439"></a>
-<span class="sourceLineNo">1440</span> * Adds daughter region infos to hbase:meta row for the specified region. Note that this does not<a name="line.1440"></a>
-<span class="sourceLineNo">1441</span> * add its daughter's as different rows, but adds information about the daughters in the same row<a name="line.1441"></a>
-<span class="sourceLineNo">1442</span> * as the parent. Use<a name="line.1442"></a>
-<span class="sourceLineNo">1443</span> * {@link #splitRegion(Connection, RegionInfo, long, RegionInfo, RegionInfo, ServerName, int)}<a name="line.1443"></a>
-<span class="sourceLineNo">1444</span> * if you want to do that.<a name="line.1444"></a>
-<span class="sourceLineNo">1445</span> * @param connection connection we're using<a name="line.1445"></a>
-<span class="sourceLineNo">1446</span> * @param regionInfo RegionInfo of parent region<a name="line.1446"></a>
-<span class="sourceLineNo">1447</span> * @param splitA first split daughter of the parent regionInfo<a name="line.1447"></a>
-<span class="sourceLineNo">1448</span> * @param splitB second split daughter of the parent regionInfo<a name="line.1448"></a>
-<span class="sourceLineNo">1449</span> * @throws IOException if problem connecting or updating meta<a name="line.1449"></a>
-<span class="sourceLineNo">1450</span> */<a name="line.1450"></a>
-<span class="sourceLineNo">1451</span> public static void addSplitsToParent(Connection connection, RegionInfo regionInfo,<a name="line.1451"></a>
-<span class="sourceLineNo">1452</span> RegionInfo splitA, RegionInfo splitB) throws IOException {<a name="line.1452"></a>
-<span class="sourceLineNo">1453</span> Table meta = getMetaHTable(connection);<a name="line.1453"></a>
-<span class="sourceLineNo">1454</span> try {<a name="line.1454"></a>
-<span class="sourceLineNo">1455</span> Put put = makePutFromRegionInfo(regionInfo, EnvironmentEdgeManager.currentTime());<a name="line.1455"></a>
-<span class="sourceLineNo">1456</span> addDaughtersToPut(put, splitA, splitB);<a name="line.1456"></a>
-<span class="sourceLineNo">1457</span> meta.put(put);<a name="line.1457"></a>
-<span class="sourceLineNo">1458</span> debugLogMutation(put);<a name="line.1458"></a>
-<span class="sourceLineNo">1459</span> LOG.debug("Added region {}", regionInfo.getRegionNameAsString());<a name="line.1459"></a>
-<span class="sourceLineNo">1460</span> } finally {<a name="line.1460"></a>
-<span class="sourceLineNo">1461</span> meta.close();<a name="line.1461"></a>
-<span class="sourceLineNo">1462</span> }<a name="line.1462"></a>
-<span class="sourceLineNo">1463</span> }<a name="line.1463"></a>
-<span class="sourceLineNo">1464</span><a name="line.1464"></a>
-<span class="sourceLineNo">1465</span> /**<a name="line.1465"></a>
-<span class="sourceLineNo">1466</span> * Adds a (single) hbase:meta row for the specified new region and its daughters. Note that this<a name="line.1466"></a>
-<span class="sourceLineNo">1467</span> * does not add its daughter's as different rows, but adds information about the daughters<a name="line.1467"></a>
-<span class="sourceLineNo">1468</span> * in the same row as the parent. Use<a name="line.1468"></a>
-<span class="sourceLineNo">1469</span> * {@link #splitRegion(Connection, RegionInfo, long, RegionInfo, RegionInfo, ServerName, int)}<a name="line.1469"></a>
-<span class="sourceLineNo">1470</span> * if you want to do that.<a name="line.1470"></a>
-<span class="sourceLineNo">1471</span> * @param connection connection we're using<a name="line.1471"></a>
-<span class="sourceLineNo">1472</span> * @param regionInfo region information<a name="line.1472"></a>
-<span class="sourceLineNo">1473</span> * @throws IOException if problem connecting or updating meta<a name="line.1473"></a>
-<span class="sourceLineNo">1474</span> */<a name="line.1474"></a>
-<span class="sourceLineNo">1475</span> @VisibleForTesting<a name="line.1475"></a>
-<span class="sourceLineNo">1476</span> public static void addRegionToMeta(Connection connection, RegionInfo regionInfo)<a name="line.1476"></a>
-<span class="sourceLineNo">1477</span> throws IOException {<a name="line.1477"></a>
-<span class="sourceLineNo">1478</span> addRegionsToMeta(connection, Collections.singletonList(regionInfo), 1);<a name="line.1478"></a>
-<span class="sourceLineNo">1479</span> }<a name="line.1479"></a>
-<span class="sourceLineNo">1480</span><a name="line.1480"></a>
-<span class="sourceLineNo">1481</span> /**<a name="line.1481"></a>
-<span class="sourceLineNo">1482</span> * Adds a hbase:meta row for each of the specified new regions. Initial state for new regions<a name="line.1482"></a>
-<span class="sourceLineNo">1483</span> * is CLOSED.<a name="line.1483"></a>
-<span class="sourceLineNo">1484</span> * @param connection connection we're using<a name="line.1484"></a>
-<span class="sourceLineNo">1485</span> * @param regionInfos region information list<a name="line.1485"></a>
-<span class="sourceLineNo">1486</span> * @throws IOException if problem connecting or updating meta<a name="line.1486"></a>
-<span class="sourceLineNo">1487</span> */<a name="line.1487"></a>
-<span class="sourceLineNo">1488</span> public static void addRegionsToMeta(Connection connection, List<RegionInfo> regionInfos,<a name="line.1488"></a>
-<span class="sourceLineNo">1489</span> int regionReplication) throws IOException {<a name="line.1489"></a>
-<span class="sourceLineNo">1490</span> addRegionsToMeta(connection, regionInfos, regionReplication,<a name="line.1490"></a>
-<span class="sourceLineNo">1491</span> EnvironmentEdgeManager.currentTime());<a name="line.1491"></a>
-<span class="sourceLineNo">1492</span> }<a name="line.1492"></a>
-<span class="sourceLineNo">1493</span><a name="line.1493"></a>
-<span class="sourceLineNo">1494</span> /**<a name="line.1494"></a>
-<span class="sourceLineNo">1495</span> * Adds a hbase:meta row for each of the specified new regions. Initial state for new regions<a name="line.1495"></a>
-<span class="sourceLineNo">1496</span> * is CLOSED.<a name="line.1496"></a>
-<span class="sourceLineNo">1497</span> * @param connection connection we're using<a name="line.1497"></a>
-<span class="sourceLineNo">1498</span> * @param regionInfos region information list<a name="line.1498"></a>
-<span class="sourceLineNo">1499</span> * @param regionReplication<a name="line.1499"></a>
-<span class="sourceLineNo">1500</span> * @param ts desired timestamp<a name="line.1500"></a>
-<span class="sourceLineNo">1501</span> * @throws IOException if problem connecting or updating meta<a name="line.1501"></a>
-<span class="sourceLineNo">1502</span> */<a name="line.1502"></a>
-<span class="sourceLineNo">1503</span> private static void addRegionsToMeta(Connection connection, List<RegionInfo> regionInfos,<a name="line.1503"></a>
-<span class="sourceLineNo">1504</span> int regionReplication, long ts) throws IOException {<a name="line.1504"></a>
-<span class="sourceLineNo">1505</span> List<Put> puts = new ArrayList<>();<a name="line.1505"></a>
-<span class="sourceLineNo">1506</span> for (RegionInfo regionInfo : regionInfos) {<a name="line.1506"></a>
-<span class="sourceLineNo">1507</span> if (RegionReplicaUtil.isDefaultReplica(regionInfo)) {<a name="line.1507"></a>
-<span class="sourceLineNo">1508</span> Put put = makePutFromRegionInfo(regionInfo, ts);<a name="line.1508"></a>
-<span class="sourceLineNo">1509</span> // New regions are added with initial state of CLOSED.<a name="line.1509"></a>
-<span class="sourceLineNo">1510</span> addRegionStateToPut(put, RegionState.State.CLOSED);<a name="line.1510"></a>
-<span class="sourceLineNo">1511</span> // Add empty locations for region replicas so that number of replicas can be cached<a name="line.1511"></a>
-<span class="sourceLineNo">1512</span> // whenever the primary region is looked up from meta<a name="line.1512"></a>
-<span class="sourceLineNo">1513</span> for (int i = 1; i < regionReplication; i++) {<a name="line.1513"></a>
-<span class="sourceLineNo">1514</span> addEmptyLocation(put, i);<a name="line.1514"></a>
-<span class="sourceLineNo">1515</span> }<a name="line.1515"></a>
-<span class="sourceLineNo">1516</span> puts.add(put);<a name="line.1516"></a>
-<span class="sourceLineNo">1517</span> }<a name="line.1517"></a>
-<span class="sourceLineNo">1518</span> }<a name="line.1518"></a>
-<span class="sourceLineNo">1519</span> putsToMetaTable(connection, puts);<a name="line.1519"></a>
-<span class="sourceLineNo">1520</span> LOG.info("Added {} regions to meta.", puts.size());<a name="line.1520"></a>
-<span class="sourceLineNo">1521</span> }<a name="line.1521"></a>
-<span class="sourceLineNo">1522</span><a name="line.1522"></a>
-<span class="sourceLineNo">1523</span> /**<a name="line.1523"></a>
-<span class="sourceLineNo">1524</span> * Merge the two regions into one in an atomic operation. Deletes the two merging regions in<a name="line.1524"></a>
-<span class="sourceLineNo">1525</span> * hbase:meta and adds the merged region with the information of two merging regions.<a name="line.1525"></a>
-<span class="sourceLineNo">1526</span> * @param connection connection we're using<a name="line.1526"></a>
-<span class="sourceLineNo">1527</span> * @param mergedRegion the merged region<a name="line.1527"></a>
-<span class="sourceLineNo">1528</span> * @param regionA merge parent region A<a name="line.1528"></a>
-<span class="sourceLineNo">1529</span> * @param regionAOpenSeqNum the next open sequence id for region A, used by serial replication. -1<a name="line.1529"></a>
-<span class="sourceLineNo">1530</span> * if not necessary.<a name="line.1530"></a>
-<span class="sourceLineNo">1531</span> * @param regionB merge parent region B<a name="line.1531"></a>
-<span class="sourceLineNo">1532</span> * @param regionBOpenSeqNum the next open sequence id for region B, used by serial replication. -1<a name="line.1532"></a>
-<span class="sourceLineNo">1533</span> * if not necessary.<a name="line.1533"></a>
-<span class="sourceLineNo">1534</span> * @param sn the location of the region<a name="line.1534"></a>
-<span class="sourceLineNo">1535</span> */<a name="line.1535"></a>
-<span class="sourceLineNo">1536</span> public static void mergeRegions(Connection connection, RegionInfo mergedRegion,<a name="line.1536"></a>
-<span class="sourceLineNo">1537</span> RegionInfo regionA, long regionAOpenSeqNum, RegionInfo regionB, long regionBOpenSeqNum,<a name="line.1537"></a>
-<span class="sourceLineNo">1538</span> ServerName sn, int regionReplication) throws IOException {<a name="line.1538"></a>
-<span class="sourceLineNo">1539</span> try (Table meta = getMetaHTable(connection)) {<a name="line.1539"></a>
-<span class="sourceLineNo">1540</span> long time = EnvironmentEdgeManager.currentTime();<a name="line.1540"></a>
-<span class="sourceLineNo">1541</span> List<Mutation> mutations = new ArrayList<>();<a name="line.1541"></a>
-<span class="sourceLineNo">1542</span><a name="line.1542"></a>
-<span class="sourceLineNo">1543</span> List<RegionInfo> replicationParents = new ArrayList<>(2);<a name="line.1543"></a>
-<span class="sourceLineNo">1544</span> // Deletes for merging regions<a name="line.1544"></a>
-<span class="sourceLineNo">1545</span> mutations.add(makeDeleteFromRegionInfo(regionA, time));<a name="line.1545"></a>
-<span class="sourceLineNo">1546</span> if (regionAOpenSeqNum > 0) {<a name="line.1546"></a>
-<span class="sourceLineNo">1547</span> mutations.add(makePutForReplicationBarrier(regionA, regionAOpenSeqNum, time));<a name="line.1547"></a>
-<span class="sourceLineNo">1548</span> replicationParents.add(regionA);<a name="line.1548"></a>
-<span class="sourceLineNo">1549</span> }<a name="line.1549"></a>
-<span class="sourceLineNo">1550</span> mutations.add(makeDeleteFromRegionInfo(regionB, time));<a name="line.1550"></a>
-<span class="sourceLineNo">1551</span> if (regionBOpenSeqNum > 0) {<a name="line.1551"></a>
-<span class="sourceLineNo">1552</span> mutations.add(makePutForReplicationBarrier(regionB, regionBOpenSeqNum, time));<a name="line.1552"></a>
-<span class="sourceLineNo">1553</span> replicationParents.add(regionB);<a name="line.1553"></a>
-<span class="sourceLineNo">1554</span> }<a name="line.1554"></a>
-<span class="sourceLineNo">1555</span><a name="line.1555"></a>
-<span class="sourceLineNo">1556</span> // Put for parent<a name="line.1556"></a>
-<span class="sourceLineNo">1557</span> Put putOfMerged = makePutFromRegionInfo(mergedRegion, time);<a name="line.1557"></a>
-<span class="sourceLineNo">1558</span> putOfMerged.add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.1558"></a>
-<span class="sourceLineNo">1559</span> .setRow(putOfMerged.getRow())<a name="line.1559"></a>
-<span class="sourceLineNo">1560</span> .setFamily(HConstants.CATALOG_FAMILY)<a name="line.1560"></a>
-<span class="sourceLineNo">1561</span> .setQualifier(HConstants.MERGEA_QUALIFIER)<a name="line.1561"></a>
-<span class="sourceLineNo">1562</span> .setTimestamp(putOfMerged.getTimestamp())<a name="line.1562"></a>
-<span class="sourceLineNo">1563</span> .setType(Type.Put)<a name="line.1563"></a>
-<span class="sourceLineNo">1564</span> .setValue(RegionInfo.toByteArray(regionA))<a name="line.1564"></a>
-<span class="sourceLineNo">1565</span> .build())<a name="line.1565"></a>
-<span class="sourceLineNo">1566</span> .add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.1566"></a>
+<span class="sourceLineNo">1349</span> if (ps.isEmpty()) {<a name="line.1349"></a>
+<span class="sourceLineNo">1350</span> return;<a name="line.1350"></a>
+<span class="sourceLineNo">1351</span> }<a name="line.1351"></a>
+<span class="sourceLineNo">1352</span> try (Table t = getMetaHTable(connection)) {<a name="line.1352"></a>
+<span class="sourceLineNo">1353</span> debugLogMutations(ps);<a name="line.1353"></a>
+<span class="sourceLineNo">1354</span> // the implementation for putting a single Put is much simpler so here we do a check first.<a name="line.1354"></a>
+<span class="sourceLineNo">1355</span> if (ps.size() == 1) {<a name="line.1355"></a>
+<span class="sourceLineNo">1356</span> t.put(ps.get(0));<a name="line.1356"></a>
+<span class="sourceLineNo">1357</span> } else {<a name="line.1357"></a>
+<span class="sourceLineNo">1358</span> t.put(ps);<a name="line.1358"></a>
+<span class="sourceLineNo">1359</span> }<a name="line.1359"></a>
+<span class="sourceLineNo">1360</span> }<a name="line.1360"></a>
+<span class="sourceLineNo">1361</span> }<a name="line.1361"></a>
+<span class="sourceLineNo">1362</span><a name="line.1362"></a>
+<span class="sourceLineNo">1363</span> /**<a name="line.1363"></a>
+<span class="sourceLineNo">1364</span> * Delete the passed <code>d</code> from the <code>hbase:meta</code> table.<a name="line.1364"></a>
+<span class="sourceLineNo">1365</span> * @param connection connection we're using<a name="line.1365"></a>
+<span class="sourceLineNo">1366</span> * @param d Delete to add to hbase:meta<a name="line.1366"></a>
+<span class="sourceLineNo">1367</span> */<a name="line.1367"></a>
+<span class="sourceLineNo">1368</span> private static void deleteFromMetaTable(final Connection connection, final Delete d)<a name="line.1368"></a>
+<span class="sourceLineNo">1369</span> throws IOException {<a name="line.1369"></a>
+<span class="sourceLineNo">1370</span> List<Delete> dels = new ArrayList<>(1);<a name="line.1370"></a>
+<span class="sourceLineNo">1371</span> dels.add(d);<a name="line.1371"></a>
+<span class="sourceLineNo">1372</span> deleteFromMetaTable(connection, dels);<a name="line.1372"></a>
+<span class="sourceLineNo">1373</span> }<a name="line.1373"></a>
+<span class="sourceLineNo">1374</span><a name="line.1374"></a>
+<span class="sourceLineNo">1375</span> /**<a name="line.1375"></a>
+<span class="sourceLineNo">1376</span> * Delete the passed <code>deletes</code> from the <code>hbase:meta</code> table.<a name="line.1376"></a>
+<span class="sourceLineNo">1377</span> * @param connection connection we're using<a name="line.1377"></a>
+<span class="sourceLineNo">1378</span> * @param deletes Deletes to add to hbase:meta This list should support #remove.<a name="line.1378"></a>
+<span class="sourceLineNo">1379</span> */<a name="line.1379"></a>
+<span class="sourceLineNo">1380</span> private static void deleteFromMetaTable(final Connection connection, final List<Delete> deletes)<a name="line.1380"></a>
+<span class="sourceLineNo">1381</span> throws IOException {<a name="line.1381"></a>
+<span class="sourceLineNo">1382</span> try (Table t = getMetaHTable(connection)) {<a name="line.1382"></a>
+<span class="sourceLineNo">1383</span> debugLogMutations(deletes);<a name="line.1383"></a>
+<span class="sourceLineNo">1384</span> t.delete(deletes);<a name="line.1384"></a>
+<span class="sourceLineNo">1385</span> }<a name="line.1385"></a>
+<span class="sourceLineNo">1386</span> }<a name="line.1386"></a>
+<span class="sourceLineNo">1387</span><a name="line.1387"></a>
+<span class="sourceLineNo">1388</span> /**<a name="line.1388"></a>
+<span class="sourceLineNo">1389</span> * Deletes some replica columns corresponding to replicas for the passed rows<a name="line.1389"></a>
+<span class="sourceLineNo">1390</span> * @param metaRows rows in hbase:meta<a name="line.1390"></a>
+<span class="sourceLineNo">1391</span> * @param replicaIndexToDeleteFrom the replica ID we would start deleting from<a name="line.1391"></a>
+<span class="sourceLineNo">1392</span> * @param numReplicasToRemove how many replicas to remove<a name="line.1392"></a>
+<span class="sourceLineNo">1393</span> * @param connection connection we're using to access meta table<a name="line.1393"></a>
+<span class="sourceLineNo">1394</span> */<a name="line.1394"></a>
+<span class="sourceLineNo">1395</span> public static void removeRegionReplicasFromMeta(Set<byte[]> metaRows,<a name="line.1395"></a>
+<span class="sourceLineNo">1396</span> int replicaIndexToDeleteFrom, int numReplicasToRemove, Connection connection)<a name="line.1396"></a>
+<span class="sourceLineNo">1397</span> throws IOException {<a name="line.1397"></a>
+<span class="sourceLineNo">1398</span> int absoluteIndex = replicaIndexToDeleteFrom + numReplicasToRemove;<a name="line.1398"></a>
+<span class="sourceLineNo">1399</span> for (byte[] row : metaRows) {<a name="line.1399"></a>
+<span class="sourceLineNo">1400</span> long now = EnvironmentEdgeManager.currentTime();<a name="line.1400"></a>
+<span class="sourceLineNo">1401</span> Delete deleteReplicaLocations = new Delete(row);<a name="line.1401"></a>
+<span class="sourceLineNo">1402</span> for (int i = replicaIndexToDeleteFrom; i < absoluteIndex; i++) {<a name="line.1402"></a>
+<span class="sourceLineNo">1403</span> deleteReplicaLocations.addColumns(getCatalogFamily(),<a name="line.1403"></a>
+<span class="sourceLineNo">1404</span> getServerColumn(i), now);<a name="line.1404"></a>
+<span class="sourceLineNo">1405</span> deleteReplicaLocations.addColumns(getCatalogFamily(),<a name="line.1405"></a>
+<span class="sourceLineNo">1406</span> getSeqNumColumn(i), now);<a name="line.1406"></a>
+<span class="sourceLineNo">1407</span> deleteReplicaLocations.addColumns(getCatalogFamily(),<a name="line.1407"></a>
+<span class="sourceLineNo">1408</span> getStartCodeColumn(i), now);<a name="line.1408"></a>
+<span class="sourceLineNo">1409</span> }<a name="line.1409"></a>
+<span class="sourceLineNo">1410</span> deleteFromMetaTable(connection, deleteReplicaLocations);<a name="line.1410"></a>
+<span class="sourceLineNo">1411</span> }<a name="line.1411"></a>
+<span class="sourceLineNo">1412</span> }<a name="line.1412"></a>
+<span class="sourceLineNo">1413</span><a name="line.1413"></a>
+<span class="sourceLineNo">1414</span> /**<a name="line.1414"></a>
+<span class="sourceLineNo">1415</span> * Execute the passed <code>mutations</code> against <code>hbase:meta</code> table.<a name="line.1415"></a>
+<span class="sourceLineNo">1416</span> * @param connection connection we're using<a name="line.1416"></a>
+<span class="sourceLineNo">1417</span> * @param mutations Puts and Deletes to execute on hbase:meta<a name="line.1417"></a>
+<span class="sourceLineNo">1418</span> * @throws IOException<a name="line.1418"></a>
+<span class="sourceLineNo">1419</span> */<a name="line.1419"></a>
+<span class="sourceLineNo">1420</span> public static void mutateMetaTable(final Connection connection,<a name="line.1420"></a>
+<span class="sourceLineNo">1421</span> final List<Mutation> mutations)<a name="line.1421"></a>
+<span class="sourceLineNo">1422</span> throws IOException {<a name="line.1422"></a>
+<span class="sourceLineNo">1423</span> Table t = getMetaHTable(connection);<a name="line.1423"></a>
+<span class="sourceLineNo">1424</span> try {<a name="line.1424"></a>
+<span class="sourceLineNo">1425</span> debugLogMutations(mutations);<a name="line.1425"></a>
+<span class="sourceLineNo">1426</span> t.batch(mutations, null);<a name="line.1426"></a>
+<span class="sourceLineNo">1427</span> } catch (InterruptedException e) {<a name="line.1427"></a>
+<span class="sourceLineNo">1428</span> InterruptedIOException ie = new InterruptedIOException(e.getMessage());<a name="line.1428"></a>
+<span class="sourceLineNo">1429</span> ie.initCause(e);<a name="line.1429"></a>
+<span class="sourceLineNo">1430</span> throw ie;<a name="line.1430"></a>
+<span class="sourceLineNo">1431</span> } finally {<a name="line.1431"></a>
+<span class="sourceLineNo">1432</span> t.close();<a name="line.1432"></a>
+<span class="sourceLineNo">1433</span> }<a name="line.1433"></a>
+<span class="sourceLineNo">1434</span> }<a name="line.1434"></a>
+<span class="sourceLineNo">1435</span><a name="line.1435"></a>
+<span class="sourceLineNo">1436</span> private static void addRegionStateToPut(Put put, RegionState.State state) throws IOException {<a name="line.1436"></a>
+<span class="sourceLineNo">1437</span> put.add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.1437"></a>
+<span class="sourceLineNo">1438</span> .setRow(put.getRow())<a name="line.1438"></a>
+<span class="sourceLineNo">1439</span> .setFamily(HConstants.CATALOG_FAMILY)<a name="line.1439"></a>
+<span class="sourceLineNo">1440</span> .setQualifier(getRegionStateColumn())<a name="line.1440"></a>
+<span class="sourceLineNo">1441</span> .setTimestamp(put.getTimestamp())<a name="line.1441"></a>
+<span class="sourceLineNo">1442</span> .setType(Cell.Type.Put)<a name="line.1442"></a>
+<span class="sourceLineNo">1443</span> .setValue(Bytes.toBytes(state.name()))<a name="line.1443"></a>
+<span class="sourceLineNo">1444</span> .build());<a name="line.1444"></a>
+<span class="sourceLineNo">1445</span> }<a name="line.1445"></a>
+<span class="sourceLineNo">1446</span><a name="line.1446"></a>
+<span class="sourceLineNo">1447</span> /**<a name="line.1447"></a>
+<span class="sourceLineNo">1448</span> * Adds daughter region infos to hbase:meta row for the specified region. Note that this does not<a name="line.1448"></a>
+<span class="sourceLineNo">1449</span> * add its daughter's as different rows, but adds information about the daughters in the same row<a name="line.1449"></a>
+<span class="sourceLineNo">1450</span> * as the parent. Use<a name="line.1450"></a>
+<span class="sourceLineNo">1451</span> * {@link #splitRegion(Connection, RegionInfo, long, RegionInfo, RegionInfo, ServerName, int)}<a name="line.1451"></a>
+<span class="sourceLineNo">1452</span> * if you want to do that.<a name="line.1452"></a>
+<span class="sourceLineNo">1453</span> * @param connection connection we're using<a name="line.1453"></a>
+<span class="sourceLineNo">1454</span> * @param regionInfo RegionInfo of parent region<a name="line.1454"></a>
+<span class="sourceLineNo">1455</span> * @param splitA first split daughter of the parent regionInfo<a name="line.1455"></a>
+<span class="sourceLineNo">1456</span> * @param splitB second split daughter of the parent regionInfo<a name="line.1456"></a>
+<span class="sourceLineNo">1457</span> * @throws IOException if problem connecting or updating meta<a name="line.1457"></a>
+<span class="sourceLineNo">1458</span> */<a name="line.1458"></a>
+<span class="sourceLineNo">1459</span> public static void addSplitsToParent(Connection connection, RegionInfo regionInfo,<a name="line.1459"></a>
+<span class="sourceLineNo">1460</span> RegionInfo splitA, RegionInfo splitB) throws IOException {<a name="line.1460"></a>
+<span class="sourceLineNo">1461</span> Table meta = getMetaHTable(connection);<a name="line.1461"></a>
+<span class="sourceLineNo">1462</span> try {<a name="line.1462"></a>
+<span class="sourceLineNo">1463</span> Put put = makePutFromRegionInfo(regionInfo, EnvironmentEdgeManager.currentTime());<a name="line.1463"></a>
+<span class="sourceLineNo">1464</span> addDaughtersToPut(put, splitA, splitB);<a name="line.1464"></a>
+<span class="sourceLineNo">1465</span> meta.put(put);<a name="line.1465"></a>
+<span class="sourceLineNo">1466</span> debugLogMutation(put);<a name="line.1466"></a>
+<span class="sourceLineNo">1467</span> LOG.debug("Added region {}", regionInfo.getRegionNameAsString());<a name="line.1467"></a>
+<span class="sourceLineNo">1468</span> } finally {<a name="line.1468"></a>
+<span class="sourceLineNo">1469</span> meta.close();<a name="line.1469"></a>
+<span class="sourceLineNo">1470</span> }<a name="line.1470"></a>
+<span class="sourceLineNo">1471</span> }<a name="line.1471"></a>
+<span class="sourceLineNo">1472</span><a name="line.1472"></a>
+<span class="sourceLineNo">1473</span> /**<a name="line.1473"></a>
+<span class="sourceLineNo">1474</span> * Adds a (single) hbase:meta row for the specified new region and its daughters. Note that this<a name="line.1474"></a>
+<span class="sourceLineNo">1475</span> * does not add its daughter's as different rows, but adds information about the daughters<a name="line.1475"></a>
+<span class="sourceLineNo">1476</span> * in the same row as the parent. Use<a name="line.1476"></a>
+<span class="sourceLineNo">1477</span> * {@link #splitRegion(Connection, RegionInfo, long, RegionInfo, RegionInfo, ServerName, int)}<a name="line.1477"></a>
+<span class="sourceLineNo">1478</span> * if you want to do that.<a name="line.1478"></a>
+<span class="sourceLineNo">1479</span> * @param connection connection we're using<a name="line.1479"></a>
+<span class="sourceLineNo">1480</span> * @param regionInfo region information<a name="line.1480"></a>
+<span class="sourceLineNo">1481</span> * @throws IOException if problem connecting or updating meta<a name="line.1481"></a>
+<span class="sourceLineNo">1482</span> */<a name="line.1482"></a>
+<span class="sourceLineNo">1483</span> @VisibleForTesting<a name="line.1483"></a>
+<span class="sourceLineNo">1484</span> public static void addRegionToMeta(Connection connection, RegionInfo regionInfo)<a name="line.1484"></a>
+<span class="sourceLineNo">1485</span> throws IOException {<a name="line.1485"></a>
+<span class="sourceLineNo">1486</span> addRegionsToMeta(connection, Collections.singletonList(regionInfo), 1);<a name="line.1486"></a>
+<span class="sourceLineNo">1487</span> }<a name="line.1487"></a>
+<span class="sourceLineNo">1488</span><a name="line.1488"></a>
+<span class="sourceLineNo">1489</span> /**<a name="line.1489"></a>
+<span class="sourceLineNo">1490</span> * Adds a hbase:meta row for each of the specified new regions. Initial state for new regions<a name="line.1490"></a>
+<span class="sourceLineNo">1491</span> * is CLOSED.<a name="line.1491"></a>
+<span class="sourceLineNo">1492</span> * @param connection connection we're using<a name="line.1492"></a>
+<span class="sourceLineNo">1493</span> * @param regionInfos region information list<a name="line.1493"></a>
+<span class="sourceLineNo">1494</span> * @throws IOException if problem connecting or updating meta<a name="line.1494"></a>
+<span class="sourceLineNo">1495</span> */<a name="line.1495"></a>
+<span class="sourceLineNo">1496</span> public static void addRegionsToMeta(Connection connection, List<RegionInfo> regionInfos,<a name="line.1496"></a>
+<span class="sourceLineNo">1497</span> int regionReplication) throws IOException {<a name="line.1497"></a>
+<span class="sourceLineNo">1498</span> addRegionsToMeta(connection, regionInfos, regionReplication,<a name="line.1498"></a>
+<span class="sourceLineNo">1499</span> EnvironmentEdgeManager.currentTime());<a name="line.1499"></a>
+<span class="sourceLineNo">1500</span> }<a name="line.1500"></a>
+<span class="sourceLineNo">1501</span><a name="line.1501"></a>
+<span class="sourceLineNo">1502</span> /**<a name="line.1502"></a>
+<span class="sourceLineNo">1503</span> * Adds a hbase:meta row for each of the specified new regions. Initial state for new regions<a name="line.1503"></a>
+<span class="sourceLineNo">1504</span> * is CLOSED.<a name="line.1504"></a>
+<span class="sourceLineNo">1505</span> * @param connection connection we're using<a name="line.1505"></a>
+<span class="sourceLineNo">1506</span> * @param regionInfos region information list<a name="line.1506"></a>
+<span class="sourceLineNo">1507</span> * @param regionReplication<a name="line.1507"></a>
+<span class="sourceLineNo">1508</span> * @param ts desired timestamp<a name="line.1508"></a>
+<span class="sourceLineNo">1509</span> * @throws IOException if problem connecting or updating meta<a name="line.1509"></a>
+<span class="sourceLineNo">1510</span> */<a name="line.1510"></a>
+<span class="sourceLineNo">1511</span> private static void addRegionsToMeta(Connection connection, List<RegionInfo> regionInfos,<a name="line.1511"></a>
+<span class="sourceLineNo">1512</span> int regionReplication, long ts) throws IOException {<a name="line.1512"></a>
+<span class="sourceLineNo">1513</span> List<Put> puts = new ArrayList<>();<a name="line.1513"></a>
+<span class="sourceLineNo">1514</span> for (RegionInfo regionInfo : regionInfos) {<a name="line.1514"></a>
+<span class="sourceLineNo">1515</span> if (RegionReplicaUtil.isDefaultReplica(regionInfo)) {<a name="line.1515"></a>
+<span class="sourceLineNo">1516</span> Put put = makePutFromRegionInfo(regionInfo, ts);<a name="line.1516"></a>
+<span class="sourceLineNo">1517</span> // New regions are added with initial state of CLOSED.<a name="line.1517"></a>
+<span class="sourceLineNo">1518</span> addRegionStateToPut(put, RegionState.State.CLOSED);<a name="line.1518"></a>
+<span class="sourceLineNo">1519</span> // Add empty locations for region replicas so that number of replicas can be cached<a name="line.1519"></a>
+<span class="sourceLineNo">1520</span> // whenever the primary region is looked up from meta<a name="line.1520"></a>
+<span class="sourceLineNo">1521</span> for (int i = 1; i < regionReplication; i++) {<a name="line.1521"></a>
+<span class="sourceLineNo">1522</span> addEmptyLocation(put, i);<a name="line.1522"></a>
+<span class="sourceLineNo">1523</span> }<a name="line.1523"></a>
+<span class="sourceLineNo">1524</span> puts.add(put);<a name="line.1524"></a>
+<span class="sourceLineNo">1525</span> }<a name="line.1525"></a>
+<span class="sourceLineNo">1526</span> }<a name="line.1526"></a>
+<span class="sourceLineNo">1527</span> putsToMetaTable(connection, puts);<a name="line.1527"></a>
+<span class="sourceLineNo">1528</span> LOG.info("Added {} regions to meta.", puts.size());<a name="line.1528"></a>
+<span class="sourceLineNo">1529</span> }<a name="line.1529"></a>
+<span class="sourceLineNo">1530</span><a name="line.1530"></a>
+<span class="sourceLineNo">1531</span> /**<a name="line.1531"></a>
+<span class="sourceLineNo">1532</span> * Merge the two regions into one in an atomic operation. Deletes the two merging regions in<a name="line.1532"></a>
+<span class="sourceLineNo">1533</span> * hbase:meta and adds the merged region with the information of two merging regions.<a name="line.1533"></a>
+<span class="sourceLineNo">1534</span> * @param connection connection we're using<a name="line.1534"></a>
+<span class="sourceLineNo">1535</span> * @param mergedRegion the merged region<a name="line.1535"></a>
+<span class="sourceLineNo">1536</span> * @param regionA merge parent region A<a name="line.1536"></a>
+<span class="sourceLineNo">1537</span> * @param regionAOpenSeqNum the next open sequence id for region A, used by serial replication. -1<a name="line.1537"></a>
+<span class="sourceLineNo">1538</span> * if not necessary.<a name="line.1538"></a>
+<span class="sourceLineNo">1539</span> * @param regionB merge parent region B<a name="line.1539"></a>
+<span class="sourceLineNo">1540</span> * @param regionBOpenSeqNum the next open sequence id for region B, used by serial replication. -1<a name="line.1540"></a>
+<span class="sourceLineNo">1541</span> * if not necessary.<a name="line.1541"></a>
+<span class="sourceLineNo">1542</span> * @param sn the location of the region<a name="line.1542"></a>
+<span class="sourceLineNo">1543</span> */<a name="line.1543"></a>
+<span class="sourceLineNo">1544</span> public static void mergeRegions(Connection connection, RegionInfo mergedRegion,<a name="line.1544"></a>
+<span class="sourceLineNo">1545</span> RegionInfo regionA, long regionAOpenSeqNum, RegionInfo regionB, long regionBOpenSeqNum,<a name="line.1545"></a>
+<span class="sourceLineNo">1546</span> ServerName sn, int regionReplication) throws IOException {<a name="line.1546"></a>
+<span class="sourceLineNo">1547</span> try (Table meta = getMetaHTable(connection)) {<a name="line.1547"></a>
+<span class="sourceLineNo">1548</span> long time = EnvironmentEdgeManager.currentTime();<a name="line.1548"></a>
+<span class="sourceLineNo">1549</span> List<Mutation> mutations = new ArrayList<>();<a name="line.1549"></a>
+<span class="sourceLineNo">1550</span><a name="line.1550"></a>
+<span class="sourceLineNo">1551</span> List<RegionInfo> replicationParents = new ArrayList<>(2);<a name="line.1551"></a>
+<span class="sourceLineNo">1552</span> // Deletes for merging regions<a name="line.1552"></a>
+<span class="sourceLineNo">1553</span> mutations.add(makeDeleteFromRegionInfo(regionA, time));<a name="line.1553"></a>
+<span class="sourceLineNo">1554</span> if (regionAOpenSeqNum > 0) {<a name="line.1554"></a>
+<span class="sourceLineNo">1555</span> mutations.add(makePutForReplicationBarrier(regionA, regionAOpenSeqNum, time));<a name="line.1555"></a>
+<span class="sourceLineNo">1556</span> replicationParents.add(regionA);<a name="line.1556"></a>
+<span class="sourceLineNo">1557</span> }<a name="line.1557"></a>
+<span class="sourceLineNo">1558</span> mutations.add(makeDeleteFromRegionInfo(regionB, time));<a name="line.1558"></a>
+<span class="sourceLineNo">1559</span> if (regionBOpenSeqNum > 0) {<a name="line.1559"></a>
+<span class="sourceLineNo">1560</span> mutations.add(makePutForReplicationBarrier(regionB, regionBOpenSeqNum, time));<a name="line.1560"></a>
+<span class="sourceLineNo">1561</span> replicationParents.add(regionB);<a name="line.1561"></a>
+<span class="sourceLineNo">1562</span> }<a name="line.1562"></a>
+<span class="sourceLineNo">1563</span><a name="line.1563"></a>
+<span class="sourceLineNo">1564</span> // Put for parent<a name="line.1564"></a>
+<span class="sourceLineNo">1565</span> Put putOfMerged = makePutFromRegionInfo(mergedRegion, time);<a name="line.1565"></a>
+<span class="sourceLineNo">1566</span> putOfMerged.add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.1566"></a>
<span class="sourceLineNo">1567</span> .setRow(putOfMerged.getRow())<a name="line.1567"></a>
<span class="sourceLineNo">1568</span> .setFamily(HConstants.CATALOG_FAMILY)<a name="line.1568"></a>
-<span class="sourceLineNo">1569</span> .setQualifier(HConstants.MERGEB_QUALIFIER)<a name="line.1569"></a>
+<span class="sourceLineNo">1569</span> .setQualifier(HConstants.MERGEA_QUALIFIER)<a name="line.1569"></a>
<span class="sourceLineNo">1570</span> .setTimestamp(putOfMerged.getTimestamp())<a name="line.1570"></a>
<span class="sourceLineNo">1571</span> .setType(Type.Put)<a name="line.1571"></a>
-<span class="sourceLineNo">1572</span> .setValue(RegionInfo.toByteArray(regionB))<a name="line.1572"></a>
-<span class="sourceLineNo">1573</span> .build());<a name="line.1573"></a>
-<span class="sourceLineNo">1574</span> // Set initial state to CLOSED<a name="line.1574"></a>
-<span class="sourceLineNo">1575</span> // NOTE: If initial state is not set to CLOSED then merged region gets added with the<a name="line.1575"></a>
-<span class="sourceLineNo">1576</span> // default OFFLINE state. If Master gets restarted after this step, start up sequence of<a name="line.1576"></a>
-<span class="sourceLineNo">1577</span> // master tries to assign this offline region. This is followed by re-assignments of the<a name="line.1577"></a>
-<span class="sourceLineNo">1578</span> // merged region from resumed {@link MergeTableRegionsProcedure}<a name="line.1578"></a>
-<span class="sourceLineNo">1579</span> addRegionStateToPut(putOfMerged, RegionState.State.CLOSED);<a name="line.1579"></a>
-<span class="sourceLineNo">1580</span> mutations.add(putOfMerged);<a name="line.1580"></a>
-<span class="sourceLineNo">1581</span> // The merged is a new region, openSeqNum = 1 is fine. ServerName may be null<a name="line.1581"></a>
-<span class="sourceLineNo">1582</span> // if crash after merge happened but before we got to here.. means in-memory<a name="line.1582"></a>
-<span class="sourceLineNo">1583</span> // locations of offlined merged, now-closed, regions is lost. Should be ok. We<a name="line.1583"></a>
-<span class="sourceLineNo">1584</span> // assign the merged region later.<a name="line.1584"></a>
-<span class="sourceLineNo">1585</span> if (sn != null) {<a name="line.1585"></a>
-<span class="sourceLineNo">1586</span> addLocation(putOfMerged, sn, 1, mergedRegion.getReplicaId());<a name="line.1586"></a>
-<span class="sourceLineNo">1587</span> }<a name="line.1587"></a>
-<span class="sourceLineNo">1588</span><a name="line.1588"></a>
-<span class="sourceLineNo">1589</span> // Add empty locations for region replicas of the merged region so that number of replicas can<a name="line.1589"></a>
-<span class="sourceLineNo">1590</span> // be cached whenever the primary region is looked up from meta<a name="line.1590"></a>
-<span class="sourceLineNo">1591</span> for (int i = 1; i < regionReplication; i++) {<a name="line.1591"></a>
-<span class="sourceLineNo">1592</span> addEmptyLocation(putOfMerged, i);<a name="line.1592"></a>
-<span class="sourceLineNo">1593</span> }<a name="line.1593"></a>
-<span class="sourceLineNo">1594</span> // add parent reference for serial replication<a name="line.1594"></a>
-<span class="sourceLineNo">1595</span> if (!replicationParents.isEmpty()) {<a name="line.1595"></a>
-<span class="sourceLineNo">1596</span> addReplicationParent(putOfMerged, replicationParents);<a name="line.1596"></a>
-<span class="sourceLineNo">1597</span> }<a name="line.1597"></a>
-<span class="sourceLineNo">1598</span> byte[] tableRow = Bytes.toBytes(mergedRegion.getRegionNameAsString() + HConstants.DELIMITER);<a name="line.1598"></a>
-<span class="sourceLineNo">1599</span> multiMutate(connection, meta, tableRow, mutations);<a name="line.1599"></a>
-<span class="sourceLineNo">1600</span> }<a name="line.1600"></a>
-<span class="sourceLineNo">1601</span> }<a name="line.1601"></a>
-<span class="sourceLineNo">1602</span><a name="line.1602"></a>
-<span class="sourceLineNo">1603</span> /**<a name="line.1603"></a>
-<span class="sourceLineNo">1604</span> * Splits the region into two in an atomic operation. Offlines the parent region with the<a name="line.1604"></a>
-<span class="sourceLineNo">1605</span> * information that it is split into two, and also adds the daughter regions. Does not add the<a name="line.1605"></a>
-<span class="sourceLineNo">1606</span> * location information to the daughter regions since they are not open yet.<a name="line.1606"></a>
-<span class="sourceLineNo">1607</span> * @param connection connection we're using<a name="line.1607"></a>
-<span class="sourceLineNo">1608</span> * @param parent the parent region which is split<a name="line.1608"></a>
-<span class="sourceLineNo">1609</span> * @param parentOpenSeqNum the next open sequence id for parent region, used by serial<a name="line.1609"></a>
-<span class="sourceLineNo">1610</span> * replication. -1 if not necessary.<a name="line.1610"></a>
-<span class="sourceLineNo">1611</span> * @param splitA Split daughter region A<a name="line.1611"></a>
-<span class="sourceLineNo">1612</span> * @param splitB Split daughter region B<a name="line.1612"></a>
-<span class="sourceLineNo">1613</span> * @param sn the location of the region<a name="line.1613"></a>
-<span class="sourceLineNo">1614</span> */<a name="line.1614"></a>
-<span class="sourceLineNo">1615</span> public static void splitRegion(Connection connection, RegionInfo parent, long parentOpenSeqNum,<a name="line.1615"></a>
-<span class="sourceLineNo">1616</span> RegionInfo splitA, RegionInfo splitB, ServerName sn, int regionReplication)<a name="line.1616"></a>
-<span class="sourceLineNo">1617</span> throws IOException {<a name="line.1617"></a>
-<span class="sourceLineNo">1618</span> try (Table meta = getMetaHTable(connection)) {<a name="line.1618"></a>
-<span class="sourceLineNo">1619</span> long time = EnvironmentEdgeManager.currentTime();<a name="line.1619"></a>
-<span class="sourceLineNo">1620</span> // Put for parent<a name="line.1620"></a>
-<span class="sourceLineNo">1621</span> Put putParent = makePutFromRegionInfo(RegionInfoBuilder.newBuilder(parent)<a name="line.1621"></a>
-<span class="sourceLineNo">1622</span> .setOffline(true)<a name="line.1622"></a>
-<span class="sourceLineNo">1623</span> .setSplit(true).build(), time);<a name="line.1623"></a>
-<span class="sourceLineNo">1624</span> addDaughtersToPut(putParent, splitA, splitB);<a name="line.1624"></a>
-<span class="sourceLineNo">1625</span><a name="line.1625"></a>
-<span class="sourceLineNo">1626</span> // Puts for daughters<a name="line.1626"></a>
-<span class="sourceLineNo">1627</span> Put putA = makePutFromRegionInfo(splitA, time);<a name="line.1627"></a>
-<span class="sourceLineNo">1628</span> Put putB = makePutFromRegionInfo(splitB, time);<a name="line.1628"></a>
-<span class="sourceLineNo">1629</span> if (parentOpenSeqNum > 0) {<a name="line.1629"></a>
-<span class="sourceLineNo">1630</span> addReplicationBarrier(putParent, parentOpenSeqNum);<a name="line.1630"></a>
-<span class="sourceLineNo">1631</span> addReplicationParent(putA, Collections.singletonList(parent));<a name="line.1631"></a>
-<span class="sourceLineNo">1632</span> addReplicationParent(putB, Collections.singletonList(parent));<a name="line.1632"></a>
-<span class="sourceLineNo">1633</span> }<a name="line.1633"></a>
-<span class="sourceLineNo">1634</span> // Set initial state to CLOSED<a name="line.1634"></a>
-<span class="sourceLineNo">1635</span> // NOTE: If initial state is not set to CLOSED then daughter regions get added with the<a name="line.1635"></a>
-<span class="sourceLineNo">1636</span> // default OFFLINE state. If Master gets restarted after this step, start up sequence of<a name="line.1636"></a>
-<span class="sourceLineNo">1637</span> // master tries to assign these offline regions. This is followed by re-assignments of the<a name="line.1637"></a>
-<span class="sourceLineNo">1638</span> // daughter regions from resumed {@link SplitTableRegionProcedure}<a name="line.1638"></a>
-<span class="sourceLineNo">1639</span> addRegionStateToPut(putA, RegionState.State.CLOSED);<a name="line.1639"></a>
-<span class="sourceLineNo">1640</span> addRegionStateToPut(putB, RegionState.State.CLOSED);<a name="line.1640"></a>
-<span class="sourceLineNo">1641</span><a name="line.1641"></a>
-<span class="sourceLineNo">1642</span> addSequenceNum(putA, 1, splitA.getReplicaId()); // new regions, openSeqNum = 1 is fine.<a name="line.1642"></a>
-<span class="sourceLineNo">1643</span> addSequenceNum(putB, 1, splitB.getReplicaId());<a name="line.1643"></a>
-<span class="sourceLineNo">1644</span><a name="line.1644"></a>
-<span class="sourceLineNo">1645</span> // Add empty locations for region replicas of daughters so that number of replicas can be<a name="line.1645"></a>
-<span class="sourceLineNo">1646</span> // cached whenever the primary region is looked up from meta<a name="line.1646"></a>
-<span class="sourceLineNo">1647</span> for (int i = 1; i < regionReplication; i++) {<a name="line.1647"></a>
-<span class="sourceLineNo">1648</span> addEmptyLocation(putA, i);<a name="line.1648"></a>
-<span class="sourceLineNo">1649</span> addEmptyLocation(putB, i);<a name="line.1649"></a>
-<span class="sourceLineNo">1650</span> }<a name="line.1650"></a>
-<span class="sourceLineNo">1651</span><a name="line.1651"></a>
-<span class="sourceLineNo">1652</span> byte[] tableRow = Bytes.toBytes(parent.getRegionNameAsString() + HConstants.DELIMITER);<a name="line.1652"></a>
-<span class="sourceLineNo">1653</span> multiMutate(connection, meta, tableRow, putParent, putA, putB);<a name="line.1653"></a>
-<span class="sourceLineNo">1654</span> }<a name="line.1654"></a>
-<span class="sourceLineNo">1655</span> }<a name="line.1655"></a>
-<span class="sourceLineNo">1656</span><a name="line.1656"></a>
-<span class="sourceLineNo">1657</span> /**<a name="line.1657"></a>
-<span class="sourceLineNo">1658</span> * Update state of the table in meta.<a name="line.1658"></a>
-<span class="sourceLineNo">1659</span> * @param connection what we use for update<a name="line.1659"></a>
-<span class="sourceLineNo">1660</span> * @param state new state<a name="line.1660"></a>
-<span class="sourceLineNo">1661</span> */<a name="line.1661"></a>
-<span class="sourceLineNo">1662</span> private static void updateTableState(Connection connection, TableState state) throws IOException {<a name="line.1662"></a>
-<span class="sourceLineNo">1663</span> Put put = makePutFromTableState(state, EnvironmentEdgeManager.currentTime());<a name="line.1663"></a>
-<span class="sourceLineNo">1664</span> putToMetaTable(connection, put);<a name="line.1664"></a>
-<span class="sourceLineNo">1665</span> LOG.info("Updated {} in hbase:meta", state);<a name="line.1665"></a>
-<span class="sourceLineNo">1666</span> }<a name="line.1666"></a>
-<span class="sourceLineNo">1667</span><a name="line.1667"></a>
-<span class="sourceLineNo">1668</span> /**<a name="line.1668"></a>
-<span class="sourceLineNo">1669</span> * Construct PUT for given state<a name="line.1669"></a>
-<span class="sourceLineNo">1670</span> * @param state new state<a name="line.1670"></a>
-<span class="sourceLineNo">1671</span> */<a name="line.1671"></a>
-<span class="sourceLineNo">1672</span> public static Put makePutFromTableState(TableState state, long ts) {<a name="line.1672"></a>
-<span class="sourceLineNo">1673</span> Put put = new Put(state.getTableName().getName(), ts);<a name="line.1673"></a>
-<span class="sourceLineNo">1674</span> put.addColumn(getTableFamily(), getTableStateColumn(), state.convert().toByteArray());<a name="line.1674"></a>
-<span class="sourceLineNo">1675</span> return put;<a name="line.1675"></a>
-<span class="sourceLineNo">1676</span> }<a name="line.1676"></a>
-<span class="sourceLineNo">1677</span><a name="line.1677"></a>
-<span class="sourceLineNo">1678</span> /**<a name="line.1678"></a>
-<span class="sourceLineNo">1679</span> * Remove state for table from meta<a name="line.1679"></a>
-<span class="sourceLineNo">1680</span> * @param connection to use for deletion<a name="line.1680"></a>
-<span class="sourceLineNo">1681</span> * @param table to delete state for<a name="line.1681"></a>
-<span class="sourceLineNo">1682</span> */<a name="line.1682"></a>
-<span class="sourceLineNo">1683</span> public static void deleteTableState(Connection connection, TableName table)<a name="line.1683"></a>
-<span class="sourceLineNo">1684</span> throws IOException {<a name="line.1684"></a>
-<span class="sourceLineNo">1685</span> long time = EnvironmentEdgeManager.currentTime();<a name="line.1685"></a>
-<span class="sourceLineNo">1686</span> Delete delete = new Delete(table.getName());<a name="line.1686"></a>
-<span class="sourceLineNo">1687</span> delete.addColumns(getTableFamily(), getTableStateColumn(), time);<a name="line.1687"></a>
-<span class="sourceLineNo">1688</span> deleteFromMetaTable(connection, delete);<a name="line.1688"></a>
-<span class="sourceLineNo">1689</span> LOG.info("Deleted table " + table + " state from META");<a name="line.1689"></a>
-<span class="sourceLineNo">1690</span> }<a name="line.1690"></a>
-<span class="sourceLineNo">1691</span><a name="line.1691"></a>
-<span class="sourceLineNo">1692</span> private static void multiMutate(Connection connection, Table table, byte[] row,<a name="line.1692"></a>
-<span class="sourceLineNo">1693</span> Mutation... mutations) throws IOException {<a name="line.1693"></a>
-<span class="sourceLineNo">1694</span> multiMutate(connection, table, row, Arrays.asList(mutations));<a name="line.1694"></a>
-<span class="sourceLineNo">1695</span> }<a name="line.1695"></a>
-<span class="sourceLineNo">1696</span><a name="line.1696"></a>
-<span class="sourceLineNo">1697</span> /**<a name="line.1697"></a>
-<span class="sourceLineNo">1698</span> * Performs an atomic multi-mutate operation against the given table.<a name="line.1698"></a>
-<span class="sourceLineNo">1699</span> */<a name="line.1699"></a>
-<span class="sourceLineNo">1700</span> private static void multiMutate(Connection connection, final Table table, byte[] row,<a name="line.1700"></a>
-<span class="sourceLineNo">1701</span> final List<Mutation> mutations) throws IOException {<a name="line.1701"></a>
-<span class="sourceLineNo">1702</span> debugLogMutations(mutations);<a name="line.1702"></a>
-<span class="sourceLineNo">1703</span> // TODO: Need rollback!!!!<a name="line.1703"></a>
-<span class="sourceLineNo">1704</span> // TODO: Need Retry!!!<a name="line.1704"></a>
-<span class="sourceLineNo">1705</span> // TODO: What for a timeout? Default write timeout? GET FROM HTABLE?<a name="line.1705"></a>
-<span class="sourceLineNo">1706</span> // TODO: Review when we come through with ProcedureV2.<a name="line.1706"></a>
-<span class="sourceLineNo">1707</span> RegionServerCallable<MutateRowsResponse,<a name="line.1707"></a>
-<span class="sourceLineNo">1708</span> MultiRowMutationProtos.MultiRowMutationService.BlockingInterface> callable =<a name="line.1708"></a>
-<span class="sourceLineNo">1709</span> new RegionServerCallable<MutateRowsResponse,<a name="line.1709"></a>
-<span class="sourceLineNo">1710</span> MultiRowMutationProtos.MultiRowMutationService.BlockingInterface>(<a name="line.1710"></a>
-<span class="sourceLineNo">1711</span> connection, table.getName(), row, null/*RpcController not used in this CPEP!*/) {<a name="line.1711"></a>
-<span class="sourceLineNo">1712</span> @Override<a name="line.1712"></a>
-<span class="sourceLineNo">1713</span> protected MutateRowsResponse rpcCall() throws Exception {<a name="line.1713"></a>
-<span class="sourceLineNo">1714</span> final MutateRowsRequest.Builder builder = MutateRowsRequest.newBuilder();<a name="line.1714"></a>
-<span class="sourceLineNo">1715</span> for (Mutation mutation : mutations) {<a name="line.1715"></a>
-<span class="sourceLineNo">1716</span> if (mutation instanceof Put) {<a name="line.1716"></a>
-<span class="sourceLineNo">1717</span> builder.addMutationRequest(ProtobufUtil.toMutation(<a name="line.1717"></a>
-<span class="sourceLineNo">1718</span> ClientProtos.MutationProto.MutationType.PUT, mutation));<a name="line.1718"></a>
-<span class="sourceLineNo">1719</span> } else if (mutation instanceof Delete) {<a name="line.1719"></a>
-<span class="sourceLineNo">1720</span> builder.addMutationRequest(ProtobufUtil.toMutation(<a name="line.1720"></a>
-<span class="sourceLineNo">1721</span> ClientProtos.MutationProto.MutationType.DELETE, mutation));<a name="line.1721"></a>
-<span class="sourceLineNo">1722</span> } else {<a name="line.1722"></a>
-<span class="sourceLineNo">1723</span> throw new DoNotRetryIOException("multi in MetaEditor doesn't support "<a name="line.1723"></a>
-<span class="sourceLineNo">1724</span> + mutation.getClass().getName());<a name="line.1724"></a>
-<span class="sourceLineNo">1725</span> }<a name="line.1725"></a>
-<span class="sourceLineNo">1726</span> }<a name="line.1726"></a>
-<span class="sourceLineNo">1727</span> // The call to #prepare that ran before this invocation will have populated HRegionLocation.<a name="line.1727"></a>
-<span class="sourceLineNo">1728</span> HRegionLocation hrl = getLocation();<a name="line.1728"></a>
-<span class="sourceLineNo">1729</span> RegionSpecifier region = ProtobufUtil.buildRegionSpecifier(<a name="line.1729"></a>
-<span class="sourceLineNo">1730</span> RegionSpecifierType.REGION_NAME, hrl.getRegion().getRegionName());<a name="line.1730"></a>
-<span class="sourceLineNo">1731</span> builder.setRegion(region);<a name="line.1731"></a>
-<span class="sourceLineNo">1732</span> // The rpcController here is awkward. The Coprocessor Endpoint wants an instance of a<a name="line.1732"></a>
-<span class="sourceLineNo">1733</span> // com.google.protobuf but we are going over an rpc that is all shaded protobuf so it<a name="line.1733"></a>
-<span class="sourceLineNo">1734</span> // wants a org.apache.h.h.shaded.com.google.protobuf.RpcController. Set up a factory<a name="line.1734"></a>
-<span class="sourceLineNo">1735</span> // that makes com.google.protobuf.RpcController and then copy into it configs.<a name="line.1735"></a>
-<span class="sourceLineNo">1736</span> return getStub().mutateRows(null, builder.build());<a name="line.1736"></a>
-<span class="sourceLineNo">1737</span> }<a name="line.1737"></a>
-<span class="sourceLineNo">1738</span><a name="line.1738"></a>
-<span class="sourceLineNo">1739</span> @Override<a name="line.1739"></a>
-<span class="sourceLineNo">1740</span> // Called on the end of the super.prepare call. Set the stub.<a name="line.1740"></a>
-<span class="sourceLineNo">1741</span> protected void setStubByServiceName(ServerName serviceName/*Ignored*/) throws IOException {<a name="line.1741"></a>
-<span class="sourceLineNo">1742</span> CoprocessorRpcChannel channel = table.coprocessorService(getRow());<a name="line.1742"></a>
-<span class="sourceLineNo">1743</span> setStub(MultiRowMutationProtos.MultiRowMutationService.newBlockingStub(channel));<a name="line.1743"></a>
-<span class="sourceLineNo">1744</span> }<a name="line.1744"></a>
-<span class="sourceLineNo">1745</span> };<a name="line.1745"></a>
-<span class="sourceLineNo">1746</span> int writeTimeout = connection.getConfiguration().getInt(HConstants.HBASE_RPC_WRITE_TIMEOUT_KEY,<a name="line.1746"></a>
-<span class="sourceLineNo">1747</span> connection.getConfiguration().getInt(HConstants.HBASE_RPC_TIMEOUT_KEY,<a name="line.1747"></a>
-<span class="sourceLineNo">1748</span> HConstants.DEFAULT_HBASE_RPC_TIMEOUT));<a name="line.1748"></a>
-<span class="sourceLineNo">1749</span> // The region location should be cached in connection. Call prepare so this callable picks<a name="line.1749"></a>
-<span class="sourceLineNo">1750</span> // up the region location (see super.prepare method).<a name="line.1750"></a>
-<span class="sourceLineNo">1751</span> callable.prepare(false);<a name="line.1751"></a>
-<span class="sourceLineNo">1752</span> callable.call(writeTimeout);<a name="line.1752"></a>
-<span class="sourceLineNo">1753</span> }<a name="line.1753"></a>
-<span class="sourceLineNo">1754</span><a name="line.1754"></a>
-<span class="sourceLineNo">1755</span> /**<a name="line.1755"></a>
-<span class="sourceLineNo">1756</span> * Updates the location of the specified region in hbase:meta to be the specified server hostname<a name="line.1756"></a>
-<span class="sourceLineNo">1757</span> * and startcode.<a name="line.1757"></a>
-<span class="sourceLineNo">1758</span> * <p><a name="line.1758"></a>
-<span class="sourceLineNo">1759</span> * Uses passed catalog tracker to get a connection to the server hosting hbase:meta and makes<a name="line.1759"></a>
-<span class="sourceLineNo">1760</span> * edits to that region.<a name="line.1760"></a>
-<span class="sourceLineNo">1761</span> * @param connection connection we're using<a name="line.1761"></a>
-<span class="sourceLineNo">1762</span> * @param regionInfo region to update location of<a name="line.1762"></a>
-<span class="sourceLineNo">1763</span> * @param openSeqNum the latest sequence number obtained when the region was open<a name="line.1763"></a>
-<span class="sourceLineNo">1764</span> * @param sn Server name<a name="line.1764"></a>
-<span class="sourceLineNo">1765</span> * @param masterSystemTime wall clock time from master if passed in the open region RPC<a name="line.1765"></a>
-<span class="sourceLineNo">1766</span> */<a name="line.1766"></a>
-<span class="sourceLineNo">1767</span> @VisibleForTesting<a name="line.1767"></a>
-<span class="sourceLineNo">1768</span> public static void updateRegionLocation(Connection connection, RegionInfo regionInfo,<a name="line.1768"></a>
-<span class="sourceLineNo">1769</span> ServerName sn, long openSeqNum, long masterSystemTime) throws IOException {<a name="line.1769"></a>
-<span class="sourceLineNo">1770</span> updateLocation(connection, regionInfo, sn, openSeqNum, masterSystemTime);<a name="line.1770"></a>
-<span class="sourceLineNo">1771</span> }<a name="line.1771"></a>
-<span class="sourceLineNo">1772</span><a name="line.1772"></a>
-<span class="sourceLineNo">1773</span> /**<a name="line.1773"></a>
-<span class="sourceLineNo">1774</span> * Updates the location of the specified region to be the specified server.<a name="line.1774"></a>
-<span class="sourceLineNo">1775</span> * <p><a name="line.1775"></a>
-<span class="sourceLineNo">1776</span> * Connects to the specified server which should be hosting the specified catalog region name to<a name="line.1776"></a>
-<span class="sourceLineNo">1777</span> * perform the edit.<a name="line.1777"></a>
-<span class="sourceLineNo">1778</span> * @param connection connection we're using<a name="line.1778"></a>
-<span class="sourceLineNo">1779</span> * @param regionInfo region to update location of<a name="line.1779"></a>
-<span class="sourceLineNo">1780</span> * @param sn Server name<a name="line.1780"></a>
-<span class="sourceLineNo">1781</span> * @param openSeqNum the latest sequence number obtained when the region was open<a name="line.1781"></a>
-<span class="sourceLineNo">1782</span> * @param masterSystemTime wall clock time from master if passed in the open region RPC<a name="line.1782"></a>
-<span class="sourceLineNo">1783</span> * @throws IOException In particular could throw {@link java.net.ConnectException} if the server<a name="line.1783"></a>
-<span class="sourceLineNo">1784</span> * is down on other end.<a name="line.1784"></a>
-<span class="sourceLineNo">1785</span> */<a name="line.1785"></a>
-<span class="sourceLineNo">1786</span> private static void updateLocation(Connection connection, RegionInfo regionInfo, ServerName sn,<a name="line.1786"></a>
-<span class="sourceLineNo">1787</span> long openSeqNum, long masterSystemTime) throws IOException {<a name="line.1787"></a>
-<span class="sourceLineNo">1788</span> // region replicas are kept in the primary region's row<a name="line.1788"></a>
-<span class="sourceLineNo">1789</span> Put put = new Put(getMetaKeyForRegion(regionInfo), masterSystemTime);<a name="line.1789"></a>
-<span class="sourceLineNo">1790</span> addRegionInfo(put, regionInfo);<a name="line.1790"></a>
-<span class="sourceLineNo">1791</span> addLocation(put, sn, openSeqNum, regionInfo.getReplicaId());<a name="line.1791"></a>
-<span class="sourceLineNo">1792</span> putToMetaTable(connection, put);<a name="line.1792"></a>
-<span class="sourceLineNo">1793</span> LOG.info("Updated row {} with server=", regionInfo.getRegionNameAsString(), sn);<a name="line.1793"></a>
-<span class="sourceLineNo">1794</span> }<a name="line.1794"></a>
-<span class="sourceLineNo">1795</span><a name="line.1795"></a>
-<span class="sourceLineNo">1796</span> /**<a name="line.1796"></a>
-<span class="sourceLineNo">1797</span> * Deletes the specified region from META.<a name="line.1797"></a>
-<span class="sourceLineNo">1798</span> * @param connection connection we're using<a name="line.1798"></a>
-<span class="sourceLineNo">1799</span> * @param regionInfo region to be deleted from META<a name="line.1799"></a>
-<span class="sourceLineNo">1800</span> * @throws IOException<a name="line.1800"></a>
-<span class="sourceLineNo">1801</span> */<a name="line.1801"></a>
-<span class="sourceLineNo">1802</span> public static void deleteRegion(Connection connection, RegionInfo regionInfo) throws IOException {<a name="line.1802"></a>
-<span class="sourceLineNo">1803</span> long time = EnvironmentEdgeManager.currentTime();<a name="line.1803"></a>
-<span class="sourceLineNo">1804</span> Delete delete = new Delete(regionInfo.getRegionName());<a name="line.1804"></a>
-<span class="sourceLineNo">1805</span> delete.addFamily(getCatalogFamily(), time);<a name="line.1805"></a>
-<span class="sourceLineNo">1806</span> deleteFromMetaTable(connection, delete);<a name="line.1806"></a>
-<span class="sourceLineNo">1807</span> LOG.info("Deleted " + regionInfo.getRegionNameAsString());<a name="line.1807"></a>
-<span class="sourceLineNo">1808</span> }<a name="line.1808"></a>
-<span class="sourceLineNo">1809</span><a name="line.1809"></a>
-<span class="sourceLineNo">1810</span> /**<a name="line.1810"></a>
-<span class="sourceLineNo">1811</span> * Deletes the specified regions from META.<a name="line.1811"></a>
-<span class="sourceLineNo">1812</span> * @param connection connection we're using<a name="line.1812"></a>
-<span class="sourceLineNo">1813</span> * @param regionsInfo list of regions to be deleted from META<a name="line.1813"></a>
-<span class="sourceLineNo">1814</span> */<a name="line.1814"></a>
-<span class="sourceLineNo">1815</span> public static void deleteRegions(Connection connection, List<RegionInfo> regionsInfo)<a name="line.1815"></a>
-<span class="sourceLineNo">1816</span> throws IOException {<a name="line.1816"></a>
-<span class="sourceLineNo">1817</span> deleteRegions(connection, regionsInfo, EnvironmentEdgeManager.currentTime());<a name="line.1817"></a>
-<span class="sourceLineNo">1818</span> }<a name="line.1818"></a>
-<span class="sourceLineNo">1819</span> /**<a name="line.1819"></a>
-<span class="sourceLineNo">1820</span> * Deletes the specified regions from META.<a name="line.1820"></a>
-<span class="sourceLineNo">1821</span> * @param connection connection we're using<a name="line.1821"></a>
-<span class="sourceLineNo">1822</span> * @param regionsInfo list of regions to be deleted from META<a name="line.1822"></a>
-<span class="sourceLineNo">1823</span> */<a name="line.1823"></a>
-<span class="sourceLineNo">1824</span> public static void deleteRegions(Connection connection, List<RegionInfo> regionsInfo, long ts)<a name="line.1824"></a>
-<span class="sourceLineNo">1825</span> throws IOException {<a name="line.1825"></a>
-<span class="sourceLineNo">1826</span> List<Delete> deletes = new ArrayList<>(regionsInfo.size());<a name="line.1826"></a>
-<span class="sourceLineNo">1827</span> for (RegionInfo hri : regionsInfo) {<a name="line.1827"></a>
-<span class="sourceLineNo">1828</span> Delete e = new Delete(hri.getRegionName());<a name="line.1828"></a>
-<span class="sourceLineNo">1829</span> e.addFamily(getCatalogFamily(), ts);<a name="line.1829"></a>
-<span class="sourceLineNo">1830</span> deletes.add(e);<a name="line.1830"></a>
-<span class="sourceLineNo">1831</span> }<a name="line.1831"></a>
-<span class="sourceLineNo">1832</span> deleteFromMetaTable(connection, deletes);<a name="line.1832"></a>
-<span class="sourceLineNo">1833</span> LOG.info("Deleted {} regions from META", regionsInfo.size());<a name="line.1833"></a>
-<span class="sourceLineNo">1834</span> LOG.debug("Deleted regions: {}", regionsInfo);<a name="line.1834"></a>
-<span class="sourceLineNo">1835</span> }<a name="line.1835"></a>
-<span class="sourceLineNo">1836</span><a name="line.1836"></a>
-<span class="sourceLineNo">1837</span> /**<a name="line.1837"></a>
-<span class="sourceLineNo">1838</span> * Overwrites the specified regions from hbase:meta. Deletes old rows for the given regions and<a name="line.1838"></a>
-<span class="sourceLineNo">1839</span> * adds new ones. Regions added back have state CLOSED.<a name="line.1839"></a>
-<span class="sourceLineNo">1840</span> * @param connection connection we're using<a name="line.1840"></a>
-<span class="sourceLineNo">1841</span> * @param regionInfos list of regions to be added to META<a name="line.1841"></a>
-<span class="sourceLineNo">1842</span> */<a name="line.1842"></a>
-<span class="sourceLineNo">1843</span> public static void overwriteRegions(Connection connection,<a name="line.1843"></a>
-<span class="sourceLineNo">1844</span> List<RegionInfo> regionInfos, int regionReplication) throws IOException {<a name="line.1844"></a>
-<span class="sourceLineNo">1845</span> // use master time for delete marker and the Put<a name="line.1845"></a>
-<span class="sourceLineNo">1846</span> long now = EnvironmentEdgeManager.currentTime();<a name="line.1846"></a>
-<span class="sourceLineNo">1847</span> deleteRegions(connection, regionInfos, now);<a name="line.1847"></a>
-<span class="sourceLineNo">1848</span> // Why sleep? This is the easiest way to ensure that the previous deletes does not<a name="line.1848"></a>
-<span class="sourceLineNo">1849</span> // eclipse the following puts, that might happen in the same ts from the server.<a name="line.1849"></a>
-<span class="sourceLineNo">1850</span> // See HBASE-9906, and HBASE-9879. Once either HBASE-9879, HBASE-8770 is fixed,<a name="line.1850"></a>
-<span class="sourceLineNo">1851</span> // or HBASE-9905 is fixed and meta uses seqIds, we do not need the sleep.<a name="line.1851"></a>
-<span class="sourceLineNo">1852</span> //<a name="line.1852"></a>
-<span class="sourceLineNo">1853</span> // HBASE-13875 uses master timestamp for the mutations. The 20ms sleep is not needed<a name="line.1853"></a>
-<span class="sourceLineNo">1854</span> addRegionsToMeta(connection, regionInfos, regionReplication, now + 1);<a name="line.1854"></a>
-<span class="sourceLineNo">1855</span> LOG.info("Overwritten " + regionInfos.size() + " regions to Meta");<a name="line.1855"></a>
-<span class="sourceLineNo">1856</span> LOG.debug("Overwritten regions: {} ", regionInfos);<a name="line.1856"></a>
-<span class="sourceLineNo">1857</span> }<a name="line.1857"></a>
-<span class="sourceLineNo">1858</span><a name="line.1858"></a>
-<span class="sourceLineNo">1859</span> /**<a name="line.1859"></a>
-<span class="sourceLineNo">1860</span> * Deletes merge qualifiers for the specified merged region.<a name="line.1860"></a>
-<span class="sourceLineNo">1861</span> * @param connection connection we're using<a name="line.1861"></a>
-<span class="sourceLineNo">1862</span> * @param mergedRegion the merged region<a name="line.1862"></a>
-<span class="sourceLineNo">1863</span> */<a name="line.1863"></a>
-<span class="sourceLineNo">1864</span> public static void deleteMergeQualifiers(Connection connection, final RegionInfo mergedRegion)<a name="line.1864"></a>
-<span class="sourceLineNo">1865</span> throws IOException {<a name="line.1865"></a>
-<span class="sourceLineNo">1866</span> long time = EnvironmentEdgeManager.currentTime();<a name="line.1866"></a>
-<span class="sourceLineNo">1867</span> Delete delete = new Delete(mergedRegion.getRegionName());<a name="line.1867"></a>
-<span class="sourceLineNo">1868</span> delete.addColumns(getCatalogFamily(), HConstants.MERGEA_QUALIFIER, time);<a name="line.1868"></a>
-<span class="sourceLineNo">1869</span> delete.addColumns(getCatalogFamily(), HConstants.MERGEB_QUALIFIER, time);<a name="line.1869"></a>
-<span class="sourceLineNo">1870</span> deleteFromMetaTable(connection, delete);<a name="line.1870"></a>
-<span class="sourceLineNo">1871</span> LOG.info("Deleted references in merged region "<a name="line.1871"></a>
-<span class="sourceLineNo">1872</span> + mergedRegion.getRegionNameAsString() + ", qualifier="<a name="line.1872"></a>
-<span class="sourceLineNo">1873</span> + Bytes.toStringBinary(HConstants.MERGEA_QUALIFIER) + " and qualifier="<a name="line.1873"></a>
-<span class="sourceLineNo">1874</span> + Bytes.toStringBinary(HConstants.MERGEB_QUALIFIER));<a name="line.1874"></a>
-<span class="sourceLineNo">1875</span> }<a name="line.1875"></a>
-<span class="sourceLineNo">1876</span><a name="line.1876"></a>
-<span class="sourceLineNo">1877</span> public static Put addRegionInfo(final Put p, final RegionInfo hri)<a name="line.1877"></a>
-<span class="sourceLineNo">1878</span> throws IOException {<a name="line.1878"></a>
-<span class="sourceLineNo">1879</span> p.add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.1879"></a>
-<span class="sourceLineNo">1880</span> .setRow(p.getRow())<a name="line.1880"></a>
-<span class="sourceLineNo">1881</span> .setFamily(getCatalogFamily())<a name="line.1881"></a>
-<span class="sourceLineNo">1882</span> .setQualifier(HConstants.REGIONINFO_QUALIFIER)<a name="line.1882"></a>
-<span class="sourceLineNo">1883</span> .setTimestamp(p.getTimestamp())<a name="line.1883"></a>
-<span class="sourceLineNo">1884</span> .setType(Type.Put)<a name="line.1884"></a>
-<span class="sourceLineNo">1885</span> .setValue(RegionInfo.toByteArray(hri))<a name="line.1885"></a>
-<span class="sourceLineNo">1886</span> .build());<a name="line.1886"></a>
-<span class="sourceLineNo">1887</span> return p;<a name="line.1887"></a>
-<span class="sourceLineNo">1888</span> }<a name="line.1888"></a>
-<span class="sourceLineNo">1889</span><a name="line.1889"></a>
-<span class="sourceLineNo">1890</span> public static Put addLocation(Put p, ServerName sn, long openSeqNum, int replicaId)<a name="line.1890"></a>
-<span class="sourceLineNo">1891</span> throws IOException {<a name="line.1891"></a>
-<span class="sourceLineNo">1892</span> CellBuilder builder = CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY);<a name="line.1892"></a>
-<span class="sourceLineNo">1893</span> return p.add(builder.clear()<a name="line.1893"></a>
-<span class="sourceLineNo">1894</span> .setRow(p.getRow())<a name="line.1894"></a>
-<span class="sourceLineNo">1895</span> .setFamily(getCatalogFamily())<a name="line.1895"></a>
-<span class="sourceLineNo">1896</span> .setQualifier(getServerColumn(replicaId))<a name="line.1896"></a>
-<span class="sourceLineNo">1897</span> .setTimestamp(p.getTimestamp())<a name="line.1897"></a>
-<span class="sourceLineNo">1898</span> .setType(Cell.Type.Put)<a name="line.1898"></a>
-<span class="sourceLineNo">1899</span> .setValue(Bytes.toBytes(sn.getAddress().toString()))<a name="line.1899"></a>
-<span class="sourceLineNo">1900</span> .build())<a name="line.1900"></a>
-<span class="sourceLineNo">1901</span> .add(builder.clear()<a name="line.1901"></a>
+<span class="sourceLineNo">1572</span> .setValue(RegionInfo.toByteArray(regionA))<a name="line.1572"></a>
+<span class="sourceLineNo">1573</span> .build())<a name="line.1573"></a>
+<span class="sourceLineNo">1574</span> .add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.1574"></a>
+<span class="sourceLineNo">1575</span> .setRow(putOfMerged.getRow())<a name="line.1575"></a>
+<span class="sourceLineNo">1576</span> .setFamily(HConstants.CATALOG_FAMILY)<a name="line.1576"></a>
+<span class="sourceLineNo">1577</span> .setQualifier(HConstants.MERGEB_QUALIFIER)<a name="line.1577"></a>
+<span class="sourceLineNo">1578</span> .setTimestamp(putOfMerged.getTimestamp())<a name="line.1578"></a>
+<span class="sourceLineNo">1579</span> .setType(Type.Put)<a name="line.1579"></a>
+<span class="sourceLineNo">1580</span> .setValue(RegionInfo.toByteArray(regionB))<a name="line.1580"></a>
+<span class="sourceLineNo">1581</span> .build());<a name="line.1581"></a>
+<span class="sourceLineNo">1582</span> // Set initial state to CLOSED<a name="line.1582"></a>
+<span class="sourceLineNo">1583</span> // NOTE: If initial state is not set to CLOSED then merged region gets added with the<a name="line.1583"></a>
+<span class="sourceLineNo">1584</span> // default OFFLINE state. If Master gets restarted after this step, start up sequence of<a name="line.1584"></a>
+<span class="sourceLineNo">1585</span> // master tries to assign this offline region. This is followed by re-assignments of the<a name="line.1585"></a>
+<span class="sourceLineNo">1586</span> // merged region from resumed {@link MergeTableRegionsProcedure}<a name="line.1586"></a>
+<span class="sourceLineNo">1587</span> addRegionStateToPut(putOfMerged, RegionState.State.CLOSED);<a name="line.1587"></a>
+<span class="sourceLineNo">1588</span> mutations.add(putOfMerged);<a name="line.1588"></a>
+<span class="sourceLineNo">1589</span> // The merged is a new region, openSeqNum = 1 is fine. ServerName may be null<a name="line.1589"></a>
+<span class="sourceLineNo">1590</span> // if crash after merge happened but before we got to here.. means in-memory<a name="line.1590"></a>
+<span class="sourceLineNo">1591</span> // locations of offlined merged, now-closed, regions is lost. Should be ok. We<a name="line.1591"></a>
+<span class="sourceLineNo">1592</span> // assign the merged region later.<a name="line.1592"></a>
+<span class="sourceLineNo">1593</span> if (sn != null) {<a name="line.1593"></a>
+<span class="sourceLineNo">1594</span> addLocation(putOfMerged, sn, 1, mergedRegion.getReplicaId());<a name="line.1594"></a>
+<span class="sourceLineNo">1595</span> }<a name="line.1595"></a>
+<span class="sourceLineNo">1596</span><a name="line.1596"></a>
+<span class="sourceLineNo">1597</span> // Add empty locations for region replicas of the merged region so that number of replicas can<a name="line.1597"></a>
+<span class="sourceLineNo">1598</span> // be cached whenever the primary region is looked up from meta<a name="line.1598"></a>
+<span class="sourceLineNo">1599</span> for (int i = 1; i < regionReplication; i++) {<a name="line.1599"></a>
+<span class="sourceLineNo">1600</span> addEmptyLocation(putOfMerged, i);<a name="line.1600"></a>
+<span class="sourceLineNo">1601</span> }<a name="line.1601"></a>
+<span class="sourceLineNo">1602</span> // add parent reference for serial replication<a name="line.1602"></a>
+<span class="sourceLineNo">1603</span> if (!replicationParents.isEmpty()) {<a name="line.1603"></a>
+<span class="sourceLineNo">1604</span> addReplicationParent(putOfMerged, replicationParents);<a name="line.1604"></a>
+<span class="sourceLineNo">1605</span> }<a name="line.1605"></a>
+<span class="sourceLineNo">1606</span> byte[] tableRow = Bytes.toBytes(mergedRegion.getRegionNameAsString() + HConstants.DELIMITER);<a name="line.1606"></a>
+<span class="sourceLineNo">1607</span> multiMutate(connection, meta, tableRow, mutations);<a name="line.1607"></a>
+<span class="sourceLineNo">1608</span> }<a name="line.1608"></a>
+<span class="sourceLineNo">1609</span> }<a name="line.1609"></a>
+<span class="sourceLineNo">1610</span><a name="line.1610"></a>
+<span class="sourceLineNo">1611</span> /**<a name="line.1611"></a>
+<span class="sourceLineNo">1612</span> * Splits the region into two in an atomic operation. Offlines the parent region with the<a name="line.1612"></a>
+<span class="sourceLineNo">1613</span> * information that it is split into two, and also adds the daughter regions. Does not add the<a name="line.1613"></a>
+<span class="sourceLineNo">1614</span> * location information to the daughter regions since they are not open yet.<a name="line.1614"></a>
+<span class="sourceLineNo">1615</span> * @param connection connection we're using<a name="line.1615"></a>
+<span class="sourceLineNo">1616</span> * @param parent the parent region which is split<a name="line.1616"></a>
+<span class="sourceLineNo">1617</span> * @param parentOpenSeqNum the next open sequence id for parent region, used by serial<a name="line.1617"></a>
+<span class="sourceLineNo">1618</span> * replication. -1 if not necessary.<a name="line.1618"></a>
+<span class="sourceL
<TRUNCATED>
[05/51] [partial] hbase-site git commit: Published site at
9101fc246f86445006bfbcdfda5cc495016dc280.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionChore.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionChore.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionChore.html
index 4b5d00c..96ecbf8 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionChore.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionChore.html
@@ -6,7 +6,7 @@
</head>
<body>
<div class="sourceContainer">
-<pre><span class="sourceLineNo">001</span>/*<a name="line.1"></a>
+<pre><span class="sourceLineNo">001</span>/**<a name="line.1"></a>
<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
<span class="sourceLineNo">003</span> * or more contributor license agreements. See the NOTICE file<a name="line.3"></a>
<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
@@ -23,1981 +23,1894 @@
<span class="sourceLineNo">015</span> * See the License for the specific language governing permissions and<a name="line.15"></a>
<span class="sourceLineNo">016</span> * limitations under the License.<a name="line.16"></a>
<span class="sourceLineNo">017</span> */<a name="line.17"></a>
-<span class="sourceLineNo">018</span><a name="line.18"></a>
-<span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.master.assignment;<a name="line.19"></a>
-<span class="sourceLineNo">020</span><a name="line.20"></a>
-<span class="sourceLineNo">021</span>import java.io.IOException;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import java.util.ArrayList;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import java.util.Arrays;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import java.util.Collection;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import java.util.Collections;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import java.util.HashMap;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import java.util.HashSet;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import java.util.List;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import java.util.Map;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import java.util.Set;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import java.util.concurrent.CopyOnWriteArrayList;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import java.util.concurrent.Future;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import java.util.concurrent.TimeUnit;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import java.util.concurrent.locks.Condition;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import java.util.concurrent.locks.ReentrantLock;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import java.util.stream.Collectors;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.conf.Configuration;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.HBaseIOException;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.HConstants;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.PleaseHoldException;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.RegionException;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.RegionStateListener;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.ServerName;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.TableName;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.YouAreDeadException;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.client.RegionInfoBuilder;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.client.RegionReplicaUtil;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.client.Result;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.client.TableState;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.exceptions.UnexpectedStateException;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.favored.FavoredNodesManager;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.favored.FavoredNodesPromoter;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.master.AssignmentListener;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.master.LoadBalancer;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.master.MasterServices;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.master.MetricsAssignmentManager;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.master.NoSuchProcedureException;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.master.RegionPlan;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.master.RegionState;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.master.RegionState.State;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.master.ServerListener;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.master.TableStateManager;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.master.assignment.RegionStates.RegionStateNode;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.master.assignment.RegionStates.ServerState;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.master.assignment.RegionStates.ServerStateNode;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.master.balancer.FavoredStochasticBalancer;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizer;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureScheduler;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.master.procedure.ProcedureSyncWait;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.master.procedure.ServerCrashException;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.master.procedure.ServerCrashProcedure;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.procedure2.Procedure;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.procedure2.ProcedureEvent;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.procedure2.ProcedureExecutor;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.procedure2.ProcedureInMemoryChore;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.procedure2.util.StringUtils;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.regionserver.SequenceId;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.util.HasThread;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.util.VersionInfo;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.slf4j.Logger;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.slf4j.LoggerFactory;<a name="line.89"></a>
-<span class="sourceLineNo">090</span><a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.91"></a>
-<span class="sourceLineNo">092</span><a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RegionTransitionState;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionStateTransition;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionStateTransition.TransitionCode;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.ReportRegionStateTransitionRequest;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.ReportRegionStateTransitionResponse;<a name="line.98"></a>
-<span class="sourceLineNo">099</span><a name="line.99"></a>
-<span class="sourceLineNo">100</span>/**<a name="line.100"></a>
-<span class="sourceLineNo">101</span> * The AssignmentManager is the coordinator for region assign/unassign operations.<a name="line.101"></a>
-<span class="sourceLineNo">102</span> * <ul><a name="line.102"></a>
-<span class="sourceLineNo">103</span> * <li>In-memory states of regions and servers are stored in {@link RegionStates}.</li><a name="line.103"></a>
-<span class="sourceLineNo">104</span> * <li>hbase:meta state updates are handled by {@link RegionStateStore}.</li><a name="line.104"></a>
-<span class="sourceLineNo">105</span> * </ul><a name="line.105"></a>
-<span class="sourceLineNo">106</span> * Regions are created by CreateTable, Split, Merge.<a name="line.106"></a>
-<span class="sourceLineNo">107</span> * Regions are deleted by DeleteTable, Split, Merge.<a name="line.107"></a>
-<span class="sourceLineNo">108</span> * Assigns are triggered by CreateTable, EnableTable, Split, Merge, ServerCrash.<a name="line.108"></a>
-<span class="sourceLineNo">109</span> * Unassigns are triggered by DisableTable, Split, Merge<a name="line.109"></a>
-<span class="sourceLineNo">110</span> */<a name="line.110"></a>
-<span class="sourceLineNo">111</span>@InterfaceAudience.Private<a name="line.111"></a>
-<span class="sourceLineNo">112</span>public class AssignmentManager implements ServerListener {<a name="line.112"></a>
-<span class="sourceLineNo">113</span> private static final Logger LOG = LoggerFactory.getLogger(AssignmentManager.class);<a name="line.113"></a>
-<span class="sourceLineNo">114</span><a name="line.114"></a>
-<span class="sourceLineNo">115</span> // TODO: AMv2<a name="line.115"></a>
-<span class="sourceLineNo">116</span> // - handle region migration from hbase1 to hbase2.<a name="line.116"></a>
-<span class="sourceLineNo">117</span> // - handle sys table assignment first (e.g. acl, namespace)<a name="line.117"></a>
-<span class="sourceLineNo">118</span> // - handle table priorities<a name="line.118"></a>
-<span class="sourceLineNo">119</span> // - If ServerBusyException trying to update hbase:meta, we abort the Master<a name="line.119"></a>
-<span class="sourceLineNo">120</span> // See updateRegionLocation in RegionStateStore.<a name="line.120"></a>
-<span class="sourceLineNo">121</span> //<a name="line.121"></a>
-<span class="sourceLineNo">122</span> // See also<a name="line.122"></a>
-<span class="sourceLineNo">123</span> // https://docs.google.com/document/d/1eVKa7FHdeoJ1-9o8yZcOTAQbv0u0bblBlCCzVSIn69g/edit#heading=h.ystjyrkbtoq5<a name="line.123"></a>
-<span class="sourceLineNo">124</span> // for other TODOs.<a name="line.124"></a>
-<span class="sourceLineNo">125</span><a name="line.125"></a>
-<span class="sourceLineNo">126</span> public static final String BOOTSTRAP_THREAD_POOL_SIZE_CONF_KEY =<a name="line.126"></a>
-<span class="sourceLineNo">127</span> "hbase.assignment.bootstrap.thread.pool.size";<a name="line.127"></a>
-<span class="sourceLineNo">128</span><a name="line.128"></a>
-<span class="sourceLineNo">129</span> public static final String ASSIGN_DISPATCH_WAIT_MSEC_CONF_KEY =<a name="line.129"></a>
-<span class="sourceLineNo">130</span> "hbase.assignment.dispatch.wait.msec";<a name="line.130"></a>
-<span class="sourceLineNo">131</span> private static final int DEFAULT_ASSIGN_DISPATCH_WAIT_MSEC = 150;<a name="line.131"></a>
-<span class="sourceLineNo">132</span><a name="line.132"></a>
-<span class="sourceLineNo">133</span> public static final String ASSIGN_DISPATCH_WAITQ_MAX_CONF_KEY =<a name="line.133"></a>
-<span class="sourceLineNo">134</span> "hbase.assignment.dispatch.wait.queue.max.size";<a name="line.134"></a>
-<span class="sourceLineNo">135</span> private static final int DEFAULT_ASSIGN_DISPATCH_WAITQ_MAX = 100;<a name="line.135"></a>
-<span class="sourceLineNo">136</span><a name="line.136"></a>
-<span class="sourceLineNo">137</span> public static final String RIT_CHORE_INTERVAL_MSEC_CONF_KEY =<a name="line.137"></a>
-<span class="sourceLineNo">138</span> "hbase.assignment.rit.chore.interval.msec";<a name="line.138"></a>
-<span class="sourceLineNo">139</span> private static final int DEFAULT_RIT_CHORE_INTERVAL_MSEC = 5 * 1000;<a name="line.139"></a>
-<span class="sourceLineNo">140</span><a name="line.140"></a>
-<span class="sourceLineNo">141</span> public static final String ASSIGN_MAX_ATTEMPTS =<a name="line.141"></a>
-<span class="sourceLineNo">142</span> "hbase.assignment.maximum.attempts";<a name="line.142"></a>
-<span class="sourceLineNo">143</span> private static final int DEFAULT_ASSIGN_MAX_ATTEMPTS = 10;<a name="line.143"></a>
-<span class="sourceLineNo">144</span><a name="line.144"></a>
-<span class="sourceLineNo">145</span> /** Region in Transition metrics threshold time */<a name="line.145"></a>
-<span class="sourceLineNo">146</span> public static final String METRICS_RIT_STUCK_WARNING_THRESHOLD =<a name="line.146"></a>
-<span class="sourceLineNo">147</span> "hbase.metrics.rit.stuck.warning.threshold";<a name="line.147"></a>
-<span class="sourceLineNo">148</span> private static final int DEFAULT_RIT_STUCK_WARNING_THRESHOLD = 60 * 1000;<a name="line.148"></a>
-<span class="sourceLineNo">149</span><a name="line.149"></a>
-<span class="sourceLineNo">150</span> private final ProcedureEvent<?> metaInitializedEvent = new ProcedureEvent<>("meta initialized");<a name="line.150"></a>
-<span class="sourceLineNo">151</span> private final ProcedureEvent<?> metaLoadEvent = new ProcedureEvent<>("meta load");<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> * Indicator that AssignmentManager has recovered the region states so<a name="line.154"></a>
-<span class="sourceLineNo">155</span> * that ServerCrashProcedure can be fully enabled and re-assign regions<a name="line.155"></a>
-<span class="sourceLineNo">156</span> * of dead servers. So that when re-assignment happens, AssignmentManager<a name="line.156"></a>
-<span class="sourceLineNo">157</span> * has proper region states.<a name="line.157"></a>
-<span class="sourceLineNo">158</span> */<a name="line.158"></a>
-<span class="sourceLineNo">159</span> private final ProcedureEvent<?> failoverCleanupDone = new ProcedureEvent<>("failover cleanup");<a name="line.159"></a>
-<span class="sourceLineNo">160</span><a name="line.160"></a>
-<span class="sourceLineNo">161</span> /** Listeners that are called on assignment events. */<a name="line.161"></a>
-<span class="sourceLineNo">162</span> private final CopyOnWriteArrayList<AssignmentListener> listeners =<a name="line.162"></a>
-<span class="sourceLineNo">163</span> new CopyOnWriteArrayList<AssignmentListener>();<a name="line.163"></a>
-<span class="sourceLineNo">164</span><a name="line.164"></a>
-<span class="sourceLineNo">165</span> // TODO: why is this different from the listeners (carried over from the old AM)<a name="line.165"></a>
-<span class="sourceLineNo">166</span> private RegionStateListener regionStateListener;<a name="line.166"></a>
-<span class="sourceLineNo">167</span><a name="line.167"></a>
-<span class="sourceLineNo">168</span> private RegionNormalizer regionNormalizer;<a name="line.168"></a>
-<span class="sourceLineNo">169</span><a name="line.169"></a>
-<span class="sourceLineNo">170</span> private final MetricsAssignmentManager metrics;<a name="line.170"></a>
-<span class="sourceLineNo">171</span> private final RegionInTransitionChore ritChore;<a name="line.171"></a>
-<span class="sourceLineNo">172</span> private final MasterServices master;<a name="line.172"></a>
-<span class="sourceLineNo">173</span><a name="line.173"></a>
-<span class="sourceLineNo">174</span> private final AtomicBoolean running = new AtomicBoolean(false);<a name="line.174"></a>
-<span class="sourceLineNo">175</span> private final RegionStates regionStates = new RegionStates();<a name="line.175"></a>
-<span class="sourceLineNo">176</span> private final RegionStateStore regionStateStore;<a name="line.176"></a>
-<span class="sourceLineNo">177</span><a name="line.177"></a>
-<span class="sourceLineNo">178</span> private final boolean shouldAssignRegionsWithFavoredNodes;<a name="line.178"></a>
-<span class="sourceLineNo">179</span> private final int assignDispatchWaitQueueMaxSize;<a name="line.179"></a>
-<span class="sourceLineNo">180</span> private final int assignDispatchWaitMillis;<a name="line.180"></a>
-<span class="sourceLineNo">181</span> private final int assignMaxAttempts;<a name="line.181"></a>
-<span class="sourceLineNo">182</span><a name="line.182"></a>
-<span class="sourceLineNo">183</span> private final Object checkIfShouldMoveSystemRegionLock = new Object();<a name="line.183"></a>
-<span class="sourceLineNo">184</span><a name="line.184"></a>
-<span class="sourceLineNo">185</span> private Thread assignThread;<a name="line.185"></a>
-<span class="sourceLineNo">186</span><a name="line.186"></a>
-<span class="sourceLineNo">187</span> public AssignmentManager(final MasterServices master) {<a name="line.187"></a>
-<span class="sourceLineNo">188</span> this(master, new RegionStateStore(master));<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> public AssignmentManager(final MasterServices master, final RegionStateStore stateStore) {<a name="line.191"></a>
-<span class="sourceLineNo">192</span> this.master = master;<a name="line.192"></a>
-<span class="sourceLineNo">193</span> this.regionStateStore = stateStore;<a name="line.193"></a>
-<span class="sourceLineNo">194</span> this.metrics = new MetricsAssignmentManager();<a name="line.194"></a>
+<span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.master.assignment;<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>import java.util.ArrayList;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import java.util.Arrays;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import java.util.Collection;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import java.util.Collections;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import java.util.HashMap;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import java.util.List;<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.Set;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import java.util.concurrent.CopyOnWriteArrayList;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import java.util.concurrent.Future;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import java.util.concurrent.TimeUnit;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import java.util.concurrent.locks.Condition;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import java.util.concurrent.locks.ReentrantLock;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import java.util.stream.Collectors;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.conf.Configuration;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.HBaseIOException;<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.PleaseHoldException;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.RegionException;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.ServerName;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.TableName;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.YouAreDeadException;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.client.RegionInfoBuilder;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.client.RegionReplicaUtil;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.client.Result;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.client.TableState;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.exceptions.UnexpectedStateException;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.favored.FavoredNodesManager;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.favored.FavoredNodesPromoter;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.master.AssignmentListener;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.master.LoadBalancer;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.master.MasterServices;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.master.MetricsAssignmentManager;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.master.NoSuchProcedureException;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.master.RegionPlan;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.master.RegionState;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.master.RegionState.State;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.master.ServerListener;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.master.TableStateManager;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.master.assignment.RegionStates.RegionStateNode;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.master.assignment.RegionStates.ServerState;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.master.assignment.RegionStates.ServerStateNode;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.master.balancer.FavoredStochasticBalancer;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureScheduler;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.master.procedure.ProcedureSyncWait;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.master.procedure.ServerCrashException;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.master.procedure.ServerCrashProcedure;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.procedure2.Procedure;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.procedure2.ProcedureEvent;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.procedure2.ProcedureExecutor;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.procedure2.ProcedureInMemoryChore;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.procedure2.util.StringUtils;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.regionserver.SequenceId;<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.HasThread;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.util.VersionInfo;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.zookeeper.MetaTableLocator;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.zookeeper.KeeperException;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.slf4j.Logger;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.slf4j.LoggerFactory;<a name="line.88"></a>
+<span class="sourceLineNo">089</span><a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.90"></a>
+<span class="sourceLineNo">091</span><a name="line.91"></a>
+<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RegionTransitionState;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionStateTransition;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionStateTransition.TransitionCode;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.ReportRegionStateTransitionRequest;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.ReportRegionStateTransitionResponse;<a name="line.97"></a>
+<span class="sourceLineNo">098</span><a name="line.98"></a>
+<span class="sourceLineNo">099</span>/**<a name="line.99"></a>
+<span class="sourceLineNo">100</span> * The AssignmentManager is the coordinator for region assign/unassign operations.<a name="line.100"></a>
+<span class="sourceLineNo">101</span> * <ul><a name="line.101"></a>
+<span class="sourceLineNo">102</span> * <li>In-memory states of regions and servers are stored in {@link RegionStates}.</li><a name="line.102"></a>
+<span class="sourceLineNo">103</span> * <li>hbase:meta state updates are handled by {@link RegionStateStore}.</li><a name="line.103"></a>
+<span class="sourceLineNo">104</span> * </ul><a name="line.104"></a>
+<span class="sourceLineNo">105</span> * Regions are created by CreateTable, Split, Merge.<a name="line.105"></a>
+<span class="sourceLineNo">106</span> * Regions are deleted by DeleteTable, Split, Merge.<a name="line.106"></a>
+<span class="sourceLineNo">107</span> * Assigns are triggered by CreateTable, EnableTable, Split, Merge, ServerCrash.<a name="line.107"></a>
+<span class="sourceLineNo">108</span> * Unassigns are triggered by DisableTable, Split, Merge<a name="line.108"></a>
+<span class="sourceLineNo">109</span> */<a name="line.109"></a>
+<span class="sourceLineNo">110</span>@InterfaceAudience.Private<a name="line.110"></a>
+<span class="sourceLineNo">111</span>public class AssignmentManager implements ServerListener {<a name="line.111"></a>
+<span class="sourceLineNo">112</span> private static final Logger LOG = LoggerFactory.getLogger(AssignmentManager.class);<a name="line.112"></a>
+<span class="sourceLineNo">113</span><a name="line.113"></a>
+<span class="sourceLineNo">114</span> // TODO: AMv2<a name="line.114"></a>
+<span class="sourceLineNo">115</span> // - handle region migration from hbase1 to hbase2.<a name="line.115"></a>
+<span class="sourceLineNo">116</span> // - handle sys table assignment first (e.g. acl, namespace)<a name="line.116"></a>
+<span class="sourceLineNo">117</span> // - handle table priorities<a name="line.117"></a>
+<span class="sourceLineNo">118</span> // - If ServerBusyException trying to update hbase:meta, we abort the Master<a name="line.118"></a>
+<span class="sourceLineNo">119</span> // See updateRegionLocation in RegionStateStore.<a name="line.119"></a>
+<span class="sourceLineNo">120</span> //<a name="line.120"></a>
+<span class="sourceLineNo">121</span> // See also<a name="line.121"></a>
+<span class="sourceLineNo">122</span> // https://docs.google.com/document/d/1eVKa7FHdeoJ1-9o8yZcOTAQbv0u0bblBlCCzVSIn69g/edit#heading=h.ystjyrkbtoq5<a name="line.122"></a>
+<span class="sourceLineNo">123</span> // for other TODOs.<a name="line.123"></a>
+<span class="sourceLineNo">124</span><a name="line.124"></a>
+<span class="sourceLineNo">125</span> public static final String BOOTSTRAP_THREAD_POOL_SIZE_CONF_KEY =<a name="line.125"></a>
+<span class="sourceLineNo">126</span> "hbase.assignment.bootstrap.thread.pool.size";<a name="line.126"></a>
+<span class="sourceLineNo">127</span><a name="line.127"></a>
+<span class="sourceLineNo">128</span> public static final String ASSIGN_DISPATCH_WAIT_MSEC_CONF_KEY =<a name="line.128"></a>
+<span class="sourceLineNo">129</span> "hbase.assignment.dispatch.wait.msec";<a name="line.129"></a>
+<span class="sourceLineNo">130</span> private static final int DEFAULT_ASSIGN_DISPATCH_WAIT_MSEC = 150;<a name="line.130"></a>
+<span class="sourceLineNo">131</span><a name="line.131"></a>
+<span class="sourceLineNo">132</span> public static final String ASSIGN_DISPATCH_WAITQ_MAX_CONF_KEY =<a name="line.132"></a>
+<span class="sourceLineNo">133</span> "hbase.assignment.dispatch.wait.queue.max.size";<a name="line.133"></a>
+<span class="sourceLineNo">134</span> private static final int DEFAULT_ASSIGN_DISPATCH_WAITQ_MAX = 100;<a name="line.134"></a>
+<span class="sourceLineNo">135</span><a name="line.135"></a>
+<span class="sourceLineNo">136</span> public static final String RIT_CHORE_INTERVAL_MSEC_CONF_KEY =<a name="line.136"></a>
+<span class="sourceLineNo">137</span> "hbase.assignment.rit.chore.interval.msec";<a name="line.137"></a>
+<span class="sourceLineNo">138</span> private static final int DEFAULT_RIT_CHORE_INTERVAL_MSEC = 60 * 1000;<a name="line.138"></a>
+<span class="sourceLineNo">139</span><a name="line.139"></a>
+<span class="sourceLineNo">140</span> public static final String ASSIGN_MAX_ATTEMPTS =<a name="line.140"></a>
+<span class="sourceLineNo">141</span> "hbase.assignment.maximum.attempts";<a name="line.141"></a>
+<span class="sourceLineNo">142</span> private static final int DEFAULT_ASSIGN_MAX_ATTEMPTS = 10;<a name="line.142"></a>
+<span class="sourceLineNo">143</span><a name="line.143"></a>
+<span class="sourceLineNo">144</span> /** Region in Transition metrics threshold time */<a name="line.144"></a>
+<span class="sourceLineNo">145</span> public static final String METRICS_RIT_STUCK_WARNING_THRESHOLD =<a name="line.145"></a>
+<span class="sourceLineNo">146</span> "hbase.metrics.rit.stuck.warning.threshold";<a name="line.146"></a>
+<span class="sourceLineNo">147</span> private static final int DEFAULT_RIT_STUCK_WARNING_THRESHOLD = 60 * 1000;<a name="line.147"></a>
+<span class="sourceLineNo">148</span><a name="line.148"></a>
+<span class="sourceLineNo">149</span> private final ProcedureEvent<?> metaAssignEvent = new ProcedureEvent<>("meta assign");<a name="line.149"></a>
+<span class="sourceLineNo">150</span> private final ProcedureEvent<?> metaLoadEvent = new ProcedureEvent<>("meta load");<a name="line.150"></a>
+<span class="sourceLineNo">151</span><a name="line.151"></a>
+<span class="sourceLineNo">152</span> /** Listeners that are called on assignment events. */<a name="line.152"></a>
+<span class="sourceLineNo">153</span> private final CopyOnWriteArrayList<AssignmentListener> listeners =<a name="line.153"></a>
+<span class="sourceLineNo">154</span> new CopyOnWriteArrayList<AssignmentListener>();<a name="line.154"></a>
+<span class="sourceLineNo">155</span><a name="line.155"></a>
+<span class="sourceLineNo">156</span> private final MetricsAssignmentManager metrics;<a name="line.156"></a>
+<span class="sourceLineNo">157</span> private final RegionInTransitionChore ritChore;<a name="line.157"></a>
+<span class="sourceLineNo">158</span> private final MasterServices master;<a name="line.158"></a>
+<span class="sourceLineNo">159</span><a name="line.159"></a>
+<span class="sourceLineNo">160</span> private final AtomicBoolean running = new AtomicBoolean(false);<a name="line.160"></a>
+<span class="sourceLineNo">161</span> private final RegionStates regionStates = new RegionStates();<a name="line.161"></a>
+<span class="sourceLineNo">162</span> private final RegionStateStore regionStateStore;<a name="line.162"></a>
+<span class="sourceLineNo">163</span><a name="line.163"></a>
+<span class="sourceLineNo">164</span> private final boolean shouldAssignRegionsWithFavoredNodes;<a name="line.164"></a>
+<span class="sourceLineNo">165</span> private final int assignDispatchWaitQueueMaxSize;<a name="line.165"></a>
+<span class="sourceLineNo">166</span> private final int assignDispatchWaitMillis;<a name="line.166"></a>
+<span class="sourceLineNo">167</span> private final int assignMaxAttempts;<a name="line.167"></a>
+<span class="sourceLineNo">168</span><a name="line.168"></a>
+<span class="sourceLineNo">169</span> private final Object checkIfShouldMoveSystemRegionLock = new Object();<a name="line.169"></a>
+<span class="sourceLineNo">170</span><a name="line.170"></a>
+<span class="sourceLineNo">171</span> private Thread assignThread;<a name="line.171"></a>
+<span class="sourceLineNo">172</span><a name="line.172"></a>
+<span class="sourceLineNo">173</span> public AssignmentManager(final MasterServices master) {<a name="line.173"></a>
+<span class="sourceLineNo">174</span> this(master, new RegionStateStore(master));<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> public AssignmentManager(final MasterServices master, final RegionStateStore stateStore) {<a name="line.177"></a>
+<span class="sourceLineNo">178</span> this.master = master;<a name="line.178"></a>
+<span class="sourceLineNo">179</span> this.regionStateStore = stateStore;<a name="line.179"></a>
+<span class="sourceLineNo">180</span> this.metrics = new MetricsAssignmentManager();<a name="line.180"></a>
+<span class="sourceLineNo">181</span><a name="line.181"></a>
+<span class="sourceLineNo">182</span> final Configuration conf = master.getConfiguration();<a name="line.182"></a>
+<span class="sourceLineNo">183</span><a name="line.183"></a>
+<span class="sourceLineNo">184</span> // Only read favored nodes if using the favored nodes load balancer.<a name="line.184"></a>
+<span class="sourceLineNo">185</span> this.shouldAssignRegionsWithFavoredNodes = FavoredStochasticBalancer.class.isAssignableFrom(<a name="line.185"></a>
+<span class="sourceLineNo">186</span> conf.getClass(HConstants.HBASE_MASTER_LOADBALANCER_CLASS, Object.class));<a name="line.186"></a>
+<span class="sourceLineNo">187</span><a name="line.187"></a>
+<span class="sourceLineNo">188</span> this.assignDispatchWaitMillis = conf.getInt(ASSIGN_DISPATCH_WAIT_MSEC_CONF_KEY,<a name="line.188"></a>
+<span class="sourceLineNo">189</span> DEFAULT_ASSIGN_DISPATCH_WAIT_MSEC);<a name="line.189"></a>
+<span class="sourceLineNo">190</span> this.assignDispatchWaitQueueMaxSize = conf.getInt(ASSIGN_DISPATCH_WAITQ_MAX_CONF_KEY,<a name="line.190"></a>
+<span class="sourceLineNo">191</span> DEFAULT_ASSIGN_DISPATCH_WAITQ_MAX);<a name="line.191"></a>
+<span class="sourceLineNo">192</span><a name="line.192"></a>
+<span class="sourceLineNo">193</span> this.assignMaxAttempts = Math.max(1, conf.getInt(ASSIGN_MAX_ATTEMPTS,<a name="line.193"></a>
+<span class="sourceLineNo">194</span> DEFAULT_ASSIGN_MAX_ATTEMPTS));<a name="line.194"></a>
<span class="sourceLineNo">195</span><a name="line.195"></a>
-<span class="sourceLineNo">196</span> final Configuration conf = master.getConfiguration();<a name="line.196"></a>
-<span class="sourceLineNo">197</span><a name="line.197"></a>
-<span class="sourceLineNo">198</span> // Only read favored nodes if using the favored nodes load balancer.<a name="line.198"></a>
-<span class="sourceLineNo">199</span> this.shouldAssignRegionsWithFavoredNodes = FavoredStochasticBalancer.class.isAssignableFrom(<a name="line.199"></a>
-<span class="sourceLineNo">200</span> conf.getClass(HConstants.HBASE_MASTER_LOADBALANCER_CLASS, Object.class));<a name="line.200"></a>
-<span class="sourceLineNo">201</span><a name="line.201"></a>
-<span class="sourceLineNo">202</span> this.assignDispatchWaitMillis = conf.getInt(ASSIGN_DISPATCH_WAIT_MSEC_CONF_KEY,<a name="line.202"></a>
-<span class="sourceLineNo">203</span> DEFAULT_ASSIGN_DISPATCH_WAIT_MSEC);<a name="line.203"></a>
-<span class="sourceLineNo">204</span> this.assignDispatchWaitQueueMaxSize = conf.getInt(ASSIGN_DISPATCH_WAITQ_MAX_CONF_KEY,<a name="line.204"></a>
-<span class="sourceLineNo">205</span> DEFAULT_ASSIGN_DISPATCH_WAITQ_MAX);<a name="line.205"></a>
-<span class="sourceLineNo">206</span><a name="line.206"></a>
-<span class="sourceLineNo">207</span> this.assignMaxAttempts = Math.max(1, conf.getInt(ASSIGN_MAX_ATTEMPTS,<a name="line.207"></a>
-<span class="sourceLineNo">208</span> DEFAULT_ASSIGN_MAX_ATTEMPTS));<a name="line.208"></a>
-<span class="sourceLineNo">209</span><a name="line.209"></a>
-<span class="sourceLineNo">210</span> int ritChoreInterval = conf.getInt(RIT_CHORE_INTERVAL_MSEC_CONF_KEY,<a name="line.210"></a>
-<span class="sourceLineNo">211</span> DEFAULT_RIT_CHORE_INTERVAL_MSEC);<a name="line.211"></a>
-<span class="sourceLineNo">212</span> this.ritChore = new RegionInTransitionChore(ritChoreInterval);<a name="line.212"></a>
+<span class="sourceLineNo">196</span> int ritChoreInterval = conf.getInt(RIT_CHORE_INTERVAL_MSEC_CONF_KEY,<a name="line.196"></a>
+<span class="sourceLineNo">197</span> DEFAULT_RIT_CHORE_INTERVAL_MSEC);<a name="line.197"></a>
+<span class="sourceLineNo">198</span> this.ritChore = new RegionInTransitionChore(ritChoreInterval);<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> public void start() throws IOException, KeeperException {<a name="line.201"></a>
+<span class="sourceLineNo">202</span> if (!running.compareAndSet(false, true)) {<a name="line.202"></a>
+<span class="sourceLineNo">203</span> return;<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> LOG.trace("Starting assignment manager");<a name="line.206"></a>
+<span class="sourceLineNo">207</span><a name="line.207"></a>
+<span class="sourceLineNo">208</span> // Register Server Listener<a name="line.208"></a>
+<span class="sourceLineNo">209</span> master.getServerManager().registerListener(this);<a name="line.209"></a>
+<span class="sourceLineNo">210</span><a name="line.210"></a>
+<span class="sourceLineNo">211</span> // Start the Assignment Thread<a name="line.211"></a>
+<span class="sourceLineNo">212</span> startAssignmentThread();<a name="line.212"></a>
<span class="sourceLineNo">213</span><a name="line.213"></a>
-<span class="sourceLineNo">214</span> // Used for region related procedure.<a name="line.214"></a>
-<span class="sourceLineNo">215</span> setRegionNormalizer(master.getRegionNormalizer());<a name="line.215"></a>
-<span class="sourceLineNo">216</span> }<a name="line.216"></a>
-<span class="sourceLineNo">217</span><a name="line.217"></a>
-<span class="sourceLineNo">218</span> public void start() throws IOException {<a name="line.218"></a>
-<span class="sourceLineNo">219</span> if (!running.compareAndSet(false, true)) {<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> LOG.trace("Starting assignment manager");<a name="line.223"></a>
-<span class="sourceLineNo">224</span><a name="line.224"></a>
-<span class="sourceLineNo">225</span> // Register Server Listener<a name="line.225"></a>
-<span class="sourceLineNo">226</span> master.getServerManager().registerListener(this);<a name="line.226"></a>
-<span class="sourceLineNo">227</span><a name="line.227"></a>
-<span class="sourceLineNo">228</span> // Start the Assignment Thread<a name="line.228"></a>
-<span class="sourceLineNo">229</span> startAssignmentThread();<a name="line.229"></a>
-<span class="sourceLineNo">230</span> }<a name="line.230"></a>
-<span class="sourceLineNo">231</span><a name="line.231"></a>
-<span class="sourceLineNo">232</span> public void stop() {<a name="line.232"></a>
-<span class="sourceLineNo">233</span> if (!running.compareAndSet(true, false)) {<a name="line.233"></a>
-<span class="sourceLineNo">234</span> return;<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> LOG.info("Stopping assignment manager");<a name="line.237"></a>
-<span class="sourceLineNo">238</span><a name="line.238"></a>
-<span class="sourceLineNo">239</span> // The AM is started before the procedure executor,<a name="line.239"></a>
-<span class="sourceLineNo">240</span> // but the actual work will be loaded/submitted only once we have the executor<a name="line.240"></a>
-<span class="sourceLineNo">241</span> final boolean hasProcExecutor = master.getMasterProcedureExecutor() != null;<a name="line.241"></a>
-<span class="sourceLineNo">242</span><a name="line.242"></a>
-<span class="sourceLineNo">243</span> // Remove the RIT chore<a name="line.243"></a>
-<span class="sourceLineNo">244</span> if (hasProcExecutor) {<a name="line.244"></a>
-<span class="sourceLineNo">245</span> master.getMasterProcedureExecutor().removeChore(this.ritChore);<a name="line.245"></a>
-<span class="sourceLineNo">246</span> }<a name="line.246"></a>
+<span class="sourceLineNo">214</span> // load meta region state<a name="line.214"></a>
+<span class="sourceLineNo">215</span> ZKWatcher zkw = master.getZooKeeper();<a name="line.215"></a>
+<span class="sourceLineNo">216</span> // it could be null in some tests<a name="line.216"></a>
+<span class="sourceLineNo">217</span> if (zkw != null) {<a name="line.217"></a>
+<span class="sourceLineNo">218</span> RegionState regionState = MetaTableLocator.getMetaRegionState(zkw);<a name="line.218"></a>
+<span class="sourceLineNo">219</span> RegionStateNode regionStateNode =<a name="line.219"></a>
+<span class="sourceLineNo">220</span> regionStates.getOrCreateRegionStateNode(RegionInfoBuilder.FIRST_META_REGIONINFO);<a name="line.220"></a>
+<span class="sourceLineNo">221</span> synchronized (regionStateNode) {<a name="line.221"></a>
+<span class="sourceLineNo">222</span> regionStateNode.setRegionLocation(regionState.getServerName());<a name="line.222"></a>
+<span class="sourceLineNo">223</span> regionStateNode.setState(regionState.getState());<a name="line.223"></a>
+<span class="sourceLineNo">224</span> setMetaAssigned(regionState.getRegion(), regionState.getState() == State.OPEN);<a name="line.224"></a>
+<span class="sourceLineNo">225</span> }<a name="line.225"></a>
+<span class="sourceLineNo">226</span> }<a name="line.226"></a>
+<span class="sourceLineNo">227</span> }<a name="line.227"></a>
+<span class="sourceLineNo">228</span><a name="line.228"></a>
+<span class="sourceLineNo">229</span> public void stop() {<a name="line.229"></a>
+<span class="sourceLineNo">230</span> if (!running.compareAndSet(true, false)) {<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><a name="line.233"></a>
+<span class="sourceLineNo">234</span> LOG.info("Stopping assignment manager");<a name="line.234"></a>
+<span class="sourceLineNo">235</span><a name="line.235"></a>
+<span class="sourceLineNo">236</span> // The AM is started before the procedure executor,<a name="line.236"></a>
+<span class="sourceLineNo">237</span> // but the actual work will be loaded/submitted only once we have the executor<a name="line.237"></a>
+<span class="sourceLineNo">238</span> final boolean hasProcExecutor = master.getMasterProcedureExecutor() != null;<a name="line.238"></a>
+<span class="sourceLineNo">239</span><a name="line.239"></a>
+<span class="sourceLineNo">240</span> // Remove the RIT chore<a name="line.240"></a>
+<span class="sourceLineNo">241</span> if (hasProcExecutor) {<a name="line.241"></a>
+<span class="sourceLineNo">242</span> master.getMasterProcedureExecutor().removeChore(this.ritChore);<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> // Stop the Assignment Thread<a name="line.245"></a>
+<span class="sourceLineNo">246</span> stopAssignmentThread();<a name="line.246"></a>
<span class="sourceLineNo">247</span><a name="line.247"></a>
-<span class="sourceLineNo">248</span> // Stop the Assignment Thread<a name="line.248"></a>
-<span class="sourceLineNo">249</span> stopAssignmentThread();<a name="line.249"></a>
+<span class="sourceLineNo">248</span> // Stop the RegionStateStore<a name="line.248"></a>
+<span class="sourceLineNo">249</span> regionStates.clear();<a name="line.249"></a>
<span class="sourceLineNo">250</span><a name="line.250"></a>
-<span class="sourceLineNo">251</span> // Stop the RegionStateStore<a name="line.251"></a>
-<span class="sourceLineNo">252</span> regionStates.clear();<a name="line.252"></a>
+<span class="sourceLineNo">251</span> // Unregister Server Listener<a name="line.251"></a>
+<span class="sourceLineNo">252</span> master.getServerManager().unregisterListener(this);<a name="line.252"></a>
<span class="sourceLineNo">253</span><a name="line.253"></a>
-<span class="sourceLineNo">254</span> // Unregister Server Listener<a name="line.254"></a>
-<span class="sourceLineNo">255</span> master.getServerManager().unregisterListener(this);<a name="line.255"></a>
-<span class="sourceLineNo">256</span><a name="line.256"></a>
-<span class="sourceLineNo">257</span> // Update meta events (for testing)<a name="line.257"></a>
-<span class="sourceLineNo">258</span> if (hasProcExecutor) {<a name="line.258"></a>
-<span class="sourceLineNo">259</span> metaLoadEvent.suspend();<a name="line.259"></a>
-<span class="sourceLineNo">260</span> setFailoverCleanupDone(false);<a name="line.260"></a>
-<span class="sourceLineNo">261</span> for (RegionInfo hri: getMetaRegionSet()) {<a name="line.261"></a>
-<span class="sourceLineNo">262</span> setMetaInitialized(hri, false);<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">254</span> // Update meta events (for testing)<a name="line.254"></a>
+<span class="sourceLineNo">255</span> if (hasProcExecutor) {<a name="line.255"></a>
+<span class="sourceLineNo">256</span> metaLoadEvent.suspend();<a name="line.256"></a>
+<span class="sourceLineNo">257</span> for (RegionInfo hri: getMetaRegionSet()) {<a name="line.257"></a>
+<span class="sourceLineNo">258</span> setMetaAssigned(hri, false);<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 name="line.262"></a>
+<span class="sourceLineNo">263</span> public boolean isRunning() {<a name="line.263"></a>
+<span class="sourceLineNo">264</span> return running.get();<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> public boolean isRunning() {<a name="line.267"></a>
-<span class="sourceLineNo">268</span> return running.get();<a name="line.268"></a>
+<span class="sourceLineNo">267</span> public Configuration getConfiguration() {<a name="line.267"></a>
+<span class="sourceLineNo">268</span> return master.getConfiguration();<a name="line.268"></a>
<span class="sourceLineNo">269</span> }<a name="line.269"></a>
<span class="sourceLineNo">270</span><a name="line.270"></a>
-<span class="sourceLineNo">271</span> public Configuration getConfiguration() {<a name="line.271"></a>
-<span class="sourceLineNo">272</span> return master.getConfiguration();<a name="line.272"></a>
+<span class="sourceLineNo">271</span> public MetricsAssignmentManager getAssignmentManagerMetrics() {<a name="line.271"></a>
+<span class="sourceLineNo">272</span> return metrics;<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> public MetricsAssignmentManager getAssignmentManagerMetrics() {<a name="line.275"></a>
-<span class="sourceLineNo">276</span> return metrics;<a name="line.276"></a>
+<span class="sourceLineNo">275</span> private LoadBalancer getBalancer() {<a name="line.275"></a>
+<span class="sourceLineNo">276</span> return master.getLoadBalancer();<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> private LoadBalancer getBalancer() {<a name="line.279"></a>
-<span class="sourceLineNo">280</span> return master.getLoadBalancer();<a name="line.280"></a>
+<span class="sourceLineNo">279</span> private MasterProcedureEnv getProcedureEnvironment() {<a name="line.279"></a>
+<span class="sourceLineNo">280</span> return master.getMasterProcedureExecutor().getEnvironment();<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> private MasterProcedureEnv getProcedureEnvironment() {<a name="line.283"></a>
-<span class="sourceLineNo">284</span> return master.getMasterProcedureExecutor().getEnvironment();<a name="line.284"></a>
+<span class="sourceLineNo">283</span> private MasterProcedureScheduler getProcedureScheduler() {<a name="line.283"></a>
+<span class="sourceLineNo">284</span> return getProcedureEnvironment().getProcedureScheduler();<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> private MasterProcedureScheduler getProcedureScheduler() {<a name="line.287"></a>
-<span class="sourceLineNo">288</span> return getProcedureEnvironment().getProcedureScheduler();<a name="line.288"></a>
+<span class="sourceLineNo">287</span> int getAssignMaxAttempts() {<a name="line.287"></a>
+<span class="sourceLineNo">288</span> return assignMaxAttempts;<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> protected int getAssignMaxAttempts() {<a name="line.291"></a>
-<span class="sourceLineNo">292</span> return assignMaxAttempts;<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> * Add the listener to the notification list.<a name="line.296"></a>
-<span class="sourceLineNo">297</span> * @param listener The AssignmentListener to register<a name="line.297"></a>
-<span class="sourceLineNo">298</span> */<a name="line.298"></a>
-<span class="sourceLineNo">299</span> public void registerListener(final AssignmentListener listener) {<a name="line.299"></a>
-<span class="sourceLineNo">300</span> this.listeners.add(listener);<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> * Remove the listener from the notification list.<a name="line.304"></a>
-<span class="sourceLineNo">305</span> * @param listener The AssignmentListener to unregister<a name="line.305"></a>
-<span class="sourceLineNo">306</span> */<a name="line.306"></a>
-<span class="sourceLineNo">307</span> public boolean unregisterListener(final AssignmentListener listener) {<a name="line.307"></a>
-<span class="sourceLineNo">308</span> return this.listeners.remove(listener);<a name="line.308"></a>
+<span class="sourceLineNo">291</span> /**<a name="line.291"></a>
+<span class="sourceLineNo">292</span> * Add the listener to the notification list.<a name="line.292"></a>
+<span class="sourceLineNo">293</span> * @param listener The AssignmentListener to register<a name="line.293"></a>
+<span class="sourceLineNo">294</span> */<a name="line.294"></a>
+<span class="sourceLineNo">295</span> public void registerListener(final AssignmentListener listener) {<a name="line.295"></a>
+<span class="sourceLineNo">296</span> this.listeners.add(listener);<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> /**<a name="line.299"></a>
+<span class="sourceLineNo">300</span> * Remove the listener from the notification list.<a name="line.300"></a>
+<span class="sourceLineNo">301</span> * @param listener The AssignmentListener to unregister<a name="line.301"></a>
+<span class="sourceLineNo">302</span> */<a name="line.302"></a>
+<span class="sourceLineNo">303</span> public boolean unregisterListener(final AssignmentListener listener) {<a name="line.303"></a>
+<span class="sourceLineNo">304</span> return this.listeners.remove(listener);<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> public RegionStates getRegionStates() {<a name="line.307"></a>
+<span class="sourceLineNo">308</span> return regionStates;<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> public void setRegionStateListener(final RegionStateListener listener) {<a name="line.311"></a>
-<span class="sourceLineNo">312</span> this.regionStateListener = listener;<a name="line.312"></a>
+<span class="sourceLineNo">311</span> public RegionStateStore getRegionStateStore() {<a name="line.311"></a>
+<span class="sourceLineNo">312</span> return regionStateStore;<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 setRegionNormalizer(final RegionNormalizer normalizer) {<a name="line.315"></a>
-<span class="sourceLineNo">316</span> this.regionNormalizer = normalizer;<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 RegionNormalizer getRegionNormalizer() {<a name="line.319"></a>
-<span class="sourceLineNo">320</span> return regionNormalizer;<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 RegionStates getRegionStates() {<a name="line.323"></a>
-<span class="sourceLineNo">324</span> return regionStates;<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> public RegionStateStore getRegionStateStore() {<a name="line.327"></a>
-<span class="sourceLineNo">328</span> return regionStateStore;<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> public List<ServerName> getFavoredNodes(final RegionInfo regionInfo) {<a name="line.331"></a>
-<span class="sourceLineNo">332</span> return this.shouldAssignRegionsWithFavoredNodes?<a name="line.332"></a>
-<span class="sourceLineNo">333</span> ((FavoredStochasticBalancer)getBalancer()).getFavoredNodes(regionInfo):<a name="line.333"></a>
-<span class="sourceLineNo">334</span> ServerName.EMPTY_SERVER_LIST;<a name="line.334"></a>
+<span class="sourceLineNo">315</span> public List<ServerName> getFavoredNodes(final RegionInfo regionInfo) {<a name="line.315"></a>
+<span class="sourceLineNo">316</span> return this.shouldAssignRegionsWithFavoredNodes?<a name="line.316"></a>
+<span class="sourceLineNo">317</span> ((FavoredStochasticBalancer)getBalancer()).getFavoredNodes(regionInfo):<a name="line.317"></a>
+<span class="sourceLineNo">318</span> ServerName.EMPTY_SERVER_LIST;<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> // ============================================================================================<a name="line.321"></a>
+<span class="sourceLineNo">322</span> // Table State Manager helpers<a name="line.322"></a>
+<span class="sourceLineNo">323</span> // ============================================================================================<a name="line.323"></a>
+<span class="sourceLineNo">324</span> TableStateManager getTableStateManager() {<a name="line.324"></a>
+<span class="sourceLineNo">325</span> return master.getTableStateManager();<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> public boolean isTableEnabled(final TableName tableName) {<a name="line.328"></a>
+<span class="sourceLineNo">329</span> return getTableStateManager().isTableState(tableName, TableState.State.ENABLED);<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> public boolean isTableDisabled(final TableName tableName) {<a name="line.332"></a>
+<span class="sourceLineNo">333</span> return getTableStateManager().isTableState(tableName,<a name="line.333"></a>
+<span class="sourceLineNo">334</span> TableState.State.DISABLED, TableState.State.DISABLING);<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> // Table State Manager helpers<a name="line.338"></a>
+<span class="sourceLineNo">338</span> // META Helpers<a name="line.338"></a>
<span class="sourceLineNo">339</span> // ============================================================================================<a name="line.339"></a>
-<span class="sourceLineNo">340</span> TableStateManager getTableStateManager() {<a name="line.340"></a>
-<span class="sourceLineNo">341</span> return master.getTableStateManager();<a name="line.341"></a>
+<span class="sourceLineNo">340</span> private boolean isMetaRegion(final RegionInfo regionInfo) {<a name="line.340"></a>
+<span class="sourceLineNo">341</span> return regionInfo.isMetaRegion();<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> public boolean isTableEnabled(final TableName tableName) {<a name="line.344"></a>
-<span class="sourceLineNo">345</span> return getTableStateManager().isTableState(tableName, TableState.State.ENABLED);<a name="line.345"></a>
+<span class="sourceLineNo">344</span> public boolean isMetaRegion(final byte[] regionName) {<a name="line.344"></a>
+<span class="sourceLineNo">345</span> return getMetaRegionFromName(regionName) != null;<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> public boolean isTableDisabled(final TableName tableName) {<a name="line.348"></a>
-<span class="sourceLineNo">349</span> return getTableStateManager().isTableState(tableName,<a name="line.349"></a>
-<span class="sourceLineNo">350</span> TableState.State.DISABLED, TableState.State.DISABLING);<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> // META Helpers<a name="line.354"></a>
-<span class="sourceLineNo">355</span> // ============================================================================================<a name="line.355"></a>
-<span class="sourceLineNo">356</span> private boolean isMetaRegion(final RegionInfo regionInfo) {<a name="line.356"></a>
-<span class="sourceLineNo">357</span> return regionInfo.isMetaRegion();<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> public boolean isMetaRegion(final byte[] regionName) {<a name="line.360"></a>
-<span class="sourceLineNo">361</span> return getMetaRegionFromName(regionName) != null;<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> public RegionInfo getMetaRegionFromName(final byte[] regionName) {<a name="line.364"></a>
-<span class="sourceLineNo">365</span> for (RegionInfo hri: getMetaRegionSet()) {<a name="line.365"></a>
-<span class="sourceLineNo">366</span> if (Bytes.equals(hri.getRegionName(), regionName)) {<a name="line.366"></a>
-<span class="sourceLineNo">367</span> return hri;<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> return null;<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> public boolean isCarryingMeta(final ServerName serverName) {<a name="line.373"></a>
-<span class="sourceLineNo">374</span> for (RegionInfo hri: getMetaRegionSet()) {<a name="line.374"></a>
-<span class="sourceLineNo">375</span> if (isCarryingRegion(serverName, hri)) {<a name="line.375"></a>
-<span class="sourceLineNo">376</span> return true;<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> return false;<a name="line.379"></a>
+<span class="sourceLineNo">348</span> public RegionInfo getMetaRegionFromName(final byte[] regionName) {<a name="line.348"></a>
+<span class="sourceLineNo">349</span> for (RegionInfo hri: getMetaRegionSet()) {<a name="line.349"></a>
+<span class="sourceLineNo">350</span> if (Bytes.equals(hri.getRegionName(), regionName)) {<a name="line.350"></a>
+<span class="sourceLineNo">351</span> return hri;<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> return null;<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> public boolean isCarryingMeta(final ServerName serverName) {<a name="line.357"></a>
+<span class="sourceLineNo">358</span> // TODO: handle multiple meta<a name="line.358"></a>
+<span class="sourceLineNo">359</span> return isCarryingRegion(serverName, RegionInfoBuilder.FIRST_META_REGIONINFO);<a name="line.359"></a>
+<span class="sourceLineNo">360</span> }<a name="line.360"></a>
+<span class="sourceLineNo">361</span><a name="line.361"></a>
+<span class="sourceLineNo">362</span> private boolean isCarryingRegion(final ServerName serverName, final RegionInfo regionInfo) {<a name="line.362"></a>
+<span class="sourceLineNo">363</span> // TODO: check for state?<a name="line.363"></a>
+<span class="sourceLineNo">364</span> final RegionStateNode node = regionStates.getRegionStateNode(regionInfo);<a name="line.364"></a>
+<span class="sourceLineNo">365</span> return(node != null && serverName.equals(node.getRegionLocation()));<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 RegionInfo getMetaForRegion(final RegionInfo regionInfo) {<a name="line.368"></a>
+<span class="sourceLineNo">369</span> //if (regionInfo.isMetaRegion()) return regionInfo;<a name="line.369"></a>
+<span class="sourceLineNo">370</span> // TODO: handle multiple meta. if the region provided is not meta lookup<a name="line.370"></a>
+<span class="sourceLineNo">371</span> // which meta the region belongs to.<a name="line.371"></a>
+<span class="sourceLineNo">372</span> return RegionInfoBuilder.FIRST_META_REGIONINFO;<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> // TODO: handle multiple meta.<a name="line.375"></a>
+<span class="sourceLineNo">376</span> private static final Set<RegionInfo> META_REGION_SET =<a name="line.376"></a>
+<span class="sourceLineNo">377</span> Collections.singleton(RegionInfoBuilder.FIRST_META_REGIONINFO);<a name="line.377"></a>
+<span class="sourceLineNo">378</span> public Set<RegionInfo> getMetaRegionSet() {<a name="line.378"></a>
+<span class="sourceLineNo">379</span> return META_REGION_SET;<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> private boolean isCarryingRegion(final ServerName serverName, final RegionInfo regionInfo) {<a name="line.382"></a>
-<span class="sourceLineNo">383</span> // TODO: check for state?<a name="line.383"></a>
-<span class="sourceLineNo">384</span> final RegionStateNode node = regionStates.getRegionStateNode(regionInfo);<a name="line.384"></a>
-<span class="sourceLineNo">385</span> return(node != null && serverName.equals(node.getRegionLocation()));<a name="line.385"></a>
-<span class="sourceLineNo">386</span> }<a name="line.386"></a>
-<span class="sourceLineNo">387</span><a name="line.387"></a>
-<span class="sourceLineNo">388</span> private RegionInfo getMetaForRegion(final RegionInfo regionInfo) {<a name="line.388"></a>
-<span class="sourceLineNo">389</span> //if (regionInfo.isMetaRegion()) return regionInfo;<a name="line.389"></a>
-<span class="sourceLineNo">390</span> // TODO: handle multiple meta. if the region provided is not meta lookup<a name="line.390"></a>
-<span class="sourceLineNo">391</span> // which meta the region belongs to.<a name="line.391"></a>
-<span class="sourceLineNo">392</span> return RegionInfoBuilder.FIRST_META_REGIONINFO;<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> // TODO: handle multiple meta.<a name="line.395"></a>
-<span class="sourceLineNo">396</span> private static final Set<RegionInfo> META_REGION_SET =<a name="line.396"></a>
-<span class="sourceLineNo">397</span> Collections.singleton(RegionInfoBuilder.FIRST_META_REGIONINFO);<a name="line.397"></a>
-<span class="sourceLineNo">398</span> public Set<RegionInfo> getMetaRegionSet() {<a name="line.398"></a>
-<span class="sourceLineNo">399</span> return META_REGION_SET;<a name="line.399"></a>
-<span class="sourceLineNo">400</span> }<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> // META Event(s) helpers<a name="line.403"></a>
-<span class="sourceLineNo">404</span> // ============================================================================================<a name="line.404"></a>
-<span class="sourceLineNo">405</span> public boolean isMetaInitialized() {<a name="line.405"></a>
-<span class="sourceLineNo">406</span> return metaInitializedEvent.isReady();<a name="line.406"></a>
+<span class="sourceLineNo">382</span> // ============================================================================================<a name="line.382"></a>
+<span class="sourceLineNo">383</span> // META Event(s) helpers<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> * Notice that, this only means the meta region is available on a RS, but the AM may still be<a name="line.386"></a>
+<span class="sourceLineNo">387</span> * loading the region states from meta, so usually you need to check {@link #isMetaLoaded()} first<a name="line.387"></a>
+<span class="sourceLineNo">388</span> * before checking this method, unless you can make sure that your piece of code can only be<a name="line.388"></a>
+<span class="sourceLineNo">389</span> * executed after AM builds the region states.<a name="line.389"></a>
+<span class="sourceLineNo">390</span> * @see #isMetaLoaded()<a name="line.390"></a>
+<span class="sourceLineNo">391</span> */<a name="line.391"></a>
+<span class="sourceLineNo">392</span> public boolean isMetaAssigned() {<a name="line.392"></a>
+<span class="sourceLineNo">393</span> return metaAssignEvent.isReady();<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> public boolean isMetaRegionInTransition() {<a name="line.396"></a>
+<span class="sourceLineNo">397</span> return !isMetaAssigned();<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> /**<a name="line.400"></a>
+<span class="sourceLineNo">401</span> * Notice that this event does not mean the AM has already finished region state rebuilding. See<a name="line.401"></a>
+<span class="sourceLineNo">402</span> * the comment of {@link #isMetaAssigned()} for more details.<a name="line.402"></a>
+<span class="sourceLineNo">403</span> * @see #isMetaAssigned()<a name="line.403"></a>
+<span class="sourceLineNo">404</span> */<a name="line.404"></a>
+<span class="sourceLineNo">405</span> public boolean waitMetaAssigned(Procedure<?> proc, RegionInfo regionInfo) {<a name="line.405"></a>
+<span class="sourceLineNo">406</span> return getMetaAssignEvent(getMetaForRegion(regionInfo)).suspendIfNotReady(proc);<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> public boolean isMetaRegionInTransition() {<a name="line.409"></a>
-<span class="sourceLineNo">410</span> return !isMetaInitialized();<a name="line.410"></a>
-<span class="sourceLineNo">411</span> }<a name="line.411"></a>
-<span class="sourceLineNo">412</span><a name="line.412"></a>
-<span class="sourceLineNo">413</span> public boolean waitMetaInitialized(final Procedure proc) {<a name="line.413"></a>
-<span class="sourceLineNo">414</span> // TODO: handle multiple meta. should this wait on all meta?<a name="line.414"></a>
-<span class="sourceLineNo">415</span> // this is used by the ServerCrashProcedure...<a name="line.415"></a>
-<span class="sourceLineNo">416</span> return waitMetaInitialized(proc, RegionInfoBuilder.FIRST_META_REGIONINFO);<a name="line.416"></a>
+<span class="sourceLineNo">409</span> private void setMetaAssigned(RegionInfo metaRegionInfo, boolean assigned) {<a name="line.409"></a>
+<span class="sourceLineNo">410</span> assert isMetaRegion(metaRegionInfo) : "unexpected non-meta region " + metaRegionInfo;<a name="line.410"></a>
+<span class="sourceLineNo">411</span> ProcedureEvent<?> metaAssignEvent = getMetaAssignEvent(metaRegionInfo);<a name="line.411"></a>
+<span class="sourceLineNo">412</span> if (assigned) {<a name="line.412"></a>
+<span class="sourceLineNo">413</span> metaAssignEvent.wake(getProcedureScheduler());<a name="line.413"></a>
+<span class="sourceLineNo">414</span> } else {<a name="line.414"></a>
+<span class="sourceLineNo">415</span> metaAssignEvent.suspend();<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> public boolean waitMetaInitialized(final Procedure proc, final RegionInfo regionInfo) {<a name="line.419"></a>
-<span class="sourceLineNo">420</span> return getMetaInitializedEvent(getMetaForRegion(regionInfo)).suspendIfNotReady(proc);<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> private void setMetaInitialized(final RegionInfo metaRegionInfo, final boolean isInitialized) {<a name="line.423"></a>
-<span class="sourceLineNo">424</span> assert isMetaRegion(metaRegionInfo) : "unexpected non-meta region " + metaRegionInfo;<a name="line.424"></a>
-<span class="sourceLineNo">425</span> final ProcedureEvent metaInitEvent = getMetaInitializedEvent(metaRegionInfo);<a name="line.425"></a>
-<span class="sourceLineNo">426</span> if (isInitialized) {<a name="line.426"></a>
-<span class="sourceLineNo">427</span> metaInitEvent.wake(getProcedureScheduler());<a name="line.427"></a>
-<span class="sourceLineNo">428</span> } else {<a name="line.428"></a>
-<span class="sourceLineNo">429</span> metaInitEvent.suspend();<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><a name="line.432"></a>
-<span class="sourceLineNo">433</span> private ProcedureEvent getMetaInitializedEvent(final RegionInfo metaRegionInfo) {<a name="line.433"></a>
-<span class="sourceLineNo">434</span> assert isMetaRegion(metaRegionInfo) : "unexpected non-meta region " + metaRegionInfo;<a name="line.434"></a>
-<span class="sourceLineNo">435</span> // TODO: handle multiple meta.<a name="line.435"></a>
-<span class="sourceLineNo">436</span> return metaInitializedEvent;<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> public boolean waitMetaLoaded(final Procedure proc) {<a name="line.439"></a>
-<span class="sourceLineNo">440</span> return metaLoadEvent.suspendIfNotReady(proc);<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> protected void wakeMetaLoadedEvent() {<a name="line.443"></a>
-<span class="sourceLineNo">444</span> metaLoadEvent.wake(getProcedureScheduler());<a name="line.444"></a>
-<span class="sourceLineNo">445</span> assert isMetaLoaded() : "expected meta to be loaded";<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> public boolean isMetaLoaded() {<a name="line.448"></a>
-<span class="sourceLineNo">449</span> return metaLoadEvent.isReady();<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> * Start a new thread to check if there are region servers whose versions are higher than others.<a name="line.453"></a>
-<span class="sourceLineNo">454</span> * If so, move all system table regions to RS with the highest version to keep compatibility.<a name="line.454"></a>
-<span class="sourceLineNo">455</span> * The reason is, RS in new version may not be able to access RS in old version when there are<a name="line.455"></a>
-<span class="sourceLineNo">456</span> * some incompatible changes.<a name="line.456"></a>
-<span class="sourceLineNo">457</span> * <p>This method is called when a new RegionServer is added to cluster only.</p><a name="line.457"></a>
-<span class="sourceLineNo">458</span> */<a name="line.458"></a>
-<span class="sourceLineNo">459</span> public void checkIfShouldMoveSystemRegionAsync() {<a name="line.459"></a>
-<span class="sourceLineNo">460</span> // TODO: Fix this thread. If a server is killed and a new one started, this thread thinks that<a name="line.460"></a>
-<span class="sourceLineNo">461</span> // it should 'move' the system tables from the old server to the new server but<a name="line.461"></a>
-<span class="sourceLineNo">462</span> // ServerCrashProcedure is on it; and it will take care of the assign without dataloss.<a name="line.462"></a>
-<span class="sourceLineNo">463</span> if (this.master.getServerManager().countOfRegionServers() <= 1) {<a name="line.463"></a>
-<span class="sourceLineNo">464</span> return;<a name="line.464"></a>
-<span class="sourceLineNo">465</span> }<a name="line.465"></a>
-<span class="sourceLineNo">466</span> // This thread used to run whenever there was a change in the cluster. The ZooKeeper<a name="line.466"></a>
-<span class="sourceLineNo">467</span> // childrenChanged notification came in before the nodeDeleted message and so this method<a name="line.467"></a>
-<span class="sourceLineNo">468</span> // cold run before a ServerCrashProcedure could run. That meant that this thread could see<a name="line.468"></a>
-<span class="sourceLineNo">469</span> // a Crashed Server before ServerCrashProcedure and it could find system regions on the<a name="line.469"></a>
-<span class="sourceLineNo">470</span> // crashed server and go move them before ServerCrashProcedure had a chance; could be<a name="line.470"></a>
-<span class="sourceLineNo">471</span> // dataloss too if WALs were not recovered.<a name="line.471"></a>
-<span class="sourceLineNo">472</span> new Thread(() -> {<a name="line.472"></a>
-<span class="sourceLineNo">473</span> try {<a name="line.473"></a>
-<span class="sourceLineNo">474</span> synchronized (checkIfShouldMoveSystemRegionLock) {<a name="line.474"></a>
-<span class="sourceLineNo">475</span> List<RegionPlan> plans = new ArrayList<>();<a name="line.475"></a>
-<span class="sourceLineNo">476</span> // TODO: I don't think this code does a good job if all servers in cluster have same<a name="line.476"></a>
-<span class="sourceLineNo">477</span> // version. It looks like it will schedule unnecessary moves.<a name="line.477"></a>
-<span class="sourceLineNo">478</span> for (ServerName server : getExcludedServersForSystemTable()) {<a name="line.478"></a>
-<span class="sourceLineNo">479</span> if (master.getServerManager().isServerDead(server)) {<a name="line.479"></a>
-<span class="sourceLineNo">480</span> // TODO: See HBASE-18494 and HBASE-18495. Though getExcludedServersForSystemTable()<a name="line.480"></a>
-<span class="sourceLineNo">481</span> // considers only online servers, the server could be queued for dead server<a name="line.481"></a>
-<span class="sourceLineNo">482</span> // processing. As region assignments for crashed server is handled by<a name="line.482"></a>
-<span class="sourceLineNo">483</span> // ServerCrashProcedure, do NOT handle them here. The goal is to handle this through<a name="line.483"></a>
-<span class="sourceLineNo">484</span> // regular flow of LoadBalancer as a favored node and not to have this special<a name="line.484"></a>
-<span class="sourceLineNo">485</span> // handling.<a name="line.485"></a>
-<span class="sourceLineNo">486</span> continue;<a name="line.486"></a>
-<span class="sourceLineNo">487</span> }<a name="line.487"></a>
-<span class="sourceLineNo">488</span> List<RegionInfo> regionsShouldMove = getSystemTables(server);<a name="line.488"></a>
-<span class="sourceLineNo">489</span> if (!regionsShouldMove.isEmpty()) {<a name="line.489"></a>
-<span class="sourceLineNo">490</span> for (RegionInfo regionInfo : regionsShouldMove) {<a name="line.490"></a>
-<span class="sourceLineNo">491</span> // null value for dest forces destination server to be selected by balancer<a name="line.491"></a>
-<span class="sourceLineNo">492</span> RegionPlan plan = new RegionPlan(regionInfo, server, null);<a name="line.492"></a>
-<span class="sourceLineNo">493</span> if (regionInfo.isMetaRegion()) {<a name="line.493"></a>
-<span class="sourceLineNo">494</span> // Must move meta region first.<a name="line.494"></a>
-<span class="sourceLineNo">495</span> LOG.info("Async MOVE of {} to newer Server={}",<a name="line.495"></a>
-<span class="sourceLineNo">496</span> regionInfo.getEncodedName(), server);<a name="line.496"></a>
-<span class="sourceLineNo">497</span> moveAsync(plan);<a name="line.497"></a>
-<span class="sourceLineNo">498</span> } else {<a name="line.498"></a>
-<span class="sourceLineNo">499</span> plans.add(plan);<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> }<a name="line.502"></a>
-<span class="sourceLineNo">503</span> for (RegionPlan plan : plans) {<a name="line.503"></a>
-<span class="sourceLineNo">504</span> LOG.info("Async MOVE of {} to newer Server={}",<a name="line.504"></a>
-<span class="sourceLineNo">505</span> plan.getRegionInfo().getEncodedName(), server);<a name="line.505"></a>
-<span class="sourceLineNo">506</span> moveAsync(plan);<a name="line.506"></a>
-<span class="sourceLineNo">507</span> }<a name="line.507"></a>
-<span class="sourceLineNo">508</span> }<a name="line.508"></a>
-<span class="sourceLineNo">509</span> }<a name="line.509"></a>
-<span class="sourceLineNo">510</span> } catch (Throwable t) {<a name="line.510"></a>
-<span c
<TRUNCATED>
[51/51] [partial] hbase-site git commit: Published site at
9101fc246f86445006bfbcdfda5cc495016dc280.
Posted by gi...@apache.org.
Published site at 9101fc246f86445006bfbcdfda5cc495016dc280.
Project: http://git-wip-us.apache.org/repos/asf/hbase-site/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase-site/commit/65565d77
Tree: http://git-wip-us.apache.org/repos/asf/hbase-site/tree/65565d77
Diff: http://git-wip-us.apache.org/repos/asf/hbase-site/diff/65565d77
Branch: refs/heads/asf-site
Commit: 65565d77b57883970178f38f7446391ea9094d0a
Parents: 6304145
Author: jenkins <bu...@apache.org>
Authored: Wed Jun 20 04:24:54 2018 +0000
Committer: jenkins <bu...@apache.org>
Committed: Wed Jun 20 04:24:54 2018 +0000
----------------------------------------------------------------------
acid-semantics.html | 4 +-
apache_hbase_reference_guide.pdf | 57222 ++++++++++++-----
book.html | 1775 +-
bulk-loads.html | 4 +-
checkstyle-aggregate.html | 22582 ++++---
checkstyle.rss | 38 +-
coc.html | 4 +-
dependencies.html | 4 +-
dependency-convergence.html | 4 +-
dependency-info.html | 4 +-
dependency-management.html | 4 +-
devapidocs/allclasses-frame.html | 1 +
devapidocs/allclasses-noframe.html | 1 +
devapidocs/constant-values.html | 49 +-
devapidocs/deprecated-list.html | 97 +-
devapidocs/index-all.html | 422 +-
...aTableAccessor.ReplicationBarrierResult.html | 18 +-
.../apache/hadoop/hbase/MetaTableAccessor.html | 84 +-
.../org/apache/hadoop/hbase/ScheduledChore.html | 2 +-
.../hadoop/hbase/backup/package-tree.html | 4 +-
.../hbase/class-use/PleaseHoldException.html | 4 +-
.../hbase/class-use/RegionStateListener.html | 35 -
.../hadoop/hbase/class-use/ScheduledChore.html | 4 +
.../hadoop/hbase/class-use/ServerName.html | 202 +-
.../hadoop/hbase/class-use/TableName.html | 18 +-
.../hbase/client/class-use/RegionInfo.html | 36 +-
.../hadoop/hbase/client/package-tree.html | 26 +-
.../hadoop/hbase/filter/package-tree.html | 6 +-
.../hadoop/hbase/io/hfile/package-tree.html | 6 +-
.../apache/hadoop/hbase/ipc/package-tree.html | 2 +-
.../hadoop/hbase/mapreduce/package-tree.html | 2 +-
...talogJanitor.SplitParentFirstComparator.html | 8 +-
.../hadoop/hbase/master/CatalogJanitor.html | 18 +-
.../master/HMaster.InitializationMonitor.html | 20 +-
.../master/HMaster.MasterStoppedException.html | 4 +-
.../hbase/master/HMaster.RedirectServlet.html | 12 +-
.../org/apache/hadoop/hbase/master/HMaster.html | 864 +-
.../master/HMasterCommandLine.LocalHMaster.html | 2 +-
.../hbase/master/MasterMetaBootstrap.html | 75 +-
.../hadoop/hbase/master/MasterServices.html | 118 +-
.../hadoop/hbase/master/MasterWalManager.html | 106 +-
.../hbase/master/RegionServerTracker.html | 62 +-
.../ServerManager.FlushedSequenceIdFlusher.html | 302 +
.../hadoop/hbase/master/ServerManager.html | 613 +-
.../SnapshotOfRegionAssignmentFromMeta.html | 4 +-
...signmentManager.RegionInTransitionChore.html | 6 +-
...ssignmentManager.RegionInTransitionStat.html | 40 +-
.../master/assignment/AssignmentManager.html | 799 +-
.../master/assignment/RegionStateStore.html | 42 +-
.../assignment/RegionTransitionProcedure.html | 14 +-
.../hbase/master/class-use/MasterServices.html | 4 +-
.../master/class-use/RegionState.State.html | 12 +-
.../ServerManager.FlushedSequenceIdFlusher.html | 165 +
.../normalizer/class-use/RegionNormalizer.html | 48 -
.../hbase/master/normalizer/package-use.html | 23 -
.../hadoop/hbase/master/package-summary.html | 19 +-
.../hadoop/hbase/master/package-tree.html | 5 +-
.../apache/hadoop/hbase/master/package-use.html | 26 +-
.../AbstractStateMachineTableProcedure.html | 22 +-
.../hbase/master/procedure/FairQueue.html | 4 +-
.../master/procedure/InitMetaProcedure.html | 700 +
.../procedure/MasterDDLOperationHelper.html | 4 +-
...ocedureEnv.MasterProcedureStoreListener.html | 10 +-
...asterProcedureEnv.WALStoreLeaseRecovery.html | 10 +-
.../master/procedure/MasterProcedureEnv.html | 68 +-
.../procedure/MasterProcedureScheduler.html | 176 +-
...etaProcedureInterface.MetaOperationType.html | 8 +-
.../procedure/MetaProcedureInterface.html | 26 +-
.../hbase/master/procedure/MetaQueue.html | 29 +-
.../master/procedure/RecoverMetaProcedure.html | 137 +-
.../hbase/master/procedure/SchemaLocking.html | 40 +-
.../master/procedure/ServerCrashProcedure.html | 84 +-
.../procedure/TableProcedureInterface.html | 2 +-
.../AbstractStateMachineTableProcedure.html | 12 +-
.../procedure/class-use/InitMetaProcedure.html | 125 +
.../procedure/class-use/MasterProcedureEnv.html | 236 +-
...etaProcedureInterface.MetaOperationType.html | 4 +-
.../class-use/MetaProcedureInterface.html | 7 +-
.../class-use/ProcedurePrepareLatch.html | 5 +-
.../hbase/master/procedure/class-use/Queue.html | 7 +-
...leProcedureInterface.TableOperationType.html | 10 +-
.../class-use/TableProcedureInterface.html | 14 +-
.../hbase/master/procedure/package-frame.html | 1 +
.../hbase/master/procedure/package-summary.html | 81 +-
.../hbase/master/procedure/package-tree.html | 5 +-
.../hbase/master/procedure/package-use.html | 18 +-
.../org/apache/hadoop/hbase/package-tree.html | 18 +-
.../org/apache/hadoop/hbase/package-use.html | 9 +-
.../ProcedureExecutor.FailedProcedure.html | 20 +-
...ProcedureExecutor.KeepAliveWorkerThread.html | 6 +-
.../ProcedureExecutor.WorkerMonitor.html | 32 +-
.../ProcedureExecutor.WorkerThread.html | 20 +-
.../hbase/procedure2/ProcedureExecutor.html | 240 +-
.../procedure2/class-use/LockAndQueue.html | 7 +-
.../hbase/procedure2/class-use/LockStatus.html | 4 +-
.../class-use/Procedure.LockState.html | 8 +-
.../hbase/procedure2/class-use/Procedure.html | 97 +-
.../procedure2/class-use/ProcedureEvent.html | 28 +-
.../ProcedureExecutor.WorkerThread.html | 2 +-
.../class-use/ProcedureStateSerializer.html | 42 +-
.../class-use/ProcedureSuspendedException.html | 13 +-
.../class-use/ProcedureYieldException.html | 13 +-
.../class-use/StateMachineProcedure.Flow.html | 21 +-
.../class-use/StateMachineProcedure.html | 25 +-
.../class-use/TimeoutExecutorThread.html | 2 +-
.../hadoop/hbase/procedure2/package-tree.html | 6 +-
.../procedure2/store/wal/WALProcedureStore.html | 32 +-
.../hadoop/hbase/quotas/package-tree.html | 6 +-
.../hadoop/hbase/regionserver/package-tree.html | 18 +-
.../regionserver/querymatcher/package-tree.html | 2 +-
.../hbase/regionserver/wal/package-tree.html | 2 +-
.../replication/regionserver/package-tree.html | 2 +-
.../hbase/security/access/package-tree.html | 2 +-
.../hadoop/hbase/security/package-tree.html | 4 +-
.../util/class-use/AvlUtil.AvlLinkedNode.html | 7 +-
.../hbase/util/class-use/AvlUtil.AvlNode.html | 7 +-
.../apache/hadoop/hbase/util/package-tree.html | 8 +-
.../apache/hadoop/hbase/wal/package-tree.html | 2 +-
.../hbase/zookeeper/class-use/ZKListener.html | 3 +-
devapidocs/overview-tree.html | 2 +
.../MetaTableAccessor.CloseableVisitor.html | 1590 +-
.../MetaTableAccessor.CollectAllVisitor.html | 1590 +-
.../MetaTableAccessor.CollectingVisitor.html | 1590 +-
.../MetaTableAccessor.DefaultVisitorBase.html | 1590 +-
.../hbase/MetaTableAccessor.QueryType.html | 1590 +-
...aTableAccessor.ReplicationBarrierResult.html | 1590 +-
.../MetaTableAccessor.TableVisitorBase.html | 1590 +-
.../hadoop/hbase/MetaTableAccessor.Visitor.html | 1590 +-
.../apache/hadoop/hbase/MetaTableAccessor.html | 1590 +-
.../org/apache/hadoop/hbase/Version.html | 6 +-
...talogJanitor.SplitParentFirstComparator.html | 697 +-
.../hadoop/hbase/master/CatalogJanitor.html | 697 +-
.../master/HMaster.InitializationMonitor.html | 7096 +-
.../master/HMaster.MasterStoppedException.html | 7096 +-
.../hbase/master/HMaster.RedirectServlet.html | 7096 +-
.../org/apache/hadoop/hbase/master/HMaster.html | 7096 +-
.../hbase/master/MasterMetaBootstrap.html | 221 +-
.../hadoop/hbase/master/MasterServices.html | 336 +-
.../hadoop/hbase/master/MasterWalManager.html | 574 +-
.../hbase/master/RegionServerTracker.html | 274 +-
.../ServerManager.FlushedSequenceIdFlusher.html | 1244 +
.../hadoop/hbase/master/ServerManager.html | 2142 +-
...signmentManager.RegionInTransitionChore.html | 3765 +-
...ssignmentManager.RegionInTransitionStat.html | 3765 +-
.../master/assignment/AssignmentManager.html | 3765 +-
.../assignment/MergeTableRegionsProcedure.html | 2 +-
.../RegionStateStore.RegionStateVisitor.html | 429 +-
.../master/assignment/RegionStateStore.html | 429 +-
.../assignment/RegionTransitionProcedure.html | 123 +-
...tTableRegionProcedure.StoreFileSplitter.html | 2 +-
.../assignment/SplitTableRegionProcedure.html | 2 +-
.../AbstractStateMachineTableProcedure.html | 154 +-
.../master/procedure/InitMetaProcedure.html | 187 +
...ocedureEnv.MasterProcedureStoreListener.html | 306 +-
...asterProcedureEnv.WALStoreLeaseRecovery.html | 306 +-
.../master/procedure/MasterProcedureEnv.html | 306 +-
.../procedure/MasterProcedureScheduler.html | 1859 +-
...etaProcedureInterface.MetaOperationType.html | 27 +-
.../procedure/MetaProcedureInterface.html | 27 +-
.../hbase/master/procedure/MetaQueue.html | 27 +-
.../master/procedure/RecoverMetaProcedure.html | 493 +-
.../hbase/master/procedure/SchemaLocking.html | 293 +-
.../master/procedure/ServerCrashProcedure.html | 803 +-
...edureExecutor.CompletedProcedureCleaner.html | 2749 +-
...dureExecutor.CompletedProcedureRetainer.html | 2749 +-
.../ProcedureExecutor.FailedProcedure.html | 2749 +-
...ProcedureExecutor.KeepAliveWorkerThread.html | 2749 +-
...edureExecutor.ProcedureExecutorListener.html | 2749 +-
.../procedure2/ProcedureExecutor.Testing.html | 2749 +-
.../ProcedureExecutor.WorkerMonitor.html | 2749 +-
.../ProcedureExecutor.WorkerThread.html | 2749 +-
.../hbase/procedure2/ProcedureExecutor.html | 2749 +-
.../wal/WALProcedureStore.LeaseRecovery.html | 484 +-
.../store/wal/WALProcedureStore.PushType.html | 484 +-
.../wal/WALProcedureStore.SyncMetrics.html | 484 +-
.../procedure2/store/wal/WALProcedureStore.html | 484 +-
downloads.html | 50 +-
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/index-all.html | 24 +-
.../hbase/TestLocalHBaseCluster.MyHMaster.html | 2 +-
.../hbase/TestMetaTableAccessor.MetaTask.html | 20 +-
...estMetaTableAccessor.SpyingRpcScheduler.html | 8 +-
...TableAccessor.SpyingRpcSchedulerFactory.html | 6 +-
.../hadoop/hbase/TestMetaTableAccessor.html | 40 +-
.../hadoop/hbase/io/hfile/package-tree.html | 2 +-
.../hbase/master/MockNoopMasterServices.html | 251 +-
.../hadoop/hbase/master/TestCatalogJanitor.html | 54 +-
.../apache/hadoop/hbase/master/TestMaster.html | 58 +-
.../master/TestMasterMetrics.MyMaster.html | 2 +-
.../TestShutdownBackupMaster.MockHMaster.html | 2 +-
...TestSplitLogManager.DummyMasterServices.html | 2 +-
...MockMasterServices.MockRegionStateStore.html | 6 +-
.../master/assignment/MockMasterServices.html | 76 +-
.../TestAssignmentManager.FaultyRsExecutor.html | 8 +-
.../TestAssignmentManager.GoodRsExecutor.html | 8 +-
...tManager.HangOnCloseThenRSCrashExecutor.html | 10 +-
...signmentManager.HangThenRSCrashExecutor.html | 8 +-
...gnmentManager.HangThenRSRestartExecutor.html | 8 +-
.../TestAssignmentManager.MockRSExecutor.html | 4 +-
...ockRSProcedureDispatcher.MockRemoteCall.html | 6 +-
...gnmentManager.MockRSProcedureDispatcher.html | 10 +-
.../TestAssignmentManager.NoopRsExecutor.html | 10 +-
.../TestAssignmentManager.RandRsExecutor.html | 12 +-
...ntManager.ServerNotYetRunningRsExecutor.html | 6 +-
...signmentManager.SocketTimeoutRsExecutor.html | 16 +-
.../assignment/TestAssignmentManager.html | 121 +-
...estingUtility.InjectAbortOnLoadListener.html | 16 +-
.../MasterProcedureTestingUtility.html | 54 +-
.../procedure/TestMasterProcedureEvents.html | 53 +-
.../procedure/TestServerCrashProcedure.html | 29 +-
.../org/apache/hadoop/hbase/package-tree.html | 10 +-
.../hadoop/hbase/procedure/package-tree.html | 8 +-
.../ProcedureTestingUtility.LoadCounter.html | 44 +-
.../ProcedureTestingUtility.NoopProcedure.html | 14 +-
.../ProcedureTestingUtility.TestProcedure.html | 28 +-
.../procedure2/ProcedureTestingUtility.html | 126 +-
...TestProcedureExecutor.BusyWaitProcedure.html | 8 +-
.../TestProcedureExecutor.TestProcEnv.html | 4 +-
.../hbase/procedure2/TestProcedureExecutor.html | 28 +-
...stProcedureInMemoryChore.TestLatchChore.html | 10 +-
.../TestProcedureInMemoryChore.TestProcEnv.html | 4 +-
.../procedure2/TestProcedureInMemoryChore.html | 6 +-
.../procedure2/TestProcedureReplayOrder.html | 4 +-
...stProcedureReplayOrder.TestProcedureEnv.html | 13 +
.../hadoop/hbase/procedure2/package-tree.html | 2 +-
...egionMergeTransactionOnCluster.MyMaster.html | 2 +-
.../TestSplitTransactionOnCluster.MyMaster.html | 2 +-
.../hadoop/hbase/regionserver/package-tree.html | 6 +-
...stReplicationProcedureRetry.MockHMaster.html | 2 +-
.../apache/hadoop/hbase/test/package-tree.html | 2 +-
.../apache/hadoop/hbase/wal/package-tree.html | 2 +-
.../hbase/TestMetaTableAccessor.MetaTask.html | 1460 +-
...estMetaTableAccessor.SpyingRpcScheduler.html | 1460 +-
...TableAccessor.SpyingRpcSchedulerFactory.html | 1460 +-
.../hadoop/hbase/TestMetaTableAccessor.html | 1460 +-
.../hbase/master/MockNoopMasterServices.html | 877 +-
.../hadoop/hbase/master/TestCatalogJanitor.html | 1079 +-
.../apache/hadoop/hbase/master/TestMaster.html | 369 +-
...MockMasterServices.MockRegionStateStore.html | 713 +-
.../master/assignment/MockMasterServices.html | 713 +-
.../TestAssignmentManager.FaultyRsExecutor.html | 1375 +-
.../TestAssignmentManager.GoodRsExecutor.html | 1375 +-
...tManager.HangOnCloseThenRSCrashExecutor.html | 1375 +-
...signmentManager.HangThenRSCrashExecutor.html | 1375 +-
...gnmentManager.HangThenRSRestartExecutor.html | 1375 +-
.../TestAssignmentManager.MockRSExecutor.html | 1375 +-
...ockRSProcedureDispatcher.MockRemoteCall.html | 1375 +-
...gnmentManager.MockRSProcedureDispatcher.html | 1375 +-
.../TestAssignmentManager.NoopRsExecutor.html | 1375 +-
.../TestAssignmentManager.RandRsExecutor.html | 1375 +-
...ntManager.ServerNotYetRunningRsExecutor.html | 1375 +-
...signmentManager.SocketTimeoutRsExecutor.html | 1375 +-
.../assignment/TestAssignmentManager.html | 1375 +-
...estingUtility.InjectAbortOnLoadListener.html | 1001 +-
.../MasterProcedureTestingUtility.html | 1001 +-
.../procedure/TestMasterProcedureEvents.html | 180 +-
.../procedure/TestServerCrashProcedure.html | 104 +-
.../ProcedureTestingUtility.LoadCounter.html | 908 +-
.../ProcedureTestingUtility.NoopProcedure.html | 908 +-
.../ProcedureTestingUtility.TestProcedure.html | 908 +-
.../procedure2/ProcedureTestingUtility.html | 908 +-
.../TestChildProcedures.TestChildProcedure.html | 4 +-
.../TestChildProcedures.TestProcEnv.html | 4 +-
.../TestChildProcedures.TestRootProcedure.html | 4 +-
.../hbase/procedure2/TestChildProcedures.html | 4 +-
.../TestProcedureEvents.TestProcEnv.html | 4 +-
...ocedureEvents.TestTimeoutEventProcedure.html | 4 +-
.../hbase/procedure2/TestProcedureEvents.html | 4 +-
...stProcedureExecution.TestFaultyRollback.html | 4 +-
...ocedureExecution.TestProcedureException.html | 4 +-
...cedureExecution.TestSequentialProcedure.html | 4 +-
...tion.TestWaitingProcedure.TestWaitChild.html | 4 +-
...ProcedureExecution.TestWaitingProcedure.html | 4 +-
.../procedure2/TestProcedureExecution.html | 4 +-
...TestProcedureExecutor.BusyWaitProcedure.html | 335 +-
.../TestProcedureExecutor.TestProcEnv.html | 335 +-
.../hbase/procedure2/TestProcedureExecutor.html | 335 +-
...stProcedureInMemoryChore.TestLatchChore.html | 127 +-
.../TestProcedureInMemoryChore.TestProcEnv.html | 127 +-
.../procedure2/TestProcedureInMemoryChore.html | 127 +-
.../TestProcedureMetrics.ProcedureMetrics.html | 2 +-
.../TestProcedureMetrics.TestProcEnv.html | 2 +-
.../hbase/procedure2/TestProcedureMetrics.html | 2 +-
.../TestProcedureNonce.TestProcEnv.html | 4 +-
...tProcedureNonce.TestSingleStepProcedure.html | 4 +-
.../hbase/procedure2/TestProcedureNonce.html | 4 +-
...ProcedureRecovery.BaseTestStepProcedure.html | 4 +-
...y.TestMultiStepProcedure.Step1Procedure.html | 4 +-
...y.TestMultiStepProcedure.Step2Procedure.html | 4 +-
...rocedureRecovery.TestMultiStepProcedure.html | 4 +-
.../TestProcedureRecovery.TestProcEnv.html | 4 +-
...ocedureRecovery.TestSingleStepProcedure.html | 4 +-
...ecovery.TestStateMachineProcedure.State.html | 4 +-
...edureRecovery.TestStateMachineProcedure.html | 4 +-
.../hbase/procedure2/TestProcedureRecovery.html | 4 +-
.../TestProcedureReplayOrder.TestProcedure.html | 6 +-
...stProcedureReplayOrder.TestProcedureEnv.html | 6 +-
...dureReplayOrder.TestSingleStepProcedure.html | 6 +-
...ocedureReplayOrder.TestTwoStepProcedure.html | 6 +-
.../procedure2/TestProcedureReplayOrder.html | 6 +-
...estProcedureSuspended.TestLockProcedure.html | 4 +-
.../TestProcedureSuspended.TestProcEnv.html | 4 +-
.../procedure2/TestProcedureSuspended.html | 4 +-
...teMachineProcedure.SimpleChildProcedure.html | 4 +-
.../TestStateMachineProcedure.TestProcEnv.html | 4 +-
...stStateMachineProcedure.TestSMProcedure.html | 4 +-
...teMachineProcedure.TestSMProcedureState.html | 4 +-
.../procedure2/TestStateMachineProcedure.html | 4 +-
.../TestYieldProcedures.TestProcEnv.html | 6 +-
.../TestYieldProcedures.TestScheduler.html | 6 +-
...TestStateMachineProcedure.ExecutionInfo.html | 6 +-
...cedures.TestStateMachineProcedure.State.html | 6 +-
...eldProcedures.TestStateMachineProcedure.html | 6 +-
.../TestYieldProcedures.TestYieldProcedure.html | 6 +-
.../hbase/procedure2/TestYieldProcedures.html | 6 +-
335 files changed, 122276 insertions(+), 95357 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/acid-semantics.html
----------------------------------------------------------------------
diff --git a/acid-semantics.html b/acid-semantics.html
index 034fc0e..68353b0 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="20180619" />
+ <meta name="Date-Revision-yyyymmdd" content="20180620" />
<meta http-equiv="Content-Language" content="en" />
<title>Apache HBase –
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-06-19</li>
+ <li id="publishDate" class="pull-right">Last Published: 2018-06-20</li>
</p>
</div>
[48/51] [partial] hbase-site git commit: Published site at
9101fc246f86445006bfbcdfda5cc495016dc280.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/bulk-loads.html
----------------------------------------------------------------------
diff --git a/bulk-loads.html b/bulk-loads.html
index 97aea59..22f2b07 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="20180619" />
+ <meta name="Date-Revision-yyyymmdd" content="20180620" />
<meta http-equiv="Content-Language" content="en" />
<title>Apache HBase –
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-06-19</li>
+ <li id="publishDate" class="pull-right">Last Published: 2018-06-20</li>
</p>
</div>
[28/51] [partial] hbase-site git commit: Published site at
9101fc246f86445006bfbcdfda5cc495016dc280.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/MetaProcedureInterface.MetaOperationType.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/MetaProcedureInterface.MetaOperationType.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/MetaProcedureInterface.MetaOperationType.html
index 5a3436e..c92c4de 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/MetaProcedureInterface.MetaOperationType.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/MetaProcedureInterface.MetaOperationType.html
@@ -104,7 +104,9 @@
<tbody>
<tr class="altColor">
<td class="colFirst"><code>default <a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MetaProcedureInterface.MetaOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure">MetaProcedureInterface.MetaOperationType</a></code></td>
-<td class="colLast"><span class="typeNameLabel">MetaProcedureInterface.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MetaProcedureInterface.html#getMetaOperationType--">getMetaOperationType</a></span>()</code> </td>
+<td class="colLast"><span class="typeNameLabel">MetaProcedureInterface.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MetaProcedureInterface.html#getMetaOperationType--">getMetaOperationType</a></span>()</code>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
+ </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MetaProcedureInterface.MetaOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure">MetaProcedureInterface.MetaOperationType</a></code></td>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/MetaProcedureInterface.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/MetaProcedureInterface.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/MetaProcedureInterface.html
index 24b9582..48646fa 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/MetaProcedureInterface.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/MetaProcedureInterface.html
@@ -105,8 +105,11 @@
<tr class="altColor">
<td class="colFirst"><code>class </code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RecoverMetaProcedure</a></span></code>
-<div class="block">This procedure recovers meta from prior shutdown/ crash of a server, and brings meta online by
- assigning meta region/s.</div>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span>
+<div class="block"><span class="deprecationComment">Do not use any more, leave it here only for compatible. The recovery work will be
+ done in <a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>ServerCrashProcedure</code></a> directly, and the initial work for meta table
+ will be done by <a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>InitMetaProcedure</code></a>.</span></div>
+</div>
</td>
</tr>
</tbody>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/ProcedurePrepareLatch.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/ProcedurePrepareLatch.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/ProcedurePrepareLatch.html
index fa154b7..a274fa7 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/ProcedurePrepareLatch.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/ProcedurePrepareLatch.html
@@ -185,7 +185,9 @@
<tbody>
<tr class="altColor">
<td class="colFirst"><code>private <a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/ProcedurePrepareLatch.html" title="class in org.apache.hadoop.hbase.master.procedure">ProcedurePrepareLatch</a></code></td>
-<td class="colLast"><span class="typeNameLabel">RecoverMetaProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#syncLatch">syncLatch</a></span></code> </td>
+<td class="colLast"><span class="typeNameLabel">RecoverMetaProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#syncLatch">syncLatch</a></span></code>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
+ </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private <a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/ProcedurePrepareLatch.html" title="class in org.apache.hadoop.hbase.master.procedure">ProcedurePrepareLatch</a></code></td>
@@ -310,6 +312,7 @@
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#RecoverMetaProcedure-org.apache.hadoop.hbase.ServerName-boolean-org.apache.hadoop.hbase.master.procedure.ProcedurePrepareLatch-">RecoverMetaProcedure</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> failedMetaServer,
boolean shouldSplitLog,
<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/ProcedurePrepareLatch.html" title="class in org.apache.hadoop.hbase.master.procedure">ProcedurePrepareLatch</a> latch)</code>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
<div class="block">Constructor with latch, for blocking/ sync usage</div>
</td>
</tr>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/Queue.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/Queue.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/Queue.html
index 845f0ed..adc6405 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/Queue.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/Queue.html
@@ -104,7 +104,12 @@
<tbody>
<tr class="altColor">
<td class="colFirst"><code>(package private) class </code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MetaQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">MetaQueue</a></span></code> </td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MetaQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">MetaQueue</a></span></code>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span>
+<div class="block"><span class="deprecationComment">only used for <a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>RecoverMetaProcedure</code></a>. Should be removed along with
+ <a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>RecoverMetaProcedure</code></a>.</span></div>
+</div>
+</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>(package private) class </code></td>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/TableProcedureInterface.TableOperationType.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/TableProcedureInterface.TableOperationType.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/TableProcedureInterface.TableOperationType.html
index 07630ad..0c685e9 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/TableProcedureInterface.TableOperationType.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/TableProcedureInterface.TableOperationType.html
@@ -243,19 +243,23 @@
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.TableOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure">TableProcedureInterface.TableOperationType</a></code></td>
-<td class="colLast"><span class="typeNameLabel">ReopenTableRegionsProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/ReopenTableRegionsProcedure.html#getTableOperationType--">getTableOperationType</a></span>()</code> </td>
+<td class="colLast"><span class="typeNameLabel">InitMetaProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html#getTableOperationType--">getTableOperationType</a></span>()</code> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.TableOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure">TableProcedureInterface.TableOperationType</a></code></td>
-<td class="colLast"><span class="typeNameLabel">DeleteNamespaceProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/DeleteNamespaceProcedure.html#getTableOperationType--">getTableOperationType</a></span>()</code> </td>
+<td class="colLast"><span class="typeNameLabel">ReopenTableRegionsProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/ReopenTableRegionsProcedure.html#getTableOperationType--">getTableOperationType</a></span>()</code> </td>
</tr>
<tr class="altColor">
+<td class="colFirst"><code><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.TableOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure">TableProcedureInterface.TableOperationType</a></code></td>
+<td class="colLast"><span class="typeNameLabel">DeleteNamespaceProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/DeleteNamespaceProcedure.html#getTableOperationType--">getTableOperationType</a></span>()</code> </td>
+</tr>
+<tr class="rowColor">
<td class="colFirst"><code>static <a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.TableOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure">TableProcedureInterface.TableOperationType</a></code></td>
<td class="colLast"><span class="typeNameLabel">TableProcedureInterface.TableOperationType.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.TableOperationType.html#valueOf-java.lang.String-">valueOf</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> name)</code>
<div class="block">Returns the enum constant of this type with the specified name.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>static <a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.TableOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure">TableProcedureInterface.TableOperationType</a>[]</code></td>
<td class="colLast"><span class="typeNameLabel">TableProcedureInterface.TableOperationType.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.TableOperationType.html#values--">values</a></span>()</code>
<div class="block">Returns an array containing the constants of this enum type, in
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/TableProcedureInterface.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/TableProcedureInterface.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/TableProcedureInterface.html
index 50e02a3..4fbd7a8 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/TableProcedureInterface.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/TableProcedureInterface.html
@@ -245,25 +245,31 @@
</tr>
<tr class="altColor">
<td class="colFirst"><code>class </code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">InitMetaProcedure</a></span></code>
+<div class="block">This procedure is used to initialize meta table for a new hbase deploy.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>class </code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/ModifyNamespaceProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ModifyNamespaceProcedure</a></span></code>
<div class="block">The procedure to add a namespace to an existing table.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>class </code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ModifyTableProcedure</a></span></code> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>class </code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/ReopenTableRegionsProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ReopenTableRegionsProcedure</a></span></code>
<div class="block">Used for non table procedures to reopen the regions for a table.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>class </code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RestoreSnapshotProcedure</a></span></code> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>class </code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/TruncateTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">TruncateTableProcedure</a></span></code> </td>
</tr>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/master/procedure/package-frame.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/package-frame.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/package-frame.html
index ea61bd1..b04b6b6 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/package-frame.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/package-frame.html
@@ -34,6 +34,7 @@
<li><a href="DisableTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure" target="classFrame">DisableTableProcedure</a></li>
<li><a href="EnableTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure" target="classFrame">EnableTableProcedure</a></li>
<li><a href="FairQueue.html" title="class in org.apache.hadoop.hbase.master.procedure" target="classFrame">FairQueue</a></li>
+<li><a href="InitMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure" target="classFrame">InitMetaProcedure</a></li>
<li><a href="MasterDDLOperationHelper.html" title="class in org.apache.hadoop.hbase.master.procedure" target="classFrame">MasterDDLOperationHelper</a></li>
<li><a href="MasterProcedureConstants.html" title="class in org.apache.hadoop.hbase.master.procedure" target="classFrame">MasterProcedureConstants</a></li>
<li><a href="MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure" target="classFrame">MasterProcedureEnv</a></li>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/master/procedure/package-summary.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/package-summary.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/package-summary.html
index d7ed6b0..0c93571 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/package-summary.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/package-summary.html
@@ -88,7 +88,9 @@
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MetaProcedureInterface.html" title="interface in org.apache.hadoop.hbase.master.procedure">MetaProcedureInterface</a></td>
-<td class="colLast"> </td>
+<td class="colLast">Deprecated
+<div class="block"><span class="deprecationComment">only used for <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>RecoverMetaProcedure</code></a>.</span></div>
+</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/PeerProcedureInterface.html" title="interface in org.apache.hadoop.hbase.master.procedure">PeerProcedureInterface</a></td>
@@ -180,156 +182,163 @@
<td class="colLast"> </td>
</tr>
<tr class="rowColor">
+<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">InitMetaProcedure</a></td>
+<td class="colLast">
+<div class="block">This procedure is used to initialize meta table for a new hbase deploy.</div>
+</td>
+</tr>
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterDDLOperationHelper.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterDDLOperationHelper</a></td>
<td class="colLast">
<div class="block">Helper class for schema change procedures</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureConstants.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureConstants</a></td>
<td class="colLast"> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a></td>
<td class="colLast"> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.MasterProcedureStoreListener.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv.MasterProcedureStoreListener</a></td>
<td class="colLast"> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.WALStoreLeaseRecovery.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv.WALStoreLeaseRecovery</a></td>
<td class="colLast"> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureScheduler</a></td>
<td class="colLast">
<div class="block">ProcedureScheduler for the Master Procedures.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureUtil.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureUtil</a></td>
<td class="colLast"> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureUtil.NonceProcedureRunnable.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureUtil.NonceProcedureRunnable</a></td>
<td class="colLast">
<div class="block">Helper Runnable used in conjunction with submitProcedure() to deal with
submitting procs with nonce.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MetaQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">MetaQueue</a></td>
-<td class="colLast"> </td>
+<td class="colLast">Deprecated
+<div class="block"><span class="deprecationComment">only used for <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>RecoverMetaProcedure</code></a>.</span></div>
+</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ModifyNamespaceProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ModifyNamespaceProcedure</a></td>
<td class="colLast">
<div class="block">The procedure to add a namespace to an existing table.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ModifyTableProcedure</a></td>
<td class="colLast"> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/PeerQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">PeerQueue</a></td>
<td class="colLast"> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ProcedureDescriber.html" title="class in org.apache.hadoop.hbase.master.procedure">ProcedureDescriber</a></td>
<td class="colLast"> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ProcedurePrepareLatch.html" title="class in org.apache.hadoop.hbase.master.procedure">ProcedurePrepareLatch</a></td>
<td class="colLast">
<div class="block">Latch used by the Master to have the prepare() sync behaviour for old
clients, that can only get exceptions in a synchronous way.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ProcedurePrepareLatch.CompatibilityLatch.html" title="class in org.apache.hadoop.hbase.master.procedure">ProcedurePrepareLatch.CompatibilityLatch</a></td>
<td class="colLast"> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ProcedurePrepareLatch.NoopLatch.html" title="class in org.apache.hadoop.hbase.master.procedure">ProcedurePrepareLatch.NoopLatch</a></td>
<td class="colLast"> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ProcedureSyncWait.html" title="class in org.apache.hadoop.hbase.master.procedure">ProcedureSyncWait</a></td>
<td class="colLast">
<div class="block">Helper to synchronously wait on conditions.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ProcedureSyncWait.ProcedureFuture.html" title="class in org.apache.hadoop.hbase.master.procedure">ProcedureSyncWait.ProcedureFuture</a></td>
<td class="colLast"> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Queue.html" title="class in org.apache.hadoop.hbase.master.procedure">Queue</a><TKey extends <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><TKey>></td>
<td class="colLast"> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RecoverMetaProcedure</a></td>
-<td class="colLast">
-<div class="block">This procedure recovers meta from prior shutdown/ crash of a server, and brings meta online by
- assigning meta region/s.</div>
+<td class="colLast">Deprecated
+<div class="block"><span class="deprecationComment">Do not use any more, leave it here only for compatible.</span></div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ReopenTableRegionsProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ReopenTableRegionsProcedure</a></td>
<td class="colLast">
<div class="block">Used for non table procedures to reopen the regions for a table.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RestoreSnapshotProcedure</a></td>
<td class="colLast"> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.html" title="class in org.apache.hadoop.hbase.master.procedure">RSProcedureDispatcher</a></td>
<td class="colLast">
<div class="block">A remote procecdure dispatcher for regionservers.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.RegionCloseOperation.html" title="class in org.apache.hadoop.hbase.master.procedure">RSProcedureDispatcher.RegionCloseOperation</a></td>
<td class="colLast"> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.RegionOpenOperation.html" title="class in org.apache.hadoop.hbase.master.procedure">RSProcedureDispatcher.RegionOpenOperation</a></td>
<td class="colLast"> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.RegionOperation.html" title="class in org.apache.hadoop.hbase.master.procedure">RSProcedureDispatcher.RegionOperation</a></td>
<td class="colLast"> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.ServerOperation.html" title="class in org.apache.hadoop.hbase.master.procedure">RSProcedureDispatcher.ServerOperation</a></td>
<td class="colLast"> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/SchemaLocking.html" title="class in org.apache.hadoop.hbase.master.procedure">SchemaLocking</a></td>
<td class="colLast">
<div class="block">
Locks on namespaces, tables, and regions.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ServerCrashProcedure</a></td>
<td class="colLast">
<div class="block">Handle crashed server.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">ServerQueue</a></td>
<td class="colLast"> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">TableQueue</a></td>
<td class="colLast"> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TruncateTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">TruncateTableProcedure</a></td>
<td class="colLast"> </td>
</tr>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/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 84e6824..569f158 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html
@@ -129,6 +129,7 @@
<li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/DeleteTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">DeleteTableProcedure</span></a></li>
<li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/DisableTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">DisableTableProcedure</span></a></li>
<li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/EnableTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">EnableTableProcedure</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">InitMetaProcedure</span></a></li>
<li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">ModifyTableProcedure</span></a></li>
<li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ReopenTableRegionsProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">ReopenTableRegionsProcedure</span></a></li>
<li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">RestoreSnapshotProcedure</span></a></li>
@@ -215,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><E> (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><T>, 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/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/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/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>
</ul>
</li>
</ul>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/master/procedure/package-use.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/package-use.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/package-use.html
index a8a4562..6048bbd 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/package-use.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/package-use.html
@@ -227,13 +227,25 @@
</td>
</tr>
<tr class="rowColor">
-<td class="colOne"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/class-use/MetaProcedureInterface.html#org.apache.hadoop.hbase.master.procedure">MetaProcedureInterface</a> </td>
+<td class="colOne"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/class-use/MetaProcedureInterface.html#org.apache.hadoop.hbase.master.procedure">MetaProcedureInterface</a>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span>
+<div class="block"><span class="deprecationComment">only used for <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>RecoverMetaProcedure</code></a>. Should be removed along with
+ <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>RecoverMetaProcedure</code></a>.</span></div>
+</div>
+</td>
</tr>
<tr class="altColor">
-<td class="colOne"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/class-use/MetaProcedureInterface.MetaOperationType.html#org.apache.hadoop.hbase.master.procedure">MetaProcedureInterface.MetaOperationType</a> </td>
+<td class="colOne"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/class-use/MetaProcedureInterface.MetaOperationType.html#org.apache.hadoop.hbase.master.procedure">MetaProcedureInterface.MetaOperationType</a>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
+ </td>
</tr>
<tr class="rowColor">
-<td class="colOne"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/class-use/MetaQueue.html#org.apache.hadoop.hbase.master.procedure">MetaQueue</a> </td>
+<td class="colOne"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/class-use/MetaQueue.html#org.apache.hadoop.hbase.master.procedure">MetaQueue</a>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span>
+<div class="block"><span class="deprecationComment">only used for <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>RecoverMetaProcedure</code></a>. Should be removed along with
+ <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>RecoverMetaProcedure</code></a>.</span></div>
+</div>
+</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/class-use/PeerProcedureInterface.html#org.apache.hadoop.hbase.master.procedure">PeerProcedureInterface</a> </td>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/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 0c86214..f9cbc02 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><E> (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><T>, 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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/CellBuilderType.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">CellBuilderType</span></a></li>
</ul>
</li>
</ul>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/package-use.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/package-use.html b/devapidocs/org/apache/hadoop/hbase/package-use.html
index 48fd327..81b9b88 100644
--- a/devapidocs/org/apache/hadoop/hbase/package-use.html
+++ b/devapidocs/org/apache/hadoop/hbase/package-use.html
@@ -2142,21 +2142,16 @@ service.</div>
</td>
</tr>
<tr class="altColor">
-<td class="colOne"><a href="../../../../org/apache/hadoop/hbase/class-use/RegionStateListener.html#org.apache.hadoop.hbase.master.assignment">RegionStateListener</a>
-<div class="block">The listener interface for receiving region state events.</div>
-</td>
-</tr>
-<tr class="rowColor">
<td class="colOne"><a href="../../../../org/apache/hadoop/hbase/class-use/ServerName.html#org.apache.hadoop.hbase.master.assignment">ServerName</a>
<div class="block">Name of a particular incarnation of an HBase Server.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colOne"><a href="../../../../org/apache/hadoop/hbase/class-use/TableName.html#org.apache.hadoop.hbase.master.assignment">TableName</a>
<div class="block">Immutable POJO class for representing a table name.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colOne"><a href="../../../../org/apache/hadoop/hbase/class-use/YouAreDeadException.html#org.apache.hadoop.hbase.master.assignment">YouAreDeadException</a>
<div class="block">This exception is thrown by the master when a region server reports and is
already being processed as dead.</div>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.FailedProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.FailedProcedure.html b/devapidocs/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.FailedProcedure.html
index a650fb6..6de3d4c 100644
--- a/devapidocs/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.FailedProcedure.html
+++ b/devapidocs/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.FailedProcedure.html
@@ -122,7 +122,7 @@ var activeTableTab = "activeTableTab";
</dl>
<hr>
<br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.767">ProcedureExecutor.FailedProcedure</a><TEnvironment>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.771">ProcedureExecutor.FailedProcedure</a><TEnvironment>
extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><TEnvironment></pre>
</li>
</ul>
@@ -279,7 +279,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.htm
<ul class="blockListLast">
<li class="blockList">
<h4>procName</h4>
-<pre>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> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.FailedProcedure.html#line.768">procName</a></pre>
+<pre>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> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.FailedProcedure.html#line.772">procName</a></pre>
</li>
</ul>
</li>
@@ -296,7 +296,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.htm
<ul class="blockList">
<li class="blockList">
<h4>FailedProcedure</h4>
-<pre>public <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.FailedProcedure.html#line.770">FailedProcedure</a>()</pre>
+<pre>public <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.FailedProcedure.html#line.774">FailedProcedure</a>()</pre>
</li>
</ul>
<a name="FailedProcedure-long-java.lang.String-org.apache.hadoop.hbase.security.User-org.apache.hadoop.hbase.util.NonceKey-java.io.IOException-">
@@ -305,7 +305,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.htm
<ul class="blockListLast">
<li class="blockList">
<h4>FailedProcedure</h4>
-<pre>public <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.FailedProcedure.html#line.773">FailedProcedure</a>(long procId,
+<pre>public <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.FailedProcedure.html#line.777">FailedProcedure</a>(long procId,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> procName,
<a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a> owner,
<a href="../../../../../org/apache/hadoop/hbase/util/NonceKey.html" title="class in org.apache.hadoop.hbase.util">NonceKey</a> nonceKey,
@@ -326,7 +326,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.htm
<ul class="blockList">
<li class="blockList">
<h4>getProcName</h4>
-<pre>public <a href="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/procedure2/ProcedureExecutor.FailedProcedure.html#line.787">getProcName</a>()</pre>
+<pre>public <a href="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/procedure2/ProcedureExecutor.FailedProcedure.html#line.791">getProcName</a>()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getProcName--">getProcName</a></code> in class <code><a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><<a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.FailedProcedure.html" title="type parameter in ProcedureExecutor.FailedProcedure">TEnvironment</a>></code></dd>
@@ -341,7 +341,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.htm
<ul class="blockList">
<li class="blockList">
<h4>execute</h4>
-<pre>protected <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><<a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.FailedProcedure.html" title="type parameter in ProcedureExecutor.FailedProcedure">TEnvironment</a>>[] <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.FailedProcedure.html#line.792">execute</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.FailedProcedure.html" title="type parameter in ProcedureExecutor.FailedProcedure">TEnvironment</a> env)
+<pre>protected <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><<a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.FailedProcedure.html" title="type parameter in ProcedureExecutor.FailedProcedure">TEnvironment</a>>[] <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.FailedProcedure.html#line.796">execute</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.FailedProcedure.html" title="type parameter in ProcedureExecutor.FailedProcedure">TEnvironment</a> env)
throws <a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureYieldException.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureYieldException</a>,
<a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureSuspendedException.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureSuspendedException</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>
@@ -373,7 +373,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.htm
<ul class="blockList">
<li class="blockList">
<h4>rollback</h4>
-<pre>protected void <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.FailedProcedure.html#line.799">rollback</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.FailedProcedure.html" title="type parameter in ProcedureExecutor.FailedProcedure">TEnvironment</a> env)
+<pre>protected void <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.FailedProcedure.html#line.803">rollback</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.FailedProcedure.html" title="type parameter in ProcedureExecutor.FailedProcedure">TEnvironment</a> env)
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"><span class="descfrmTypeLabel">Description copied from class: <code><a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#rollback-TEnvironment-">Procedure</a></code></span></div>
@@ -402,7 +402,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.htm
<ul class="blockList">
<li class="blockList">
<h4>abort</h4>
-<pre>protected boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.FailedProcedure.html#line.805">abort</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.FailedProcedure.html" title="type parameter in ProcedureExecutor.FailedProcedure">TEnvironment</a> env)</pre>
+<pre>protected boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.FailedProcedure.html#line.809">abort</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.FailedProcedure.html" title="type parameter in ProcedureExecutor.FailedProcedure">TEnvironment</a> env)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class: <code><a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#abort-TEnvironment-">Procedure</a></code></span></div>
<div class="block">The abort() call is asynchronous and each procedure must decide how to deal
with it, if they want to be abortable. The simplest implementation
@@ -425,7 +425,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.htm
<ul class="blockList">
<li class="blockList">
<h4>serializeStateData</h4>
-<pre>protected void <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.FailedProcedure.html#line.810">serializeStateData</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a> serializer)
+<pre>protected void <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.FailedProcedure.html#line.814">serializeStateData</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a> serializer)
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: <code><a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#serializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">Procedure</a></code></span></div>
<div class="block">The user-level code of the procedure may have some state to
@@ -447,7 +447,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.htm
<ul class="blockListLast">
<li class="blockList">
<h4>deserializeStateData</h4>
-<pre>protected void <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.FailedProcedure.html#line.815">deserializeStateData</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a> serializer)
+<pre>protected void <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.FailedProcedure.html#line.819">deserializeStateData</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a> serializer)
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: <code><a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#deserializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">Procedure</a></code></span></div>
<div class="block">Called on store load to allow the user to decode the previously serialized
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.KeepAliveWorkerThread.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.KeepAliveWorkerThread.html b/devapidocs/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.KeepAliveWorkerThread.html
index 986b859..fcbed9f 100644
--- a/devapidocs/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.KeepAliveWorkerThread.html
+++ b/devapidocs/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.KeepAliveWorkerThread.html
@@ -132,7 +132,7 @@ var activeTableTab = "activeTableTab";
</dl>
<hr>
<br>
-<pre>private final class <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.1803">ProcedureExecutor.KeepAliveWorkerThread</a>
+<pre>private final class <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.1804">ProcedureExecutor.KeepAliveWorkerThread</a>
extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.WorkerThread.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureExecutor.WorkerThread</a></pre>
</li>
</ul>
@@ -252,7 +252,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExec
<ul class="blockListLast">
<li class="blockList">
<h4>KeepAliveWorkerThread</h4>
-<pre>public <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.KeepAliveWorkerThread.html#line.1805">KeepAliveWorkerThread</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ThreadGroup.html?is-external=true" title="class or interface in java.lang">ThreadGroup</a> group)</pre>
+<pre>public <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.KeepAliveWorkerThread.html#line.1806">KeepAliveWorkerThread</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ThreadGroup.html?is-external=true" title="class or interface in java.lang">ThreadGroup</a> group)</pre>
</li>
</ul>
</li>
@@ -269,7 +269,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExec
<ul class="blockListLast">
<li class="blockList">
<h4>keepAlive</h4>
-<pre>protected boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.KeepAliveWorkerThread.html#line.1810">keepAlive</a>(long lastUpdate)</pre>
+<pre>protected boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.KeepAliveWorkerThread.html#line.1811">keepAlive</a>(long lastUpdate)</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.WorkerThread.html#keepAlive-long-">keepAlive</a></code> in class <code><a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.WorkerThread.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureExecutor.WorkerThread</a></code></dd>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.WorkerMonitor.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.WorkerMonitor.html b/devapidocs/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.WorkerMonitor.html
index 48bf552..ca2c042 100644
--- a/devapidocs/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.WorkerMonitor.html
+++ b/devapidocs/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.WorkerMonitor.html
@@ -127,7 +127,7 @@ var activeTableTab = "activeTableTab";
</dl>
<hr>
<br>
-<pre>private final class <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.1823">ProcedureExecutor.WorkerMonitor</a>
+<pre>private final class <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.1824">ProcedureExecutor.WorkerMonitor</a>
extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/InlineChore.html" title="class in org.apache.hadoop.hbase.procedure2">InlineChore</a></pre>
</li>
</ul>
@@ -277,7 +277,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/InlineChore.h
<ul class="blockList">
<li class="blockList">
<h4>WORKER_MONITOR_INTERVAL_CONF_KEY</h4>
-<pre>public static final <a href="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/procedure2/ProcedureExecutor.WorkerMonitor.html#line.1824">WORKER_MONITOR_INTERVAL_CONF_KEY</a></pre>
+<pre>public static final <a href="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/procedure2/ProcedureExecutor.WorkerMonitor.html#line.1825">WORKER_MONITOR_INTERVAL_CONF_KEY</a></pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.procedure2.ProcedureExecutor.WorkerMonitor.WORKER_MONITOR_INTERVAL_CONF_KEY">Constant Field Values</a></dd>
@@ -290,7 +290,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/InlineChore.h
<ul class="blockList">
<li class="blockList">
<h4>DEFAULT_WORKER_MONITOR_INTERVAL</h4>
-<pre>private static final int <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.WorkerMonitor.html#line.1826">DEFAULT_WORKER_MONITOR_INTERVAL</a></pre>
+<pre>private static final int <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.WorkerMonitor.html#line.1827">DEFAULT_WORKER_MONITOR_INTERVAL</a></pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.procedure2.ProcedureExecutor.WorkerMonitor.DEFAULT_WORKER_MONITOR_INTERVAL">Constant Field Values</a></dd>
@@ -303,7 +303,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/InlineChore.h
<ul class="blockList">
<li class="blockList">
<h4>WORKER_STUCK_THRESHOLD_CONF_KEY</h4>
-<pre>public static final <a href="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/procedure2/ProcedureExecutor.WorkerMonitor.html#line.1828">WORKER_STUCK_THRESHOLD_CONF_KEY</a></pre>
+<pre>public static final <a href="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/procedure2/ProcedureExecutor.WorkerMonitor.html#line.1829">WORKER_STUCK_THRESHOLD_CONF_KEY</a></pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.procedure2.ProcedureExecutor.WorkerMonitor.WORKER_STUCK_THRESHOLD_CONF_KEY">Constant Field Values</a></dd>
@@ -316,7 +316,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/InlineChore.h
<ul class="blockList">
<li class="blockList">
<h4>DEFAULT_WORKER_STUCK_THRESHOLD</h4>
-<pre>private static final int <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.WorkerMonitor.html#line.1830">DEFAULT_WORKER_STUCK_THRESHOLD</a></pre>
+<pre>private static final int <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.WorkerMonitor.html#line.1831">DEFAULT_WORKER_STUCK_THRESHOLD</a></pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.procedure2.ProcedureExecutor.WorkerMonitor.DEFAULT_WORKER_STUCK_THRESHOLD">Constant Field Values</a></dd>
@@ -329,7 +329,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/InlineChore.h
<ul class="blockList">
<li class="blockList">
<h4>WORKER_ADD_STUCK_PERCENTAGE_CONF_KEY</h4>
-<pre>public static final <a href="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/procedure2/ProcedureExecutor.WorkerMonitor.html#line.1832">WORKER_ADD_STUCK_PERCENTAGE_CONF_KEY</a></pre>
+<pre>public static final <a href="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/procedure2/ProcedureExecutor.WorkerMonitor.html#line.1833">WORKER_ADD_STUCK_PERCENTAGE_CONF_KEY</a></pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.procedure2.ProcedureExecutor.WorkerMonitor.WORKER_ADD_STUCK_PERCENTAGE_CONF_KEY">Constant Field Values</a></dd>
@@ -342,7 +342,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/InlineChore.h
<ul class="blockList">
<li class="blockList">
<h4>DEFAULT_WORKER_ADD_STUCK_PERCENTAGE</h4>
-<pre>private static final float <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.WorkerMonitor.html#line.1834">DEFAULT_WORKER_ADD_STUCK_PERCENTAGE</a></pre>
+<pre>private static final float <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.WorkerMonitor.html#line.1835">DEFAULT_WORKER_ADD_STUCK_PERCENTAGE</a></pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.procedure2.ProcedureExecutor.WorkerMonitor.DEFAULT_WORKER_ADD_STUCK_PERCENTAGE">Constant Field Values</a></dd>
@@ -355,7 +355,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/InlineChore.h
<ul class="blockList">
<li class="blockList">
<h4>addWorkerStuckPercentage</h4>
-<pre>private float <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.WorkerMonitor.html#line.1836">addWorkerStuckPercentage</a></pre>
+<pre>private float <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.WorkerMonitor.html#line.1837">addWorkerStuckPercentage</a></pre>
</li>
</ul>
<a name="timeoutInterval">
@@ -364,7 +364,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/InlineChore.h
<ul class="blockList">
<li class="blockList">
<h4>timeoutInterval</h4>
-<pre>private int <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.WorkerMonitor.html#line.1837">timeoutInterval</a></pre>
+<pre>private int <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.WorkerMonitor.html#line.1838">timeoutInterval</a></pre>
</li>
</ul>
<a name="stuckThreshold">
@@ -373,7 +373,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/InlineChore.h
<ul class="blockListLast">
<li class="blockList">
<h4>stuckThreshold</h4>
-<pre>private int <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.WorkerMonitor.html#line.1838">stuckThreshold</a></pre>
+<pre>private int <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.WorkerMonitor.html#line.1839">stuckThreshold</a></pre>
</li>
</ul>
</li>
@@ -390,7 +390,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/InlineChore.h
<ul class="blockListLast">
<li class="blockList">
<h4>WorkerMonitor</h4>
-<pre>public <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.WorkerMonitor.html#line.1840">WorkerMonitor</a>()</pre>
+<pre>public <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.WorkerMonitor.html#line.1841">WorkerMonitor</a>()</pre>
</li>
</ul>
</li>
@@ -407,7 +407,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/InlineChore.h
<ul class="blockList">
<li class="blockList">
<h4>run</h4>
-<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.WorkerMonitor.html#line.1845">run</a>()</pre>
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.WorkerMonitor.html#line.1846">run</a>()</pre>
</li>
</ul>
<a name="checkForStuckWorkers--">
@@ -416,7 +416,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/InlineChore.h
<ul class="blockList">
<li class="blockList">
<h4>checkForStuckWorkers</h4>
-<pre>private int <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.WorkerMonitor.html#line.1853">checkForStuckWorkers</a>()</pre>
+<pre>private int <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.WorkerMonitor.html#line.1854">checkForStuckWorkers</a>()</pre>
</li>
</ul>
<a name="checkThreadCount-int-">
@@ -425,7 +425,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/InlineChore.h
<ul class="blockList">
<li class="blockList">
<h4>checkThreadCount</h4>
-<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.WorkerMonitor.html#line.1869">checkThreadCount</a>(int stuckCount)</pre>
+<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.WorkerMonitor.html#line.1870">checkThreadCount</a>(int stuckCount)</pre>
</li>
</ul>
<a name="refreshConfig--">
@@ -434,7 +434,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/InlineChore.h
<ul class="blockList">
<li class="blockList">
<h4>refreshConfig</h4>
-<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.WorkerMonitor.html#line.1888">refreshConfig</a>()</pre>
+<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.WorkerMonitor.html#line.1889">refreshConfig</a>()</pre>
</li>
</ul>
<a name="getTimeoutInterval--">
@@ -443,7 +443,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/InlineChore.h
<ul class="blockListLast">
<li class="blockList">
<h4>getTimeoutInterval</h4>
-<pre>public int <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.WorkerMonitor.html#line.1898">getTimeoutInterval</a>()</pre>
+<pre>public int <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.WorkerMonitor.html#line.1899">getTimeoutInterval</a>()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/hadoop/hbase/procedure2/InlineChore.html#getTimeoutInterval--">getTimeoutInterval</a></code> in class <code><a href="../../../../../org/apache/hadoop/hbase/procedure2/InlineChore.html" title="class in org.apache.hadoop.hbase.procedure2">InlineChore</a></code></dd>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.WorkerThread.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.WorkerThread.html b/devapidocs/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.WorkerThread.html
index 39523e3..2ea52aa 100644
--- a/devapidocs/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.WorkerThread.html
+++ b/devapidocs/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.WorkerThread.html
@@ -131,7 +131,7 @@ var activeTableTab = "activeTableTab";
</dl>
<hr>
<br>
-<pre>private class <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.1726">ProcedureExecutor.WorkerThread</a>
+<pre>private class <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.1727">ProcedureExecutor.WorkerThread</a>
extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/StoppableThread.html" title="class in org.apache.hadoop.hbase.procedure2">StoppableThread</a></pre>
</li>
</ul>
@@ -282,7 +282,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/StoppableThre
<ul class="blockList">
<li class="blockList">
<h4>executionStartTime</h4>
-<pre>private final <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicLong.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicLong</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.WorkerThread.html#line.1727">executionStartTime</a></pre>
+<pre>private final <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicLong.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicLong</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.WorkerThread.html#line.1728">executionStartTime</a></pre>
</li>
</ul>
<a name="activeProcedure">
@@ -291,7 +291,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/StoppableThre
<ul class="blockListLast">
<li class="blockList">
<h4>activeProcedure</h4>
-<pre>private volatile <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.WorkerThread.html#line.1728">activeProcedure</a></pre>
+<pre>private volatile <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.WorkerThread.html#line.1729">activeProcedure</a></pre>
</li>
</ul>
</li>
@@ -308,7 +308,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/StoppableThre
<ul class="blockList">
<li class="blockList">
<h4>WorkerThread</h4>
-<pre>public <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.WorkerThread.html#line.1730">WorkerThread</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ThreadGroup.html?is-external=true" title="class or interface in java.lang">ThreadGroup</a> group)</pre>
+<pre>public <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.WorkerThread.html#line.1731">WorkerThread</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ThreadGroup.html?is-external=true" title="class or interface in java.lang">ThreadGroup</a> group)</pre>
</li>
</ul>
<a name="WorkerThread-java.lang.ThreadGroup-java.lang.String-">
@@ -317,7 +317,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/StoppableThre
<ul class="blockListLast">
<li class="blockList">
<h4>WorkerThread</h4>
-<pre>protected <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.WorkerThread.html#line.1734">WorkerThread</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ThreadGroup.html?is-external=true" title="class or interface in java.lang">ThreadGroup</a> group,
+<pre>protected <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.WorkerThread.html#line.1735">WorkerThread</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ThreadGroup.html?is-external=true" title="class or interface in java.lang">ThreadGroup</a> group,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> prefix)</pre>
</li>
</ul>
@@ -335,7 +335,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/StoppableThre
<ul class="blockList">
<li class="blockList">
<h4>sendStopSignal</h4>
-<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.WorkerThread.html#line.1740">sendStopSignal</a>()</pre>
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.WorkerThread.html#line.1741">sendStopSignal</a>()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/hadoop/hbase/procedure2/StoppableThread.html#sendStopSignal--">sendStopSignal</a></code> in class <code><a href="../../../../../org/apache/hadoop/hbase/procedure2/StoppableThread.html" title="class in org.apache.hadoop.hbase.procedure2">StoppableThread</a></code></dd>
@@ -348,7 +348,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/StoppableThre
<ul class="blockList">
<li class="blockList">
<h4>run</h4>
-<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.WorkerThread.html#line.1745">run</a>()</pre>
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.WorkerThread.html#line.1746">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> in interface <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>
@@ -363,7 +363,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/StoppableThre
<ul class="blockList">
<li class="blockList">
<h4>toString</h4>
-<pre>public <a href="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/procedure2/ProcedureExecutor.WorkerThread.html#line.1783">toString</a>()</pre>
+<pre>public <a href="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/procedure2/ProcedureExecutor.WorkerThread.html#line.1784">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/Thread.html?is-external=true#toString--" title="class or interface in java.lang">toString</a></code> in class <code><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></code></dd>
@@ -376,7 +376,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/StoppableThre
<ul class="blockList">
<li class="blockList">
<h4>getCurrentRunTime</h4>
-<pre>public long <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.WorkerThread.html#line.1791">getCurrentRunTime</a>()</pre>
+<pre>public long <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.WorkerThread.html#line.1792">getCurrentRunTime</a>()</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the time since the current procedure is running</dd>
@@ -389,7 +389,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/StoppableThre
<ul class="blockListLast">
<li class="blockList">
<h4>keepAlive</h4>
-<pre>protected boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.WorkerThread.html#line.1796">keepAlive</a>(long lastUpdate)</pre>
+<pre>protected boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.WorkerThread.html#line.1797">keepAlive</a>(long lastUpdate)</pre>
</li>
</ul>
</li>
[34/51] [partial] hbase-site git commit: Published site at
9101fc246f86445006bfbcdfda5cc495016dc280.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html
new file mode 100644
index 0000000..2f903de
--- /dev/null
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html
@@ -0,0 +1,700 @@
+<!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>InitMetaProcedure (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="InitMetaProcedure (Apache HBase 3.0.0-SNAPSHOT API)";
+ }
+ }
+ catch(err) {
+ }
+//-->
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":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/InitMetaProcedure.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/master/procedure/FairQueue.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">Prev Class</span></a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterDDLOperationHelper.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html" target="_top">Frames</a></li>
+<li><a href="InitMetaProcedure.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../allclasses-noframe.html">All 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: </li>
+<li><a href="#nested.classes.inherited.from.class.org.apache.hadoop.hbase.procedure2.StateMachineProcedure">Nested</a> | </li>
+<li><a href="#field.summary">Field</a> | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li><a href="#field.detail">Field</a> | </li>
+<li><a href="#constructor.detail">Constr</a> | </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.master.procedure</div>
+<h2 title="Class InitMetaProcedure" class="title">Class InitMetaProcedure</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/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">org.apache.hadoop.hbase.procedure2.Procedure</a><TEnvironment></li>
+<li>
+<ul class="inheritance">
+<li><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">org.apache.hadoop.hbase.procedure2.StateMachineProcedure</a><<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>,TState></li>
+<li>
+<ul class="inheritance">
+<li><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">org.apache.hadoop.hbase.master.procedure.AbstractStateMachineTableProcedure</a><org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.InitMetaState></li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.master.procedure.InitMetaProcedure</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>All Implemented Interfaces:</dt>
+<dd><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><<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>>>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.html" title="interface in org.apache.hadoop.hbase.master.procedure">TableProcedureInterface</a></dd>
+</dl>
+<hr>
+<br>
+<pre>@InterfaceAudience.Private
+public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html#line.38">InitMetaProcedure</a>
+extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">AbstractStateMachineTableProcedure</a><org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.InitMetaState></pre>
+<div class="block">This procedure is used to initialize meta table for a new hbase deploy. It will just schedule an
+ <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment"><code>AssignProcedure</code></a> to assign meta.</div>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="nested.class.summary">
+<!-- -->
+</a>
+<h3>Nested Class Summary</h3>
+<ul class="blockList">
+<li class="blockList"><a name="nested.classes.inherited.from.class.org.apache.hadoop.hbase.procedure2.StateMachineProcedure">
+<!-- -->
+</a>
+<h3>Nested classes/interfaces inherited from class org.apache.hadoop.hbase.procedure2.<a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">StateMachineProcedure</a></h3>
+<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2">StateMachineProcedure.Flow</a></code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="nested.classes.inherited.from.class.org.apache.hadoop.hbase.procedure2.Procedure">
+<!-- -->
+</a>
+<h3>Nested classes/interfaces inherited from class org.apache.hadoop.hbase.procedure2.<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a></h3>
+<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.LockState.html" title="enum in org.apache.hadoop.hbase.procedure2">Procedure.LockState</a></code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="nested.classes.inherited.from.class.org.apache.hadoop.hbase.master.procedure.TableProcedureInterface">
+<!-- -->
+</a>
+<h3>Nested classes/interfaces inherited from interface org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.html" title="interface in org.apache.hadoop.hbase.master.procedure">TableProcedureInterface</a></h3>
+<code><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.TableOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure">TableProcedureInterface.TableOperationType</a></code></li>
+</ul>
+</li>
+</ul>
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.summary">
+<!-- -->
+</a>
+<h3>Field Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
+<caption><span>Fields</span><span class="tabEnd"> </span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CountDownLatch.html?is-external=true" title="class or interface in java.util.concurrent">CountDownLatch</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html#latch">latch</a></span></code> </td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.org.apache.hadoop.hbase.procedure2.Procedure">
+<!-- -->
+</a>
+<h3>Fields inherited from class org.apache.hadoop.hbase.procedure2.<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a></h3>
+<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#NO_PROC_ID">NO_PROC_ID</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#NO_TIMEOUT">NO_TIMEOUT</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"> </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/master/procedure/InitMetaProcedure.html#InitMetaProcedure--">InitMetaProcedure</a></span>()</code> </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"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </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>protected <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.LockState.html" title="enum in org.apache.hadoop.hbase.procedure2">Procedure.LockState</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html#acquireLock-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">acquireLock</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code>
+<div class="block">The user should override this method if they need a lock on an Entity.</div>
+</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html#await--">await</a></span>()</code> </td>
+</tr>
+<tr id="i2" class="altColor">
+<td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html#completionCleanup-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">completionCleanup</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code>
+<div class="block">Called when the procedure is marked as completed (success or rollback).</div>
+</td>
+</tr>
+<tr id="i3" class="rowColor">
+<td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html#deserializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">deserializeStateData</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a> serializer)</code>
+<div class="block">Called on store load to allow the user to decode the previously serialized
+ state.</div>
+</td>
+</tr>
+<tr id="i4" class="altColor">
+<td class="colFirst"><code>protected <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2">StateMachineProcedure.Flow</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html#executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.InitMetaState-">executeFromState</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
+ org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.InitMetaState state)</code>
+<div class="block">called to perform a single step of the specified 'state' of the procedure</div>
+</td>
+</tr>
+<tr id="i5" class="rowColor">
+<td class="colFirst"><code>protected org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.InitMetaState</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html#getInitialState--">getInitialState</a></span>()</code>
+<div class="block">Return the initial state object that will be used for the first call to executeFromState().</div>
+</td>
+</tr>
+<tr id="i6" class="altColor">
+<td class="colFirst"><code>protected org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.InitMetaState</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html#getState-int-">getState</a></span>(int stateId)</code>
+<div class="block">Convert an ordinal (or state id) to an Enum (or more descriptive) state object.</div>
+</td>
+</tr>
+<tr id="i7" class="rowColor">
+<td class="colFirst"><code>protected int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html#getStateId-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.InitMetaState-">getStateId</a></span>(org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.InitMetaState state)</code>
+<div class="block">Convert the Enum (or more descriptive) state object to an ordinal (or state id).</div>
+</td>
+</tr>
+<tr id="i8" class="altColor">
+<td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html#getTableName--">getTableName</a></span>()</code> </td>
+</tr>
+<tr id="i9" class="rowColor">
+<td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.TableOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure">TableProcedureInterface.TableOperationType</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html#getTableOperationType--">getTableOperationType</a></span>()</code>
+<div class="block">Given an operation type we can take decisions about what to do with pending operations.</div>
+</td>
+</tr>
+<tr id="i10" class="altColor">
+<td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html#rollbackState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.InitMetaState-">rollbackState</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
+ org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.InitMetaState state)</code>
+<div class="block">called to perform the rollback of the specified state</div>
+</td>
+</tr>
+<tr id="i11" class="rowColor">
+<td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html#serializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">serializeStateData</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a> serializer)</code>
+<div class="block">The user-level code of the procedure may have some state to
+ persist (e.g.</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.master.procedure.AbstractStateMachineTableProcedure">
+<!-- -->
+</a>
+<h3>Methods inherited from class org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">AbstractStateMachineTableProcedure</a></h3>
+<code><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.html#checkOnline-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.client.RegionInfo-">checkOnline</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.html#checkTableModifiable-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">checkTableModifiable</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.html#getRegionDir-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.client.RegionInfo-">getRegionDir</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.html#getUser--">getUser</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.html#preflightChecks-org.apache.hadoop.hbase.master.pro
cedure.MasterProcedureEnv-java.lang.Boolean-">preflightChecks</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.html#releaseLock-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">releaseLock</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.html#releaseSyncLatch--">releaseSyncLatch</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.html#setUser-org.apache.hadoop.hbase.security.User-">setUser</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.html#toStringClassDetails-java.lang.StringBuilder-">toStringClassDetails</a></code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.procedure2.StateMachineProcedure">
+<!-- -->
+</a>
+<h3>Methods inherited from class org.apache.hadoop.hbase.procedure2.<a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">StateMachineProcedure</a></h3>
+<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#abort-TEnvironment-">abort</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#addChildProcedure-T...-">addChildProcedure</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#execute-TEnvironment-">execute</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#failIfAborted--">failIfAborted</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCurrentState--">getCurrentState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCurrentStateId--">getCurrentStateId</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCycles--">getCycles</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isRollbackSuppo
rted-TState-">isRollbackSupported</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldAfterExecutionStep-TEnvironment-">isYieldAfterExecutionStep</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldBeforeExecuteFromState-TEnvironment-TState-">isYieldBeforeExecuteFromState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#rollback-TEnvironment-">rollback</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#setNextState-TState-">setNextState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#toStringState-java.lang.StringBuilder-">toStringState</a></code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.procedure2.Procedure">
+<!-- -->
+</a>
+<h3>Methods inherited from class org.apache.hadoop.hbase.procedure2.<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a></h3>
+<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#addStackIndex-int-">addStackIndex</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#afterReplay-TEnvironment-">afterReplay</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#beforeReplay-TEnvironment-">beforeReplay</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#compareTo-org.apache.hadoop.hbase.procedure2.Procedure-">compareTo</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#doAcquireLock-TEnvironment-">doAcquireLock</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#doExecute-TEnvironment-">doExecute</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#doReleaseLock-TEnvironment-">doReleaseLock</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#doRollback-TEnvironment-">doRollback</
a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#elapsedTime--">elapsedTime</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getChildrenLatch--">getChildrenLatch</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getException--">getException</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getLastUpdate--">getLastUpdate</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getNonceKey--">getNonceKey</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getOwner--">getOwner</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getParentProcId--">getParentProcId</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getProcedureMetrics-TEnvironment-">getProcedureMetrics</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.htm
l#getProcId--">getProcId</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getProcIdHashCode-long-">getProcIdHashCode</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getProcName--">getProcName</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getResult--">getResult</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getRootProcedureId-java.util.Map-org.apache.hadoop.hbase.procedure2.Procedure-">getRootProcedureId</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getRootProcId--">getRootProcId</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getStackIndexes--">getStackIndexes</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getState--">getState</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getSubmittedTime--">getSubmittedTime<
/a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getTimeout--">getTimeout</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getTimeoutTimestamp--">getTimeoutTimestamp</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#hasChildren--">hasChildren</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#hasException--">hasException</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#hasLock-TEnvironment-">hasLock</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#hasOwner--">hasOwner</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#hasParent--">hasParent</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#hasTimeout--">hasTimeout</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#haveSameParent-org.apache.hadoop.hb
ase.procedure2.Procedure-org.apache.hadoop.hbase.procedure2.Procedure-">haveSameParent</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#holdLock-TEnvironment-">holdLock</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#incChildrenLatch--">incChildrenLatch</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#isFailed--">isFailed</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#isFinished--">isFinished</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#isInitializing--">isInitializing</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#isRunnable--">isRunnable</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#isSuccess--">isSuccess</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#isWaiting--">isWaiting</a>, <a href="../../../../../../or
g/apache/hadoop/hbase/procedure2/Procedure.html#removeStackIndex--">removeStackIndex</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setAbortFailure-java.lang.String-java.lang.String-">setAbortFailure</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setChildrenLatch-int-">setChildrenLatch</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setFailure-org.apache.hadoop.hbase.procedure2.RemoteProcedureException-">setFailure</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setFailure-java.lang.String-java.lang.Throwable-">setFailure</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setLastUpdate-long-">setLastUpdate</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setNonceKey-org.apache.hadoop.hbase.util.NonceKey-">setNonceKey</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/P
rocedure.html#setOwner-java.lang.String-">setOwner</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setOwner-org.apache.hadoop.hbase.security.User-">setOwner</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setParentProcId-long-">setParentProcId</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setProcId-long-">setProcId</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setResult-byte:A-">setResult</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setRootProcId-long-">setRootProcId</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setStackIndexes-java.util.List-">setStackIndexes</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setState-org.apache.hadoop.hbase.shaded.protobuf.generated.ProcedureProtos.ProcedureState-">setState</a>, <a href="../../../../../../or
g/apache/hadoop/hbase/procedure2/Procedure.html#setSubmittedTime-long-">setSubmittedTime</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setTimeout-int-">setTimeout</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setTimeoutFailure-TEnvironment-">setTimeoutFailure</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#shouldWaitClientAck-TEnvironment-">shouldWaitClientAck</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#toString--">toString</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#toStringClass--">toStringClass</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#toStringDetails--">toStringDetails</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#toStringSimpleSB--">toStringSimpleSB</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure
.html#updateMetricsOnFinish-TEnvironment-long-boolean-">updateMetricsOnFinish</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#updateMetricsOnSubmit-TEnvironment-">updateMetricsOnSubmit</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#updateTimestamp--">updateTimestamp</a>, <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#wasExecuted--">wasExecuted</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 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#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="latch">
+<!-- -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>latch</h4>
+<pre>private <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CountDownLatch.html?is-external=true" title="class or interface in java.util.concurrent">CountDownLatch</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html#line.40">latch</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="InitMetaProcedure--">
+<!-- -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>InitMetaProcedure</h4>
+<pre>public <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html#line.38">InitMetaProcedure</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="getTableName--">
+<!-- -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getTableName</h4>
+<pre>public <a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html#line.43">getTableName</a>()</pre>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.html#getTableName--">getTableName</a></code> in interface <code><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.html" title="interface in org.apache.hadoop.hbase.master.procedure">TableProcedureInterface</a></code></dd>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.html#getTableName--">getTableName</a></code> in class <code><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">AbstractStateMachineTableProcedure</a><org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.InitMetaState></code></dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>the name of the table the procedure is operating on</dd>
+</dl>
+</li>
+</ul>
+<a name="getTableOperationType--">
+<!-- -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getTableOperationType</h4>
+<pre>public <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.TableOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure">TableProcedureInterface.TableOperationType</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html#line.48">getTableOperationType</a>()</pre>
+<div class="block"><span class="descfrmTypeLabel">Description copied from interface: <code><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.html#getTableOperationType--">TableProcedureInterface</a></code></span></div>
+<div class="block">Given an operation type we can take decisions about what to do with pending operations.
+ e.g. if we get a delete and we have some table operation pending (e.g. add column)
+ we can abort those operations.</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.html#getTableOperationType--">getTableOperationType</a></code> in interface <code><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.html" title="interface in org.apache.hadoop.hbase.master.procedure">TableProcedureInterface</a></code></dd>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.html#getTableOperationType--">getTableOperationType</a></code> in class <code><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">AbstractStateMachineTableProcedure</a><org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.InitMetaState></code></dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>the operation type that the procedure is executing.</dd>
+</dl>
+</li>
+</ul>
+<a name="executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.InitMetaState-">
+<!-- -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>executeFromState</h4>
+<pre>protected <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2">StateMachineProcedure.Flow</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html#line.53">executeFromState</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
+ org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.InitMetaState state)
+ throws <a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureSuspendedException.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureSuspendedException</a>,
+ <a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureYieldException.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureYieldException</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"><span class="descfrmTypeLabel">Description copied from class: <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#executeFromState-TEnvironment-TState-">StateMachineProcedure</a></code></span></div>
+<div class="block">called to perform a single step of the specified 'state' of the procedure</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#executeFromState-TEnvironment-TState-">executeFromState</a></code> in class <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">StateMachineProcedure</a><<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>,org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.InitMetaState></code></dd>
+<dd><code>state</code> - state to execute</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>Flow.NO_MORE_STATE if the procedure is completed,
+ Flow.HAS_MORE_STATE if there is another step.</dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureSuspendedException.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureSuspendedException</a></code></dd>
+<dd><code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureYieldException.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureYieldException</a></code></dd>
+<dd><code><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></code></dd>
+</dl>
+</li>
+</ul>
+<a name="acquireLock-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">
+<!-- -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>acquireLock</h4>
+<pre>protected <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.LockState.html" title="enum in org.apache.hadoop.hbase.procedure2">Procedure.LockState</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html#line.66">acquireLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</pre>
+<div class="block"><span class="descfrmTypeLabel">Description copied from class: <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#acquireLock-TEnvironment-">Procedure</a></code></span></div>
+<div class="block">The user should override this method if they need a lock on an Entity.
+ A lock can be anything, and it is up to the implementor. The Procedure
+ Framework will call this method just before it invokes <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#execute-TEnvironment-"><code>Procedure.execute(Object)</code></a>.
+ It calls <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#releaseLock-TEnvironment-"><code>Procedure.releaseLock(Object)</code></a> after the call to execute.
+
+ <p>If you need to hold the lock for the life of the Procedure -- i.e. you do not
+ want any other Procedure interfering while this Procedure is running, see
+ <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#holdLock-TEnvironment-"><code>Procedure.holdLock(Object)</code></a>.
+
+ <p>Example: in our Master we can execute request in parallel for different tables.
+ We can create t1 and create t2 and these creates can be executed at the same time.
+ Anything else on t1/t2 is queued waiting that specific table create to happen.
+
+ <p>There are 3 LockState:
+ <ul><li>LOCK_ACQUIRED should be returned when the proc has the lock and the proc is
+ ready to execute.</li>
+ <li>LOCK_YIELD_WAIT should be returned when the proc has not the lock and the framework
+ should take care of readding the procedure back to the runnable set for retry</li>
+ <li>LOCK_EVENT_WAIT should be returned when the proc has not the lock and someone will
+ take care of readding the procedure back to the runnable set when the lock is available.
+ </li></ul></div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
+<dd><code><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.html#acquireLock-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">acquireLock</a></code> in class <code><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">AbstractStateMachineTableProcedure</a><org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.InitMetaState></code></dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>the lock state as described above.</dd>
+</dl>
+</li>
+</ul>
+<a name="rollbackState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.InitMetaState-">
+<!-- -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>rollbackState</h4>
+<pre>protected void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html#line.75">rollbackState</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
+ org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.InitMetaState state)
+ 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"><span class="descfrmTypeLabel">Description copied from class: <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#rollbackState-TEnvironment-TState-">StateMachineProcedure</a></code></span></div>
+<div class="block">called to perform the rollback of the specified state</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#rollbackState-TEnvironment-TState-">rollbackState</a></code> in class <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">StateMachineProcedure</a><<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>,org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.InitMetaState></code></dd>
+<dd><code>state</code> - state to rollback</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> - temporary failure, the rollback will retry later</dd>
+<dd><code><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></code></dd>
+</dl>
+</li>
+</ul>
+<a name="getState-int-">
+<!-- -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getState</h4>
+<pre>protected org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.InitMetaState <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html#line.81">getState</a>(int stateId)</pre>
+<div class="block"><span class="descfrmTypeLabel">Description copied from class: <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getState-int-">StateMachineProcedure</a></code></span></div>
+<div class="block">Convert an ordinal (or state id) to an Enum (or more descriptive) state object.</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getState-int-">getState</a></code> in class <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">StateMachineProcedure</a><<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>,org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.InitMetaState></code></dd>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>stateId</code> - the ordinal() of the state enum (or state id)</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>the state enum object</dd>
+</dl>
+</li>
+</ul>
+<a name="getStateId-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.InitMetaState-">
+<!-- -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getStateId</h4>
+<pre>protected int <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html#line.86">getStateId</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.InitMetaState state)</pre>
+<div class="block"><span class="descfrmTypeLabel">Description copied from class: <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getStateId-TState-">StateMachineProcedure</a></code></span></div>
+<div class="block">Convert the Enum (or more descriptive) state object to an ordinal (or state id).</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getStateId-TState-">getStateId</a></code> in class <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">StateMachineProcedure</a><<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>,org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.InitMetaState></code></dd>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>state</code> - the state enum object</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>stateId the ordinal() of the state enum (or state id)</dd>
+</dl>
+</li>
+</ul>
+<a name="getInitialState--">
+<!-- -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getInitialState</h4>
+<pre>protected org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.InitMetaState <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html#line.91">getInitialState</a>()</pre>
+<div class="block"><span class="descfrmTypeLabel">Description copied from class: <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getInitialState--">StateMachineProcedure</a></code></span></div>
+<div class="block">Return the initial state object that will be used for the first call to executeFromState().</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getInitialState--">getInitialState</a></code> in class <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">StateMachineProcedure</a><<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>,org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.InitMetaState></code></dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>the initial state enum object</dd>
+</dl>
+</li>
+</ul>
+<a name="serializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">
+<!-- -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>serializeStateData</h4>
+<pre>protected void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html#line.96">serializeStateData</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a> serializer)
+ 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: <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#serializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">Procedure</a></code></span></div>
+<div class="block">The user-level code of the procedure may have some state to
+ persist (e.g. input arguments or current position in the processing state) to
+ be able to resume on failure.</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
+<dd><code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#serializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">serializeStateData</a></code> in class <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">StateMachineProcedure</a><<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>,org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.InitMetaState></code></dd>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>serializer</code> - stores the serializable state</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="deserializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">
+<!-- -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>deserializeStateData</h4>
+<pre>protected void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html#line.102">deserializeStateData</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a> serializer)
+ 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: <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#deserializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">Procedure</a></code></span></div>
+<div class="block">Called on store load to allow the user to decode the previously serialized
+ state.</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
+<dd><code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#deserializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">deserializeStateData</a></code> in class <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">StateMachineProcedure</a><<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>,org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.InitMetaState></code></dd>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>serializer</code> - contains the serialized state</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="completionCleanup-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">
+<!-- -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>completionCleanup</h4>
+<pre>protected void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html#line.108">completionCleanup</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</pre>
+<div class="block"><span class="descfrmTypeLabel">Description copied from class: <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#completionCleanup-TEnvironment-">Procedure</a></code></span></div>
+<div class="block">Called when the procedure is marked as completed (success or rollback).
+ The procedure implementor may use this method to cleanup in-memory states.
+ This operation will not be retried on failure. If a procedure took a lock,
+ it will have been released when this method runs.</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
+<dd><code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#completionCleanup-TEnvironment-">completionCleanup</a></code> in class <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>></code></dd>
+</dl>
+</li>
+</ul>
+<a name="await--">
+<!-- -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>await</h4>
+<pre>public void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html#line.112">await</a>()
+ throws <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>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><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></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/InitMetaProcedure.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/master/procedure/FairQueue.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">Prev Class</span></a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterDDLOperationHelper.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html" target="_top">Frames</a></li>
+<li><a href="InitMetaProcedure.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../allclasses-noframe.html">All 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: </li>
+<li><a href="#nested.classes.inherited.from.class.org.apache.hadoop.hbase.procedure2.StateMachineProcedure">Nested</a> | </li>
+<li><a href="#field.summary">Field</a> | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li><a href="#field.detail">Field</a> | </li>
+<li><a href="#constructor.detail">Constr</a> | </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 © 2007–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/65565d77/devapidocs/org/apache/hadoop/hbase/master/procedure/MasterDDLOperationHelper.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/MasterDDLOperationHelper.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/MasterDDLOperationHelper.html
index 5ce414e..d0af890 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/MasterDDLOperationHelper.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/MasterDDLOperationHelper.html
@@ -49,7 +49,7 @@ var activeTableTab = "activeTableTab";
</div>
<div class="subNav">
<ul class="navList">
-<li><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/FairQueue.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">Prev Class</span></a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">Prev Class</span></a></li>
<li><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureConstants.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">Next Class</span></a></li>
</ul>
<ul class="navList">
@@ -282,7 +282,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/master/procedure/FairQueue.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">Prev Class</span></a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">Prev Class</span></a></li>
<li><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureConstants.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">Next Class</span></a></li>
</ul>
<ul class="navList">
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.MasterProcedureStoreListener.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.MasterProcedureStoreListener.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.MasterProcedureStoreListener.html
index a532a61..d64e2cc 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.MasterProcedureStoreListener.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.MasterProcedureStoreListener.html
@@ -118,7 +118,7 @@ var activeTableTab = "activeTableTab";
<hr>
<br>
<pre>@InterfaceAudience.Private
-public static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html#line.79">MasterProcedureEnv.MasterProcedureStoreListener</a>
+public static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html#line.76">MasterProcedureEnv.MasterProcedureStoreListener</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/procedure2/store/ProcedureStore.ProcedureStoreListener.html" title="interface in org.apache.hadoop.hbase.procedure2.store">ProcedureStore.ProcedureStoreListener</a></pre>
</li>
@@ -215,7 +215,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/P
<ul class="blockListLast">
<li class="blockList">
<h4>master</h4>
-<pre>private final <a href="../../../../../../org/apache/hadoop/hbase/master/MasterServices.html" title="interface in org.apache.hadoop.hbase.master">MasterServices</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.MasterProcedureStoreListener.html#line.81">master</a></pre>
+<pre>private final <a href="../../../../../../org/apache/hadoop/hbase/master/MasterServices.html" title="interface in org.apache.hadoop.hbase.master">MasterServices</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.MasterProcedureStoreListener.html#line.78">master</a></pre>
</li>
</ul>
</li>
@@ -232,7 +232,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/P
<ul class="blockListLast">
<li class="blockList">
<h4>MasterProcedureStoreListener</h4>
-<pre>public <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.MasterProcedureStoreListener.html#line.83">MasterProcedureStoreListener</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/MasterServices.html" title="interface in org.apache.hadoop.hbase.master">MasterServices</a> master)</pre>
+<pre>public <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.MasterProcedureStoreListener.html#line.80">MasterProcedureStoreListener</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/MasterServices.html" title="interface in org.apache.hadoop.hbase.master">MasterServices</a> master)</pre>
</li>
</ul>
</li>
@@ -249,7 +249,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/P
<ul class="blockList">
<li class="blockList">
<h4>postSync</h4>
-<pre>public void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.MasterProcedureStoreListener.html#line.88">postSync</a>()</pre>
+<pre>public void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.MasterProcedureStoreListener.html#line.85">postSync</a>()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface: <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStore.ProcedureStoreListener.html#postSync--">ProcedureStore.ProcedureStoreListener</a></code></span></div>
<div class="block">triggered when the store sync is completed.</div>
<dl>
@@ -264,7 +264,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/P
<ul class="blockListLast">
<li class="blockList">
<h4>abortProcess</h4>
-<pre>public void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.MasterProcedureStoreListener.html#line.93">abortProcess</a>()</pre>
+<pre>public void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.MasterProcedureStoreListener.html#line.90">abortProcess</a>()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface: <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStore.ProcedureStoreListener.html#abortProcess--">ProcedureStore.ProcedureStoreListener</a></code></span></div>
<div class="block">triggered when the store is not able to write out data.
the main process should abort.</div>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.WALStoreLeaseRecovery.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.WALStoreLeaseRecovery.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.WALStoreLeaseRecovery.html
index 4151a3d..baf6a68 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.WALStoreLeaseRecovery.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.WALStoreLeaseRecovery.html
@@ -118,7 +118,7 @@ var activeTableTab = "activeTableTab";
<hr>
<br>
<pre>@InterfaceAudience.Private
-public static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html#line.52">MasterProcedureEnv.WALStoreLeaseRecovery</a>
+public static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html#line.50">MasterProcedureEnv.WALStoreLeaseRecovery</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/procedure2/store/wal/WALProcedureStore.LeaseRecovery.html" title="interface in org.apache.hadoop.hbase.procedure2.store.wal">WALProcedureStore.LeaseRecovery</a></pre>
</li>
@@ -212,7 +212,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/w
<ul class="blockListLast">
<li class="blockList">
<h4>master</h4>
-<pre>private final <a href="../../../../../../org/apache/hadoop/hbase/master/MasterServices.html" title="interface in org.apache.hadoop.hbase.master">MasterServices</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.WALStoreLeaseRecovery.html#line.53">master</a></pre>
+<pre>private final <a href="../../../../../../org/apache/hadoop/hbase/master/MasterServices.html" title="interface in org.apache.hadoop.hbase.master">MasterServices</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.WALStoreLeaseRecovery.html#line.51">master</a></pre>
</li>
</ul>
</li>
@@ -229,7 +229,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/w
<ul class="blockListLast">
<li class="blockList">
<h4>WALStoreLeaseRecovery</h4>
-<pre>public <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.WALStoreLeaseRecovery.html#line.55">WALStoreLeaseRecovery</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/MasterServices.html" title="interface in org.apache.hadoop.hbase.master">MasterServices</a> master)</pre>
+<pre>public <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.WALStoreLeaseRecovery.html#line.53">WALStoreLeaseRecovery</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/MasterServices.html" title="interface in org.apache.hadoop.hbase.master">MasterServices</a> master)</pre>
</li>
</ul>
</li>
@@ -246,7 +246,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/w
<ul class="blockList">
<li class="blockList">
<h4>recoverFileLease</h4>
-<pre>public void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.WALStoreLeaseRecovery.html#line.60">recoverFileLease</a>(org.apache.hadoop.fs.FileSystem fs,
+<pre>public void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.WALStoreLeaseRecovery.html#line.58">recoverFileLease</a>(org.apache.hadoop.fs.FileSystem fs,
org.apache.hadoop.fs.Path path)
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>
@@ -263,7 +263,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/w
<ul class="blockListLast">
<li class="blockList">
<h4>isRunning</h4>
-<pre>private boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.WALStoreLeaseRecovery.html#line.72">isRunning</a>()</pre>
+<pre>private boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.WALStoreLeaseRecovery.html#line.70">isRunning</a>()</pre>
</li>
</ul>
</li>
[37/51] [partial] hbase-site git commit: Published site at
9101fc246f86445006bfbcdfda5cc495016dc280.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/master/SnapshotOfRegionAssignmentFromMeta.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/SnapshotOfRegionAssignmentFromMeta.html b/devapidocs/org/apache/hadoop/hbase/master/SnapshotOfRegionAssignmentFromMeta.html
index fc41962..be987ae 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/SnapshotOfRegionAssignmentFromMeta.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/SnapshotOfRegionAssignmentFromMeta.html
@@ -49,7 +49,7 @@ var activeTableTab = "activeTableTab";
</div>
<div class="subNav">
<ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master"><span class="typeNameLink">Prev Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.FlushedSequenceIdFlusher.html" title="class in org.apache.hadoop.hbase.master"><span class="typeNameLink">Prev Class</span></a></li>
<li><a href="../../../../../org/apache/hadoop/hbase/master/SnapshotSentinel.html" title="interface in org.apache.hadoop.hbase.master"><span class="typeNameLink">Next Class</span></a></li>
</ul>
<ul class="navList">
@@ -680,7 +680,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/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master"><span class="typeNameLink">Prev Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.FlushedSequenceIdFlusher.html" title="class in org.apache.hadoop.hbase.master"><span class="typeNameLink">Prev Class</span></a></li>
<li><a href="../../../../../org/apache/hadoop/hbase/master/SnapshotSentinel.html" title="interface in org.apache.hadoop.hbase.master"><span class="typeNameLink">Next Class</span></a></li>
</ul>
<ul class="navList">
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionChore.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionChore.html b/devapidocs/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionChore.html
index b252c30..ffe8371 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionChore.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionChore.html
@@ -127,7 +127,7 @@ var activeTableTab = "activeTableTab";
</dl>
<hr>
<br>
-<pre>private static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1081">AssignmentManager.RegionInTransitionChore</a>
+<pre>private static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1078">AssignmentManager.RegionInTransitionChore</a>
extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureInMemoryChore.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureInMemoryChore</a><<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>></pre>
</li>
</ul>
@@ -240,7 +240,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureI
<ul class="blockListLast">
<li class="blockList">
<h4>RegionInTransitionChore</h4>
-<pre>public <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionChore.html#line.1082">RegionInTransitionChore</a>(int timeoutMsec)</pre>
+<pre>public <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionChore.html#line.1079">RegionInTransitionChore</a>(int timeoutMsec)</pre>
</li>
</ul>
</li>
@@ -257,7 +257,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureI
<ul class="blockListLast">
<li class="blockList">
<h4>periodicExecute</h4>
-<pre>protected void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionChore.html#line.1087">periodicExecute</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</pre>
+<pre>protected void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionChore.html#line.1084">periodicExecute</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureInMemoryChore.html#periodicExecute-TEnvironment-">periodicExecute</a></code> in class <code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureInMemoryChore.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureInMemoryChore</a><<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>></code></dd>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionStat.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionStat.html b/devapidocs/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionStat.html
index ee10f5b..e04edb3 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionStat.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionStat.html
@@ -113,7 +113,7 @@ var activeTableTab = "activeTableTab";
</dl>
<hr>
<br>
-<pre>public static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1108">AssignmentManager.RegionInTransitionStat</a>
+<pre>public static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1105">AssignmentManager.RegionInTransitionStat</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>
@@ -266,7 +266,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>ritThreshold</h4>
-<pre>private final int <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionStat.html#line.1109">ritThreshold</a></pre>
+<pre>private final int <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionStat.html#line.1106">ritThreshold</a></pre>
</li>
</ul>
<a name="ritsOverThreshold">
@@ -275,7 +275,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>ritsOverThreshold</h4>
-<pre>private <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><<a href="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="../../../../../../org/apache/hadoop/hbase/master/RegionState.html" title="class in org.apache.hadoop.hbase.master">RegionState</a>> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionStat.html#line.1111">ritsOverThreshold</a></pre>
+<pre>private <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><<a href="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="../../../../../../org/apache/hadoop/hbase/master/RegionState.html" title="class in org.apache.hadoop.hbase.master">RegionState</a>> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionStat.html#line.1108">ritsOverThreshold</a></pre>
</li>
</ul>
<a name="statTimestamp">
@@ -284,7 +284,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>statTimestamp</h4>
-<pre>private long <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionStat.html#line.1112">statTimestamp</a></pre>
+<pre>private long <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionStat.html#line.1109">statTimestamp</a></pre>
</li>
</ul>
<a name="oldestRITTime">
@@ -293,7 +293,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>oldestRITTime</h4>
-<pre>private long <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionStat.html#line.1113">oldestRITTime</a></pre>
+<pre>private long <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionStat.html#line.1110">oldestRITTime</a></pre>
</li>
</ul>
<a name="totalRITsTwiceThreshold">
@@ -302,7 +302,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>totalRITsTwiceThreshold</h4>
-<pre>private int <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionStat.html#line.1114">totalRITsTwiceThreshold</a></pre>
+<pre>private int <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionStat.html#line.1111">totalRITsTwiceThreshold</a></pre>
</li>
</ul>
<a name="totalRITs">
@@ -311,7 +311,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockListLast">
<li class="blockList">
<h4>totalRITs</h4>
-<pre>private int <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionStat.html#line.1115">totalRITs</a></pre>
+<pre>private int <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionStat.html#line.1112">totalRITs</a></pre>
</li>
</ul>
</li>
@@ -328,7 +328,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockListLast">
<li class="blockList">
<h4>RegionInTransitionStat</h4>
-<pre>public <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionStat.html#line.1118">RegionInTransitionStat</a>(org.apache.hadoop.conf.Configuration conf)</pre>
+<pre>public <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionStat.html#line.1115">RegionInTransitionStat</a>(org.apache.hadoop.conf.Configuration conf)</pre>
</li>
</ul>
</li>
@@ -345,7 +345,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>getRITThreshold</h4>
-<pre>public int <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionStat.html#line.1123">getRITThreshold</a>()</pre>
+<pre>public int <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionStat.html#line.1120">getRITThreshold</a>()</pre>
</li>
</ul>
<a name="getTimestamp--">
@@ -354,7 +354,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>getTimestamp</h4>
-<pre>public long <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionStat.html#line.1127">getTimestamp</a>()</pre>
+<pre>public long <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionStat.html#line.1124">getTimestamp</a>()</pre>
</li>
</ul>
<a name="getTotalRITs--">
@@ -363,7 +363,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>getTotalRITs</h4>
-<pre>public int <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionStat.html#line.1131">getTotalRITs</a>()</pre>
+<pre>public int <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionStat.html#line.1128">getTotalRITs</a>()</pre>
</li>
</ul>
<a name="getOldestRITTime--">
@@ -372,7 +372,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>getOldestRITTime</h4>
-<pre>public long <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionStat.html#line.1135">getOldestRITTime</a>()</pre>
+<pre>public long <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionStat.html#line.1132">getOldestRITTime</a>()</pre>
</li>
</ul>
<a name="getTotalRITsOverThreshold--">
@@ -381,7 +381,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>getTotalRITsOverThreshold</h4>
-<pre>public int <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionStat.html#line.1139">getTotalRITsOverThreshold</a>()</pre>
+<pre>public int <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionStat.html#line.1136">getTotalRITsOverThreshold</a>()</pre>
</li>
</ul>
<a name="hasRegionsTwiceOverThreshold--">
@@ -390,7 +390,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>hasRegionsTwiceOverThreshold</h4>
-<pre>public boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionStat.html#line.1144">hasRegionsTwiceOverThreshold</a>()</pre>
+<pre>public boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionStat.html#line.1141">hasRegionsTwiceOverThreshold</a>()</pre>
</li>
</ul>
<a name="hasRegionsOverThreshold--">
@@ -399,7 +399,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>hasRegionsOverThreshold</h4>
-<pre>public boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionStat.html#line.1148">hasRegionsOverThreshold</a>()</pre>
+<pre>public boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionStat.html#line.1145">hasRegionsOverThreshold</a>()</pre>
</li>
</ul>
<a name="getRegionOverThreshold--">
@@ -408,7 +408,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>getRegionOverThreshold</h4>
-<pre>public <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><<a href="../../../../../../org/apache/hadoop/hbase/master/RegionState.html" title="class in org.apache.hadoop.hbase.master">RegionState</a>> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionStat.html#line.1153">getRegionOverThreshold</a>()</pre>
+<pre>public <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><<a href="../../../../../../org/apache/hadoop/hbase/master/RegionState.html" title="class in org.apache.hadoop.hbase.master">RegionState</a>> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionStat.html#line.1150">getRegionOverThreshold</a>()</pre>
</li>
</ul>
<a name="isRegionOverThreshold-org.apache.hadoop.hbase.client.RegionInfo-">
@@ -417,7 +417,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>isRegionOverThreshold</h4>
-<pre>public boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionStat.html#line.1158">isRegionOverThreshold</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo)</pre>
+<pre>public boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionStat.html#line.1155">isRegionOverThreshold</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo)</pre>
</li>
</ul>
<a name="isRegionTwiceOverThreshold-org.apache.hadoop.hbase.client.RegionInfo-">
@@ -426,7 +426,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>isRegionTwiceOverThreshold</h4>
-<pre>public boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionStat.html#line.1163">isRegionTwiceOverThreshold</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo)</pre>
+<pre>public boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionStat.html#line.1160">isRegionTwiceOverThreshold</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo)</pre>
</li>
</ul>
<a name="update-org.apache.hadoop.hbase.master.assignment.AssignmentManager-">
@@ -435,7 +435,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>update</h4>
-<pre>protected void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionStat.html#line.1171">update</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignmentManager</a> am)</pre>
+<pre>protected void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionStat.html#line.1168">update</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignmentManager</a> am)</pre>
</li>
</ul>
<a name="update-java.util.Collection-long-">
@@ -444,7 +444,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockListLast">
<li class="blockList">
<h4>update</h4>
-<pre>private void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionStat.html#line.1178">update</a>(<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><<a href="../../../../../../org/apache/hadoop/hbase/master/RegionState.html" title="class in org.apache.hadoop.hbase.master">RegionState</a>> regions,
+<pre>private void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionStat.html#line.1175">update</a>(<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><<a href="../../../../../../org/apache/hadoop/hbase/master/RegionState.html" title="class in org.apache.hadoop.hbase.master">RegionState</a>> regions,
long currentTime)</pre>
</li>
</ul>
[38/51] [partial] hbase-site git commit: Published site at
9101fc246f86445006bfbcdfda5cc495016dc280.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/master/ServerManager.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/ServerManager.html b/devapidocs/org/apache/hadoop/hbase/master/ServerManager.html
index 2d0d7ff..d0b6408 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/ServerManager.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/ServerManager.html
@@ -18,7 +18,7 @@
catch(err) {
}
//-->
-var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":9,"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":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};
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":9,"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":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};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
@@ -50,7 +50,7 @@ var activeTableTab = "activeTableTab";
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../org/apache/hadoop/hbase/master/ServerListener.html" title="interface in org.apache.hadoop.hbase.master"><span class="typeNameLink">Prev Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/master/SnapshotOfRegionAssignmentFromMeta.html" title="class in org.apache.hadoop.hbase.master"><span class="typeNameLink">Next Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.FlushedSequenceIdFlusher.html" title="class in org.apache.hadoop.hbase.master"><span class="typeNameLink">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/hadoop/hbase/master/ServerManager.html" target="_top">Frames</a></li>
@@ -74,7 +74,7 @@ var activeTableTab = "activeTableTab";
<div>
<ul class="subNavList">
<li>Summary: </li>
-<li>Nested | </li>
+<li><a href="#nested.class.summary">Nested</a> | </li>
<li><a href="#field.summary">Field</a> | </li>
<li><a href="#constructor.summary">Constr</a> | </li>
<li><a href="#method.summary">Method</a></li>
@@ -110,7 +110,7 @@ var activeTableTab = "activeTableTab";
<hr>
<br>
<pre>@InterfaceAudience.Private
-public class <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.96">ServerManager</a>
+public class <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.105">ServerManager</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">The ServerManager class manages info about region servers.
<p>
@@ -138,6 +138,25 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<div class="summary">
<ul class="blockList">
<li class="blockList">
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="nested.class.summary">
+<!-- -->
+</a>
+<h3>Nested Class Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Nested Class Summary table, listing nested classes, and an explanation">
+<caption><span>Nested Classes</span><span class="tabEnd"> </span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Class and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private class </code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.FlushedSequenceIdFlusher.html" title="class in org.apache.hadoop.hbase.master">ServerManager.FlushedSequenceIdFlusher</a></span></code> </td>
+</tr>
+</table>
+</li>
+</ul>
<!-- =========== FIELD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.summary">
@@ -169,47 +188,72 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
</td>
</tr>
<tr class="altColor">
+<td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.FlushedSequenceIdFlusher.html" title="class in org.apache.hadoop.hbase.master">ServerManager.FlushedSequenceIdFlusher</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#flushedSeqIdFlusher">flushedSeqIdFlusher</a></span></code> </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/master/ServerManager.html#FLUSHEDSEQUENCEID_FLUSHER_INTERVAL">FLUSHEDSEQUENCEID_FLUSHER_INTERVAL</a></span></code> </td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#FLUSHEDSEQUENCEID_FLUSHER_INTERVAL_DEFAULT">FLUSHEDSEQUENCEID_FLUSHER_INTERVAL_DEFAULT</a></span></code> </td>
+</tr>
+<tr class="rowColor">
<td class="colFirst"><code>private <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentNavigableMap.html?is-external=true" title="class or interface in java.util.concurrent">ConcurrentNavigableMap</a><byte[],<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>></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#flushedSequenceIdByRegion">flushedSequenceIdByRegion</a></span></code>
<div class="block">The last flushed sequence id for a region.</div>
</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/master/ServerManager.html#isFlushSeqIdPersistInProgress">isFlushSeqIdPersistInProgress</a></span></code> </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/master/ServerManager.html#LAST_FLUSHED_SEQ_ID_FILE">LAST_FLUSHED_SEQ_ID_FILE</a></span></code>
+<div class="block">File on hdfs to store last flushed sequence id of regions</div>
+</td>
+</tr>
+<tr 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><<a href="../../../../../org/apache/hadoop/hbase/master/ServerListener.html" title="interface in org.apache.hadoop.hbase.master">ServerListener</a>></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#listeners">listeners</a></span></code>
<div class="block">Listeners that are called on server events.</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/master/ServerManager.html#LOG">LOG</a></span></code> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices.html" title="interface in org.apache.hadoop.hbase.master">MasterServices</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#master">master</a></span></code> </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/master/ServerManager.html#maxSkew">maxSkew</a></span></code> </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/ConcurrentNavigableMap.html?is-external=true" title="class or interface in java.util.concurrent">ConcurrentNavigableMap</a><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>,<a href="../../../../../org/apache/hadoop/hbase/ServerMetrics.html" title="interface in org.apache.hadoop.hbase">ServerMetrics</a>></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#onlineServers">onlineServers</a></span></code>
<div class="block">Map of registered servers to their current load</div>
</td>
</tr>
-<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><<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/ServerManager.html#queuedDeadServers">queuedDeadServers</a></span></code>
-<div class="block">Set of region servers which are dead but not processed immediately.</div>
+<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/master/ServerManager.html#PERSIST_FLUSHEDSEQUENCEID">PERSIST_FLUSHEDSEQUENCEID</a></span></code>
+<div class="block">see HBASE-20727
+ if set to true, flushedSequenceIdByRegion and storeFlushedSequenceIdsByRegion
+ will be persisted to HDFS and loaded when master restart to speed up log split</div>
</td>
</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#PERSIST_FLUSHEDSEQUENCEID_DEFAULT">PERSIST_FLUSHEDSEQUENCEID_DEFAULT</a></span></code> </td>
+</tr>
<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><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#requeuedDeadServers">requeuedDeadServers</a></span></code>
-<div class="block">Set of region servers which are dead and submitted to ServerShutdownHandler to process but not
- fully processed immediately.</div>
-</td>
+<td class="colFirst"><code>private boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#persistFlushedSequenceId">persistFlushedSequenceId</a></span></code> </td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcControllerFactory.html" title="class in org.apache.hadoop.hbase.ipc">RpcControllerFactory</a></code></td>
@@ -350,24 +394,30 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>boolean</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#expireServer-org.apache.hadoop.hbase.ServerName-">expireServer</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName)</code> </td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#expireServer-org.apache.hadoop.hbase.ServerName-">expireServer</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName)</code>
+<div class="block">Expire the passed server.</div>
+</td>
</tr>
<tr id="i11" class="rowColor">
+<td class="colFirst"><code>(package private) void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#findOutDeadServersAndProcess-java.util.Set-java.util.Set-">findOutDeadServersAndProcess</a></span>(<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><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>> deadServersFromPE,
+ <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><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>> liveServersFromWALDir)</code>
+<div class="block">Find out the region servers crashed between the crash of the previous master instance and the
+ current master instance and schedule SCP for them.</div>
+</td>
+</tr>
+<tr id="i12" class="altColor">
<td class="colFirst"><code>private <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/ServerManager.html#findServerWithSameHostnamePortWithLock-org.apache.hadoop.hbase.ServerName-">findServerWithSameHostnamePortWithLock</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName)</code>
<div class="block">Assumes onlineServers is locked.</div>
</td>
</tr>
-<tr id="i12" class="altColor">
+<tr id="i13" class="rowColor">
<td class="colFirst"><code>double</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#getAverageLoad--">getAverageLoad</a></span>()</code>
<div class="block">Compute the average load across all region servers.</div>
</td>
</tr>
-<tr id="i13" class="rowColor">
-<td class="colFirst"><code>(package 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><<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/ServerManager.html#getDeadNotExpiredServers--">getDeadNotExpiredServers</a></span>()</code> </td>
-</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/master/DeadServer.html" title="class in org.apache.hadoop.hbase.master">DeadServer</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#getDeadServers--">getDeadServers</a></span>()</code> </td>
@@ -377,108 +427,113 @@ 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/master/ServerManager.html#getDrainingServersList--">getDrainingServersList</a></span>()</code> </td>
</tr>
<tr id="i16" class="altColor">
+<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentNavigableMap.html?is-external=true" title="class or interface in java.util.concurrent">ConcurrentNavigableMap</a><byte[],<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>></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#getFlushedSequenceIdByRegion--">getFlushedSequenceIdByRegion</a></span>()</code> </td>
+</tr>
+<tr id="i17" class="rowColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#getInfoPort-org.apache.hadoop.hbase.ServerName-">getInfoPort</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName)</code> </td>
</tr>
-<tr id="i17" class="rowColor">
+<tr id="i18" class="altColor">
<td class="colFirst"><code>org.apache.hadoop.hbase.shaded.protobuf.generated.ClusterStatusProtos.RegionStoreSequenceIds</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#getLastFlushedSequenceId-byte:A-">getLastFlushedSequenceId</a></span>(byte[] encodedRegionName)</code> </td>
</tr>
-<tr id="i18" class="altColor">
+<tr id="i19" class="rowColor">
<td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/ServerMetrics.html" title="interface in org.apache.hadoop.hbase">ServerMetrics</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#getLoad-org.apache.hadoop.hbase.ServerName-">getLoad</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName)</code> </td>
</tr>
-<tr id="i19" class="rowColor">
+<tr id="i20" class="altColor">
<td class="colFirst"><code>private int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#getMinToStart--">getMinToStart</a></span>()</code>
<div class="block">Calculate min necessary to start.</div>
</td>
</tr>
-<tr id="i20" class="altColor">
+<tr id="i21" 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><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>,<a href="../../../../../org/apache/hadoop/hbase/ServerMetrics.html" title="interface in org.apache.hadoop.hbase">ServerMetrics</a>></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#getOnlineServers--">getOnlineServers</a></span>()</code> </td>
</tr>
-<tr id="i21" class="rowColor">
+<tr id="i22" 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><<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/ServerManager.html#getOnlineServersList--">getOnlineServersList</a></span>()</code> </td>
</tr>
-<tr id="i22" class="altColor">
+<tr id="i23" 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><<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/ServerManager.html#getOnlineServersListWithPredicator-java.util.List-java.util.function.Predicate-">getOnlineServersListWithPredicator</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><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>> keys,
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/Predicate.html?is-external=true" title="class or interface in java.util.function">Predicate</a><<a href="../../../../../org/apache/hadoop/hbase/ServerMetrics.html" title="interface in org.apache.hadoop.hbase">ServerMetrics</a>> idleServerPredicator)</code> </td>
</tr>
-<tr id="i23" class="rowColor">
+<tr id="i24" 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><<a href="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/ServerManager.html#getRegionServersInZK-org.apache.hadoop.hbase.zookeeper.ZKWatcher-">getRegionServersInZK</a></span>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a> zkw)</code> </td>
</tr>
-<tr id="i24" class="altColor">
+<tr id="i25" class="rowColor">
<td class="colFirst"><code>org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.AdminService.BlockingInterface</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#getRsAdmin-org.apache.hadoop.hbase.ServerName-">getRsAdmin</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> sn)</code> </td>
</tr>
-<tr id="i25" class="rowColor">
+<tr id="i26" class="altColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#getServerVersion-org.apache.hadoop.hbase.ServerName-">getServerVersion</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName)</code>
<div class="block">May return 0 when server is not online.</div>
</td>
</tr>
-<tr id="i26" class="altColor">
+<tr id="i27" 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/master/ServerManager.html#getStrForMax-int-">getStrForMax</a></span>(int max)</code> </td>
</tr>
-<tr id="i27" class="rowColor">
+<tr id="i28" 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/ServerManager.html#isClusterShutdown--">isClusterShutdown</a></span>()</code> </td>
</tr>
-<tr id="i28" 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/master/ServerManager.html#isRegionInServerManagerStates-org.apache.hadoop.hbase.client.RegionInfo-">isRegionInServerManagerStates</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> hri)</code> </td>
</tr>
-<tr id="i29" 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/master/ServerManager.html#isServerDead-org.apache.hadoop.hbase.ServerName-">isServerDead</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName)</code>
<div class="block">Check if a server is known to be dead.</div>
</td>
</tr>
-<tr id="i30" class="altColor">
+<tr id="i31" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#isServerOnline-org.apache.hadoop.hbase.ServerName-">isServerOnline</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName)</code> </td>
</tr>
-<tr id="i31" class="rowColor">
+<tr id="i32" 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/ServerManager.html#letRegionServersShutdown--">letRegionServersShutdown</a></span>()</code> </td>
</tr>
-<tr id="i32" class="altColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#moveFromOnlineToDeadServers-org.apache.hadoop.hbase.ServerName-">moveFromOnlineToDeadServers</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> sn)</code> </td>
-</tr>
<tr id="i33" class="rowColor">
-<td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/ipc/HBaseRpcController.html" title="interface in org.apache.hadoop.hbase.ipc">HBaseRpcController</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#newRpcController--">newRpcController</a></span>()</code> </td>
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#loadLastFlushedSequenceIds--">loadLastFlushedSequenceIds</a></span>()</code>
+<div class="block">Load last flushed sequence id of each region from HDFS, if persisted</div>
+</td>
</tr>
<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/ServerManager.html#processDeadServer-org.apache.hadoop.hbase.ServerName-boolean-">processDeadServer</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName,
- boolean shouldSplitWal)</code> </td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#moveFromOnlineToDeadServers-org.apache.hadoop.hbase.ServerName-">moveFromOnlineToDeadServers</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> sn)</code> </td>
</tr>
<tr id="i35" class="rowColor">
-<td class="colFirst"><code>(package private) void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#processQueuedDeadServers--">processQueuedDeadServers</a></span>()</code>
-<div class="block">Process the servers which died during master's initialization.</div>
-</td>
+<td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/ipc/HBaseRpcController.html" title="interface in org.apache.hadoop.hbase.ipc">HBaseRpcController</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#newRpcController--">newRpcController</a></span>()</code> </td>
</tr>
<tr id="i36" class="altColor">
+<td class="colFirst"><code>private void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#persistRegionLastFlushedSequenceIds--">persistRegionLastFlushedSequenceIds</a></span>()</code>
+<div class="block">Persist last flushed sequence id of each region to HDFS</div>
+</td>
+</tr>
+<tr id="i37" class="rowColor">
<td class="colFirst"><code>(package private) void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#recordNewServerWithLock-org.apache.hadoop.hbase.ServerName-org.apache.hadoop.hbase.ServerMetrics-">recordNewServerWithLock</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName,
<a href="../../../../../org/apache/hadoop/hbase/ServerMetrics.html" title="interface in org.apache.hadoop.hbase">ServerMetrics</a> sl)</code>
<div class="block">Adds the onlineServers list.</div>
</td>
</tr>
-<tr id="i37" class="rowColor">
+<tr id="i38" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#regionServerReport-org.apache.hadoop.hbase.ServerName-org.apache.hadoop.hbase.ServerMetrics-">regionServerReport</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> sn,
<a href="../../../../../org/apache/hadoop/hbase/ServerMetrics.html" title="interface in org.apache.hadoop.hbase">ServerMetrics</a> sl)</code> </td>
</tr>
-<tr id="i38" class="altColor">
+<tr id="i39" class="rowColor">
<td class="colFirst"><code>(package private) <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/ServerManager.html#regionServerStartup-org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionServerStartupRequest-int-java.net.InetAddress-">regionServerStartup</a></span>(org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionServerStartupRequest request,
int versionNumber,
@@ -486,66 +541,72 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<div class="block">Let the server manager know a new regionserver has come online</div>
</td>
</tr>
-<tr id="i39" class="rowColor">
+<tr id="i40" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#registerListener-org.apache.hadoop.hbase.master.ServerListener-">registerListener</a></span>(<a href="../../../../../org/apache/hadoop/hbase/master/ServerListener.html" title="interface in org.apache.hadoop.hbase.master">ServerListener</a> listener)</code>
<div class="block">Add the listener to the notification list.</div>
</td>
</tr>
-<tr id="i40" 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/ServerManager.html#removeDeadNotExpiredServers-java.util.List-">removeDeadNotExpiredServers</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><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>> servers)</code>
-<div class="block">Loop through the deadNotExpired server list and remove them from the
- servers.</div>
+<tr id="i41" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#removeDeletedRegionFromLoadedFlushedSequenceIds--">removeDeletedRegionFromLoadedFlushedSequenceIds</a></span>()</code>
+<div class="block">Regions may have been removed between latest persist of FlushedSequenceIds
+ and master abort.</div>
</td>
</tr>
-<tr id="i41" class="rowColor">
+<tr id="i42" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#removeRegion-org.apache.hadoop.hbase.client.RegionInfo-">removeRegion</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo)</code>
<div class="block">Called by delete table and similar to notify the ServerManager that a region was removed.</div>
</td>
</tr>
-<tr id="i42" class="altColor">
+<tr id="i43" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#removeRegions-java.util.List-">removeRegions</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><<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>> regions)</code>
<div class="block">Called by delete table and similar to notify the ServerManager that a region was removed.</div>
</td>
</tr>
-<tr id="i43" class="rowColor">
+<tr id="i44" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#removeServerFromDrainList-org.apache.hadoop.hbase.ServerName-">removeServerFromDrainList</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> sn)</code> </td>
</tr>
-<tr id="i44" class="altColor">
+<tr id="i45" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#sendRegionWarmup-org.apache.hadoop.hbase.ServerName-org.apache.hadoop.hbase.client.RegionInfo-">sendRegionWarmup</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> server,
<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> region)</code>
<div class="block">Sends a WARMUP RPC to the specified server to warmup the specified region.</div>
</td>
</tr>
-<tr id="i45" class="rowColor">
+<tr id="i46" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#shutdownCluster--">shutdownCluster</a></span>()</code> </td>
</tr>
-<tr id="i46" 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/master/ServerManager.html#startChore--">startChore</a></span>()</code>
+<div class="block">start chore in ServerManager</div>
+</td>
+</tr>
+<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/master/ServerManager.html#stop--">stop</a></span>()</code>
<div class="block">Stop the ServerManager.</div>
</td>
</tr>
-<tr id="i47" class="rowColor">
+<tr id="i49" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#unregisterListener-org.apache.hadoop.hbase.master.ServerListener-">unregisterListener</a></span>(<a href="../../../../../org/apache/hadoop/hbase/master/ServerListener.html" title="interface in org.apache.hadoop.hbase.master">ServerListener</a> listener)</code>
<div class="block">Remove the listener from the notification list.</div>
</td>
</tr>
-<tr id="i48" class="altColor">
+<tr id="i50" class="altColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#updateLastFlushedSequenceIds-org.apache.hadoop.hbase.ServerName-org.apache.hadoop.hbase.ServerMetrics-">updateLastFlushedSequenceIds</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> sn,
<a href="../../../../../org/apache/hadoop/hbase/ServerMetrics.html" title="interface in org.apache.hadoop.hbase">ServerMetrics</a> hsl)</code>
<div class="block">Updates last flushed sequence Ids for the regions on server sn</div>
</td>
</tr>
-<tr id="i49" class="rowColor">
+<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/master/ServerManager.html#waitForRegionServers-org.apache.hadoop.hbase.monitoring.MonitoredTask-">waitForRegionServers</a></span>(<a href="../../../../../org/apache/hadoop/hbase/monitoring/MonitoredTask.html" title="interface in org.apache.hadoop.hbase.monitoring">MonitoredTask</a> status)</code>
<div class="block">Wait for the region servers to report in.</div>
@@ -579,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>WAIT_ON_REGIONSERVERS_MAXTOSTART</h4>
-<pre>public static final <a href="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/ServerManager.html#line.97">WAIT_ON_REGIONSERVERS_MAXTOSTART</a></pre>
+<pre>public static final <a href="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/ServerManager.html#line.106">WAIT_ON_REGIONSERVERS_MAXTOSTART</a></pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.master.ServerManager.WAIT_ON_REGIONSERVERS_MAXTOSTART">Constant Field Values</a></dd>
@@ -592,7 +653,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>WAIT_ON_REGIONSERVERS_MINTOSTART</h4>
-<pre>public static final <a href="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/ServerManager.html#line.100">WAIT_ON_REGIONSERVERS_MINTOSTART</a></pre>
+<pre>public static final <a href="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/ServerManager.html#line.109">WAIT_ON_REGIONSERVERS_MINTOSTART</a></pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.master.ServerManager.WAIT_ON_REGIONSERVERS_MINTOSTART">Constant Field Values</a></dd>
@@ -605,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>WAIT_ON_REGIONSERVERS_TIMEOUT</h4>
-<pre>public static final <a href="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/ServerManager.html#line.103">WAIT_ON_REGIONSERVERS_TIMEOUT</a></pre>
+<pre>public static final <a href="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/ServerManager.html#line.112">WAIT_ON_REGIONSERVERS_TIMEOUT</a></pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.master.ServerManager.WAIT_ON_REGIONSERVERS_TIMEOUT">Constant Field Values</a></dd>
@@ -618,20 +679,75 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>WAIT_ON_REGIONSERVERS_INTERVAL</h4>
-<pre>public static final <a href="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/ServerManager.html#line.106">WAIT_ON_REGIONSERVERS_INTERVAL</a></pre>
+<pre>public static final <a href="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/ServerManager.html#line.115">WAIT_ON_REGIONSERVERS_INTERVAL</a></pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.master.ServerManager.WAIT_ON_REGIONSERVERS_INTERVAL">Constant Field Values</a></dd>
</dl>
</li>
</ul>
+<a name="PERSIST_FLUSHEDSEQUENCEID">
+<!-- -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>PERSIST_FLUSHEDSEQUENCEID</h4>
+<pre>public static final <a href="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/ServerManager.html#line.123">PERSIST_FLUSHEDSEQUENCEID</a></pre>
+<div class="block">see HBASE-20727
+ if set to true, flushedSequenceIdByRegion and storeFlushedSequenceIdsByRegion
+ will be persisted to HDFS and loaded when master restart to speed up log split</div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.master.ServerManager.PERSIST_FLUSHEDSEQUENCEID">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="PERSIST_FLUSHEDSEQUENCEID_DEFAULT">
+<!-- -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>PERSIST_FLUSHEDSEQUENCEID_DEFAULT</h4>
+<pre>public static final boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.126">PERSIST_FLUSHEDSEQUENCEID_DEFAULT</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.master.ServerManager.PERSIST_FLUSHEDSEQUENCEID_DEFAULT">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="FLUSHEDSEQUENCEID_FLUSHER_INTERVAL">
+<!-- -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>FLUSHEDSEQUENCEID_FLUSHER_INTERVAL</h4>
+<pre>public static final <a href="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/ServerManager.html#line.128">FLUSHEDSEQUENCEID_FLUSHER_INTERVAL</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.master.ServerManager.FLUSHEDSEQUENCEID_FLUSHER_INTERVAL">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="FLUSHEDSEQUENCEID_FLUSHER_INTERVAL_DEFAULT">
+<!-- -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>FLUSHEDSEQUENCEID_FLUSHER_INTERVAL_DEFAULT</h4>
+<pre>public static final int <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.131">FLUSHEDSEQUENCEID_FLUSHER_INTERVAL_DEFAULT</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.master.ServerManager.FLUSHEDSEQUENCEID_FLUSHER_INTERVAL_DEFAULT">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
<a name="LOG">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>LOG</h4>
-<pre>private static final org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.109">LOG</a></pre>
+<pre>private static final org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.134">LOG</a></pre>
</li>
</ul>
<a name="clusterShutdown">
@@ -640,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>clusterShutdown</h4>
-<pre>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> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.112">clusterShutdown</a></pre>
+<pre>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> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.137">clusterShutdown</a></pre>
</li>
</ul>
<a name="flushedSequenceIdByRegion">
@@ -649,17 +765,58 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>flushedSequenceIdByRegion</h4>
-<pre>private final <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentNavigableMap.html?is-external=true" title="class or interface in java.util.concurrent">ConcurrentNavigableMap</a><byte[],<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>> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.117">flushedSequenceIdByRegion</a></pre>
+<pre>private final <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentNavigableMap.html?is-external=true" title="class or interface in java.util.concurrent">ConcurrentNavigableMap</a><byte[],<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>> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.142">flushedSequenceIdByRegion</a></pre>
<div class="block">The last flushed sequence id for a region.</div>
</li>
</ul>
+<a name="persistFlushedSequenceId">
+<!-- -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>persistFlushedSequenceId</h4>
+<pre>private boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.145">persistFlushedSequenceId</a></pre>
+</li>
+</ul>
+<a name="isFlushSeqIdPersistInProgress">
+<!-- -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>isFlushSeqIdPersistInProgress</h4>
+<pre>private volatile boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.146">isFlushSeqIdPersistInProgress</a></pre>
+</li>
+</ul>
+<a name="LAST_FLUSHED_SEQ_ID_FILE">
+<!-- -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>LAST_FLUSHED_SEQ_ID_FILE</h4>
+<pre>private static final <a href="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/ServerManager.html#line.148">LAST_FLUSHED_SEQ_ID_FILE</a></pre>
+<div class="block">File on hdfs to store last flushed sequence id of regions</div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.master.ServerManager.LAST_FLUSHED_SEQ_ID_FILE">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="flushedSeqIdFlusher">
+<!-- -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>flushedSeqIdFlusher</h4>
+<pre>private <a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.FlushedSequenceIdFlusher.html" title="class in org.apache.hadoop.hbase.master">ServerManager.FlushedSequenceIdFlusher</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.149">flushedSeqIdFlusher</a></pre>
+</li>
+</ul>
<a name="storeFlushedSequenceIdsByRegion">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>storeFlushedSequenceIdsByRegion</h4>
-<pre>private final <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentNavigableMap.html?is-external=true" title="class or interface in java.util.concurrent">ConcurrentNavigableMap</a><byte[],<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentNavigableMap.html?is-external=true" title="class or interface in java.util.concurrent">ConcurrentNavigableMap</a><byte[],<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>>> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.124">storeFlushedSequenceIdsByRegion</a></pre>
+<pre>private final <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentNavigableMap.html?is-external=true" title="class or interface in java.util.concurrent">ConcurrentNavigableMap</a><byte[],<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentNavigableMap.html?is-external=true" title="class or interface in java.util.concurrent">ConcurrentNavigableMap</a><byte[],<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>>> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.156">storeFlushedSequenceIdsByRegion</a></pre>
<div class="block">The last flushed sequence id for a store in a region.</div>
</li>
</ul>
@@ -669,7 +826,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>onlineServers</h4>
-<pre>private final <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentNavigableMap.html?is-external=true" title="class or interface in java.util.concurrent">ConcurrentNavigableMap</a><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>,<a href="../../../../../org/apache/hadoop/hbase/ServerMetrics.html" title="interface in org.apache.hadoop.hbase">ServerMetrics</a>> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.127">onlineServers</a></pre>
+<pre>private final <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentNavigableMap.html?is-external=true" title="class or interface in java.util.concurrent">ConcurrentNavigableMap</a><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>,<a href="../../../../../org/apache/hadoop/hbase/ServerMetrics.html" title="interface in org.apache.hadoop.hbase">ServerMetrics</a>> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.159">onlineServers</a></pre>
<div class="block">Map of registered servers to their current load</div>
</li>
</ul>
@@ -679,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>rsAdmins</h4>
-<pre>private final <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><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>,org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.AdminService.BlockingInterface> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.134">rsAdmins</a></pre>
+<pre>private final <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><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>,org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.AdminService.BlockingInterface> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.166">rsAdmins</a></pre>
<div class="block">Map of admin interfaces per registered regionserver; these interfaces we use to control
regionservers out on the cluster</div>
</li>
@@ -690,7 +847,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>drainingServers</h4>
-<pre>private final <a href="https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.137">drainingServers</a></pre>
+<pre>private final <a href="https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.169">drainingServers</a></pre>
<div class="block">List of region servers that should not get any more new regions.</div>
</li>
</ul>
@@ -700,7 +857,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>master</h4>
-<pre>private final <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices.html" title="interface in org.apache.hadoop.hbase.master">MasterServices</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.139">master</a></pre>
+<pre>private final <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices.html" title="interface in org.apache.hadoop.hbase.master">MasterServices</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.171">master</a></pre>
</li>
</ul>
<a name="connection">
@@ -709,7 +866,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>connection</h4>
-<pre>private final <a href="../../../../../org/apache/hadoop/hbase/client/ClusterConnection.html" title="interface in org.apache.hadoop.hbase.client">ClusterConnection</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.140">connection</a></pre>
+<pre>private final <a href="../../../../../org/apache/hadoop/hbase/client/ClusterConnection.html" title="interface in org.apache.hadoop.hbase.client">ClusterConnection</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.172">connection</a></pre>
</li>
</ul>
<a name="deadservers">
@@ -718,7 +875,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>deadservers</h4>
-<pre>private final <a href="../../../../../org/apache/hadoop/hbase/master/DeadServer.html" title="class in org.apache.hadoop.hbase.master">DeadServer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.142">deadservers</a></pre>
+<pre>private final <a href="../../../../../org/apache/hadoop/hbase/master/DeadServer.html" title="class in org.apache.hadoop.hbase.master">DeadServer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.174">deadservers</a></pre>
</li>
</ul>
<a name="maxSkew">
@@ -727,7 +884,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>maxSkew</h4>
-<pre>private final long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.144">maxSkew</a></pre>
+<pre>private final long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.176">maxSkew</a></pre>
</li>
</ul>
<a name="warningSkew">
@@ -736,7 +893,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>warningSkew</h4>
-<pre>private final long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.145">warningSkew</a></pre>
+<pre>private final long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.177">warningSkew</a></pre>
</li>
</ul>
<a name="rpcControllerFactory">
@@ -745,52 +902,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>rpcControllerFactory</h4>
-<pre>private final <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcControllerFactory.html" title="class in org.apache.hadoop.hbase.ipc">RpcControllerFactory</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.147">rpcControllerFactory</a></pre>
-</li>
-</ul>
-<a name="queuedDeadServers">
-<!-- -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>queuedDeadServers</h4>
-<pre>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><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.165">queuedDeadServers</a></pre>
-<div class="block">Set of region servers which are dead but not processed immediately. If one
- server died before master enables ServerShutdownHandler, the server will be
- added to this set and will be processed through calling
- <a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#processQueuedDeadServers--"><code>processQueuedDeadServers()</code></a> by master.
- <p>
- A dead server is a server instance known to be dead, not listed in the /hbase/rs
- znode any more. It may have not been submitted to ServerShutdownHandler yet
- because the handler is not enabled.
- <p>
- A dead server, which has been submitted to ServerShutdownHandler while the
- handler is not enabled, is queued up.
- <p>
- So this is a set of region servers known to be dead but not submitted to
- ServerShutdownHandler for processing yet.</div>
-</li>
-</ul>
-<a name="requeuedDeadServers">
-<!-- -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>requeuedDeadServers</h4>
-<pre>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><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.182">requeuedDeadServers</a></pre>
-<div class="block">Set of region servers which are dead and submitted to ServerShutdownHandler to process but not
- fully processed immediately.
- <p>
- If one server died before assignment manager finished the failover cleanup, the server will be
- added to this set and will be processed through calling
- <a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#processQueuedDeadServers--"><code>processQueuedDeadServers()</code></a> by assignment manager.
- <p>
- The Boolean value indicates whether log split is needed inside ServerShutdownHandler
- <p>
- ServerShutdownHandler processes a dead server submitted to the handler after the handler is
- enabled. It may not be able to complete the processing because meta is not yet online or master
- is currently in startup mode. In this case, the dead server will be parked in this set
- temporarily.</div>
+<pre>private final <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcControllerFactory.html" title="class in org.apache.hadoop.hbase.ipc">RpcControllerFactory</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.179">rpcControllerFactory</a></pre>
</li>
</ul>
<a name="listeners">
@@ -799,7 +911,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockListLast">
<li class="blockList">
<h4>listeners</h4>
-<pre>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><<a href="../../../../../org/apache/hadoop/hbase/master/ServerListener.html" title="interface in org.apache.hadoop.hbase.master">ServerListener</a>> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.185">listeners</a></pre>
+<pre>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><<a href="../../../../../org/apache/hadoop/hbase/master/ServerListener.html" title="interface in org.apache.hadoop.hbase.master">ServerListener</a>> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.182">listeners</a></pre>
<div class="block">Listeners that are called on server events.</div>
</li>
</ul>
@@ -817,7 +929,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockListLast">
<li class="blockList">
<h4>ServerManager</h4>
-<pre>public <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.190">ServerManager</a>(<a href="../../../../../org/apache/hadoop/hbase/master/MasterServices.html" title="interface in org.apache.hadoop.hbase.master">MasterServices</a> master)</pre>
+<pre>public <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.187">ServerManager</a>(<a href="../../../../../org/apache/hadoop/hbase/master/MasterServices.html" title="interface in org.apache.hadoop.hbase.master">MasterServices</a> master)</pre>
<div class="block">Constructor.</div>
</li>
</ul>
@@ -835,7 +947,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>registerListener</h4>
-<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.203">registerListener</a>(<a href="../../../../../org/apache/hadoop/hbase/master/ServerListener.html" title="interface in org.apache.hadoop.hbase.master">ServerListener</a> listener)</pre>
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.202">registerListener</a>(<a href="../../../../../org/apache/hadoop/hbase/master/ServerListener.html" title="interface in org.apache.hadoop.hbase.master">ServerListener</a> listener)</pre>
<div class="block">Add the listener to the notification list.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
@@ -849,7 +961,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>unregisterListener</h4>
-<pre>public boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.211">unregisterListener</a>(<a href="../../../../../org/apache/hadoop/hbase/master/ServerListener.html" title="interface in org.apache.hadoop.hbase.master">ServerListener</a> listener)</pre>
+<pre>public boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.210">unregisterListener</a>(<a href="../../../../../org/apache/hadoop/hbase/master/ServerListener.html" title="interface in org.apache.hadoop.hbase.master">ServerListener</a> listener)</pre>
<div class="block">Remove the listener from the notification list.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
@@ -863,7 +975,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>regionServerStartup</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.223">regionServerStartup</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionServerStartupRequest request,
+<pre><a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.222">regionServerStartup</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionServerStartupRequest request,
int versionNumber,
<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> ia)
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>
@@ -886,7 +998,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>updateLastFlushedSequenceIds</h4>
-<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.251">updateLastFlushedSequenceIds</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> sn,
+<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.250">updateLastFlushedSequenceIds</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> sn,
<a href="../../../../../org/apache/hadoop/hbase/ServerMetrics.html" title="interface in org.apache.hadoop.hbase">ServerMetrics</a> hsl)</pre>
<div class="block">Updates last flushed sequence Ids for the regions on server sn</div>
<dl>
@@ -902,7 +1014,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>regionServerReport</h4>
-<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.288">regionServerReport</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> sn,
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.287">regionServerReport</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> sn,
<a href="../../../../../org/apache/hadoop/hbase/ServerMetrics.html" title="interface in org.apache.hadoop.hbase">ServerMetrics</a> sl)
throws <a href="../../../../../org/apache/hadoop/hbase/YouAreDeadException.html" title="class in org.apache.hadoop.hbase">YouAreDeadException</a></pre>
<dl>
@@ -917,7 +1029,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>checkAndRecordNewServer</h4>
-<pre>boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.314">checkAndRecordNewServer</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName,
+<pre>boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.313">checkAndRecordNewServer</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName,
<a href="../../../../../org/apache/hadoop/hbase/ServerMetrics.html" title="interface in org.apache.hadoop.hbase">ServerMetrics</a> sl)</pre>
<div class="block">Check is a server of same host and port already exists,
if not, or the existed one got a smaller start code, record it.</div>
@@ -930,13 +1042,37 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
</dl>
</li>
</ul>
+<a name="findOutDeadServersAndProcess-java.util.Set-java.util.Set-">
+<!-- -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>findOutDeadServersAndProcess</h4>
+<pre>void <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.356">findOutDeadServersAndProcess</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><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>> deadServersFromPE,
+ <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><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>> liveServersFromWALDir)</pre>
+<div class="block">Find out the region servers crashed between the crash of the previous master instance and the
+ current master instance and schedule SCP for them.
+ <p/>
+ Since the <code>RegionServerTracker</code> has already helped us to construct the online servers set
+ by scanning zookeeper, now we can compare the online servers with <code>liveServersFromWALDir</code>
+ to find out whether there are servers which are already dead.
+ <p/>
+ Must be called inside the initialization method of <code>RegionServerTracker</code> to avoid
+ concurrency issue.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>deadServersFromPE</code> - the region servers which already have SCP associated.</dd>
+<dd><code>liveServersFromWALDir</code> - the live region servers from wal directory.</dd>
+</dl>
+</li>
+</ul>
<a name="checkClockSkew-org.apache.hadoop.hbase.ServerName-long-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>checkClockSkew</h4>
-<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.352">checkClockSkew</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName,
+<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.371">checkClockSkew</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName,
long serverCurrentTime)
throws <a href="../../../../../org/apache/hadoop/hbase/ClockOutOfSyncException.html" title="class in org.apache.hadoop.hbase">ClockOutOfSyncException</a></pre>
<div class="block">Checks if the clock skew between the server and the master. If the clock skew exceeds the
@@ -957,7 +1093,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>checkIsDead</h4>
-<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.377">checkIsDead</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName,
+<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.394">checkIsDead</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> what)
throws <a href="../../../../../org/apache/hadoop/hbase/YouAreDeadException.html" title="class in org.apache.hadoop.hbase">YouAreDeadException</a></pre>
<div class="block">If this server is on the dead list, reject it with a YouAreDeadException.
@@ -965,7 +1101,6 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
from the dead list.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>serverName</code> - </dd>
<dd><code>what</code> - START or REPORT</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../../org/apache/hadoop/hbase/YouAreDeadException.html" title="class in org.apache.hadoop.hbase">YouAreDeadException</a></code></dd>
@@ -978,7 +1113,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>findServerWithSameHostnamePortWithLock</h4>
-<pre>private <a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.402">findServerWithSameHostnamePortWithLock</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName)</pre>
+<pre>private <a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.419">findServerWithSameHostnamePortWithLock</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName)</pre>
<div class="block">Assumes onlineServers is locked.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
@@ -992,7 +1127,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>recordNewServerWithLock</h4>
-<pre>void <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.421">recordNewServerWithLock</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName,
+<pre>void <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.438">recordNewServerWithLock</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName,
<a href="../../../../../org/apache/hadoop/hbase/ServerMetrics.html" title="interface in org.apache.hadoop.hbase">ServerMetrics</a> sl)</pre>
<div class="block">Adds the onlineServers list. onlineServers should be locked.</div>
<dl>
@@ -1001,13 +1136,22 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
</dl>
</li>
</ul>
+<a name="getFlushedSequenceIdByRegion--">
+<!-- -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getFlushedSequenceIdByRegion</h4>
+<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentNavigableMap.html?is-external=true" title="class or interface in java.util.concurrent">ConcurrentNavigableMap</a><byte[],<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>> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.445">getFlushedSequenceIdByRegion</a>()</pre>
+</li>
+</ul>
<a name="getLastFlushedSequenceId-byte:A-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getLastFlushedSequenceId</h4>
-<pre>public org.apache.hadoop.hbase.shaded.protobuf.generated.ClusterStatusProtos.RegionStoreSequenceIds <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.427">getLastFlushedSequenceId</a>(byte[] encodedRegionName)</pre>
+<pre>public org.apache.hadoop.hbase.shaded.protobuf.generated.ClusterStatusProtos.RegionStoreSequenceIds <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.449">getLastFlushedSequenceId</a>(byte[] encodedRegionName)</pre>
</li>
</ul>
<a name="getLoad-org.apache.hadoop.hbase.ServerName-">
@@ -1016,7 +1160,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>getLoad</h4>
-<pre>public <a href="../../../../../org/apache/hadoop/hbase/ServerMetrics.html" title="interface in org.apache.hadoop.hbase">ServerMetrics</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.447">getLoad</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName)</pre>
+<pre>public <a href="../../../../../org/apache/hadoop/hbase/ServerMetrics.html" title="interface in org.apache.hadoop.hbase">ServerMetrics</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.469">getLoad</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName)</pre>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>serverName</code> - </dd>
@@ -1031,7 +1175,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>getAverageLoad</h4>
-<pre>public double <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.457">getAverageLoad</a>()</pre>
+<pre>public double <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.479">getAverageLoad</a>()</pre>
<div class="block">Compute the average load across all region servers.
Currently, this uses a very naive computation - just uses the number of
regions being served, ignoring stats about number of requests.</div>
@@ -1047,7 +1191,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>countOfRegionServers</h4>
-<pre>public int <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.469">countOfRegionServers</a>()</pre>
+<pre>public int <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.491">countOfRegionServers</a>()</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the count of active regionservers</dd>
@@ -1060,7 +1204,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>getOnlineServers</h4>
-<pre>public <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><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>,<a href="../../../../../org/apache/hadoop/hbase/ServerMetrics.html" title="interface in org.apache.hadoop.hbase">ServerMetrics</a>> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.477">getOnlineServers</a>()</pre>
+<pre>public <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><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>,<a href="../../../../../org/apache/hadoop/hbase/ServerMetrics.html" title="interface in org.apache.hadoop.hbase">ServerMetrics</a>> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.499">getOnlineServers</a>()</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Read-only map of servers to serverinfo</dd>
@@ -1073,7 +1217,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>getDeadServers</h4>
-<pre>public <a href="../../../../../org/apache/hadoop/hbase/master/DeadServer.html" title="class in org.apache.hadoop.hbase.master">DeadServer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.484">getDeadServers</a>()</pre>
+<pre>public <a href="../../../../../org/apache/hadoop/hbase/master/DeadServer.html" title="class in org.apache.hadoop.hbase.master">DeadServer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.506">getDeadServers</a>()</pre>
</li>
</ul>
<a name="areDeadServersInProgress--">
@@ -1082,7 +1226,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>areDeadServersInProgress</h4>
-<pre>public boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.492">areDeadServersInProgress</a>()</pre>
+<pre>public boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.514">areDeadServersInProgress</a>()</pre>
<div class="block">Checks if any dead servers are currently in progress.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
@@ -1096,7 +1240,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>letRegionServersShutdown</h4>
-<pre>void <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.496">letRegionServersShutdown</a>()</pre>
+<pre>void <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.518">letRegionServersShutdown</a>()</pre>
</li>
</ul>
<a name="getRegionServersInZK-org.apache.hadoop.hbase.zookeeper.ZKWatcher-">
@@ -1105,7 +1249,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>getRegionServersInZK</h4>
-<pre>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><<a href="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/ServerManager.html#line.546">getRegionServersInZK</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a> zkw)
+<pre>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><<a href="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/ServerManager.html#line.568">getRegionServersInZK</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a> zkw)
throws org.apache.zookeeper.KeeperException</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
@@ -1119,7 +1263,15 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>expireServer</h4>
-<pre>public boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.559">expireServer</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName)</pre>
+<pre>public boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/ServerManager.html#line.580">expireServer</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName)</pre>
+<div class="block">Expire the passed server. Add it to list of dead servers and queue a shutdown processing.</div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>True if we queued a ServerCrashProcedure else false if we did not (could happen for
+ many reasons including the fact that its this server that is going down or we already
+ have queued an SCP for this server or SCP processing is currently disabled because we
+ are in startup phase).</dd>
+</dl>
</li>
</ul>
<a name="moveFromOnlineToDeadServers-org.apache.hadoop.hbase.ServerName-">
@@ -1128,28 +1280,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>moveFromOnlineToDeadServers</h4>
-<pre>public void <a
<TRUNCATED>
[42/51] [partial] hbase-site git commit: Published site at
9101fc246f86445006bfbcdfda5cc495016dc280.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/client/class-use/RegionInfo.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/client/class-use/RegionInfo.html b/devapidocs/org/apache/hadoop/hbase/client/class-use/RegionInfo.html
index a22e91f..41db305 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/class-use/RegionInfo.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/class-use/RegionInfo.html
@@ -2923,8 +2923,8 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private void</code></td>
-<td class="colLast"><span class="typeNameLabel">AssignmentManager.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#checkFailoverCleanupCompleted-org.apache.hadoop.hbase.client.RegionInfo-">checkFailoverCleanupCompleted</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> hri)</code>
-<div class="block">Used to check if the failover cleanup is done.</div>
+<td class="colLast"><span class="typeNameLabel">AssignmentManager.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#checkMetaLoaded-org.apache.hadoop.hbase.client.RegionInfo-">checkMetaLoaded</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> hri)</code>
+<div class="block">Used to check if the meta loading is done.</div>
</td>
</tr>
<tr class="rowColor">
@@ -3025,12 +3025,12 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionToMergeB)</code> </td>
</tr>
<tr class="rowColor">
-<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a></code></td>
-<td class="colLast"><span class="typeNameLabel">AssignmentManager.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#getMetaForRegion-org.apache.hadoop.hbase.client.RegionInfo-">getMetaForRegion</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo)</code> </td>
+<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureEvent.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureEvent</a><?></code></td>
+<td class="colLast"><span class="typeNameLabel">AssignmentManager.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#getMetaAssignEvent-org.apache.hadoop.hbase.client.RegionInfo-">getMetaAssignEvent</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> metaRegionInfo)</code> </td>
</tr>
<tr class="altColor">
-<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureEvent.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureEvent</a></code></td>
-<td class="colLast"><span class="typeNameLabel">AssignmentManager.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#getMetaInitializedEvent-org.apache.hadoop.hbase.client.RegionInfo-">getMetaInitializedEvent</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> metaRegionInfo)</code> </td>
+<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a></code></td>
+<td class="colLast"><span class="typeNameLabel">AssignmentManager.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#getMetaForRegion-org.apache.hadoop.hbase.client.RegionInfo-">getMetaForRegion</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo)</code> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private long</code></td>
@@ -3172,8 +3172,8 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private void</code></td>
-<td class="colLast"><span class="typeNameLabel">AssignmentManager.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#setMetaInitialized-org.apache.hadoop.hbase.client.RegionInfo-boolean-">setMetaInitialized</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> metaRegionInfo,
- boolean isInitialized)</code> </td>
+<td class="colLast"><span class="typeNameLabel">AssignmentManager.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#setMetaAssigned-org.apache.hadoop.hbase.client.RegionInfo-boolean-">setMetaAssigned</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> metaRegionInfo,
+ boolean assigned)</code> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected void</code></td>
@@ -3204,8 +3204,9 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private void</code></td>
-<td class="colLast"><span class="typeNameLabel">RegionStateStore.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#updateMetaLocation-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.ServerName-">updateMetaLocation</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo,
- <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName)</code> </td>
+<td class="colLast"><span class="typeNameLabel">RegionStateStore.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStateStore.html#updateMetaLocation-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.ServerName-org.apache.hadoop.hbase.master.RegionState.State-">updateMetaLocation</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo,
+ <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName,
+ <a href="../../../../../../org/apache/hadoop/hbase/master/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master">RegionState.State</a> state)</code> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private void</code></td>
@@ -3270,8 +3271,10 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
</tr>
<tr class="altColor">
<td class="colFirst"><code>boolean</code></td>
-<td class="colLast"><span class="typeNameLabel">AssignmentManager.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#waitMetaInitialized-org.apache.hadoop.hbase.procedure2.Procedure-org.apache.hadoop.hbase.client.RegionInfo-">waitMetaInitialized</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> proc,
- <a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo)</code> </td>
+<td class="colLast"><span class="typeNameLabel">AssignmentManager.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#waitMetaAssigned-org.apache.hadoop.hbase.procedure2.Procedure-org.apache.hadoop.hbase.client.RegionInfo-">waitMetaAssigned</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> proc,
+ <a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo)</code>
+<div class="block">Notice that this event does not mean the AM has already finished region state rebuilding.</div>
+</td>
</tr>
</tbody>
</table>
@@ -4246,6 +4249,7 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
<td class="colLast"><span class="typeNameLabel">RecoverMetaProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#handleRIT-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.ServerName-">handleRIT</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> ri,
<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> crashedServerName)</code>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
<div class="block">Is the region stuck assigning to this failedMetaServer? If so, cancel the call
just as we do over in ServerCrashProcedure#handleRIT except less to do here; less context
to carry.</div>
@@ -4263,14 +4267,14 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
-<td class="colLast"><span class="typeNameLabel">MasterProcedureScheduler.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#waitRegion-org.apache.hadoop.hbase.procedure2.Procedure-org.apache.hadoop.hbase.client.RegionInfo-">waitRegion</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> procedure,
+<td class="colLast"><span class="typeNameLabel">MasterProcedureScheduler.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#waitRegion-org.apache.hadoop.hbase.procedure2.Procedure-org.apache.hadoop.hbase.client.RegionInfo-">waitRegion</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> procedure,
<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo)</code>
<div class="block">Suspend the procedure if the specified region is already locked.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>boolean</code></td>
-<td class="colLast"><span class="typeNameLabel">MasterProcedureScheduler.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#waitRegions-org.apache.hadoop.hbase.procedure2.Procedure-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.client.RegionInfo...-">waitRegions</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> procedure,
+<td class="colLast"><span class="typeNameLabel">MasterProcedureScheduler.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#waitRegions-org.apache.hadoop.hbase.procedure2.Procedure-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.client.RegionInfo...-">waitRegions</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> procedure,
<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> table,
<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>... regionInfo)</code>
<div class="block">Suspend the procedure if the specified set of regions are already locked.</div>
@@ -4278,14 +4282,14 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
-<td class="colLast"><span class="typeNameLabel">MasterProcedureScheduler.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#wakeRegion-org.apache.hadoop.hbase.procedure2.Procedure-org.apache.hadoop.hbase.client.RegionInfo-">wakeRegion</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> procedure,
+<td class="colLast"><span class="typeNameLabel">MasterProcedureScheduler.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#wakeRegion-org.apache.hadoop.hbase.procedure2.Procedure-org.apache.hadoop.hbase.client.RegionInfo-">wakeRegion</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> procedure,
<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo)</code>
<div class="block">Wake the procedures waiting for the specified region</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
-<td class="colLast"><span class="typeNameLabel">MasterProcedureScheduler.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#wakeRegions-org.apache.hadoop.hbase.procedure2.Procedure-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.client.RegionInfo...-">wakeRegions</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> procedure,
+<td class="colLast"><span class="typeNameLabel">MasterProcedureScheduler.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#wakeRegions-org.apache.hadoop.hbase.procedure2.Procedure-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.client.RegionInfo...-">wakeRegions</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> procedure,
<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> table,
<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>... regionInfo)</code>
<div class="block">Wake the procedures waiting for the specified regions</div>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/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 fc95504..bbaaedf 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
@@ -552,24 +552,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><E> (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><T>, 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/Consistency.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">Consistency</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncScanSingleRegionRpcRetryingCaller.ScanControllerState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncScanSingleRegionRpcRetryingCaller.ScanControllerState</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/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/RequestController.ReturnCode.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">RequestController.ReturnCode</span></a></li>
<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Durability.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">Durability</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/IsolationLevel.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">IsolationLevel</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/RequestController.ReturnCode.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">RequestController.ReturnCode</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/MobCompactPartitionPolicy.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">MobCompactPartitionPolicy</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/TableState.State.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">TableState.State</span></a></li>
</ul>
</li>
</ul>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/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 6ef2c44..697d3d4 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><E> (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><T>, 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/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>
<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/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/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/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/Filter.ReturnCode.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">Filter.ReturnCode</span></a></li>
</ul>
</li>
</ul>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/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 94e92ef..831cc04 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
@@ -273,12 +273,12 @@
<ul>
<li type="circle">java.lang.<a href="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><E> (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><T>, 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/Cacheable.MemoryType.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">Cacheable.MemoryType</span></a></li>
<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockPriority.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">BlockPriority</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">BlockType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.BlockCategory.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">BlockType.BlockCategory</span></a></li>
<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/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/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>
+<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/BlockType.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">BlockType</span></a></li>
</ul>
</li>
</ul>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/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 6a2998c..7600159 100644
--- a/devapidocs/org/apache/hadoop/hbase/ipc/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/ipc/package-tree.html
@@ -349,9 +349,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><E> (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><T>, 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/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/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>
</ul>
</li>
</ul>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/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 ff8a2f3..dfed8e7 100644
--- a/devapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html
@@ -294,8 +294,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><E> (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><T>, 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/RowCounter.RowCounterMapper.Counters.html" title="enum in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">RowCounter.RowCounterMapper.Counters</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/CellCounter.CellCounterMapper.Counters.html" title="enum in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">CellCounter.CellCounterMapper.Counters</span></a></li>
<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/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/SyncTable.SyncMapper.Counter.html" title="enum in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">SyncTable.SyncMapper.Counter</span></a></li>
</ul>
</li>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/master/CatalogJanitor.SplitParentFirstComparator.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/CatalogJanitor.SplitParentFirstComparator.html b/devapidocs/org/apache/hadoop/hbase/master/CatalogJanitor.SplitParentFirstComparator.html
index 58d3875..3fd5a93 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/CatalogJanitor.SplitParentFirstComparator.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/CatalogJanitor.SplitParentFirstComparator.html
@@ -117,7 +117,7 @@ var activeTableTab = "activeTableTab";
</dl>
<hr>
<br>
-<pre>static class <a href="../../../../../src-html/org/apache/hadoop/hbase/master/CatalogJanitor.html#line.308">CatalogJanitor.SplitParentFirstComparator</a>
+<pre>static class <a href="../../../../../src-html/org/apache/hadoop/hbase/master/CatalogJanitor.html#line.305">CatalogJanitor.SplitParentFirstComparator</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="https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true" title="class or interface in java.util">Comparator</a><<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>></pre>
<div class="block">Compare HRegionInfos in a way that has split parents sort BEFORE their
@@ -216,7 +216,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Comparat
<ul class="blockListLast">
<li class="blockList">
<h4>rowEndKeyComparator</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true" title="class or interface in java.util">Comparator</a><byte[]> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/CatalogJanitor.SplitParentFirstComparator.html#line.309">rowEndKeyComparator</a></pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true" title="class or interface in java.util">Comparator</a><byte[]> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/CatalogJanitor.SplitParentFirstComparator.html#line.306">rowEndKeyComparator</a></pre>
</li>
</ul>
</li>
@@ -233,7 +233,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Comparat
<ul class="blockListLast">
<li class="blockList">
<h4>SplitParentFirstComparator</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/master/CatalogJanitor.SplitParentFirstComparator.html#line.308">SplitParentFirstComparator</a>()</pre>
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/master/CatalogJanitor.SplitParentFirstComparator.html#line.305">SplitParentFirstComparator</a>()</pre>
</li>
</ul>
</li>
@@ -250,7 +250,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Comparat
<ul class="blockListLast">
<li class="blockList">
<h4>compare</h4>
-<pre>public int <a href="../../../../../src-html/org/apache/hadoop/hbase/master/CatalogJanitor.SplitParentFirstComparator.html#line.311">compare</a>(<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> left,
+<pre>public int <a href="../../../../../src-html/org/apache/hadoop/hbase/master/CatalogJanitor.SplitParentFirstComparator.html#line.308">compare</a>(<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> left,
<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> right)</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/master/CatalogJanitor.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/CatalogJanitor.html b/devapidocs/org/apache/hadoop/hbase/master/CatalogJanitor.html
index db5020e..d054a89 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/CatalogJanitor.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/CatalogJanitor.html
@@ -454,7 +454,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" tit
<ul class="blockList">
<li class="blockList">
<h4>getMergedRegionsAndSplitParents</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/util/Triple.html" title="class in org.apache.hadoop.hbase.util">Triple</a><<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>,<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><<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/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a>>,<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><<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/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a>>> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/CatalogJanitor.html#line.139">getMergedRegionsAndSplitParents</a>()
+<pre><a href="../../../../../org/apache/hadoop/hbase/util/Triple.html" title="class in org.apache.hadoop.hbase.util">Triple</a><<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>,<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><<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/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a>>,<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><<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/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a>>> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/CatalogJanitor.html#line.136">getMergedRegionsAndSplitParents</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">Scans hbase:meta and returns a number of scanned rows, and a map of merged
regions, and an ordered map of split parents.</div>
@@ -473,7 +473,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" tit
<ul class="blockList">
<li class="blockList">
<h4>getMergedRegionsAndSplitParents</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/util/Triple.html" title="class in org.apache.hadoop.hbase.util">Triple</a><<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>,<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><<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/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a>>,<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><<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/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a>>> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/CatalogJanitor.html#line.154">getMergedRegionsAndSplitParents</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> tableName)
+<pre><a href="../../../../../org/apache/hadoop/hbase/util/Triple.html" title="class in org.apache.hadoop.hbase.util">Triple</a><<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>,<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><<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/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a>>,<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><<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/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a>>> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/CatalogJanitor.html#line.151">getMergedRegionsAndSplitParents</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> tableName)
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">Scans hbase:meta and returns a number of scanned rows, and a map of merged
regions, and an ordered map of split parents. if the given table name is
@@ -496,7 +496,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" tit
<ul class="blockList">
<li class="blockList">
<h4>cleanMergeRegion</h4>
-<pre>boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/CatalogJanitor.html#line.201">cleanMergeRegion</a>(<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> mergedRegion,
+<pre>boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/CatalogJanitor.html#line.198">cleanMergeRegion</a>(<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> mergedRegion,
<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionA,
<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionB)
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>
@@ -519,7 +519,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" tit
<ul class="blockList">
<li class="blockList">
<h4>scan</h4>
-<pre>int <a href="../../../../../src-html/org/apache/hadoop/hbase/master/CatalogJanitor.html#line.237">scan</a>()
+<pre>int <a href="../../../../../src-html/org/apache/hadoop/hbase/master/CatalogJanitor.html#line.234">scan</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">Run janitorial scan of catalog <code>hbase:meta</code> table looking for
garbage to collect.</div>
@@ -537,7 +537,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" tit
<ul class="blockList">
<li class="blockList">
<h4>cleanParent</h4>
-<pre>boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/CatalogJanitor.html#line.338">cleanParent</a>(<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> parent,
+<pre>boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/CatalogJanitor.html#line.335">cleanParent</a>(<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> parent,
<a href="../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a> rowContent)
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">If daughters no longer hold reference to the parents, delete the parent.</div>
@@ -560,7 +560,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" tit
<ul class="blockList">
<li class="blockList">
<h4>hasNoReferences</h4>
-<pre>private boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/CatalogJanitor.html#line.375">hasNoReferences</a>(<a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a><<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>> p)</pre>
+<pre>private boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/CatalogJanitor.html#line.372">hasNoReferences</a>(<a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a><<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>> p)</pre>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>p</code> - A pair where the first boolean says whether or not the daughter
@@ -577,7 +577,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" tit
<ul class="blockList">
<li class="blockList">
<h4>checkDaughterInFs</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a><<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/CatalogJanitor.html#line.389">checkDaughterInFs</a>(<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> parent,
+<pre><a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a><<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/CatalogJanitor.html#line.386">checkDaughterInFs</a>(<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> parent,
<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> daughter)
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">Checks if a daughter region -- either splitA or splitB -- still holds
@@ -601,7 +601,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" tit
<ul class="blockList">
<li class="blockList">
<h4>getTableDescriptor</h4>
-<pre>private <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/master/CatalogJanitor.html#line.432">getTableDescriptor</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> tableName)
+<pre>private <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/master/CatalogJanitor.html#line.429">getTableDescriptor</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> tableName)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/FileNotFoundException.html?is-external=true" title="class or interface in java.io">FileNotFoundException</a>,
<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>
@@ -617,7 +617,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" tit
<ul class="blockListLast">
<li class="blockList">
<h4>cleanMergeQualifier</h4>
-<pre>public boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/CatalogJanitor.html#line.444">cleanMergeQualifier</a>(<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> region)
+<pre>public boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/CatalogJanitor.html#line.441">cleanMergeQualifier</a>(<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> region)
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">Checks if the specified region has merge qualifiers, if so, try to clean
them</div>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/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 4ece744..be7747c 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.244">HMaster.InitializationMonitor</a>
+<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.247">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 <a href="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.246">TIMEOUT_KEY</a></pre>
+<pre>public static final <a href="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.249">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 long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.247">TIMEOUT_DEFAULT</a></pre>
+<pre>public static final long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.250">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 <a href="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.253">HALT_KEY</a></pre>
+<pre>public static final <a href="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.256">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 boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.254">HALT_DEFAULT</a></pre>
+<pre>public static final boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.257">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 <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.256">master</a></pre>
+<pre>private final <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.259">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 long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.257">timeout</a></pre>
+<pre>private final long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.260">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 boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.258">haltOnTimeout</a></pre>
+<pre>private final boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.261">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.261">InitializationMonitor</a>(<a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a> master)</pre>
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.264">InitializationMonitor</a>(<a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a> 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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.270">run</a>()</pre>
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.273">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> in interface <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/65565d77/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 2f5def1..aca8ed9 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.2785">HMaster.MasterStoppedException</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.2832">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.2786">MasterStoppedException</a>()</pre>
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.MasterStoppedException.html#line.2833">MasterStoppedException</a>()</pre>
</li>
</ul>
</li>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/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 629b62e..65db5fa 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.429">HMaster.RedirectServlet</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.428">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 long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html#line.430">serialVersionUID</a></pre>
+<pre>private static final long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html#line.429">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 int <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html#line.431">regionServerInfoPort</a></pre>
+<pre>private final int <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html#line.430">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 <a href="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.432">regionServerHostname</a></pre>
+<pre>private final <a href="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.431">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 <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html#line.438">RedirectServlet</a>(<a href="../../../../../org/apache/hadoop/hbase/http/InfoServer.html" title="class in org.apache.hadoop.hbase.http">InfoServer</a> infoServer,
+<pre>public <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html#line.437">RedirectServlet</a>(<a href="../../../../../org/apache/hadoop/hbase/http/InfoServer.html" title="class in org.apache.hadoop.hbase.http">InfoServer</a> 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> 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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html#line.444">doGet</a>(javax.servlet.http.HttpServletRequest request,
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html#line.443">doGet</a>(javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse 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>
[03/51] [partial] hbase-site git commit: Published site at
9101fc246f86445006bfbcdfda5cc495016dc280.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html
index 4b5d00c..96ecbf8 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html
@@ -6,7 +6,7 @@
</head>
<body>
<div class="sourceContainer">
-<pre><span class="sourceLineNo">001</span>/*<a name="line.1"></a>
+<pre><span class="sourceLineNo">001</span>/**<a name="line.1"></a>
<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
<span class="sourceLineNo">003</span> * or more contributor license agreements. See the NOTICE file<a name="line.3"></a>
<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
@@ -23,1981 +23,1894 @@
<span class="sourceLineNo">015</span> * See the License for the specific language governing permissions and<a name="line.15"></a>
<span class="sourceLineNo">016</span> * limitations under the License.<a name="line.16"></a>
<span class="sourceLineNo">017</span> */<a name="line.17"></a>
-<span class="sourceLineNo">018</span><a name="line.18"></a>
-<span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.master.assignment;<a name="line.19"></a>
-<span class="sourceLineNo">020</span><a name="line.20"></a>
-<span class="sourceLineNo">021</span>import java.io.IOException;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import java.util.ArrayList;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import java.util.Arrays;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import java.util.Collection;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import java.util.Collections;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import java.util.HashMap;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import java.util.HashSet;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import java.util.List;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import java.util.Map;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import java.util.Set;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import java.util.concurrent.CopyOnWriteArrayList;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import java.util.concurrent.Future;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import java.util.concurrent.TimeUnit;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import java.util.concurrent.locks.Condition;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import java.util.concurrent.locks.ReentrantLock;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import java.util.stream.Collectors;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.conf.Configuration;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.HBaseIOException;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.HConstants;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.PleaseHoldException;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.RegionException;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.RegionStateListener;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.ServerName;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.TableName;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.YouAreDeadException;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.client.RegionInfoBuilder;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.client.RegionReplicaUtil;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.client.Result;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.client.TableState;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.exceptions.UnexpectedStateException;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.favored.FavoredNodesManager;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.favored.FavoredNodesPromoter;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.master.AssignmentListener;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.master.LoadBalancer;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.master.MasterServices;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.master.MetricsAssignmentManager;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.master.NoSuchProcedureException;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.master.RegionPlan;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.master.RegionState;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.master.RegionState.State;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.master.ServerListener;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.master.TableStateManager;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.master.assignment.RegionStates.RegionStateNode;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.master.assignment.RegionStates.ServerState;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.master.assignment.RegionStates.ServerStateNode;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.master.balancer.FavoredStochasticBalancer;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizer;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureScheduler;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.master.procedure.ProcedureSyncWait;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.master.procedure.ServerCrashException;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.master.procedure.ServerCrashProcedure;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.procedure2.Procedure;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.procedure2.ProcedureEvent;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.procedure2.ProcedureExecutor;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.procedure2.ProcedureInMemoryChore;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.procedure2.util.StringUtils;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.regionserver.SequenceId;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.util.HasThread;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.util.VersionInfo;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.slf4j.Logger;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.slf4j.LoggerFactory;<a name="line.89"></a>
-<span class="sourceLineNo">090</span><a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.91"></a>
-<span class="sourceLineNo">092</span><a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RegionTransitionState;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionStateTransition;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionStateTransition.TransitionCode;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.ReportRegionStateTransitionRequest;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.ReportRegionStateTransitionResponse;<a name="line.98"></a>
-<span class="sourceLineNo">099</span><a name="line.99"></a>
-<span class="sourceLineNo">100</span>/**<a name="line.100"></a>
-<span class="sourceLineNo">101</span> * The AssignmentManager is the coordinator for region assign/unassign operations.<a name="line.101"></a>
-<span class="sourceLineNo">102</span> * <ul><a name="line.102"></a>
-<span class="sourceLineNo">103</span> * <li>In-memory states of regions and servers are stored in {@link RegionStates}.</li><a name="line.103"></a>
-<span class="sourceLineNo">104</span> * <li>hbase:meta state updates are handled by {@link RegionStateStore}.</li><a name="line.104"></a>
-<span class="sourceLineNo">105</span> * </ul><a name="line.105"></a>
-<span class="sourceLineNo">106</span> * Regions are created by CreateTable, Split, Merge.<a name="line.106"></a>
-<span class="sourceLineNo">107</span> * Regions are deleted by DeleteTable, Split, Merge.<a name="line.107"></a>
-<span class="sourceLineNo">108</span> * Assigns are triggered by CreateTable, EnableTable, Split, Merge, ServerCrash.<a name="line.108"></a>
-<span class="sourceLineNo">109</span> * Unassigns are triggered by DisableTable, Split, Merge<a name="line.109"></a>
-<span class="sourceLineNo">110</span> */<a name="line.110"></a>
-<span class="sourceLineNo">111</span>@InterfaceAudience.Private<a name="line.111"></a>
-<span class="sourceLineNo">112</span>public class AssignmentManager implements ServerListener {<a name="line.112"></a>
-<span class="sourceLineNo">113</span> private static final Logger LOG = LoggerFactory.getLogger(AssignmentManager.class);<a name="line.113"></a>
-<span class="sourceLineNo">114</span><a name="line.114"></a>
-<span class="sourceLineNo">115</span> // TODO: AMv2<a name="line.115"></a>
-<span class="sourceLineNo">116</span> // - handle region migration from hbase1 to hbase2.<a name="line.116"></a>
-<span class="sourceLineNo">117</span> // - handle sys table assignment first (e.g. acl, namespace)<a name="line.117"></a>
-<span class="sourceLineNo">118</span> // - handle table priorities<a name="line.118"></a>
-<span class="sourceLineNo">119</span> // - If ServerBusyException trying to update hbase:meta, we abort the Master<a name="line.119"></a>
-<span class="sourceLineNo">120</span> // See updateRegionLocation in RegionStateStore.<a name="line.120"></a>
-<span class="sourceLineNo">121</span> //<a name="line.121"></a>
-<span class="sourceLineNo">122</span> // See also<a name="line.122"></a>
-<span class="sourceLineNo">123</span> // https://docs.google.com/document/d/1eVKa7FHdeoJ1-9o8yZcOTAQbv0u0bblBlCCzVSIn69g/edit#heading=h.ystjyrkbtoq5<a name="line.123"></a>
-<span class="sourceLineNo">124</span> // for other TODOs.<a name="line.124"></a>
-<span class="sourceLineNo">125</span><a name="line.125"></a>
-<span class="sourceLineNo">126</span> public static final String BOOTSTRAP_THREAD_POOL_SIZE_CONF_KEY =<a name="line.126"></a>
-<span class="sourceLineNo">127</span> "hbase.assignment.bootstrap.thread.pool.size";<a name="line.127"></a>
-<span class="sourceLineNo">128</span><a name="line.128"></a>
-<span class="sourceLineNo">129</span> public static final String ASSIGN_DISPATCH_WAIT_MSEC_CONF_KEY =<a name="line.129"></a>
-<span class="sourceLineNo">130</span> "hbase.assignment.dispatch.wait.msec";<a name="line.130"></a>
-<span class="sourceLineNo">131</span> private static final int DEFAULT_ASSIGN_DISPATCH_WAIT_MSEC = 150;<a name="line.131"></a>
-<span class="sourceLineNo">132</span><a name="line.132"></a>
-<span class="sourceLineNo">133</span> public static final String ASSIGN_DISPATCH_WAITQ_MAX_CONF_KEY =<a name="line.133"></a>
-<span class="sourceLineNo">134</span> "hbase.assignment.dispatch.wait.queue.max.size";<a name="line.134"></a>
-<span class="sourceLineNo">135</span> private static final int DEFAULT_ASSIGN_DISPATCH_WAITQ_MAX = 100;<a name="line.135"></a>
-<span class="sourceLineNo">136</span><a name="line.136"></a>
-<span class="sourceLineNo">137</span> public static final String RIT_CHORE_INTERVAL_MSEC_CONF_KEY =<a name="line.137"></a>
-<span class="sourceLineNo">138</span> "hbase.assignment.rit.chore.interval.msec";<a name="line.138"></a>
-<span class="sourceLineNo">139</span> private static final int DEFAULT_RIT_CHORE_INTERVAL_MSEC = 5 * 1000;<a name="line.139"></a>
-<span class="sourceLineNo">140</span><a name="line.140"></a>
-<span class="sourceLineNo">141</span> public static final String ASSIGN_MAX_ATTEMPTS =<a name="line.141"></a>
-<span class="sourceLineNo">142</span> "hbase.assignment.maximum.attempts";<a name="line.142"></a>
-<span class="sourceLineNo">143</span> private static final int DEFAULT_ASSIGN_MAX_ATTEMPTS = 10;<a name="line.143"></a>
-<span class="sourceLineNo">144</span><a name="line.144"></a>
-<span class="sourceLineNo">145</span> /** Region in Transition metrics threshold time */<a name="line.145"></a>
-<span class="sourceLineNo">146</span> public static final String METRICS_RIT_STUCK_WARNING_THRESHOLD =<a name="line.146"></a>
-<span class="sourceLineNo">147</span> "hbase.metrics.rit.stuck.warning.threshold";<a name="line.147"></a>
-<span class="sourceLineNo">148</span> private static final int DEFAULT_RIT_STUCK_WARNING_THRESHOLD = 60 * 1000;<a name="line.148"></a>
-<span class="sourceLineNo">149</span><a name="line.149"></a>
-<span class="sourceLineNo">150</span> private final ProcedureEvent<?> metaInitializedEvent = new ProcedureEvent<>("meta initialized");<a name="line.150"></a>
-<span class="sourceLineNo">151</span> private final ProcedureEvent<?> metaLoadEvent = new ProcedureEvent<>("meta load");<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> * Indicator that AssignmentManager has recovered the region states so<a name="line.154"></a>
-<span class="sourceLineNo">155</span> * that ServerCrashProcedure can be fully enabled and re-assign regions<a name="line.155"></a>
-<span class="sourceLineNo">156</span> * of dead servers. So that when re-assignment happens, AssignmentManager<a name="line.156"></a>
-<span class="sourceLineNo">157</span> * has proper region states.<a name="line.157"></a>
-<span class="sourceLineNo">158</span> */<a name="line.158"></a>
-<span class="sourceLineNo">159</span> private final ProcedureEvent<?> failoverCleanupDone = new ProcedureEvent<>("failover cleanup");<a name="line.159"></a>
-<span class="sourceLineNo">160</span><a name="line.160"></a>
-<span class="sourceLineNo">161</span> /** Listeners that are called on assignment events. */<a name="line.161"></a>
-<span class="sourceLineNo">162</span> private final CopyOnWriteArrayList<AssignmentListener> listeners =<a name="line.162"></a>
-<span class="sourceLineNo">163</span> new CopyOnWriteArrayList<AssignmentListener>();<a name="line.163"></a>
-<span class="sourceLineNo">164</span><a name="line.164"></a>
-<span class="sourceLineNo">165</span> // TODO: why is this different from the listeners (carried over from the old AM)<a name="line.165"></a>
-<span class="sourceLineNo">166</span> private RegionStateListener regionStateListener;<a name="line.166"></a>
-<span class="sourceLineNo">167</span><a name="line.167"></a>
-<span class="sourceLineNo">168</span> private RegionNormalizer regionNormalizer;<a name="line.168"></a>
-<span class="sourceLineNo">169</span><a name="line.169"></a>
-<span class="sourceLineNo">170</span> private final MetricsAssignmentManager metrics;<a name="line.170"></a>
-<span class="sourceLineNo">171</span> private final RegionInTransitionChore ritChore;<a name="line.171"></a>
-<span class="sourceLineNo">172</span> private final MasterServices master;<a name="line.172"></a>
-<span class="sourceLineNo">173</span><a name="line.173"></a>
-<span class="sourceLineNo">174</span> private final AtomicBoolean running = new AtomicBoolean(false);<a name="line.174"></a>
-<span class="sourceLineNo">175</span> private final RegionStates regionStates = new RegionStates();<a name="line.175"></a>
-<span class="sourceLineNo">176</span> private final RegionStateStore regionStateStore;<a name="line.176"></a>
-<span class="sourceLineNo">177</span><a name="line.177"></a>
-<span class="sourceLineNo">178</span> private final boolean shouldAssignRegionsWithFavoredNodes;<a name="line.178"></a>
-<span class="sourceLineNo">179</span> private final int assignDispatchWaitQueueMaxSize;<a name="line.179"></a>
-<span class="sourceLineNo">180</span> private final int assignDispatchWaitMillis;<a name="line.180"></a>
-<span class="sourceLineNo">181</span> private final int assignMaxAttempts;<a name="line.181"></a>
-<span class="sourceLineNo">182</span><a name="line.182"></a>
-<span class="sourceLineNo">183</span> private final Object checkIfShouldMoveSystemRegionLock = new Object();<a name="line.183"></a>
-<span class="sourceLineNo">184</span><a name="line.184"></a>
-<span class="sourceLineNo">185</span> private Thread assignThread;<a name="line.185"></a>
-<span class="sourceLineNo">186</span><a name="line.186"></a>
-<span class="sourceLineNo">187</span> public AssignmentManager(final MasterServices master) {<a name="line.187"></a>
-<span class="sourceLineNo">188</span> this(master, new RegionStateStore(master));<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> public AssignmentManager(final MasterServices master, final RegionStateStore stateStore) {<a name="line.191"></a>
-<span class="sourceLineNo">192</span> this.master = master;<a name="line.192"></a>
-<span class="sourceLineNo">193</span> this.regionStateStore = stateStore;<a name="line.193"></a>
-<span class="sourceLineNo">194</span> this.metrics = new MetricsAssignmentManager();<a name="line.194"></a>
+<span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.master.assignment;<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>import java.util.ArrayList;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import java.util.Arrays;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import java.util.Collection;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import java.util.Collections;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import java.util.HashMap;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import java.util.List;<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.Set;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import java.util.concurrent.CopyOnWriteArrayList;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import java.util.concurrent.Future;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import java.util.concurrent.TimeUnit;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import java.util.concurrent.locks.Condition;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import java.util.concurrent.locks.ReentrantLock;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import java.util.stream.Collectors;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.conf.Configuration;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.HBaseIOException;<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.PleaseHoldException;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.RegionException;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.ServerName;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.TableName;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.YouAreDeadException;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.client.RegionInfoBuilder;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.client.RegionReplicaUtil;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.client.Result;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.client.TableState;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.exceptions.UnexpectedStateException;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.favored.FavoredNodesManager;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.favored.FavoredNodesPromoter;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.master.AssignmentListener;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.master.LoadBalancer;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.master.MasterServices;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.master.MetricsAssignmentManager;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.master.NoSuchProcedureException;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.master.RegionPlan;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.master.RegionState;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.master.RegionState.State;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.master.ServerListener;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.master.TableStateManager;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.master.assignment.RegionStates.RegionStateNode;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.master.assignment.RegionStates.ServerState;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.master.assignment.RegionStates.ServerStateNode;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.master.balancer.FavoredStochasticBalancer;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureScheduler;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.master.procedure.ProcedureSyncWait;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.master.procedure.ServerCrashException;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.master.procedure.ServerCrashProcedure;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.procedure2.Procedure;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.procedure2.ProcedureEvent;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.procedure2.ProcedureExecutor;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.procedure2.ProcedureInMemoryChore;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.procedure2.util.StringUtils;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.regionserver.SequenceId;<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.HasThread;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.util.VersionInfo;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.zookeeper.MetaTableLocator;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.zookeeper.KeeperException;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.slf4j.Logger;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.slf4j.LoggerFactory;<a name="line.88"></a>
+<span class="sourceLineNo">089</span><a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.90"></a>
+<span class="sourceLineNo">091</span><a name="line.91"></a>
+<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RegionTransitionState;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionStateTransition;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionStateTransition.TransitionCode;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.ReportRegionStateTransitionRequest;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.ReportRegionStateTransitionResponse;<a name="line.97"></a>
+<span class="sourceLineNo">098</span><a name="line.98"></a>
+<span class="sourceLineNo">099</span>/**<a name="line.99"></a>
+<span class="sourceLineNo">100</span> * The AssignmentManager is the coordinator for region assign/unassign operations.<a name="line.100"></a>
+<span class="sourceLineNo">101</span> * <ul><a name="line.101"></a>
+<span class="sourceLineNo">102</span> * <li>In-memory states of regions and servers are stored in {@link RegionStates}.</li><a name="line.102"></a>
+<span class="sourceLineNo">103</span> * <li>hbase:meta state updates are handled by {@link RegionStateStore}.</li><a name="line.103"></a>
+<span class="sourceLineNo">104</span> * </ul><a name="line.104"></a>
+<span class="sourceLineNo">105</span> * Regions are created by CreateTable, Split, Merge.<a name="line.105"></a>
+<span class="sourceLineNo">106</span> * Regions are deleted by DeleteTable, Split, Merge.<a name="line.106"></a>
+<span class="sourceLineNo">107</span> * Assigns are triggered by CreateTable, EnableTable, Split, Merge, ServerCrash.<a name="line.107"></a>
+<span class="sourceLineNo">108</span> * Unassigns are triggered by DisableTable, Split, Merge<a name="line.108"></a>
+<span class="sourceLineNo">109</span> */<a name="line.109"></a>
+<span class="sourceLineNo">110</span>@InterfaceAudience.Private<a name="line.110"></a>
+<span class="sourceLineNo">111</span>public class AssignmentManager implements ServerListener {<a name="line.111"></a>
+<span class="sourceLineNo">112</span> private static final Logger LOG = LoggerFactory.getLogger(AssignmentManager.class);<a name="line.112"></a>
+<span class="sourceLineNo">113</span><a name="line.113"></a>
+<span class="sourceLineNo">114</span> // TODO: AMv2<a name="line.114"></a>
+<span class="sourceLineNo">115</span> // - handle region migration from hbase1 to hbase2.<a name="line.115"></a>
+<span class="sourceLineNo">116</span> // - handle sys table assignment first (e.g. acl, namespace)<a name="line.116"></a>
+<span class="sourceLineNo">117</span> // - handle table priorities<a name="line.117"></a>
+<span class="sourceLineNo">118</span> // - If ServerBusyException trying to update hbase:meta, we abort the Master<a name="line.118"></a>
+<span class="sourceLineNo">119</span> // See updateRegionLocation in RegionStateStore.<a name="line.119"></a>
+<span class="sourceLineNo">120</span> //<a name="line.120"></a>
+<span class="sourceLineNo">121</span> // See also<a name="line.121"></a>
+<span class="sourceLineNo">122</span> // https://docs.google.com/document/d/1eVKa7FHdeoJ1-9o8yZcOTAQbv0u0bblBlCCzVSIn69g/edit#heading=h.ystjyrkbtoq5<a name="line.122"></a>
+<span class="sourceLineNo">123</span> // for other TODOs.<a name="line.123"></a>
+<span class="sourceLineNo">124</span><a name="line.124"></a>
+<span class="sourceLineNo">125</span> public static final String BOOTSTRAP_THREAD_POOL_SIZE_CONF_KEY =<a name="line.125"></a>
+<span class="sourceLineNo">126</span> "hbase.assignment.bootstrap.thread.pool.size";<a name="line.126"></a>
+<span class="sourceLineNo">127</span><a name="line.127"></a>
+<span class="sourceLineNo">128</span> public static final String ASSIGN_DISPATCH_WAIT_MSEC_CONF_KEY =<a name="line.128"></a>
+<span class="sourceLineNo">129</span> "hbase.assignment.dispatch.wait.msec";<a name="line.129"></a>
+<span class="sourceLineNo">130</span> private static final int DEFAULT_ASSIGN_DISPATCH_WAIT_MSEC = 150;<a name="line.130"></a>
+<span class="sourceLineNo">131</span><a name="line.131"></a>
+<span class="sourceLineNo">132</span> public static final String ASSIGN_DISPATCH_WAITQ_MAX_CONF_KEY =<a name="line.132"></a>
+<span class="sourceLineNo">133</span> "hbase.assignment.dispatch.wait.queue.max.size";<a name="line.133"></a>
+<span class="sourceLineNo">134</span> private static final int DEFAULT_ASSIGN_DISPATCH_WAITQ_MAX = 100;<a name="line.134"></a>
+<span class="sourceLineNo">135</span><a name="line.135"></a>
+<span class="sourceLineNo">136</span> public static final String RIT_CHORE_INTERVAL_MSEC_CONF_KEY =<a name="line.136"></a>
+<span class="sourceLineNo">137</span> "hbase.assignment.rit.chore.interval.msec";<a name="line.137"></a>
+<span class="sourceLineNo">138</span> private static final int DEFAULT_RIT_CHORE_INTERVAL_MSEC = 60 * 1000;<a name="line.138"></a>
+<span class="sourceLineNo">139</span><a name="line.139"></a>
+<span class="sourceLineNo">140</span> public static final String ASSIGN_MAX_ATTEMPTS =<a name="line.140"></a>
+<span class="sourceLineNo">141</span> "hbase.assignment.maximum.attempts";<a name="line.141"></a>
+<span class="sourceLineNo">142</span> private static final int DEFAULT_ASSIGN_MAX_ATTEMPTS = 10;<a name="line.142"></a>
+<span class="sourceLineNo">143</span><a name="line.143"></a>
+<span class="sourceLineNo">144</span> /** Region in Transition metrics threshold time */<a name="line.144"></a>
+<span class="sourceLineNo">145</span> public static final String METRICS_RIT_STUCK_WARNING_THRESHOLD =<a name="line.145"></a>
+<span class="sourceLineNo">146</span> "hbase.metrics.rit.stuck.warning.threshold";<a name="line.146"></a>
+<span class="sourceLineNo">147</span> private static final int DEFAULT_RIT_STUCK_WARNING_THRESHOLD = 60 * 1000;<a name="line.147"></a>
+<span class="sourceLineNo">148</span><a name="line.148"></a>
+<span class="sourceLineNo">149</span> private final ProcedureEvent<?> metaAssignEvent = new ProcedureEvent<>("meta assign");<a name="line.149"></a>
+<span class="sourceLineNo">150</span> private final ProcedureEvent<?> metaLoadEvent = new ProcedureEvent<>("meta load");<a name="line.150"></a>
+<span class="sourceLineNo">151</span><a name="line.151"></a>
+<span class="sourceLineNo">152</span> /** Listeners that are called on assignment events. */<a name="line.152"></a>
+<span class="sourceLineNo">153</span> private final CopyOnWriteArrayList<AssignmentListener> listeners =<a name="line.153"></a>
+<span class="sourceLineNo">154</span> new CopyOnWriteArrayList<AssignmentListener>();<a name="line.154"></a>
+<span class="sourceLineNo">155</span><a name="line.155"></a>
+<span class="sourceLineNo">156</span> private final MetricsAssignmentManager metrics;<a name="line.156"></a>
+<span class="sourceLineNo">157</span> private final RegionInTransitionChore ritChore;<a name="line.157"></a>
+<span class="sourceLineNo">158</span> private final MasterServices master;<a name="line.158"></a>
+<span class="sourceLineNo">159</span><a name="line.159"></a>
+<span class="sourceLineNo">160</span> private final AtomicBoolean running = new AtomicBoolean(false);<a name="line.160"></a>
+<span class="sourceLineNo">161</span> private final RegionStates regionStates = new RegionStates();<a name="line.161"></a>
+<span class="sourceLineNo">162</span> private final RegionStateStore regionStateStore;<a name="line.162"></a>
+<span class="sourceLineNo">163</span><a name="line.163"></a>
+<span class="sourceLineNo">164</span> private final boolean shouldAssignRegionsWithFavoredNodes;<a name="line.164"></a>
+<span class="sourceLineNo">165</span> private final int assignDispatchWaitQueueMaxSize;<a name="line.165"></a>
+<span class="sourceLineNo">166</span> private final int assignDispatchWaitMillis;<a name="line.166"></a>
+<span class="sourceLineNo">167</span> private final int assignMaxAttempts;<a name="line.167"></a>
+<span class="sourceLineNo">168</span><a name="line.168"></a>
+<span class="sourceLineNo">169</span> private final Object checkIfShouldMoveSystemRegionLock = new Object();<a name="line.169"></a>
+<span class="sourceLineNo">170</span><a name="line.170"></a>
+<span class="sourceLineNo">171</span> private Thread assignThread;<a name="line.171"></a>
+<span class="sourceLineNo">172</span><a name="line.172"></a>
+<span class="sourceLineNo">173</span> public AssignmentManager(final MasterServices master) {<a name="line.173"></a>
+<span class="sourceLineNo">174</span> this(master, new RegionStateStore(master));<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> public AssignmentManager(final MasterServices master, final RegionStateStore stateStore) {<a name="line.177"></a>
+<span class="sourceLineNo">178</span> this.master = master;<a name="line.178"></a>
+<span class="sourceLineNo">179</span> this.regionStateStore = stateStore;<a name="line.179"></a>
+<span class="sourceLineNo">180</span> this.metrics = new MetricsAssignmentManager();<a name="line.180"></a>
+<span class="sourceLineNo">181</span><a name="line.181"></a>
+<span class="sourceLineNo">182</span> final Configuration conf = master.getConfiguration();<a name="line.182"></a>
+<span class="sourceLineNo">183</span><a name="line.183"></a>
+<span class="sourceLineNo">184</span> // Only read favored nodes if using the favored nodes load balancer.<a name="line.184"></a>
+<span class="sourceLineNo">185</span> this.shouldAssignRegionsWithFavoredNodes = FavoredStochasticBalancer.class.isAssignableFrom(<a name="line.185"></a>
+<span class="sourceLineNo">186</span> conf.getClass(HConstants.HBASE_MASTER_LOADBALANCER_CLASS, Object.class));<a name="line.186"></a>
+<span class="sourceLineNo">187</span><a name="line.187"></a>
+<span class="sourceLineNo">188</span> this.assignDispatchWaitMillis = conf.getInt(ASSIGN_DISPATCH_WAIT_MSEC_CONF_KEY,<a name="line.188"></a>
+<span class="sourceLineNo">189</span> DEFAULT_ASSIGN_DISPATCH_WAIT_MSEC);<a name="line.189"></a>
+<span class="sourceLineNo">190</span> this.assignDispatchWaitQueueMaxSize = conf.getInt(ASSIGN_DISPATCH_WAITQ_MAX_CONF_KEY,<a name="line.190"></a>
+<span class="sourceLineNo">191</span> DEFAULT_ASSIGN_DISPATCH_WAITQ_MAX);<a name="line.191"></a>
+<span class="sourceLineNo">192</span><a name="line.192"></a>
+<span class="sourceLineNo">193</span> this.assignMaxAttempts = Math.max(1, conf.getInt(ASSIGN_MAX_ATTEMPTS,<a name="line.193"></a>
+<span class="sourceLineNo">194</span> DEFAULT_ASSIGN_MAX_ATTEMPTS));<a name="line.194"></a>
<span class="sourceLineNo">195</span><a name="line.195"></a>
-<span class="sourceLineNo">196</span> final Configuration conf = master.getConfiguration();<a name="line.196"></a>
-<span class="sourceLineNo">197</span><a name="line.197"></a>
-<span class="sourceLineNo">198</span> // Only read favored nodes if using the favored nodes load balancer.<a name="line.198"></a>
-<span class="sourceLineNo">199</span> this.shouldAssignRegionsWithFavoredNodes = FavoredStochasticBalancer.class.isAssignableFrom(<a name="line.199"></a>
-<span class="sourceLineNo">200</span> conf.getClass(HConstants.HBASE_MASTER_LOADBALANCER_CLASS, Object.class));<a name="line.200"></a>
-<span class="sourceLineNo">201</span><a name="line.201"></a>
-<span class="sourceLineNo">202</span> this.assignDispatchWaitMillis = conf.getInt(ASSIGN_DISPATCH_WAIT_MSEC_CONF_KEY,<a name="line.202"></a>
-<span class="sourceLineNo">203</span> DEFAULT_ASSIGN_DISPATCH_WAIT_MSEC);<a name="line.203"></a>
-<span class="sourceLineNo">204</span> this.assignDispatchWaitQueueMaxSize = conf.getInt(ASSIGN_DISPATCH_WAITQ_MAX_CONF_KEY,<a name="line.204"></a>
-<span class="sourceLineNo">205</span> DEFAULT_ASSIGN_DISPATCH_WAITQ_MAX);<a name="line.205"></a>
-<span class="sourceLineNo">206</span><a name="line.206"></a>
-<span class="sourceLineNo">207</span> this.assignMaxAttempts = Math.max(1, conf.getInt(ASSIGN_MAX_ATTEMPTS,<a name="line.207"></a>
-<span class="sourceLineNo">208</span> DEFAULT_ASSIGN_MAX_ATTEMPTS));<a name="line.208"></a>
-<span class="sourceLineNo">209</span><a name="line.209"></a>
-<span class="sourceLineNo">210</span> int ritChoreInterval = conf.getInt(RIT_CHORE_INTERVAL_MSEC_CONF_KEY,<a name="line.210"></a>
-<span class="sourceLineNo">211</span> DEFAULT_RIT_CHORE_INTERVAL_MSEC);<a name="line.211"></a>
-<span class="sourceLineNo">212</span> this.ritChore = new RegionInTransitionChore(ritChoreInterval);<a name="line.212"></a>
+<span class="sourceLineNo">196</span> int ritChoreInterval = conf.getInt(RIT_CHORE_INTERVAL_MSEC_CONF_KEY,<a name="line.196"></a>
+<span class="sourceLineNo">197</span> DEFAULT_RIT_CHORE_INTERVAL_MSEC);<a name="line.197"></a>
+<span class="sourceLineNo">198</span> this.ritChore = new RegionInTransitionChore(ritChoreInterval);<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> public void start() throws IOException, KeeperException {<a name="line.201"></a>
+<span class="sourceLineNo">202</span> if (!running.compareAndSet(false, true)) {<a name="line.202"></a>
+<span class="sourceLineNo">203</span> return;<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> LOG.trace("Starting assignment manager");<a name="line.206"></a>
+<span class="sourceLineNo">207</span><a name="line.207"></a>
+<span class="sourceLineNo">208</span> // Register Server Listener<a name="line.208"></a>
+<span class="sourceLineNo">209</span> master.getServerManager().registerListener(this);<a name="line.209"></a>
+<span class="sourceLineNo">210</span><a name="line.210"></a>
+<span class="sourceLineNo">211</span> // Start the Assignment Thread<a name="line.211"></a>
+<span class="sourceLineNo">212</span> startAssignmentThread();<a name="line.212"></a>
<span class="sourceLineNo">213</span><a name="line.213"></a>
-<span class="sourceLineNo">214</span> // Used for region related procedure.<a name="line.214"></a>
-<span class="sourceLineNo">215</span> setRegionNormalizer(master.getRegionNormalizer());<a name="line.215"></a>
-<span class="sourceLineNo">216</span> }<a name="line.216"></a>
-<span class="sourceLineNo">217</span><a name="line.217"></a>
-<span class="sourceLineNo">218</span> public void start() throws IOException {<a name="line.218"></a>
-<span class="sourceLineNo">219</span> if (!running.compareAndSet(false, true)) {<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> LOG.trace("Starting assignment manager");<a name="line.223"></a>
-<span class="sourceLineNo">224</span><a name="line.224"></a>
-<span class="sourceLineNo">225</span> // Register Server Listener<a name="line.225"></a>
-<span class="sourceLineNo">226</span> master.getServerManager().registerListener(this);<a name="line.226"></a>
-<span class="sourceLineNo">227</span><a name="line.227"></a>
-<span class="sourceLineNo">228</span> // Start the Assignment Thread<a name="line.228"></a>
-<span class="sourceLineNo">229</span> startAssignmentThread();<a name="line.229"></a>
-<span class="sourceLineNo">230</span> }<a name="line.230"></a>
-<span class="sourceLineNo">231</span><a name="line.231"></a>
-<span class="sourceLineNo">232</span> public void stop() {<a name="line.232"></a>
-<span class="sourceLineNo">233</span> if (!running.compareAndSet(true, false)) {<a name="line.233"></a>
-<span class="sourceLineNo">234</span> return;<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> LOG.info("Stopping assignment manager");<a name="line.237"></a>
-<span class="sourceLineNo">238</span><a name="line.238"></a>
-<span class="sourceLineNo">239</span> // The AM is started before the procedure executor,<a name="line.239"></a>
-<span class="sourceLineNo">240</span> // but the actual work will be loaded/submitted only once we have the executor<a name="line.240"></a>
-<span class="sourceLineNo">241</span> final boolean hasProcExecutor = master.getMasterProcedureExecutor() != null;<a name="line.241"></a>
-<span class="sourceLineNo">242</span><a name="line.242"></a>
-<span class="sourceLineNo">243</span> // Remove the RIT chore<a name="line.243"></a>
-<span class="sourceLineNo">244</span> if (hasProcExecutor) {<a name="line.244"></a>
-<span class="sourceLineNo">245</span> master.getMasterProcedureExecutor().removeChore(this.ritChore);<a name="line.245"></a>
-<span class="sourceLineNo">246</span> }<a name="line.246"></a>
+<span class="sourceLineNo">214</span> // load meta region state<a name="line.214"></a>
+<span class="sourceLineNo">215</span> ZKWatcher zkw = master.getZooKeeper();<a name="line.215"></a>
+<span class="sourceLineNo">216</span> // it could be null in some tests<a name="line.216"></a>
+<span class="sourceLineNo">217</span> if (zkw != null) {<a name="line.217"></a>
+<span class="sourceLineNo">218</span> RegionState regionState = MetaTableLocator.getMetaRegionState(zkw);<a name="line.218"></a>
+<span class="sourceLineNo">219</span> RegionStateNode regionStateNode =<a name="line.219"></a>
+<span class="sourceLineNo">220</span> regionStates.getOrCreateRegionStateNode(RegionInfoBuilder.FIRST_META_REGIONINFO);<a name="line.220"></a>
+<span class="sourceLineNo">221</span> synchronized (regionStateNode) {<a name="line.221"></a>
+<span class="sourceLineNo">222</span> regionStateNode.setRegionLocation(regionState.getServerName());<a name="line.222"></a>
+<span class="sourceLineNo">223</span> regionStateNode.setState(regionState.getState());<a name="line.223"></a>
+<span class="sourceLineNo">224</span> setMetaAssigned(regionState.getRegion(), regionState.getState() == State.OPEN);<a name="line.224"></a>
+<span class="sourceLineNo">225</span> }<a name="line.225"></a>
+<span class="sourceLineNo">226</span> }<a name="line.226"></a>
+<span class="sourceLineNo">227</span> }<a name="line.227"></a>
+<span class="sourceLineNo">228</span><a name="line.228"></a>
+<span class="sourceLineNo">229</span> public void stop() {<a name="line.229"></a>
+<span class="sourceLineNo">230</span> if (!running.compareAndSet(true, false)) {<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><a name="line.233"></a>
+<span class="sourceLineNo">234</span> LOG.info("Stopping assignment manager");<a name="line.234"></a>
+<span class="sourceLineNo">235</span><a name="line.235"></a>
+<span class="sourceLineNo">236</span> // The AM is started before the procedure executor,<a name="line.236"></a>
+<span class="sourceLineNo">237</span> // but the actual work will be loaded/submitted only once we have the executor<a name="line.237"></a>
+<span class="sourceLineNo">238</span> final boolean hasProcExecutor = master.getMasterProcedureExecutor() != null;<a name="line.238"></a>
+<span class="sourceLineNo">239</span><a name="line.239"></a>
+<span class="sourceLineNo">240</span> // Remove the RIT chore<a name="line.240"></a>
+<span class="sourceLineNo">241</span> if (hasProcExecutor) {<a name="line.241"></a>
+<span class="sourceLineNo">242</span> master.getMasterProcedureExecutor().removeChore(this.ritChore);<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> // Stop the Assignment Thread<a name="line.245"></a>
+<span class="sourceLineNo">246</span> stopAssignmentThread();<a name="line.246"></a>
<span class="sourceLineNo">247</span><a name="line.247"></a>
-<span class="sourceLineNo">248</span> // Stop the Assignment Thread<a name="line.248"></a>
-<span class="sourceLineNo">249</span> stopAssignmentThread();<a name="line.249"></a>
+<span class="sourceLineNo">248</span> // Stop the RegionStateStore<a name="line.248"></a>
+<span class="sourceLineNo">249</span> regionStates.clear();<a name="line.249"></a>
<span class="sourceLineNo">250</span><a name="line.250"></a>
-<span class="sourceLineNo">251</span> // Stop the RegionStateStore<a name="line.251"></a>
-<span class="sourceLineNo">252</span> regionStates.clear();<a name="line.252"></a>
+<span class="sourceLineNo">251</span> // Unregister Server Listener<a name="line.251"></a>
+<span class="sourceLineNo">252</span> master.getServerManager().unregisterListener(this);<a name="line.252"></a>
<span class="sourceLineNo">253</span><a name="line.253"></a>
-<span class="sourceLineNo">254</span> // Unregister Server Listener<a name="line.254"></a>
-<span class="sourceLineNo">255</span> master.getServerManager().unregisterListener(this);<a name="line.255"></a>
-<span class="sourceLineNo">256</span><a name="line.256"></a>
-<span class="sourceLineNo">257</span> // Update meta events (for testing)<a name="line.257"></a>
-<span class="sourceLineNo">258</span> if (hasProcExecutor) {<a name="line.258"></a>
-<span class="sourceLineNo">259</span> metaLoadEvent.suspend();<a name="line.259"></a>
-<span class="sourceLineNo">260</span> setFailoverCleanupDone(false);<a name="line.260"></a>
-<span class="sourceLineNo">261</span> for (RegionInfo hri: getMetaRegionSet()) {<a name="line.261"></a>
-<span class="sourceLineNo">262</span> setMetaInitialized(hri, false);<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">254</span> // Update meta events (for testing)<a name="line.254"></a>
+<span class="sourceLineNo">255</span> if (hasProcExecutor) {<a name="line.255"></a>
+<span class="sourceLineNo">256</span> metaLoadEvent.suspend();<a name="line.256"></a>
+<span class="sourceLineNo">257</span> for (RegionInfo hri: getMetaRegionSet()) {<a name="line.257"></a>
+<span class="sourceLineNo">258</span> setMetaAssigned(hri, false);<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 name="line.262"></a>
+<span class="sourceLineNo">263</span> public boolean isRunning() {<a name="line.263"></a>
+<span class="sourceLineNo">264</span> return running.get();<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> public boolean isRunning() {<a name="line.267"></a>
-<span class="sourceLineNo">268</span> return running.get();<a name="line.268"></a>
+<span class="sourceLineNo">267</span> public Configuration getConfiguration() {<a name="line.267"></a>
+<span class="sourceLineNo">268</span> return master.getConfiguration();<a name="line.268"></a>
<span class="sourceLineNo">269</span> }<a name="line.269"></a>
<span class="sourceLineNo">270</span><a name="line.270"></a>
-<span class="sourceLineNo">271</span> public Configuration getConfiguration() {<a name="line.271"></a>
-<span class="sourceLineNo">272</span> return master.getConfiguration();<a name="line.272"></a>
+<span class="sourceLineNo">271</span> public MetricsAssignmentManager getAssignmentManagerMetrics() {<a name="line.271"></a>
+<span class="sourceLineNo">272</span> return metrics;<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> public MetricsAssignmentManager getAssignmentManagerMetrics() {<a name="line.275"></a>
-<span class="sourceLineNo">276</span> return metrics;<a name="line.276"></a>
+<span class="sourceLineNo">275</span> private LoadBalancer getBalancer() {<a name="line.275"></a>
+<span class="sourceLineNo">276</span> return master.getLoadBalancer();<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> private LoadBalancer getBalancer() {<a name="line.279"></a>
-<span class="sourceLineNo">280</span> return master.getLoadBalancer();<a name="line.280"></a>
+<span class="sourceLineNo">279</span> private MasterProcedureEnv getProcedureEnvironment() {<a name="line.279"></a>
+<span class="sourceLineNo">280</span> return master.getMasterProcedureExecutor().getEnvironment();<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> private MasterProcedureEnv getProcedureEnvironment() {<a name="line.283"></a>
-<span class="sourceLineNo">284</span> return master.getMasterProcedureExecutor().getEnvironment();<a name="line.284"></a>
+<span class="sourceLineNo">283</span> private MasterProcedureScheduler getProcedureScheduler() {<a name="line.283"></a>
+<span class="sourceLineNo">284</span> return getProcedureEnvironment().getProcedureScheduler();<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> private MasterProcedureScheduler getProcedureScheduler() {<a name="line.287"></a>
-<span class="sourceLineNo">288</span> return getProcedureEnvironment().getProcedureScheduler();<a name="line.288"></a>
+<span class="sourceLineNo">287</span> int getAssignMaxAttempts() {<a name="line.287"></a>
+<span class="sourceLineNo">288</span> return assignMaxAttempts;<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> protected int getAssignMaxAttempts() {<a name="line.291"></a>
-<span class="sourceLineNo">292</span> return assignMaxAttempts;<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> * Add the listener to the notification list.<a name="line.296"></a>
-<span class="sourceLineNo">297</span> * @param listener The AssignmentListener to register<a name="line.297"></a>
-<span class="sourceLineNo">298</span> */<a name="line.298"></a>
-<span class="sourceLineNo">299</span> public void registerListener(final AssignmentListener listener) {<a name="line.299"></a>
-<span class="sourceLineNo">300</span> this.listeners.add(listener);<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> * Remove the listener from the notification list.<a name="line.304"></a>
-<span class="sourceLineNo">305</span> * @param listener The AssignmentListener to unregister<a name="line.305"></a>
-<span class="sourceLineNo">306</span> */<a name="line.306"></a>
-<span class="sourceLineNo">307</span> public boolean unregisterListener(final AssignmentListener listener) {<a name="line.307"></a>
-<span class="sourceLineNo">308</span> return this.listeners.remove(listener);<a name="line.308"></a>
+<span class="sourceLineNo">291</span> /**<a name="line.291"></a>
+<span class="sourceLineNo">292</span> * Add the listener to the notification list.<a name="line.292"></a>
+<span class="sourceLineNo">293</span> * @param listener The AssignmentListener to register<a name="line.293"></a>
+<span class="sourceLineNo">294</span> */<a name="line.294"></a>
+<span class="sourceLineNo">295</span> public void registerListener(final AssignmentListener listener) {<a name="line.295"></a>
+<span class="sourceLineNo">296</span> this.listeners.add(listener);<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> /**<a name="line.299"></a>
+<span class="sourceLineNo">300</span> * Remove the listener from the notification list.<a name="line.300"></a>
+<span class="sourceLineNo">301</span> * @param listener The AssignmentListener to unregister<a name="line.301"></a>
+<span class="sourceLineNo">302</span> */<a name="line.302"></a>
+<span class="sourceLineNo">303</span> public boolean unregisterListener(final AssignmentListener listener) {<a name="line.303"></a>
+<span class="sourceLineNo">304</span> return this.listeners.remove(listener);<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> public RegionStates getRegionStates() {<a name="line.307"></a>
+<span class="sourceLineNo">308</span> return regionStates;<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> public void setRegionStateListener(final RegionStateListener listener) {<a name="line.311"></a>
-<span class="sourceLineNo">312</span> this.regionStateListener = listener;<a name="line.312"></a>
+<span class="sourceLineNo">311</span> public RegionStateStore getRegionStateStore() {<a name="line.311"></a>
+<span class="sourceLineNo">312</span> return regionStateStore;<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 setRegionNormalizer(final RegionNormalizer normalizer) {<a name="line.315"></a>
-<span class="sourceLineNo">316</span> this.regionNormalizer = normalizer;<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 RegionNormalizer getRegionNormalizer() {<a name="line.319"></a>
-<span class="sourceLineNo">320</span> return regionNormalizer;<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 RegionStates getRegionStates() {<a name="line.323"></a>
-<span class="sourceLineNo">324</span> return regionStates;<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> public RegionStateStore getRegionStateStore() {<a name="line.327"></a>
-<span class="sourceLineNo">328</span> return regionStateStore;<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> public List<ServerName> getFavoredNodes(final RegionInfo regionInfo) {<a name="line.331"></a>
-<span class="sourceLineNo">332</span> return this.shouldAssignRegionsWithFavoredNodes?<a name="line.332"></a>
-<span class="sourceLineNo">333</span> ((FavoredStochasticBalancer)getBalancer()).getFavoredNodes(regionInfo):<a name="line.333"></a>
-<span class="sourceLineNo">334</span> ServerName.EMPTY_SERVER_LIST;<a name="line.334"></a>
+<span class="sourceLineNo">315</span> public List<ServerName> getFavoredNodes(final RegionInfo regionInfo) {<a name="line.315"></a>
+<span class="sourceLineNo">316</span> return this.shouldAssignRegionsWithFavoredNodes?<a name="line.316"></a>
+<span class="sourceLineNo">317</span> ((FavoredStochasticBalancer)getBalancer()).getFavoredNodes(regionInfo):<a name="line.317"></a>
+<span class="sourceLineNo">318</span> ServerName.EMPTY_SERVER_LIST;<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> // ============================================================================================<a name="line.321"></a>
+<span class="sourceLineNo">322</span> // Table State Manager helpers<a name="line.322"></a>
+<span class="sourceLineNo">323</span> // ============================================================================================<a name="line.323"></a>
+<span class="sourceLineNo">324</span> TableStateManager getTableStateManager() {<a name="line.324"></a>
+<span class="sourceLineNo">325</span> return master.getTableStateManager();<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> public boolean isTableEnabled(final TableName tableName) {<a name="line.328"></a>
+<span class="sourceLineNo">329</span> return getTableStateManager().isTableState(tableName, TableState.State.ENABLED);<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> public boolean isTableDisabled(final TableName tableName) {<a name="line.332"></a>
+<span class="sourceLineNo">333</span> return getTableStateManager().isTableState(tableName,<a name="line.333"></a>
+<span class="sourceLineNo">334</span> TableState.State.DISABLED, TableState.State.DISABLING);<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> // Table State Manager helpers<a name="line.338"></a>
+<span class="sourceLineNo">338</span> // META Helpers<a name="line.338"></a>
<span class="sourceLineNo">339</span> // ============================================================================================<a name="line.339"></a>
-<span class="sourceLineNo">340</span> TableStateManager getTableStateManager() {<a name="line.340"></a>
-<span class="sourceLineNo">341</span> return master.getTableStateManager();<a name="line.341"></a>
+<span class="sourceLineNo">340</span> private boolean isMetaRegion(final RegionInfo regionInfo) {<a name="line.340"></a>
+<span class="sourceLineNo">341</span> return regionInfo.isMetaRegion();<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> public boolean isTableEnabled(final TableName tableName) {<a name="line.344"></a>
-<span class="sourceLineNo">345</span> return getTableStateManager().isTableState(tableName, TableState.State.ENABLED);<a name="line.345"></a>
+<span class="sourceLineNo">344</span> public boolean isMetaRegion(final byte[] regionName) {<a name="line.344"></a>
+<span class="sourceLineNo">345</span> return getMetaRegionFromName(regionName) != null;<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> public boolean isTableDisabled(final TableName tableName) {<a name="line.348"></a>
-<span class="sourceLineNo">349</span> return getTableStateManager().isTableState(tableName,<a name="line.349"></a>
-<span class="sourceLineNo">350</span> TableState.State.DISABLED, TableState.State.DISABLING);<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> // META Helpers<a name="line.354"></a>
-<span class="sourceLineNo">355</span> // ============================================================================================<a name="line.355"></a>
-<span class="sourceLineNo">356</span> private boolean isMetaRegion(final RegionInfo regionInfo) {<a name="line.356"></a>
-<span class="sourceLineNo">357</span> return regionInfo.isMetaRegion();<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> public boolean isMetaRegion(final byte[] regionName) {<a name="line.360"></a>
-<span class="sourceLineNo">361</span> return getMetaRegionFromName(regionName) != null;<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> public RegionInfo getMetaRegionFromName(final byte[] regionName) {<a name="line.364"></a>
-<span class="sourceLineNo">365</span> for (RegionInfo hri: getMetaRegionSet()) {<a name="line.365"></a>
-<span class="sourceLineNo">366</span> if (Bytes.equals(hri.getRegionName(), regionName)) {<a name="line.366"></a>
-<span class="sourceLineNo">367</span> return hri;<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> return null;<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> public boolean isCarryingMeta(final ServerName serverName) {<a name="line.373"></a>
-<span class="sourceLineNo">374</span> for (RegionInfo hri: getMetaRegionSet()) {<a name="line.374"></a>
-<span class="sourceLineNo">375</span> if (isCarryingRegion(serverName, hri)) {<a name="line.375"></a>
-<span class="sourceLineNo">376</span> return true;<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> return false;<a name="line.379"></a>
+<span class="sourceLineNo">348</span> public RegionInfo getMetaRegionFromName(final byte[] regionName) {<a name="line.348"></a>
+<span class="sourceLineNo">349</span> for (RegionInfo hri: getMetaRegionSet()) {<a name="line.349"></a>
+<span class="sourceLineNo">350</span> if (Bytes.equals(hri.getRegionName(), regionName)) {<a name="line.350"></a>
+<span class="sourceLineNo">351</span> return hri;<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> return null;<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> public boolean isCarryingMeta(final ServerName serverName) {<a name="line.357"></a>
+<span class="sourceLineNo">358</span> // TODO: handle multiple meta<a name="line.358"></a>
+<span class="sourceLineNo">359</span> return isCarryingRegion(serverName, RegionInfoBuilder.FIRST_META_REGIONINFO);<a name="line.359"></a>
+<span class="sourceLineNo">360</span> }<a name="line.360"></a>
+<span class="sourceLineNo">361</span><a name="line.361"></a>
+<span class="sourceLineNo">362</span> private boolean isCarryingRegion(final ServerName serverName, final RegionInfo regionInfo) {<a name="line.362"></a>
+<span class="sourceLineNo">363</span> // TODO: check for state?<a name="line.363"></a>
+<span class="sourceLineNo">364</span> final RegionStateNode node = regionStates.getRegionStateNode(regionInfo);<a name="line.364"></a>
+<span class="sourceLineNo">365</span> return(node != null && serverName.equals(node.getRegionLocation()));<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 RegionInfo getMetaForRegion(final RegionInfo regionInfo) {<a name="line.368"></a>
+<span class="sourceLineNo">369</span> //if (regionInfo.isMetaRegion()) return regionInfo;<a name="line.369"></a>
+<span class="sourceLineNo">370</span> // TODO: handle multiple meta. if the region provided is not meta lookup<a name="line.370"></a>
+<span class="sourceLineNo">371</span> // which meta the region belongs to.<a name="line.371"></a>
+<span class="sourceLineNo">372</span> return RegionInfoBuilder.FIRST_META_REGIONINFO;<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> // TODO: handle multiple meta.<a name="line.375"></a>
+<span class="sourceLineNo">376</span> private static final Set<RegionInfo> META_REGION_SET =<a name="line.376"></a>
+<span class="sourceLineNo">377</span> Collections.singleton(RegionInfoBuilder.FIRST_META_REGIONINFO);<a name="line.377"></a>
+<span class="sourceLineNo">378</span> public Set<RegionInfo> getMetaRegionSet() {<a name="line.378"></a>
+<span class="sourceLineNo">379</span> return META_REGION_SET;<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> private boolean isCarryingRegion(final ServerName serverName, final RegionInfo regionInfo) {<a name="line.382"></a>
-<span class="sourceLineNo">383</span> // TODO: check for state?<a name="line.383"></a>
-<span class="sourceLineNo">384</span> final RegionStateNode node = regionStates.getRegionStateNode(regionInfo);<a name="line.384"></a>
-<span class="sourceLineNo">385</span> return(node != null && serverName.equals(node.getRegionLocation()));<a name="line.385"></a>
-<span class="sourceLineNo">386</span> }<a name="line.386"></a>
-<span class="sourceLineNo">387</span><a name="line.387"></a>
-<span class="sourceLineNo">388</span> private RegionInfo getMetaForRegion(final RegionInfo regionInfo) {<a name="line.388"></a>
-<span class="sourceLineNo">389</span> //if (regionInfo.isMetaRegion()) return regionInfo;<a name="line.389"></a>
-<span class="sourceLineNo">390</span> // TODO: handle multiple meta. if the region provided is not meta lookup<a name="line.390"></a>
-<span class="sourceLineNo">391</span> // which meta the region belongs to.<a name="line.391"></a>
-<span class="sourceLineNo">392</span> return RegionInfoBuilder.FIRST_META_REGIONINFO;<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> // TODO: handle multiple meta.<a name="line.395"></a>
-<span class="sourceLineNo">396</span> private static final Set<RegionInfo> META_REGION_SET =<a name="line.396"></a>
-<span class="sourceLineNo">397</span> Collections.singleton(RegionInfoBuilder.FIRST_META_REGIONINFO);<a name="line.397"></a>
-<span class="sourceLineNo">398</span> public Set<RegionInfo> getMetaRegionSet() {<a name="line.398"></a>
-<span class="sourceLineNo">399</span> return META_REGION_SET;<a name="line.399"></a>
-<span class="sourceLineNo">400</span> }<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> // META Event(s) helpers<a name="line.403"></a>
-<span class="sourceLineNo">404</span> // ============================================================================================<a name="line.404"></a>
-<span class="sourceLineNo">405</span> public boolean isMetaInitialized() {<a name="line.405"></a>
-<span class="sourceLineNo">406</span> return metaInitializedEvent.isReady();<a name="line.406"></a>
+<span class="sourceLineNo">382</span> // ============================================================================================<a name="line.382"></a>
+<span class="sourceLineNo">383</span> // META Event(s) helpers<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> * Notice that, this only means the meta region is available on a RS, but the AM may still be<a name="line.386"></a>
+<span class="sourceLineNo">387</span> * loading the region states from meta, so usually you need to check {@link #isMetaLoaded()} first<a name="line.387"></a>
+<span class="sourceLineNo">388</span> * before checking this method, unless you can make sure that your piece of code can only be<a name="line.388"></a>
+<span class="sourceLineNo">389</span> * executed after AM builds the region states.<a name="line.389"></a>
+<span class="sourceLineNo">390</span> * @see #isMetaLoaded()<a name="line.390"></a>
+<span class="sourceLineNo">391</span> */<a name="line.391"></a>
+<span class="sourceLineNo">392</span> public boolean isMetaAssigned() {<a name="line.392"></a>
+<span class="sourceLineNo">393</span> return metaAssignEvent.isReady();<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> public boolean isMetaRegionInTransition() {<a name="line.396"></a>
+<span class="sourceLineNo">397</span> return !isMetaAssigned();<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> /**<a name="line.400"></a>
+<span class="sourceLineNo">401</span> * Notice that this event does not mean the AM has already finished region state rebuilding. See<a name="line.401"></a>
+<span class="sourceLineNo">402</span> * the comment of {@link #isMetaAssigned()} for more details.<a name="line.402"></a>
+<span class="sourceLineNo">403</span> * @see #isMetaAssigned()<a name="line.403"></a>
+<span class="sourceLineNo">404</span> */<a name="line.404"></a>
+<span class="sourceLineNo">405</span> public boolean waitMetaAssigned(Procedure<?> proc, RegionInfo regionInfo) {<a name="line.405"></a>
+<span class="sourceLineNo">406</span> return getMetaAssignEvent(getMetaForRegion(regionInfo)).suspendIfNotReady(proc);<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> public boolean isMetaRegionInTransition() {<a name="line.409"></a>
-<span class="sourceLineNo">410</span> return !isMetaInitialized();<a name="line.410"></a>
-<span class="sourceLineNo">411</span> }<a name="line.411"></a>
-<span class="sourceLineNo">412</span><a name="line.412"></a>
-<span class="sourceLineNo">413</span> public boolean waitMetaInitialized(final Procedure proc) {<a name="line.413"></a>
-<span class="sourceLineNo">414</span> // TODO: handle multiple meta. should this wait on all meta?<a name="line.414"></a>
-<span class="sourceLineNo">415</span> // this is used by the ServerCrashProcedure...<a name="line.415"></a>
-<span class="sourceLineNo">416</span> return waitMetaInitialized(proc, RegionInfoBuilder.FIRST_META_REGIONINFO);<a name="line.416"></a>
+<span class="sourceLineNo">409</span> private void setMetaAssigned(RegionInfo metaRegionInfo, boolean assigned) {<a name="line.409"></a>
+<span class="sourceLineNo">410</span> assert isMetaRegion(metaRegionInfo) : "unexpected non-meta region " + metaRegionInfo;<a name="line.410"></a>
+<span class="sourceLineNo">411</span> ProcedureEvent<?> metaAssignEvent = getMetaAssignEvent(metaRegionInfo);<a name="line.411"></a>
+<span class="sourceLineNo">412</span> if (assigned) {<a name="line.412"></a>
+<span class="sourceLineNo">413</span> metaAssignEvent.wake(getProcedureScheduler());<a name="line.413"></a>
+<span class="sourceLineNo">414</span> } else {<a name="line.414"></a>
+<span class="sourceLineNo">415</span> metaAssignEvent.suspend();<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> public boolean waitMetaInitialized(final Procedure proc, final RegionInfo regionInfo) {<a name="line.419"></a>
-<span class="sourceLineNo">420</span> return getMetaInitializedEvent(getMetaForRegion(regionInfo)).suspendIfNotReady(proc);<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> private void setMetaInitialized(final RegionInfo metaRegionInfo, final boolean isInitialized) {<a name="line.423"></a>
-<span class="sourceLineNo">424</span> assert isMetaRegion(metaRegionInfo) : "unexpected non-meta region " + metaRegionInfo;<a name="line.424"></a>
-<span class="sourceLineNo">425</span> final ProcedureEvent metaInitEvent = getMetaInitializedEvent(metaRegionInfo);<a name="line.425"></a>
-<span class="sourceLineNo">426</span> if (isInitialized) {<a name="line.426"></a>
-<span class="sourceLineNo">427</span> metaInitEvent.wake(getProcedureScheduler());<a name="line.427"></a>
-<span class="sourceLineNo">428</span> } else {<a name="line.428"></a>
-<span class="sourceLineNo">429</span> metaInitEvent.suspend();<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><a name="line.432"></a>
-<span class="sourceLineNo">433</span> private ProcedureEvent getMetaInitializedEvent(final RegionInfo metaRegionInfo) {<a name="line.433"></a>
-<span class="sourceLineNo">434</span> assert isMetaRegion(metaRegionInfo) : "unexpected non-meta region " + metaRegionInfo;<a name="line.434"></a>
-<span class="sourceLineNo">435</span> // TODO: handle multiple meta.<a name="line.435"></a>
-<span class="sourceLineNo">436</span> return metaInitializedEvent;<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> public boolean waitMetaLoaded(final Procedure proc) {<a name="line.439"></a>
-<span class="sourceLineNo">440</span> return metaLoadEvent.suspendIfNotReady(proc);<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> protected void wakeMetaLoadedEvent() {<a name="line.443"></a>
-<span class="sourceLineNo">444</span> metaLoadEvent.wake(getProcedureScheduler());<a name="line.444"></a>
-<span class="sourceLineNo">445</span> assert isMetaLoaded() : "expected meta to be loaded";<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> public boolean isMetaLoaded() {<a name="line.448"></a>
-<span class="sourceLineNo">449</span> return metaLoadEvent.isReady();<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> * Start a new thread to check if there are region servers whose versions are higher than others.<a name="line.453"></a>
-<span class="sourceLineNo">454</span> * If so, move all system table regions to RS with the highest version to keep compatibility.<a name="line.454"></a>
-<span class="sourceLineNo">455</span> * The reason is, RS in new version may not be able to access RS in old version when there are<a name="line.455"></a>
-<span class="sourceLineNo">456</span> * some incompatible changes.<a name="line.456"></a>
-<span class="sourceLineNo">457</span> * <p>This method is called when a new RegionServer is added to cluster only.</p><a name="line.457"></a>
-<span class="sourceLineNo">458</span> */<a name="line.458"></a>
-<span class="sourceLineNo">459</span> public void checkIfShouldMoveSystemRegionAsync() {<a name="line.459"></a>
-<span class="sourceLineNo">460</span> // TODO: Fix this thread. If a server is killed and a new one started, this thread thinks that<a name="line.460"></a>
-<span class="sourceLineNo">461</span> // it should 'move' the system tables from the old server to the new server but<a name="line.461"></a>
-<span class="sourceLineNo">462</span> // ServerCrashProcedure is on it; and it will take care of the assign without dataloss.<a name="line.462"></a>
-<span class="sourceLineNo">463</span> if (this.master.getServerManager().countOfRegionServers() <= 1) {<a name="line.463"></a>
-<span class="sourceLineNo">464</span> return;<a name="line.464"></a>
-<span class="sourceLineNo">465</span> }<a name="line.465"></a>
-<span class="sourceLineNo">466</span> // This thread used to run whenever there was a change in the cluster. The ZooKeeper<a name="line.466"></a>
-<span class="sourceLineNo">467</span> // childrenChanged notification came in before the nodeDeleted message and so this method<a name="line.467"></a>
-<span class="sourceLineNo">468</span> // cold run before a ServerCrashProcedure could run. That meant that this thread could see<a name="line.468"></a>
-<span class="sourceLineNo">469</span> // a Crashed Server before ServerCrashProcedure and it could find system regions on the<a name="line.469"></a>
-<span class="sourceLineNo">470</span> // crashed server and go move them before ServerCrashProcedure had a chance; could be<a name="line.470"></a>
-<span class="sourceLineNo">471</span> // dataloss too if WALs were not recovered.<a name="line.471"></a>
-<span class="sourceLineNo">472</span> new Thread(() -> {<a name="line.472"></a>
-<span class="sourceLineNo">473</span> try {<a name="line.473"></a>
-<span class="sourceLineNo">474</span> synchronized (checkIfShouldMoveSystemRegionLock) {<a name="line.474"></a>
-<span class="sourceLineNo">475</span> List<RegionPlan> plans = new ArrayList<>();<a name="line.475"></a>
-<span class="sourceLineNo">476</span> // TODO: I don't think this code does a good job if all servers in cluster have same<a name="line.476"></a>
-<span class="sourceLineNo">477</span> // version. It looks like it will schedule unnecessary moves.<a name="line.477"></a>
-<span class="sourceLineNo">478</span> for (ServerName server : getExcludedServersForSystemTable()) {<a name="line.478"></a>
-<span class="sourceLineNo">479</span> if (master.getServerManager().isServerDead(server)) {<a name="line.479"></a>
-<span class="sourceLineNo">480</span> // TODO: See HBASE-18494 and HBASE-18495. Though getExcludedServersForSystemTable()<a name="line.480"></a>
-<span class="sourceLineNo">481</span> // considers only online servers, the server could be queued for dead server<a name="line.481"></a>
-<span class="sourceLineNo">482</span> // processing. As region assignments for crashed server is handled by<a name="line.482"></a>
-<span class="sourceLineNo">483</span> // ServerCrashProcedure, do NOT handle them here. The goal is to handle this through<a name="line.483"></a>
-<span class="sourceLineNo">484</span> // regular flow of LoadBalancer as a favored node and not to have this special<a name="line.484"></a>
-<span class="sourceLineNo">485</span> // handling.<a name="line.485"></a>
-<span class="sourceLineNo">486</span> continue;<a name="line.486"></a>
-<span class="sourceLineNo">487</span> }<a name="line.487"></a>
-<span class="sourceLineNo">488</span> List<RegionInfo> regionsShouldMove = getSystemTables(server);<a name="line.488"></a>
-<span class="sourceLineNo">489</span> if (!regionsShouldMove.isEmpty()) {<a name="line.489"></a>
-<span class="sourceLineNo">490</span> for (RegionInfo regionInfo : regionsShouldMove) {<a name="line.490"></a>
-<span class="sourceLineNo">491</span> // null value for dest forces destination server to be selected by balancer<a name="line.491"></a>
-<span class="sourceLineNo">492</span> RegionPlan plan = new RegionPlan(regionInfo, server, null);<a name="line.492"></a>
-<span class="sourceLineNo">493</span> if (regionInfo.isMetaRegion()) {<a name="line.493"></a>
-<span class="sourceLineNo">494</span> // Must move meta region first.<a name="line.494"></a>
-<span class="sourceLineNo">495</span> LOG.info("Async MOVE of {} to newer Server={}",<a name="line.495"></a>
-<span class="sourceLineNo">496</span> regionInfo.getEncodedName(), server);<a name="line.496"></a>
-<span class="sourceLineNo">497</span> moveAsync(plan);<a name="line.497"></a>
-<span class="sourceLineNo">498</span> } else {<a name="line.498"></a>
-<span class="sourceLineNo">499</span> plans.add(plan);<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> }<a name="line.502"></a>
-<span class="sourceLineNo">503</span> for (RegionPlan plan : plans) {<a name="line.503"></a>
-<span class="sourceLineNo">504</span> LOG.info("Async MOVE of {} to newer Server={}",<a name="line.504"></a>
-<span class="sourceLineNo">505</span> plan.getRegionInfo().getEncodedName(), server);<a name="line.505"></a>
-<span class="sourceLineNo">506</span> moveAsync(plan);<a name="line.506"></a>
-<span class="sourceLineNo">507</span> }<a name="line.507"></a>
-<span class="sourceLineNo">508</span> }<a name="line.508"></a>
-<span class="sourceLineNo">509</span> }<a name="line.509"></a>
-<span class="sourceLineNo">510</span> } catch (Throwable t) {<a name="line.510"></a>
-<span class="sourceLineNo">511</span> LOG.error(t.toString(), t);<a name="line.511"></a>
-<span class="sourceLineNo">512
<TRUNCATED>
[27/51] [partial] hbase-site git commit: Published site at
9101fc246f86445006bfbcdfda5cc495016dc280.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html b/devapidocs/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html
index a9d814d..e65cf97 100644
--- a/devapidocs/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html
+++ b/devapidocs/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.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":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,"i53":10,"i54":10,"i55":10,"i56":10,"i57":10,"i58":10,"i59":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":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,"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};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
@@ -288,13 +288,13 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<tr class="rowColor">
<td class="colFirst"><code>private <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ThreadGroup.html?is-external=true" title="class or interface in java.lang">ThreadGroup</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#threadGroup">threadGroup</a></span></code>
-<div class="block">Created in the <a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#start-int-boolean-"><code>start(int, boolean)</code></a> method.</div>
+<div class="block">Created in the <code>#start(int, boolean)</code> method.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/procedure2/TimeoutExecutorThread.html" title="class in org.apache.hadoop.hbase.procedure2">TimeoutExecutorThread</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#timeoutExecutor">timeoutExecutor</a></span></code>
-<div class="block">Created in the <a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#start-int-boolean-"><code>start(int, boolean)</code></a> method.</div>
+<div class="block">Created in the <code>#start(int, boolean)</code> method.</div>
</td>
</tr>
<tr class="rowColor">
@@ -308,7 +308,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<tr class="rowColor">
<td class="colFirst"><code>private <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CopyOnWriteArrayList.html?is-external=true" title="class or interface in java.util.concurrent">CopyOnWriteArrayList</a><<a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.WorkerThread.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureExecutor.WorkerThread</a>></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#workerThreads">workerThreads</a></span></code>
-<div class="block">Created in the <a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#start-int-boolean-"><code>start(int, boolean)</code></a> method.</div>
+<div class="block">Created in the <code>#start(int, boolean)</code> method.</div>
</td>
</tr>
</table>
@@ -490,107 +490,114 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<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> e)</code> </td>
</tr>
<tr id="i28" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#init-int-boolean-">init</a></span>(int numThreads,
+ boolean abortOnCorruption)</code>
+<div class="block">Initialize the procedure executor, but do not start workers.</div>
+</td>
+</tr>
+<tr id="i29" class="rowColor">
<td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>[]</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#initializeChildren-org.apache.hadoop.hbase.procedure2.RootProcedureState-org.apache.hadoop.hbase.procedure2.Procedure-org.apache.hadoop.hbase.procedure2.Procedure:A-">initializeChildren</a></span>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/RootProcedureState.html" title="class in org.apache.hadoop.hbase.procedure2">RootProcedureState</a> procStack,
<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> procedure,
<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>[] subprocs)</code> </td>
</tr>
-<tr id="i29" 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/procedure2/ProcedureExecutor.html#isFinished-long-">isFinished</a></span>(long procId)</code>
<div class="block">Return true if the procedure is finished.</div>
</td>
</tr>
-<tr id="i30" class="altColor">
+<tr id="i31" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#isProcedureOwner-long-org.apache.hadoop.hbase.security.User-">isProcedureOwner</a></span>(long procId,
<a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a> user)</code>
<div class="block">Check if the user is this procedure's owner</div>
</td>
</tr>
-<tr id="i31" class="rowColor">
+<tr id="i32" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#isRunning--">isRunning</a></span>()</code> </td>
</tr>
-<tr id="i32" class="altColor">
+<tr id="i33" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#isStarted-long-">isStarted</a></span>(long procId)</code>
<div class="block">Return true if the procedure is started.</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/procedure2/ProcedureExecutor.html#join--">join</a></span>()</code> </td>
</tr>
-<tr id="i34" class="altColor">
+<tr id="i35" class="rowColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#load-boolean-">load</a></span>(boolean abortOnCorruption)</code> </td>
</tr>
-<tr id="i35" class="rowColor">
+<tr id="i36" class="altColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#loadProcedures-org.apache.hadoop.hbase.procedure2.store.ProcedureStore.ProcedureIterator-boolean-">loadProcedures</a></span>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStore.ProcedureIterator.html" title="interface in org.apache.hadoop.hbase.procedure2.store">ProcedureStore.ProcedureIterator</a> procIter,
boolean abortOnCorruption)</code> </td>
</tr>
-<tr id="i36" class="altColor">
+<tr id="i37" class="rowColor">
<td class="colFirst"><code>private long</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#nextProcId--">nextProcId</a></span>()</code> </td>
</tr>
-<tr id="i37" class="rowColor">
+<tr id="i38" class="altColor">
<td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#prepareProcedure-org.apache.hadoop.hbase.procedure2.Procedure-">prepareProcedure</a></span>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> proc)</code> </td>
</tr>
-<tr id="i38" class="altColor">
+<tr id="i39" class="rowColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#procedureFinished-org.apache.hadoop.hbase.procedure2.Procedure-">procedureFinished</a></span>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> proc)</code> </td>
</tr>
-<tr id="i39" class="rowColor">
+<tr id="i40" class="altColor">
<td class="colFirst"><code>private long</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#pushProcedure-org.apache.hadoop.hbase.procedure2.Procedure-">pushProcedure</a></span>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> proc)</code> </td>
</tr>
-<tr id="i40" class="altColor">
+<tr id="i41" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#refreshConfiguration-org.apache.hadoop.conf.Configuration-">refreshConfiguration</a></span>(org.apache.hadoop.conf.Configuration conf)</code> </td>
</tr>
-<tr id="i41" class="rowColor">
+<tr id="i42" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#registerListener-org.apache.hadoop.hbase.procedure2.ProcedureExecutor.ProcedureExecutorListener-">registerListener</a></span>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.ProcedureExecutorListener.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureExecutor.ProcedureExecutorListener</a> listener)</code> </td>
</tr>
-<tr id="i42" class="altColor">
+<tr id="i43" class="rowColor">
<td class="colFirst"><code>long</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#registerNonce-org.apache.hadoop.hbase.util.NonceKey-">registerNonce</a></span>(<a href="../../../../../org/apache/hadoop/hbase/util/NonceKey.html" title="class in org.apache.hadoop.hbase.util">NonceKey</a> nonceKey)</code>
<div class="block">Register a nonce for a procedure that is going to be submitted.</div>
</td>
</tr>
-<tr id="i43" class="rowColor">
+<tr id="i44" class="altColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#releaseLock-org.apache.hadoop.hbase.procedure2.Procedure-boolean-">releaseLock</a></span>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> proc,
boolean force)</code> </td>
</tr>
-<tr id="i44" class="altColor">
+<tr id="i45" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#removeChore-org.apache.hadoop.hbase.procedure2.ProcedureInMemoryChore-">removeChore</a></span>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureInMemoryChore.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureInMemoryChore</a> chore)</code>
<div class="block">Remove a chore procedure from the executor</div>
</td>
</tr>
-<tr id="i45" class="rowColor">
+<tr id="i46" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#removeResult-long-">removeResult</a></span>(long procId)</code>
<div class="block">Mark the specified completed procedure, as ready to remove.</div>
</td>
</tr>
-<tr id="i46" class="altColor">
+<tr id="i47" class="rowColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#sendProcedureAddedNotification-long-">sendProcedureAddedNotification</a></span>(long procId)</code> </td>
</tr>
-<tr id="i47" class="rowColor">
+<tr id="i48" class="altColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#sendProcedureFinishedNotification-long-">sendProcedureFinishedNotification</a></span>(long procId)</code> </td>
</tr>
-<tr id="i48" class="altColor">
+<tr id="i49" class="rowColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#sendProcedureLoadedNotification-long-">sendProcedureLoadedNotification</a></span>(long procId)</code> </td>
</tr>
-<tr id="i49" 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/procedure2/ProcedureExecutor.html#setFailureResultForNonce-org.apache.hadoop.hbase.util.NonceKey-java.lang.String-org.apache.hadoop.hbase.security.User-java.io.IOException-">setFailureResultForNonce</a></span>(<a href="../../../../../org/apache/hadoop/hbase/util/NonceKey.html" title="class in org.apache.hadoop.hbase.util">NonceKey</a> nonceKey,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> procName,
@@ -600,56 +607,55 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
same error to the requests with the same nonceKey.</div>
</td>
</tr>
-<tr id="i50" 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/procedure2/ProcedureExecutor.html#setKeepAliveTime-long-java.util.concurrent.TimeUnit-">setKeepAliveTime</a></span>(long keepAliveTime,
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/TimeUnit.html?is-external=true" title="class or interface in java.util.concurrent">TimeUnit</a> timeUnit)</code> </td>
</tr>
-<tr id="i51" class="rowColor">
+<tr id="i52" class="altColor">
<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#start-int-boolean-">start</a></span>(int numThreads,
- boolean abortOnCorruption)</code>
-<div class="block">Start the procedure executor.</div>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#startWorkers--">startWorkers</a></span>()</code>
+<div class="block">Start the workers.</div>
</td>
</tr>
-<tr id="i52" class="altColor">
+<tr id="i53" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#stop--">stop</a></span>()</code> </td>
</tr>
-<tr id="i53" class="rowColor">
+<tr id="i54" class="altColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#submitChildrenProcedures-org.apache.hadoop.hbase.procedure2.Procedure:A-">submitChildrenProcedures</a></span>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>[] subprocs)</code> </td>
</tr>
-<tr id="i54" class="altColor">
+<tr id="i55" class="rowColor">
<td class="colFirst"><code>long</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#submitProcedure-org.apache.hadoop.hbase.procedure2.Procedure-">submitProcedure</a></span>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> proc)</code>
<div class="block">Add a new root-procedure to the executor.</div>
</td>
</tr>
-<tr id="i55" class="rowColor">
+<tr id="i56" class="altColor">
<td class="colFirst"><code>long</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#submitProcedure-org.apache.hadoop.hbase.procedure2.Procedure-org.apache.hadoop.hbase.util.NonceKey-">submitProcedure</a></span>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> proc,
<a href="../../../../../org/apache/hadoop/hbase/util/NonceKey.html" title="class in org.apache.hadoop.hbase.util">NonceKey</a> nonceKey)</code>
<div class="block">Add a new root-procedure to the executor.</div>
</td>
</tr>
-<tr id="i56" class="altColor">
+<tr id="i57" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#submitProcedures-org.apache.hadoop.hbase.procedure2.Procedure:A-">submitProcedures</a></span>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>[] procs)</code>
<div class="block">Add a set of new root-procedure to the executor.</div>
</td>
</tr>
-<tr id="i57" class="rowColor">
+<tr id="i58" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#unregisterListener-org.apache.hadoop.hbase.procedure2.ProcedureExecutor.ProcedureExecutorListener-">unregisterListener</a></span>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.ProcedureExecutorListener.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureExecutor.ProcedureExecutorListener</a> listener)</code> </td>
</tr>
-<tr id="i58" class="altColor">
+<tr id="i59" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#unregisterNonceIfProcedureWasNotSubmitted-org.apache.hadoop.hbase.util.NonceKey-">unregisterNonceIfProcedureWasNotSubmitted</a></span>(<a href="../../../../../org/apache/hadoop/hbase/util/NonceKey.html" title="class in org.apache.hadoop.hbase.util">NonceKey</a> nonceKey)</code>
<div class="block">Remove the NonceKey if the procedure was not submitted to the executor.</div>
</td>
</tr>
-<tr id="i59" class="rowColor">
+<tr id="i60" class="altColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#updateStoreOnExec-org.apache.hadoop.hbase.procedure2.RootProcedureState-org.apache.hadoop.hbase.procedure2.Procedure-org.apache.hadoop.hbase.procedure2.Procedure:A-">updateStoreOnExec</a></span>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/RootProcedureState.html" title="class in org.apache.hadoop.hbase.procedure2">RootProcedureState</a> procStack,
<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> procedure,
@@ -814,7 +820,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<li class="blockList">
<h4>threadGroup</h4>
<pre>private <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ThreadGroup.html?is-external=true" title="class or interface in java.lang">ThreadGroup</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.274">threadGroup</a></pre>
-<div class="block">Created in the <a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#start-int-boolean-"><code>start(int, boolean)</code></a> method. Destroyed in <a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#join--"><code>join()</code></a> (FIX! Doing
+<div class="block">Created in the <code>#start(int, boolean)</code> method. Destroyed in <a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#join--"><code>join()</code></a> (FIX! Doing
resource handling rather than observing in a #join is unexpected).
Overridden when we do the ProcedureTestingUtility.testRecoveryAndDoubleExecution trickery
(Should be ok).</div>
@@ -827,7 +833,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<li class="blockList">
<h4>workerThreads</h4>
<pre>private <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CopyOnWriteArrayList.html?is-external=true" title="class or interface in java.util.concurrent">CopyOnWriteArrayList</a><<a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.WorkerThread.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureExecutor.WorkerThread</a>> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.282">workerThreads</a></pre>
-<div class="block">Created in the <a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#start-int-boolean-"><code>start(int, boolean)</code></a> method. Terminated in <a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#join--"><code>join()</code></a> (FIX! Doing
+<div class="block">Created in the <code>#start(int, boolean)</code> method. Terminated in <a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#join--"><code>join()</code></a> (FIX! Doing
resource handling rather than observing in a #join is unexpected).
Overridden when we do the ProcedureTestingUtility.testRecoveryAndDoubleExecution trickery
(Should be ok).</div>
@@ -840,7 +846,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<li class="blockList">
<h4>timeoutExecutor</h4>
<pre>private <a href="../../../../../org/apache/hadoop/hbase/procedure2/TimeoutExecutorThread.html" title="class in org.apache.hadoop.hbase.procedure2">TimeoutExecutorThread</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.290">timeoutExecutor</a></pre>
-<div class="block">Created in the <a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#start-int-boolean-"><code>start(int, boolean)</code></a> method. Terminated in <a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#join--"><code>join()</code></a> (FIX! Doing
+<div class="block">Created in the <code>#start(int, boolean)</code> method. Terminated in <a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#join--"><code>join()</code></a> (FIX! Doing
resource handling rather than observing in a #join is unexpected).
Overridden when we do the ProcedureTestingUtility.testRecoveryAndDoubleExecution trickery
(Should be ok).</div>
@@ -1018,24 +1024,40 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
</dl>
</li>
</ul>
-<a name="start-int-boolean-">
+<a name="init-int-boolean-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
-<h4>start</h4>
-<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.523">start</a>(int numThreads,
- boolean abortOnCorruption)
- 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">Start the procedure executor.
- It calls ProcedureStore.recoverLease() and ProcedureStore.load() to
- recover the lease, and ensure a single executor, and start the procedure
- replay to resume and recover the previous pending and in-progress perocedures.</div>
+<h4>init</h4>
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.523">init</a>(int numThreads,
+ boolean abortOnCorruption)
+ 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 procedure executor, but do not start workers. We will start them later.
+ <p/>
+ It calls ProcedureStore.recoverLease() and ProcedureStore.load() to recover the lease, and
+ ensure a single executor, and start the procedure replay to resume and recover the previous
+ pending and in-progress procedures.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>numThreads</code> - number of threads available for procedure execution.</dd>
-<dd><code>abortOnCorruption</code> - true if you want to abort your service in case
- a corrupted procedure is found on replay. otherwise false.</dd>
+<dd><code>abortOnCorruption</code> - true if you want to abort your service in case a corrupted procedure
+ is found on replay. otherwise false.</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="startWorkers--">
+<!-- -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>startWorkers</h4>
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.568">startWorkers</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">Start the workers.</div>
+<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>
@@ -1047,7 +1069,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>stop</h4>
-<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.583">stop</a>()</pre>
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.587">stop</a>()</pre>
</li>
</ul>
<a name="join--">
@@ -1056,7 +1078,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>join</h4>
-<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.594">join</a>()</pre>
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.598">join</a>()</pre>
</li>
</ul>
<a name="refreshConfiguration-org.apache.hadoop.conf.Configuration-">
@@ -1065,7 +1087,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>refreshConfiguration</h4>
-<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.625">refreshConfiguration</a>(org.apache.hadoop.conf.Configuration conf)</pre>
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.629">refreshConfiguration</a>(org.apache.hadoop.conf.Configuration conf)</pre>
</li>
</ul>
<a name="isRunning--">
@@ -1074,7 +1096,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>isRunning</h4>
-<pre>public boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.634">isRunning</a>()</pre>
+<pre>public boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.638">isRunning</a>()</pre>
</li>
</ul>
<a name="getWorkerThreadCount--">
@@ -1083,7 +1105,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>getWorkerThreadCount</h4>
-<pre>public int <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.641">getWorkerThreadCount</a>()</pre>
+<pre>public int <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.645">getWorkerThreadCount</a>()</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the current number of worker threads.</dd>
@@ -1096,7 +1118,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>getCorePoolSize</h4>
-<pre>public int <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.648">getCorePoolSize</a>()</pre>
+<pre>public int <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.652">getCorePoolSize</a>()</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the core pool size settings.</dd>
@@ -1109,7 +1131,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>getActiveExecutorCount</h4>
-<pre>public int <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.652">getActiveExecutorCount</a>()</pre>
+<pre>public int <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.656">getActiveExecutorCount</a>()</pre>
</li>
</ul>
<a name="getEnvironment--">
@@ -1118,7 +1140,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>getEnvironment</h4>
-<pre>public <a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html" title="type parameter in ProcedureExecutor">TEnvironment</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.656">getEnvironment</a>()</pre>
+<pre>public <a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html" title="type parameter in ProcedureExecutor">TEnvironment</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.660">getEnvironment</a>()</pre>
</li>
</ul>
<a name="getStore--">
@@ -1127,7 +1149,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>getStore</h4>
-<pre>public <a href="../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStore.html" title="interface in org.apache.hadoop.hbase.procedure2.store">ProcedureStore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.660">getStore</a>()</pre>
+<pre>public <a href="../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStore.html" title="interface in org.apache.hadoop.hbase.procedure2.store">ProcedureStore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.664">getStore</a>()</pre>
</li>
</ul>
<a name="getScheduler--">
@@ -1136,7 +1158,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>getScheduler</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureScheduler.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureScheduler</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.664">getScheduler</a>()</pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureScheduler.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureScheduler</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.668">getScheduler</a>()</pre>
</li>
</ul>
<a name="setKeepAliveTime-long-java.util.concurrent.TimeUnit-">
@@ -1145,7 +1167,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>setKeepAliveTime</h4>
-<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.668">setKeepAliveTime</a>(long keepAliveTime,
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.672">setKeepAliveTime</a>(long keepAliveTime,
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/TimeUnit.html?is-external=true" title="class or interface in java.util.concurrent">TimeUnit</a> timeUnit)</pre>
</li>
</ul>
@@ -1155,7 +1177,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>getKeepAliveTime</h4>
-<pre>public long <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.673">getKeepAliveTime</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/TimeUnit.html?is-external=true" title="class or interface in java.util.concurrent">TimeUnit</a> timeUnit)</pre>
+<pre>public long <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.677">getKeepAliveTime</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/TimeUnit.html?is-external=true" title="class or interface in java.util.concurrent">TimeUnit</a> timeUnit)</pre>
</li>
</ul>
<a name="addChore-org.apache.hadoop.hbase.procedure2.ProcedureInMemoryChore-">
@@ -1164,7 +1186,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>addChore</h4>
-<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.685">addChore</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureInMemoryChore.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureInMemoryChore</a> chore)</pre>
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.689">addChore</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureInMemoryChore.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureInMemoryChore</a> chore)</pre>
<div class="block">Add a chore procedure to the executor</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
@@ -1178,7 +1200,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>removeChore</h4>
-<pre>public boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.695">removeChore</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureInMemoryChore.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureInMemoryChore</a> chore)</pre>
+<pre>public boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.699">removeChore</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureInMemoryChore.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureInMemoryChore</a> chore)</pre>
<div class="block">Remove a chore procedure from the executor</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
@@ -1194,7 +1216,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>createNonceKey</h4>
-<pre>public <a href="../../../../../org/apache/hadoop/hbase/util/NonceKey.html" title="class in org.apache.hadoop.hbase.util">NonceKey</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.709">createNonceKey</a>(long nonceGroup,
+<pre>public <a href="../../../../../org/apache/hadoop/hbase/util/NonceKey.html" title="class in org.apache.hadoop.hbase.util">NonceKey</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.713">createNonceKey</a>(long nonceGroup,
long nonce)</pre>
<div class="block">Create a NoneKey from the specified nonceGroup and nonce.</div>
<dl>
@@ -1212,7 +1234,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>registerNonce</h4>
-<pre>public long <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.724">registerNonce</a>(<a href="../../../../../org/apache/hadoop/hbase/util/NonceKey.html" title="class in org.apache.hadoop.hbase.util">NonceKey</a> nonceKey)</pre>
+<pre>public long <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.728">registerNonce</a>(<a href="../../../../../org/apache/hadoop/hbase/util/NonceKey.html" title="class in org.apache.hadoop.hbase.util">NonceKey</a> nonceKey)</pre>
<div class="block">Register a nonce for a procedure that is going to be submitted.
A procId will be reserved and on submitProcedure(),
the procedure with the specified nonce will take the reserved ProcId.
@@ -1233,7 +1255,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>unregisterNonceIfProcedureWasNotSubmitted</h4>
-<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.755">unregisterNonceIfProcedureWasNotSubmitted</a>(<a href="../../../../../org/apache/hadoop/hbase/util/NonceKey.html" title="class in org.apache.hadoop.hbase.util">NonceKey</a> nonceKey)</pre>
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.759">unregisterNonceIfProcedureWasNotSubmitted</a>(<a href="../../../../../org/apache/hadoop/hbase/util/NonceKey.html" title="class in org.apache.hadoop.hbase.util">NonceKey</a> nonceKey)</pre>
<div class="block">Remove the NonceKey if the procedure was not submitted to the executor.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
@@ -1247,7 +1269,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>setFailureResultForNonce</h4>
-<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.829">setFailureResultForNonce</a>(<a href="../../../../../org/apache/hadoop/hbase/util/NonceKey.html" title="class in org.apache.hadoop.hbase.util">NonceKey</a> nonceKey,
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.833">setFailureResultForNonce</a>(<a href="../../../../../org/apache/hadoop/hbase/util/NonceKey.html" title="class in org.apache.hadoop.hbase.util">NonceKey</a> nonceKey,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> procName,
<a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a> procOwner,
<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> exception)</pre>
@@ -1268,7 +1290,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>submitProcedure</h4>
-<pre>public long <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.850">submitProcedure</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> proc)</pre>
+<pre>public long <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.854">submitProcedure</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> proc)</pre>
<div class="block">Add a new root-procedure to the executor.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
@@ -1284,7 +1306,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>submitProcedure</h4>
-<pre>public long <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.862">submitProcedure</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> proc,
+<pre>public long <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.866">submitProcedure</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> proc,
<a href="../../../../../org/apache/hadoop/hbase/util/NonceKey.html" title="class in org.apache.hadoop.hbase.util">NonceKey</a> nonceKey)</pre>
<div class="block">Add a new root-procedure to the executor.</div>
<dl>
@@ -1302,7 +1324,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>submitProcedures</h4>
-<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.896">submitProcedures</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>[] procs)</pre>
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.899">submitProcedures</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>[] procs)</pre>
<div class="block">Add a set of new root-procedure to the executor.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
@@ -1316,7 +1338,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>prepareProcedure</h4>
-<pre>private <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.920">prepareProcedure</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> proc)</pre>
+<pre>private <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.922">prepareProcedure</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> proc)</pre>
</li>
</ul>
<a name="pushProcedure-org.apache.hadoop.hbase.procedure2.Procedure-">
@@ -1325,7 +1347,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>pushProcedure</h4>
-<pre>private long <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.930">pushProcedure</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> proc)</pre>
+<pre>private long <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.931">pushProcedure</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> proc)</pre>
</li>
</ul>
<a name="abort-long-">
@@ -1334,7 +1356,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>abort</h4>
-<pre>public boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.954">abort</a>(long procId)</pre>
+<pre>public boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.955">abort</a>(long procId)</pre>
<div class="block">Send an abort notification the specified procedure.
Depending on the procedure implementation the abort can be considered or ignored.</div>
<dl>
@@ -1351,7 +1373,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>abort</h4>
-<pre>public boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.965">abort</a>(long procId,
+<pre>public boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.966">abort</a>(long procId,
boolean mayInterruptIfRunning)</pre>
<div class="block">Send an abort notification to the specified procedure.
Depending on the procedure implementation, the abort can be considered or ignored.</div>
@@ -1370,7 +1392,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>getProcedure</h4>
-<pre>public <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.979">getProcedure</a>(long procId)</pre>
+<pre>public <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.980">getProcedure</a>(long procId)</pre>
</li>
</ul>
<a name="getProcedure-java.lang.Class-long-">
@@ -1379,7 +1401,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>getProcedure</h4>
-<pre>public <T extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>> T <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.983">getProcedure</a>(<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><T> clazz,
+<pre>public <T extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>> T <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.984">getProcedure</a>(<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><T> clazz,
long procId)</pre>
</li>
</ul>
@@ -1389,7 +1411,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>getResult</h4>
-<pre>public <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.991">getResult</a>(long procId)</pre>
+<pre>public <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.992">getResult</a>(long procId)</pre>
</li>
</ul>
<a name="isFinished-long-">
@@ -1398,7 +1420,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>isFinished</h4>
-<pre>public boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.1007">isFinished</a>(long procId)</pre>
+<pre>public boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.1008">isFinished</a>(long procId)</pre>
<div class="block">Return true if the procedure is finished.
The state may be "completed successfully" or "failed and rolledback".
Use getResult() to check the state or get the result data.</div>
@@ -1416,7 +1438,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>isStarted</h4>
-<pre>public boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.1016">isStarted</a>(long procId)</pre>
+<pre>public boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.1017">isStarted</a>(long procId)</pre>
<div class="block">Return true if the procedure is started.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
@@ -1432,7 +1454,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>removeResult</h4>
-<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.1028">removeResult</a>(long procId)</pre>
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.1029">removeResult</a>(long procId)</pre>
<div class="block">Mark the specified completed procedure, as ready to remove.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
@@ -1446,7 +1468,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>getResultOrProcedure</h4>
-<pre>public <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.1042">getResultOrProcedure</a>(long procId)</pre>
+<pre>public <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.1043">getResultOrProcedure</a>(long procId)</pre>
</li>
</ul>
<a name="isProcedureOwner-long-org.apache.hadoop.hbase.security.User-">
@@ -1455,7 +1477,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>isProcedureOwner</h4>
-<pre>public boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.1058">isProcedureOwner</a>(long procId,
+<pre>public boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.1059">isProcedureOwner</a>(long procId,
<a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a> user)</pre>
<div class="block">Check if the user is this procedure's owner</div>
<dl>
@@ -1474,7 +1496,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>getProcedures</h4>
-<pre>public <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><<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?>> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.1080">getProcedures</a>()</pre>
+<pre>public <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><<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?>> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.1081">getProcedures</a>()</pre>
<div class="block">Get procedures.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
@@ -1488,7 +1510,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>registerListener</h4>
-<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.1098">registerListener</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.ProcedureExecutorListener.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureExecutor.ProcedureExecutorListener</a> listener)</pre>
+<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.1099">registerListener</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.ProcedureExecutorListener.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureExecutor.ProcedureExecutorListener</a> listener)</pre>
</li>
</ul>
<a name="unregisterListener-org.apache.hadoop.hbase.procedure2.ProcedureExecutor.ProcedureExecutorListener-">
@@ -1497,7 +1519,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>unregisterListener</h4>
-<pre>public boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.1102">unregisterListener</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.ProcedureExecutorListener.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureExecutor.ProcedureExecutorListener</a> listener)</pre>
+<pre>public boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.1103">unregisterListener</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.ProcedureExecutorListener.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureExecutor.ProcedureExecutorListener</a> listener)</pre>
</li>
</ul>
<a name="sendProcedureLoadedNotification-long-">
@@ -1506,7 +1528,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>sendProcedureLoadedNotification</h4>
-<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.1106">sendProcedureLoadedNotification</a>(long procId)</pre>
+<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.1107">sendProcedureLoadedNotification</a>(long procId)</pre>
</li>
</ul>
<a name="sendProcedureAddedNotification-long-">
@@ -1515,7 +1537,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>sendProcedureAddedNotification</h4>
-<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.1118">sendProcedureAddedNotification</a>(long procId)</pre>
+<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.1119">sendProcedureAddedNotification</a>(long procId)</pre>
</li>
</ul>
<a name="sendProcedureFinishedNotification-long-">
@@ -1524,7 +1546,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>sendProcedureFinishedNotification</h4>
-<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.1130">sendProcedureFinishedNotification</a>(long procId)</pre>
+<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.1131">sendProcedureFinishedNotification</a>(long procId)</pre>
</li>
</ul>
<a name="nextProcId--">
@@ -1533,7 +1555,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>nextProcId</h4>
-<pre>private long <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.1145">nextProcId</a>()</pre>
+<pre>private long <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.1146">nextProcId</a>()</pre>
</li>
</ul>
<a name="getLastProcId--">
@@ -1542,7 +1564,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>getLastProcId</h4>
-<pre>protected long <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.1162">getLastProcId</a>()</pre>
+<pre>protected long <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.1163">getLastProcId</a>()</pre>
</li>
</ul>
<a name="getActiveProcIds--">
@@ -1551,7 +1573,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>getActiveProcIds</h4>
-<pre>public <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><<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>> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.1167">getActiveProcIds</a>()</pre>
+<pre>public <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><<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>> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.1168">getActiveProcIds</a>()</pre>
</li>
</ul>
<a name="getRootProcedureId-org.apache.hadoop.hbase.procedure2.Procedure-">
@@ -1560,7 +1582,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>getRootProcedureId</h4>
-<pre><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> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.1171">getRootProcedureId</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> proc)</pre>
+<pre><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> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.1172">getRootProcedureId</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> proc)</pre>
</li>
</ul>
<a name="executeProcedure-org.apache.hadoop.hbase.procedure2.Procedure-">
@@ -1569,7 +1591,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>executeProcedure</h4>
-<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.1178">executeProcedure</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> proc)</pre>
+<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.1179">executeProcedure</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> proc)</pre>
</li>
</ul>
<a name="acquireLock-org.apache.hadoop.hbase.procedure2.Procedure-">
@@ -1578,7 +1600,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>acquireLock</h4>
-<pre>private <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.LockState.html" title="enum in org.apache.hadoop.hbase.procedure2">Procedure.LockState</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.1277">acquireLock</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> proc)</pre>
+<pre>private <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.LockState.html" title="enum in org.apache.hadoop.hbase.procedure2">Procedure.LockState</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.1278">acquireLock</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> proc)</pre>
</li>
</ul>
<a name="releaseLock-org.apache.hadoop.hbase.procedure2.Procedure-boolean-">
@@ -1587,7 +1609,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>releaseLock</h4>
-<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.1288">releaseLock</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> proc,
+<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.1289">releaseLock</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> proc,
boolean force)</pre>
</li>
</ul>
@@ -1597,7 +1619,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>executeRollback</h4>
-<pre>private <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.LockState.html" title="enum in org.apache.hadoop.hbase.procedure2">Procedure.LockState</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.1302">executeRollback</a>(long rootProcId,
+<pre>private <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.LockState.html" title="enum in org.apache.hadoop.hbase.procedure2">Procedure.LockState</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.1303">executeRollback</a>(long rootProcId,
<a href="../../../../../org/apache/hadoop/hbase/procedure2/RootProcedureState.html" title="class in org.apache.hadoop.hbase.procedure2">RootProcedureState</a> procStack)</pre>
<div class="block">Execute the rollback of the full procedure stack.
Once the procedure is rolledback, the root-procedure will be visible as
@@ -1610,7 +1632,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>executeRollback</h4>
-<pre>private <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.LockState.html" title="enum in org.apache.hadoop.hbase.procedure2">Procedure.LockState</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.1370">executeRollback</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> proc)</pre>
+<pre>private <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.LockState.html" title="enum in org.apache.hadoop.hbase.procedure2">Procedure.LockState</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.1371">executeRollback</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> proc)</pre>
<div class="block">Execute the rollback of the procedure step.
It updates the store with the new state (stack index)
or will remove completly the procedure in case it is a child.</div>
@@ -1622,7 +1644,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>execProcedure</h4>
-<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.1447">execProcedure</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/RootProcedureState.html" title="class in org.apache.hadoop.hbase.procedure2">RootProcedureState</a> procStack,
+<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.1448">execProcedure</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/RootProcedureState.html" title="class in org.apache.hadoop.hbase.procedure2">RootProcedureState</a> procStack,
<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><<a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html" title="type parameter in ProcedureExecutor">TEnvironment</a>> procedure)</pre>
<div class="block">Executes <code>procedure</code>
<ul>
@@ -1659,7 +1681,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>initializeChildren</h4>
-<pre>private <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>[] <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.1575">initializeChildren</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/RootProcedureState.html" title="class in org.apache.hadoop.hbase.procedure2">RootProcedureState</a> procStack,
+<pre>private <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>[] <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.1576">initializeChildren</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/RootProcedureState.html" title="class in org.apache.hadoop.hbase.procedure2">RootProcedureState</a> procStack,
<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> procedure,
<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>[] subprocs)</pre>
</li>
@@ -1670,7 +1692,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>submitChildrenProcedures</h4>
-<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.1611">submitChildrenProcedures</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>[] subprocs)</pre>
+<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.1612">submitChildrenProcedures</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>[] subprocs)</pre>
</li>
</ul>
<a name="countDownChildren-org.apache.hadoop.hbase.procedure2.RootProcedureState-org.apache.hadoop.hbase.procedure2.Procedure-">
@@ -1679,7 +1701,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>countDownChildren</h4>
-<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.1621">countDownChildren</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/RootProcedureState.html" title="class in org.apache.hadoop.hbase.procedure2">RootProcedureState</a> procStack,
+<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.1622">countDownChildren</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/RootProcedureState.html" title="class in org.apache.hadoop.hbase.procedure2">RootProcedureState</a> procStack,
<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> procedure)</pre>
</li>
</ul>
@@ -1689,7 +1711,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>updateStoreOnExec</h4>
-<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.1639">updateStoreOnExec</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/RootProcedureState.html" title="class in org.apache.hadoop.hbase.procedure2">RootProcedureState</a> procStack,
+<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.1640">updateStoreOnExec</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/RootProcedureState.html" title="class in org.apache.hadoop.hbase.procedure2">RootProcedureState</a> procStack,
<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> procedure,
<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>[] subprocs)</pre>
</li>
@@ -1700,7 +1722,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>handleInterruptedException</h4>
-<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.1667">handleInterruptedException</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> proc,
+<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.1668">handleInterruptedException</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> proc,
<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> e)</pre>
</li>
</ul>
@@ -1710,7 +1732,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>execCompletionCleanup</h4>
-<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.1679">execCompletionCleanup</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> proc)</pre>
+<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.1680">execCompletionCleanup</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> proc)</pre>
</li>
</ul>
<a name="procedureFinished-org.apache.hadoop.hbase.procedure2.Procedure-">
@@ -1719,7 +1741,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>procedureFinished</h4>
-<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.1692">procedureFinished</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> proc)</pre>
+<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.1693">procedureFinished</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> proc)</pre>
</li>
</ul>
<a name="getProcStack-long-">
@@ -1728,7 +1750,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockListLast">
<li class="blockList">
<h4>getProcStack</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/procedure2/RootProcedureState.html" title="class in org.apache.hadoop.hbase.procedure2">RootProcedureState</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.1719">getProcStack</a>(long rootProcId)</pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/procedure2/RootProcedureState.html" title="class in org.apache.hadoop.hbase.procedure2">RootProcedureState</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#line.1720">getProcStack</a>(long rootProcId)</pre>
</li>
</ul>
</li>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/LockAndQueue.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/LockAndQueue.html b/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/LockAndQueue.html
index 1c1c16b..b390ec2 100644
--- a/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/LockAndQueue.html
+++ b/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/LockAndQueue.html
@@ -151,7 +151,12 @@
</tr>
<tr class="rowColor">
<td class="colFirst"><code>(package private) <a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockAndQueue.html" title="class in org.apache.hadoop.hbase.procedure2">LockAndQueue</a></code></td>
-<td class="colLast"><span class="typeNameLabel">SchemaLocking.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/SchemaLocking.html#getMetaLock--">getMetaLock</a></span>()</code> </td>
+<td class="colLast"><span class="typeNameLabel">SchemaLocking.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/SchemaLocking.html#getMetaLock--">getMetaLock</a></span>()</code>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span>
+<div class="block"><span class="deprecationComment">only used for <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>RecoverMetaProcedure</code></a>. Should be removed along with
+ <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>RecoverMetaProcedure</code></a>.</span></div>
+</div>
+</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>(package private) <a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockAndQueue.html" title="class in org.apache.hadoop.hbase.procedure2">LockAndQueue</a></code></td>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/LockStatus.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/LockStatus.html b/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/LockStatus.html
index 3c5502d..edb9eee 100644
--- a/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/LockStatus.html
+++ b/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/LockStatus.html
@@ -136,7 +136,9 @@
</tr>
<tbody>
<tr class="altColor">
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MetaQueue.html#MetaQueue-org.apache.hadoop.hbase.procedure2.LockStatus-">MetaQueue</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockStatus.html" title="interface in org.apache.hadoop.hbase.procedure2">LockStatus</a> lockStatus)</code> </td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MetaQueue.html#MetaQueue-org.apache.hadoop.hbase.procedure2.LockStatus-">MetaQueue</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockStatus.html" title="interface in org.apache.hadoop.hbase.procedure2">LockStatus</a> lockStatus)</code>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
+ </td>
</tr>
<tr class="rowColor">
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/PeerQueue.html#PeerQueue-java.lang.String-org.apache.hadoop.hbase.procedure2.LockStatus-">PeerQueue</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> peerId,
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/Procedure.LockState.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/Procedure.LockState.html b/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/Procedure.LockState.html
index 8f24aa1..eab83b5 100644
--- a/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/Procedure.LockState.html
+++ b/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/Procedure.LockState.html
@@ -164,7 +164,9 @@
<tbody>
<tr class="altColor">
<td class="colFirst"><code>protected <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.LockState.html" title="enum in org.apache.hadoop.hbase.procedure2">Procedure.LockState</a></code></td>
-<td class="colLast"><span class="typeNameLabel">RecoverMetaProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#acquireLock-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">acquireLock</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code> </td>
+<td class="colLast"><span class="typeNameLabel">RecoverMetaProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#acquireLock-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">acquireLock</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
+ </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.LockState.html" title="enum in org.apache.hadoop.hbase.procedure2">Procedure.LockState</a></code></td>
@@ -190,6 +192,10 @@
<td class="colFirst"><code>protected <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.LockState.html" title="enum in org.apache.hadoop.hbase.procedure2">Procedure.LockState</a></code></td>
<td class="colLast"><span class="typeNameLabel">AbstractStateMachineNamespaceProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/AbstractStateMachineNamespaceProcedure.html#acquireLock-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">acquireLock</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code> </td>
</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>protected <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.LockState.html" title="enum in org.apache.hadoop.hbase.procedure2">Procedure.LockState</a></code></td>
+<td class="colLast"><span class="typeNameLabel">InitMetaProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html#acquireLock-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">acquireLock</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env)</code> </td>
+</tr>
</tbody>
</table>
</li>
[22/51] [partial] hbase-site git commit: Published site at
9101fc246f86445006bfbcdfda5cc495016dc280.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.CollectingVisitor.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.CollectingVisitor.html b/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.CollectingVisitor.html
index fea2b5a..c7a6cc4 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.CollectingVisitor.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.CollectingVisitor.html
@@ -1354,816 +1354,824 @@
<span class="sourceLineNo">1346</span> */<a name="line.1346"></a>
<span class="sourceLineNo">1347</span> public static void putsToMetaTable(final Connection connection, final List<Put> ps)<a name="line.1347"></a>
<span class="sourceLineNo">1348</span> throws IOException {<a name="line.1348"></a>
-<span class="sourceLineNo">1349</span> try (Table t = getMetaHTable(connection)) {<a name="line.1349"></a>
-<span class="sourceLineNo">1350</span> debugLogMutations(ps);<a name="line.1350"></a>
-<span class="sourceLineNo">1351</span> t.put(ps);<a name="line.1351"></a>
-<span class="sourceLineNo">1352</span> }<a name="line.1352"></a>
-<span class="sourceLineNo">1353</span> }<a name="line.1353"></a>
-<span class="sourceLineNo">1354</span><a name="line.1354"></a>
-<span class="sourceLineNo">1355</span> /**<a name="line.1355"></a>
-<span class="sourceLineNo">1356</span> * Delete the passed <code>d</code> from the <code>hbase:meta</code> table.<a name="line.1356"></a>
-<span class="sourceLineNo">1357</span> * @param connection connection we're using<a name="line.1357"></a>
-<span class="sourceLineNo">1358</span> * @param d Delete to add to hbase:meta<a name="line.1358"></a>
-<span class="sourceLineNo">1359</span> */<a name="line.1359"></a>
-<span class="sourceLineNo">1360</span> private static void deleteFromMetaTable(final Connection connection, final Delete d)<a name="line.1360"></a>
-<span class="sourceLineNo">1361</span> throws IOException {<a name="line.1361"></a>
-<span class="sourceLineNo">1362</span> List<Delete> dels = new ArrayList<>(1);<a name="line.1362"></a>
-<span class="sourceLineNo">1363</span> dels.add(d);<a name="line.1363"></a>
-<span class="sourceLineNo">1364</span> deleteFromMetaTable(connection, dels);<a name="line.1364"></a>
-<span class="sourceLineNo">1365</span> }<a name="line.1365"></a>
-<span class="sourceLineNo">1366</span><a name="line.1366"></a>
-<span class="sourceLineNo">1367</span> /**<a name="line.1367"></a>
-<span class="sourceLineNo">1368</span> * Delete the passed <code>deletes</code> from the <code>hbase:meta</code> table.<a name="line.1368"></a>
-<span class="sourceLineNo">1369</span> * @param connection connection we're using<a name="line.1369"></a>
-<span class="sourceLineNo">1370</span> * @param deletes Deletes to add to hbase:meta This list should support #remove.<a name="line.1370"></a>
-<span class="sourceLineNo">1371</span> */<a name="line.1371"></a>
-<span class="sourceLineNo">1372</span> private static void deleteFromMetaTable(final Connection connection, final List<Delete> deletes)<a name="line.1372"></a>
-<span class="sourceLineNo">1373</span> throws IOException {<a name="line.1373"></a>
-<span class="sourceLineNo">1374</span> try (Table t = getMetaHTable(connection)) {<a name="line.1374"></a>
-<span class="sourceLineNo">1375</span> debugLogMutations(deletes);<a name="line.1375"></a>
-<span class="sourceLineNo">1376</span> t.delete(deletes);<a name="line.1376"></a>
-<span class="sourceLineNo">1377</span> }<a name="line.1377"></a>
-<span class="sourceLineNo">1378</span> }<a name="line.1378"></a>
-<span class="sourceLineNo">1379</span><a name="line.1379"></a>
-<span class="sourceLineNo">1380</span> /**<a name="line.1380"></a>
-<span class="sourceLineNo">1381</span> * Deletes some replica columns corresponding to replicas for the passed rows<a name="line.1381"></a>
-<span class="sourceLineNo">1382</span> * @param metaRows rows in hbase:meta<a name="line.1382"></a>
-<span class="sourceLineNo">1383</span> * @param replicaIndexToDeleteFrom the replica ID we would start deleting from<a name="line.1383"></a>
-<span class="sourceLineNo">1384</span> * @param numReplicasToRemove how many replicas to remove<a name="line.1384"></a>
-<span class="sourceLineNo">1385</span> * @param connection connection we're using to access meta table<a name="line.1385"></a>
-<span class="sourceLineNo">1386</span> */<a name="line.1386"></a>
-<span class="sourceLineNo">1387</span> public static void removeRegionReplicasFromMeta(Set<byte[]> metaRows,<a name="line.1387"></a>
-<span class="sourceLineNo">1388</span> int replicaIndexToDeleteFrom, int numReplicasToRemove, Connection connection)<a name="line.1388"></a>
-<span class="sourceLineNo">1389</span> throws IOException {<a name="line.1389"></a>
-<span class="sourceLineNo">1390</span> int absoluteIndex = replicaIndexToDeleteFrom + numReplicasToRemove;<a name="line.1390"></a>
-<span class="sourceLineNo">1391</span> for (byte[] row : metaRows) {<a name="line.1391"></a>
-<span class="sourceLineNo">1392</span> long now = EnvironmentEdgeManager.currentTime();<a name="line.1392"></a>
-<span class="sourceLineNo">1393</span> Delete deleteReplicaLocations = new Delete(row);<a name="line.1393"></a>
-<span class="sourceLineNo">1394</span> for (int i = replicaIndexToDeleteFrom; i < absoluteIndex; i++) {<a name="line.1394"></a>
-<span class="sourceLineNo">1395</span> deleteReplicaLocations.addColumns(getCatalogFamily(),<a name="line.1395"></a>
-<span class="sourceLineNo">1396</span> getServerColumn(i), now);<a name="line.1396"></a>
-<span class="sourceLineNo">1397</span> deleteReplicaLocations.addColumns(getCatalogFamily(),<a name="line.1397"></a>
-<span class="sourceLineNo">1398</span> getSeqNumColumn(i), now);<a name="line.1398"></a>
-<span class="sourceLineNo">1399</span> deleteReplicaLocations.addColumns(getCatalogFamily(),<a name="line.1399"></a>
-<span class="sourceLineNo">1400</span> getStartCodeColumn(i), now);<a name="line.1400"></a>
-<span class="sourceLineNo">1401</span> }<a name="line.1401"></a>
-<span class="sourceLineNo">1402</span> deleteFromMetaTable(connection, deleteReplicaLocations);<a name="line.1402"></a>
-<span class="sourceLineNo">1403</span> }<a name="line.1403"></a>
-<span class="sourceLineNo">1404</span> }<a name="line.1404"></a>
-<span class="sourceLineNo">1405</span><a name="line.1405"></a>
-<span class="sourceLineNo">1406</span> /**<a name="line.1406"></a>
-<span class="sourceLineNo">1407</span> * Execute the passed <code>mutations</code> against <code>hbase:meta</code> table.<a name="line.1407"></a>
-<span class="sourceLineNo">1408</span> * @param connection connection we're using<a name="line.1408"></a>
-<span class="sourceLineNo">1409</span> * @param mutations Puts and Deletes to execute on hbase:meta<a name="line.1409"></a>
-<span class="sourceLineNo">1410</span> * @throws IOException<a name="line.1410"></a>
-<span class="sourceLineNo">1411</span> */<a name="line.1411"></a>
-<span class="sourceLineNo">1412</span> public static void mutateMetaTable(final Connection connection,<a name="line.1412"></a>
-<span class="sourceLineNo">1413</span> final List<Mutation> mutations)<a name="line.1413"></a>
-<span class="sourceLineNo">1414</span> throws IOException {<a name="line.1414"></a>
-<span class="sourceLineNo">1415</span> Table t = getMetaHTable(connection);<a name="line.1415"></a>
-<span class="sourceLineNo">1416</span> try {<a name="line.1416"></a>
-<span class="sourceLineNo">1417</span> debugLogMutations(mutations);<a name="line.1417"></a>
-<span class="sourceLineNo">1418</span> t.batch(mutations, null);<a name="line.1418"></a>
-<span class="sourceLineNo">1419</span> } catch (InterruptedException e) {<a name="line.1419"></a>
-<span class="sourceLineNo">1420</span> InterruptedIOException ie = new InterruptedIOException(e.getMessage());<a name="line.1420"></a>
-<span class="sourceLineNo">1421</span> ie.initCause(e);<a name="line.1421"></a>
-<span class="sourceLineNo">1422</span> throw ie;<a name="line.1422"></a>
-<span class="sourceLineNo">1423</span> } finally {<a name="line.1423"></a>
-<span class="sourceLineNo">1424</span> t.close();<a name="line.1424"></a>
-<span class="sourceLineNo">1425</span> }<a name="line.1425"></a>
-<span class="sourceLineNo">1426</span> }<a name="line.1426"></a>
-<span class="sourceLineNo">1427</span><a name="line.1427"></a>
-<span class="sourceLineNo">1428</span> private static void addRegionStateToPut(Put put, RegionState.State state) throws IOException {<a name="line.1428"></a>
-<span class="sourceLineNo">1429</span> put.add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.1429"></a>
-<span class="sourceLineNo">1430</span> .setRow(put.getRow())<a name="line.1430"></a>
-<span class="sourceLineNo">1431</span> .setFamily(HConstants.CATALOG_FAMILY)<a name="line.1431"></a>
-<span class="sourceLineNo">1432</span> .setQualifier(getRegionStateColumn())<a name="line.1432"></a>
-<span class="sourceLineNo">1433</span> .setTimestamp(put.getTimestamp())<a name="line.1433"></a>
-<span class="sourceLineNo">1434</span> .setType(Cell.Type.Put)<a name="line.1434"></a>
-<span class="sourceLineNo">1435</span> .setValue(Bytes.toBytes(state.name()))<a name="line.1435"></a>
-<span class="sourceLineNo">1436</span> .build());<a name="line.1436"></a>
-<span class="sourceLineNo">1437</span> }<a name="line.1437"></a>
-<span class="sourceLineNo">1438</span><a name="line.1438"></a>
-<span class="sourceLineNo">1439</span> /**<a name="line.1439"></a>
-<span class="sourceLineNo">1440</span> * Adds daughter region infos to hbase:meta row for the specified region. Note that this does not<a name="line.1440"></a>
-<span class="sourceLineNo">1441</span> * add its daughter's as different rows, but adds information about the daughters in the same row<a name="line.1441"></a>
-<span class="sourceLineNo">1442</span> * as the parent. Use<a name="line.1442"></a>
-<span class="sourceLineNo">1443</span> * {@link #splitRegion(Connection, RegionInfo, long, RegionInfo, RegionInfo, ServerName, int)}<a name="line.1443"></a>
-<span class="sourceLineNo">1444</span> * if you want to do that.<a name="line.1444"></a>
-<span class="sourceLineNo">1445</span> * @param connection connection we're using<a name="line.1445"></a>
-<span class="sourceLineNo">1446</span> * @param regionInfo RegionInfo of parent region<a name="line.1446"></a>
-<span class="sourceLineNo">1447</span> * @param splitA first split daughter of the parent regionInfo<a name="line.1447"></a>
-<span class="sourceLineNo">1448</span> * @param splitB second split daughter of the parent regionInfo<a name="line.1448"></a>
-<span class="sourceLineNo">1449</span> * @throws IOException if problem connecting or updating meta<a name="line.1449"></a>
-<span class="sourceLineNo">1450</span> */<a name="line.1450"></a>
-<span class="sourceLineNo">1451</span> public static void addSplitsToParent(Connection connection, RegionInfo regionInfo,<a name="line.1451"></a>
-<span class="sourceLineNo">1452</span> RegionInfo splitA, RegionInfo splitB) throws IOException {<a name="line.1452"></a>
-<span class="sourceLineNo">1453</span> Table meta = getMetaHTable(connection);<a name="line.1453"></a>
-<span class="sourceLineNo">1454</span> try {<a name="line.1454"></a>
-<span class="sourceLineNo">1455</span> Put put = makePutFromRegionInfo(regionInfo, EnvironmentEdgeManager.currentTime());<a name="line.1455"></a>
-<span class="sourceLineNo">1456</span> addDaughtersToPut(put, splitA, splitB);<a name="line.1456"></a>
-<span class="sourceLineNo">1457</span> meta.put(put);<a name="line.1457"></a>
-<span class="sourceLineNo">1458</span> debugLogMutation(put);<a name="line.1458"></a>
-<span class="sourceLineNo">1459</span> LOG.debug("Added region {}", regionInfo.getRegionNameAsString());<a name="line.1459"></a>
-<span class="sourceLineNo">1460</span> } finally {<a name="line.1460"></a>
-<span class="sourceLineNo">1461</span> meta.close();<a name="line.1461"></a>
-<span class="sourceLineNo">1462</span> }<a name="line.1462"></a>
-<span class="sourceLineNo">1463</span> }<a name="line.1463"></a>
-<span class="sourceLineNo">1464</span><a name="line.1464"></a>
-<span class="sourceLineNo">1465</span> /**<a name="line.1465"></a>
-<span class="sourceLineNo">1466</span> * Adds a (single) hbase:meta row for the specified new region and its daughters. Note that this<a name="line.1466"></a>
-<span class="sourceLineNo">1467</span> * does not add its daughter's as different rows, but adds information about the daughters<a name="line.1467"></a>
-<span class="sourceLineNo">1468</span> * in the same row as the parent. Use<a name="line.1468"></a>
-<span class="sourceLineNo">1469</span> * {@link #splitRegion(Connection, RegionInfo, long, RegionInfo, RegionInfo, ServerName, int)}<a name="line.1469"></a>
-<span class="sourceLineNo">1470</span> * if you want to do that.<a name="line.1470"></a>
-<span class="sourceLineNo">1471</span> * @param connection connection we're using<a name="line.1471"></a>
-<span class="sourceLineNo">1472</span> * @param regionInfo region information<a name="line.1472"></a>
-<span class="sourceLineNo">1473</span> * @throws IOException if problem connecting or updating meta<a name="line.1473"></a>
-<span class="sourceLineNo">1474</span> */<a name="line.1474"></a>
-<span class="sourceLineNo">1475</span> @VisibleForTesting<a name="line.1475"></a>
-<span class="sourceLineNo">1476</span> public static void addRegionToMeta(Connection connection, RegionInfo regionInfo)<a name="line.1476"></a>
-<span class="sourceLineNo">1477</span> throws IOException {<a name="line.1477"></a>
-<span class="sourceLineNo">1478</span> addRegionsToMeta(connection, Collections.singletonList(regionInfo), 1);<a name="line.1478"></a>
-<span class="sourceLineNo">1479</span> }<a name="line.1479"></a>
-<span class="sourceLineNo">1480</span><a name="line.1480"></a>
-<span class="sourceLineNo">1481</span> /**<a name="line.1481"></a>
-<span class="sourceLineNo">1482</span> * Adds a hbase:meta row for each of the specified new regions. Initial state for new regions<a name="line.1482"></a>
-<span class="sourceLineNo">1483</span> * is CLOSED.<a name="line.1483"></a>
-<span class="sourceLineNo">1484</span> * @param connection connection we're using<a name="line.1484"></a>
-<span class="sourceLineNo">1485</span> * @param regionInfos region information list<a name="line.1485"></a>
-<span class="sourceLineNo">1486</span> * @throws IOException if problem connecting or updating meta<a name="line.1486"></a>
-<span class="sourceLineNo">1487</span> */<a name="line.1487"></a>
-<span class="sourceLineNo">1488</span> public static void addRegionsToMeta(Connection connection, List<RegionInfo> regionInfos,<a name="line.1488"></a>
-<span class="sourceLineNo">1489</span> int regionReplication) throws IOException {<a name="line.1489"></a>
-<span class="sourceLineNo">1490</span> addRegionsToMeta(connection, regionInfos, regionReplication,<a name="line.1490"></a>
-<span class="sourceLineNo">1491</span> EnvironmentEdgeManager.currentTime());<a name="line.1491"></a>
-<span class="sourceLineNo">1492</span> }<a name="line.1492"></a>
-<span class="sourceLineNo">1493</span><a name="line.1493"></a>
-<span class="sourceLineNo">1494</span> /**<a name="line.1494"></a>
-<span class="sourceLineNo">1495</span> * Adds a hbase:meta row for each of the specified new regions. Initial state for new regions<a name="line.1495"></a>
-<span class="sourceLineNo">1496</span> * is CLOSED.<a name="line.1496"></a>
-<span class="sourceLineNo">1497</span> * @param connection connection we're using<a name="line.1497"></a>
-<span class="sourceLineNo">1498</span> * @param regionInfos region information list<a name="line.1498"></a>
-<span class="sourceLineNo">1499</span> * @param regionReplication<a name="line.1499"></a>
-<span class="sourceLineNo">1500</span> * @param ts desired timestamp<a name="line.1500"></a>
-<span class="sourceLineNo">1501</span> * @throws IOException if problem connecting or updating meta<a name="line.1501"></a>
-<span class="sourceLineNo">1502</span> */<a name="line.1502"></a>
-<span class="sourceLineNo">1503</span> private static void addRegionsToMeta(Connection connection, List<RegionInfo> regionInfos,<a name="line.1503"></a>
-<span class="sourceLineNo">1504</span> int regionReplication, long ts) throws IOException {<a name="line.1504"></a>
-<span class="sourceLineNo">1505</span> List<Put> puts = new ArrayList<>();<a name="line.1505"></a>
-<span class="sourceLineNo">1506</span> for (RegionInfo regionInfo : regionInfos) {<a name="line.1506"></a>
-<span class="sourceLineNo">1507</span> if (RegionReplicaUtil.isDefaultReplica(regionInfo)) {<a name="line.1507"></a>
-<span class="sourceLineNo">1508</span> Put put = makePutFromRegionInfo(regionInfo, ts);<a name="line.1508"></a>
-<span class="sourceLineNo">1509</span> // New regions are added with initial state of CLOSED.<a name="line.1509"></a>
-<span class="sourceLineNo">1510</span> addRegionStateToPut(put, RegionState.State.CLOSED);<a name="line.1510"></a>
-<span class="sourceLineNo">1511</span> // Add empty locations for region replicas so that number of replicas can be cached<a name="line.1511"></a>
-<span class="sourceLineNo">1512</span> // whenever the primary region is looked up from meta<a name="line.1512"></a>
-<span class="sourceLineNo">1513</span> for (int i = 1; i < regionReplication; i++) {<a name="line.1513"></a>
-<span class="sourceLineNo">1514</span> addEmptyLocation(put, i);<a name="line.1514"></a>
-<span class="sourceLineNo">1515</span> }<a name="line.1515"></a>
-<span class="sourceLineNo">1516</span> puts.add(put);<a name="line.1516"></a>
-<span class="sourceLineNo">1517</span> }<a name="line.1517"></a>
-<span class="sourceLineNo">1518</span> }<a name="line.1518"></a>
-<span class="sourceLineNo">1519</span> putsToMetaTable(connection, puts);<a name="line.1519"></a>
-<span class="sourceLineNo">1520</span> LOG.info("Added {} regions to meta.", puts.size());<a name="line.1520"></a>
-<span class="sourceLineNo">1521</span> }<a name="line.1521"></a>
-<span class="sourceLineNo">1522</span><a name="line.1522"></a>
-<span class="sourceLineNo">1523</span> /**<a name="line.1523"></a>
-<span class="sourceLineNo">1524</span> * Merge the two regions into one in an atomic operation. Deletes the two merging regions in<a name="line.1524"></a>
-<span class="sourceLineNo">1525</span> * hbase:meta and adds the merged region with the information of two merging regions.<a name="line.1525"></a>
-<span class="sourceLineNo">1526</span> * @param connection connection we're using<a name="line.1526"></a>
-<span class="sourceLineNo">1527</span> * @param mergedRegion the merged region<a name="line.1527"></a>
-<span class="sourceLineNo">1528</span> * @param regionA merge parent region A<a name="line.1528"></a>
-<span class="sourceLineNo">1529</span> * @param regionAOpenSeqNum the next open sequence id for region A, used by serial replication. -1<a name="line.1529"></a>
-<span class="sourceLineNo">1530</span> * if not necessary.<a name="line.1530"></a>
-<span class="sourceLineNo">1531</span> * @param regionB merge parent region B<a name="line.1531"></a>
-<span class="sourceLineNo">1532</span> * @param regionBOpenSeqNum the next open sequence id for region B, used by serial replication. -1<a name="line.1532"></a>
-<span class="sourceLineNo">1533</span> * if not necessary.<a name="line.1533"></a>
-<span class="sourceLineNo">1534</span> * @param sn the location of the region<a name="line.1534"></a>
-<span class="sourceLineNo">1535</span> */<a name="line.1535"></a>
-<span class="sourceLineNo">1536</span> public static void mergeRegions(Connection connection, RegionInfo mergedRegion,<a name="line.1536"></a>
-<span class="sourceLineNo">1537</span> RegionInfo regionA, long regionAOpenSeqNum, RegionInfo regionB, long regionBOpenSeqNum,<a name="line.1537"></a>
-<span class="sourceLineNo">1538</span> ServerName sn, int regionReplication) throws IOException {<a name="line.1538"></a>
-<span class="sourceLineNo">1539</span> try (Table meta = getMetaHTable(connection)) {<a name="line.1539"></a>
-<span class="sourceLineNo">1540</span> long time = EnvironmentEdgeManager.currentTime();<a name="line.1540"></a>
-<span class="sourceLineNo">1541</span> List<Mutation> mutations = new ArrayList<>();<a name="line.1541"></a>
-<span class="sourceLineNo">1542</span><a name="line.1542"></a>
-<span class="sourceLineNo">1543</span> List<RegionInfo> replicationParents = new ArrayList<>(2);<a name="line.1543"></a>
-<span class="sourceLineNo">1544</span> // Deletes for merging regions<a name="line.1544"></a>
-<span class="sourceLineNo">1545</span> mutations.add(makeDeleteFromRegionInfo(regionA, time));<a name="line.1545"></a>
-<span class="sourceLineNo">1546</span> if (regionAOpenSeqNum > 0) {<a name="line.1546"></a>
-<span class="sourceLineNo">1547</span> mutations.add(makePutForReplicationBarrier(regionA, regionAOpenSeqNum, time));<a name="line.1547"></a>
-<span class="sourceLineNo">1548</span> replicationParents.add(regionA);<a name="line.1548"></a>
-<span class="sourceLineNo">1549</span> }<a name="line.1549"></a>
-<span class="sourceLineNo">1550</span> mutations.add(makeDeleteFromRegionInfo(regionB, time));<a name="line.1550"></a>
-<span class="sourceLineNo">1551</span> if (regionBOpenSeqNum > 0) {<a name="line.1551"></a>
-<span class="sourceLineNo">1552</span> mutations.add(makePutForReplicationBarrier(regionB, regionBOpenSeqNum, time));<a name="line.1552"></a>
-<span class="sourceLineNo">1553</span> replicationParents.add(regionB);<a name="line.1553"></a>
-<span class="sourceLineNo">1554</span> }<a name="line.1554"></a>
-<span class="sourceLineNo">1555</span><a name="line.1555"></a>
-<span class="sourceLineNo">1556</span> // Put for parent<a name="line.1556"></a>
-<span class="sourceLineNo">1557</span> Put putOfMerged = makePutFromRegionInfo(mergedRegion, time);<a name="line.1557"></a>
-<span class="sourceLineNo">1558</span> putOfMerged.add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.1558"></a>
-<span class="sourceLineNo">1559</span> .setRow(putOfMerged.getRow())<a name="line.1559"></a>
-<span class="sourceLineNo">1560</span> .setFamily(HConstants.CATALOG_FAMILY)<a name="line.1560"></a>
-<span class="sourceLineNo">1561</span> .setQualifier(HConstants.MERGEA_QUALIFIER)<a name="line.1561"></a>
-<span class="sourceLineNo">1562</span> .setTimestamp(putOfMerged.getTimestamp())<a name="line.1562"></a>
-<span class="sourceLineNo">1563</span> .setType(Type.Put)<a name="line.1563"></a>
-<span class="sourceLineNo">1564</span> .setValue(RegionInfo.toByteArray(regionA))<a name="line.1564"></a>
-<span class="sourceLineNo">1565</span> .build())<a name="line.1565"></a>
-<span class="sourceLineNo">1566</span> .add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.1566"></a>
+<span class="sourceLineNo">1349</span> if (ps.isEmpty()) {<a name="line.1349"></a>
+<span class="sourceLineNo">1350</span> return;<a name="line.1350"></a>
+<span class="sourceLineNo">1351</span> }<a name="line.1351"></a>
+<span class="sourceLineNo">1352</span> try (Table t = getMetaHTable(connection)) {<a name="line.1352"></a>
+<span class="sourceLineNo">1353</span> debugLogMutations(ps);<a name="line.1353"></a>
+<span class="sourceLineNo">1354</span> // the implementation for putting a single Put is much simpler so here we do a check first.<a name="line.1354"></a>
+<span class="sourceLineNo">1355</span> if (ps.size() == 1) {<a name="line.1355"></a>
+<span class="sourceLineNo">1356</span> t.put(ps.get(0));<a name="line.1356"></a>
+<span class="sourceLineNo">1357</span> } else {<a name="line.1357"></a>
+<span class="sourceLineNo">1358</span> t.put(ps);<a name="line.1358"></a>
+<span class="sourceLineNo">1359</span> }<a name="line.1359"></a>
+<span class="sourceLineNo">1360</span> }<a name="line.1360"></a>
+<span class="sourceLineNo">1361</span> }<a name="line.1361"></a>
+<span class="sourceLineNo">1362</span><a name="line.1362"></a>
+<span class="sourceLineNo">1363</span> /**<a name="line.1363"></a>
+<span class="sourceLineNo">1364</span> * Delete the passed <code>d</code> from the <code>hbase:meta</code> table.<a name="line.1364"></a>
+<span class="sourceLineNo">1365</span> * @param connection connection we're using<a name="line.1365"></a>
+<span class="sourceLineNo">1366</span> * @param d Delete to add to hbase:meta<a name="line.1366"></a>
+<span class="sourceLineNo">1367</span> */<a name="line.1367"></a>
+<span class="sourceLineNo">1368</span> private static void deleteFromMetaTable(final Connection connection, final Delete d)<a name="line.1368"></a>
+<span class="sourceLineNo">1369</span> throws IOException {<a name="line.1369"></a>
+<span class="sourceLineNo">1370</span> List<Delete> dels = new ArrayList<>(1);<a name="line.1370"></a>
+<span class="sourceLineNo">1371</span> dels.add(d);<a name="line.1371"></a>
+<span class="sourceLineNo">1372</span> deleteFromMetaTable(connection, dels);<a name="line.1372"></a>
+<span class="sourceLineNo">1373</span> }<a name="line.1373"></a>
+<span class="sourceLineNo">1374</span><a name="line.1374"></a>
+<span class="sourceLineNo">1375</span> /**<a name="line.1375"></a>
+<span class="sourceLineNo">1376</span> * Delete the passed <code>deletes</code> from the <code>hbase:meta</code> table.<a name="line.1376"></a>
+<span class="sourceLineNo">1377</span> * @param connection connection we're using<a name="line.1377"></a>
+<span class="sourceLineNo">1378</span> * @param deletes Deletes to add to hbase:meta This list should support #remove.<a name="line.1378"></a>
+<span class="sourceLineNo">1379</span> */<a name="line.1379"></a>
+<span class="sourceLineNo">1380</span> private static void deleteFromMetaTable(final Connection connection, final List<Delete> deletes)<a name="line.1380"></a>
+<span class="sourceLineNo">1381</span> throws IOException {<a name="line.1381"></a>
+<span class="sourceLineNo">1382</span> try (Table t = getMetaHTable(connection)) {<a name="line.1382"></a>
+<span class="sourceLineNo">1383</span> debugLogMutations(deletes);<a name="line.1383"></a>
+<span class="sourceLineNo">1384</span> t.delete(deletes);<a name="line.1384"></a>
+<span class="sourceLineNo">1385</span> }<a name="line.1385"></a>
+<span class="sourceLineNo">1386</span> }<a name="line.1386"></a>
+<span class="sourceLineNo">1387</span><a name="line.1387"></a>
+<span class="sourceLineNo">1388</span> /**<a name="line.1388"></a>
+<span class="sourceLineNo">1389</span> * Deletes some replica columns corresponding to replicas for the passed rows<a name="line.1389"></a>
+<span class="sourceLineNo">1390</span> * @param metaRows rows in hbase:meta<a name="line.1390"></a>
+<span class="sourceLineNo">1391</span> * @param replicaIndexToDeleteFrom the replica ID we would start deleting from<a name="line.1391"></a>
+<span class="sourceLineNo">1392</span> * @param numReplicasToRemove how many replicas to remove<a name="line.1392"></a>
+<span class="sourceLineNo">1393</span> * @param connection connection we're using to access meta table<a name="line.1393"></a>
+<span class="sourceLineNo">1394</span> */<a name="line.1394"></a>
+<span class="sourceLineNo">1395</span> public static void removeRegionReplicasFromMeta(Set<byte[]> metaRows,<a name="line.1395"></a>
+<span class="sourceLineNo">1396</span> int replicaIndexToDeleteFrom, int numReplicasToRemove, Connection connection)<a name="line.1396"></a>
+<span class="sourceLineNo">1397</span> throws IOException {<a name="line.1397"></a>
+<span class="sourceLineNo">1398</span> int absoluteIndex = replicaIndexToDeleteFrom + numReplicasToRemove;<a name="line.1398"></a>
+<span class="sourceLineNo">1399</span> for (byte[] row : metaRows) {<a name="line.1399"></a>
+<span class="sourceLineNo">1400</span> long now = EnvironmentEdgeManager.currentTime();<a name="line.1400"></a>
+<span class="sourceLineNo">1401</span> Delete deleteReplicaLocations = new Delete(row);<a name="line.1401"></a>
+<span class="sourceLineNo">1402</span> for (int i = replicaIndexToDeleteFrom; i < absoluteIndex; i++) {<a name="line.1402"></a>
+<span class="sourceLineNo">1403</span> deleteReplicaLocations.addColumns(getCatalogFamily(),<a name="line.1403"></a>
+<span class="sourceLineNo">1404</span> getServerColumn(i), now);<a name="line.1404"></a>
+<span class="sourceLineNo">1405</span> deleteReplicaLocations.addColumns(getCatalogFamily(),<a name="line.1405"></a>
+<span class="sourceLineNo">1406</span> getSeqNumColumn(i), now);<a name="line.1406"></a>
+<span class="sourceLineNo">1407</span> deleteReplicaLocations.addColumns(getCatalogFamily(),<a name="line.1407"></a>
+<span class="sourceLineNo">1408</span> getStartCodeColumn(i), now);<a name="line.1408"></a>
+<span class="sourceLineNo">1409</span> }<a name="line.1409"></a>
+<span class="sourceLineNo">1410</span> deleteFromMetaTable(connection, deleteReplicaLocations);<a name="line.1410"></a>
+<span class="sourceLineNo">1411</span> }<a name="line.1411"></a>
+<span class="sourceLineNo">1412</span> }<a name="line.1412"></a>
+<span class="sourceLineNo">1413</span><a name="line.1413"></a>
+<span class="sourceLineNo">1414</span> /**<a name="line.1414"></a>
+<span class="sourceLineNo">1415</span> * Execute the passed <code>mutations</code> against <code>hbase:meta</code> table.<a name="line.1415"></a>
+<span class="sourceLineNo">1416</span> * @param connection connection we're using<a name="line.1416"></a>
+<span class="sourceLineNo">1417</span> * @param mutations Puts and Deletes to execute on hbase:meta<a name="line.1417"></a>
+<span class="sourceLineNo">1418</span> * @throws IOException<a name="line.1418"></a>
+<span class="sourceLineNo">1419</span> */<a name="line.1419"></a>
+<span class="sourceLineNo">1420</span> public static void mutateMetaTable(final Connection connection,<a name="line.1420"></a>
+<span class="sourceLineNo">1421</span> final List<Mutation> mutations)<a name="line.1421"></a>
+<span class="sourceLineNo">1422</span> throws IOException {<a name="line.1422"></a>
+<span class="sourceLineNo">1423</span> Table t = getMetaHTable(connection);<a name="line.1423"></a>
+<span class="sourceLineNo">1424</span> try {<a name="line.1424"></a>
+<span class="sourceLineNo">1425</span> debugLogMutations(mutations);<a name="line.1425"></a>
+<span class="sourceLineNo">1426</span> t.batch(mutations, null);<a name="line.1426"></a>
+<span class="sourceLineNo">1427</span> } catch (InterruptedException e) {<a name="line.1427"></a>
+<span class="sourceLineNo">1428</span> InterruptedIOException ie = new InterruptedIOException(e.getMessage());<a name="line.1428"></a>
+<span class="sourceLineNo">1429</span> ie.initCause(e);<a name="line.1429"></a>
+<span class="sourceLineNo">1430</span> throw ie;<a name="line.1430"></a>
+<span class="sourceLineNo">1431</span> } finally {<a name="line.1431"></a>
+<span class="sourceLineNo">1432</span> t.close();<a name="line.1432"></a>
+<span class="sourceLineNo">1433</span> }<a name="line.1433"></a>
+<span class="sourceLineNo">1434</span> }<a name="line.1434"></a>
+<span class="sourceLineNo">1435</span><a name="line.1435"></a>
+<span class="sourceLineNo">1436</span> private static void addRegionStateToPut(Put put, RegionState.State state) throws IOException {<a name="line.1436"></a>
+<span class="sourceLineNo">1437</span> put.add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.1437"></a>
+<span class="sourceLineNo">1438</span> .setRow(put.getRow())<a name="line.1438"></a>
+<span class="sourceLineNo">1439</span> .setFamily(HConstants.CATALOG_FAMILY)<a name="line.1439"></a>
+<span class="sourceLineNo">1440</span> .setQualifier(getRegionStateColumn())<a name="line.1440"></a>
+<span class="sourceLineNo">1441</span> .setTimestamp(put.getTimestamp())<a name="line.1441"></a>
+<span class="sourceLineNo">1442</span> .setType(Cell.Type.Put)<a name="line.1442"></a>
+<span class="sourceLineNo">1443</span> .setValue(Bytes.toBytes(state.name()))<a name="line.1443"></a>
+<span class="sourceLineNo">1444</span> .build());<a name="line.1444"></a>
+<span class="sourceLineNo">1445</span> }<a name="line.1445"></a>
+<span class="sourceLineNo">1446</span><a name="line.1446"></a>
+<span class="sourceLineNo">1447</span> /**<a name="line.1447"></a>
+<span class="sourceLineNo">1448</span> * Adds daughter region infos to hbase:meta row for the specified region. Note that this does not<a name="line.1448"></a>
+<span class="sourceLineNo">1449</span> * add its daughter's as different rows, but adds information about the daughters in the same row<a name="line.1449"></a>
+<span class="sourceLineNo">1450</span> * as the parent. Use<a name="line.1450"></a>
+<span class="sourceLineNo">1451</span> * {@link #splitRegion(Connection, RegionInfo, long, RegionInfo, RegionInfo, ServerName, int)}<a name="line.1451"></a>
+<span class="sourceLineNo">1452</span> * if you want to do that.<a name="line.1452"></a>
+<span class="sourceLineNo">1453</span> * @param connection connection we're using<a name="line.1453"></a>
+<span class="sourceLineNo">1454</span> * @param regionInfo RegionInfo of parent region<a name="line.1454"></a>
+<span class="sourceLineNo">1455</span> * @param splitA first split daughter of the parent regionInfo<a name="line.1455"></a>
+<span class="sourceLineNo">1456</span> * @param splitB second split daughter of the parent regionInfo<a name="line.1456"></a>
+<span class="sourceLineNo">1457</span> * @throws IOException if problem connecting or updating meta<a name="line.1457"></a>
+<span class="sourceLineNo">1458</span> */<a name="line.1458"></a>
+<span class="sourceLineNo">1459</span> public static void addSplitsToParent(Connection connection, RegionInfo regionInfo,<a name="line.1459"></a>
+<span class="sourceLineNo">1460</span> RegionInfo splitA, RegionInfo splitB) throws IOException {<a name="line.1460"></a>
+<span class="sourceLineNo">1461</span> Table meta = getMetaHTable(connection);<a name="line.1461"></a>
+<span class="sourceLineNo">1462</span> try {<a name="line.1462"></a>
+<span class="sourceLineNo">1463</span> Put put = makePutFromRegionInfo(regionInfo, EnvironmentEdgeManager.currentTime());<a name="line.1463"></a>
+<span class="sourceLineNo">1464</span> addDaughtersToPut(put, splitA, splitB);<a name="line.1464"></a>
+<span class="sourceLineNo">1465</span> meta.put(put);<a name="line.1465"></a>
+<span class="sourceLineNo">1466</span> debugLogMutation(put);<a name="line.1466"></a>
+<span class="sourceLineNo">1467</span> LOG.debug("Added region {}", regionInfo.getRegionNameAsString());<a name="line.1467"></a>
+<span class="sourceLineNo">1468</span> } finally {<a name="line.1468"></a>
+<span class="sourceLineNo">1469</span> meta.close();<a name="line.1469"></a>
+<span class="sourceLineNo">1470</span> }<a name="line.1470"></a>
+<span class="sourceLineNo">1471</span> }<a name="line.1471"></a>
+<span class="sourceLineNo">1472</span><a name="line.1472"></a>
+<span class="sourceLineNo">1473</span> /**<a name="line.1473"></a>
+<span class="sourceLineNo">1474</span> * Adds a (single) hbase:meta row for the specified new region and its daughters. Note that this<a name="line.1474"></a>
+<span class="sourceLineNo">1475</span> * does not add its daughter's as different rows, but adds information about the daughters<a name="line.1475"></a>
+<span class="sourceLineNo">1476</span> * in the same row as the parent. Use<a name="line.1476"></a>
+<span class="sourceLineNo">1477</span> * {@link #splitRegion(Connection, RegionInfo, long, RegionInfo, RegionInfo, ServerName, int)}<a name="line.1477"></a>
+<span class="sourceLineNo">1478</span> * if you want to do that.<a name="line.1478"></a>
+<span class="sourceLineNo">1479</span> * @param connection connection we're using<a name="line.1479"></a>
+<span class="sourceLineNo">1480</span> * @param regionInfo region information<a name="line.1480"></a>
+<span class="sourceLineNo">1481</span> * @throws IOException if problem connecting or updating meta<a name="line.1481"></a>
+<span class="sourceLineNo">1482</span> */<a name="line.1482"></a>
+<span class="sourceLineNo">1483</span> @VisibleForTesting<a name="line.1483"></a>
+<span class="sourceLineNo">1484</span> public static void addRegionToMeta(Connection connection, RegionInfo regionInfo)<a name="line.1484"></a>
+<span class="sourceLineNo">1485</span> throws IOException {<a name="line.1485"></a>
+<span class="sourceLineNo">1486</span> addRegionsToMeta(connection, Collections.singletonList(regionInfo), 1);<a name="line.1486"></a>
+<span class="sourceLineNo">1487</span> }<a name="line.1487"></a>
+<span class="sourceLineNo">1488</span><a name="line.1488"></a>
+<span class="sourceLineNo">1489</span> /**<a name="line.1489"></a>
+<span class="sourceLineNo">1490</span> * Adds a hbase:meta row for each of the specified new regions. Initial state for new regions<a name="line.1490"></a>
+<span class="sourceLineNo">1491</span> * is CLOSED.<a name="line.1491"></a>
+<span class="sourceLineNo">1492</span> * @param connection connection we're using<a name="line.1492"></a>
+<span class="sourceLineNo">1493</span> * @param regionInfos region information list<a name="line.1493"></a>
+<span class="sourceLineNo">1494</span> * @throws IOException if problem connecting or updating meta<a name="line.1494"></a>
+<span class="sourceLineNo">1495</span> */<a name="line.1495"></a>
+<span class="sourceLineNo">1496</span> public static void addRegionsToMeta(Connection connection, List<RegionInfo> regionInfos,<a name="line.1496"></a>
+<span class="sourceLineNo">1497</span> int regionReplication) throws IOException {<a name="line.1497"></a>
+<span class="sourceLineNo">1498</span> addRegionsToMeta(connection, regionInfos, regionReplication,<a name="line.1498"></a>
+<span class="sourceLineNo">1499</span> EnvironmentEdgeManager.currentTime());<a name="line.1499"></a>
+<span class="sourceLineNo">1500</span> }<a name="line.1500"></a>
+<span class="sourceLineNo">1501</span><a name="line.1501"></a>
+<span class="sourceLineNo">1502</span> /**<a name="line.1502"></a>
+<span class="sourceLineNo">1503</span> * Adds a hbase:meta row for each of the specified new regions. Initial state for new regions<a name="line.1503"></a>
+<span class="sourceLineNo">1504</span> * is CLOSED.<a name="line.1504"></a>
+<span class="sourceLineNo">1505</span> * @param connection connection we're using<a name="line.1505"></a>
+<span class="sourceLineNo">1506</span> * @param regionInfos region information list<a name="line.1506"></a>
+<span class="sourceLineNo">1507</span> * @param regionReplication<a name="line.1507"></a>
+<span class="sourceLineNo">1508</span> * @param ts desired timestamp<a name="line.1508"></a>
+<span class="sourceLineNo">1509</span> * @throws IOException if problem connecting or updating meta<a name="line.1509"></a>
+<span class="sourceLineNo">1510</span> */<a name="line.1510"></a>
+<span class="sourceLineNo">1511</span> private static void addRegionsToMeta(Connection connection, List<RegionInfo> regionInfos,<a name="line.1511"></a>
+<span class="sourceLineNo">1512</span> int regionReplication, long ts) throws IOException {<a name="line.1512"></a>
+<span class="sourceLineNo">1513</span> List<Put> puts = new ArrayList<>();<a name="line.1513"></a>
+<span class="sourceLineNo">1514</span> for (RegionInfo regionInfo : regionInfos) {<a name="line.1514"></a>
+<span class="sourceLineNo">1515</span> if (RegionReplicaUtil.isDefaultReplica(regionInfo)) {<a name="line.1515"></a>
+<span class="sourceLineNo">1516</span> Put put = makePutFromRegionInfo(regionInfo, ts);<a name="line.1516"></a>
+<span class="sourceLineNo">1517</span> // New regions are added with initial state of CLOSED.<a name="line.1517"></a>
+<span class="sourceLineNo">1518</span> addRegionStateToPut(put, RegionState.State.CLOSED);<a name="line.1518"></a>
+<span class="sourceLineNo">1519</span> // Add empty locations for region replicas so that number of replicas can be cached<a name="line.1519"></a>
+<span class="sourceLineNo">1520</span> // whenever the primary region is looked up from meta<a name="line.1520"></a>
+<span class="sourceLineNo">1521</span> for (int i = 1; i < regionReplication; i++) {<a name="line.1521"></a>
+<span class="sourceLineNo">1522</span> addEmptyLocation(put, i);<a name="line.1522"></a>
+<span class="sourceLineNo">1523</span> }<a name="line.1523"></a>
+<span class="sourceLineNo">1524</span> puts.add(put);<a name="line.1524"></a>
+<span class="sourceLineNo">1525</span> }<a name="line.1525"></a>
+<span class="sourceLineNo">1526</span> }<a name="line.1526"></a>
+<span class="sourceLineNo">1527</span> putsToMetaTable(connection, puts);<a name="line.1527"></a>
+<span class="sourceLineNo">1528</span> LOG.info("Added {} regions to meta.", puts.size());<a name="line.1528"></a>
+<span class="sourceLineNo">1529</span> }<a name="line.1529"></a>
+<span class="sourceLineNo">1530</span><a name="line.1530"></a>
+<span class="sourceLineNo">1531</span> /**<a name="line.1531"></a>
+<span class="sourceLineNo">1532</span> * Merge the two regions into one in an atomic operation. Deletes the two merging regions in<a name="line.1532"></a>
+<span class="sourceLineNo">1533</span> * hbase:meta and adds the merged region with the information of two merging regions.<a name="line.1533"></a>
+<span class="sourceLineNo">1534</span> * @param connection connection we're using<a name="line.1534"></a>
+<span class="sourceLineNo">1535</span> * @param mergedRegion the merged region<a name="line.1535"></a>
+<span class="sourceLineNo">1536</span> * @param regionA merge parent region A<a name="line.1536"></a>
+<span class="sourceLineNo">1537</span> * @param regionAOpenSeqNum the next open sequence id for region A, used by serial replication. -1<a name="line.1537"></a>
+<span class="sourceLineNo">1538</span> * if not necessary.<a name="line.1538"></a>
+<span class="sourceLineNo">1539</span> * @param regionB merge parent region B<a name="line.1539"></a>
+<span class="sourceLineNo">1540</span> * @param regionBOpenSeqNum the next open sequence id for region B, used by serial replication. -1<a name="line.1540"></a>
+<span class="sourceLineNo">1541</span> * if not necessary.<a name="line.1541"></a>
+<span class="sourceLineNo">1542</span> * @param sn the location of the region<a name="line.1542"></a>
+<span class="sourceLineNo">1543</span> */<a name="line.1543"></a>
+<span class="sourceLineNo">1544</span> public static void mergeRegions(Connection connection, RegionInfo mergedRegion,<a name="line.1544"></a>
+<span class="sourceLineNo">1545</span> RegionInfo regionA, long regionAOpenSeqNum, RegionInfo regionB, long regionBOpenSeqNum,<a name="line.1545"></a>
+<span class="sourceLineNo">1546</span> ServerName sn, int regionReplication) throws IOException {<a name="line.1546"></a>
+<span class="sourceLineNo">1547</span> try (Table meta = getMetaHTable(connection)) {<a name="line.1547"></a>
+<span class="sourceLineNo">1548</span> long time = EnvironmentEdgeManager.currentTime();<a name="line.1548"></a>
+<span class="sourceLineNo">1549</span> List<Mutation> mutations = new ArrayList<>();<a name="line.1549"></a>
+<span class="sourceLineNo">1550</span><a name="line.1550"></a>
+<span class="sourceLineNo">1551</span> List<RegionInfo> replicationParents = new ArrayList<>(2);<a name="line.1551"></a>
+<span class="sourceLineNo">1552</span> // Deletes for merging regions<a name="line.1552"></a>
+<span class="sourceLineNo">1553</span> mutations.add(makeDeleteFromRegionInfo(regionA, time));<a name="line.1553"></a>
+<span class="sourceLineNo">1554</span> if (regionAOpenSeqNum > 0) {<a name="line.1554"></a>
+<span class="sourceLineNo">1555</span> mutations.add(makePutForReplicationBarrier(regionA, regionAOpenSeqNum, time));<a name="line.1555"></a>
+<span class="sourceLineNo">1556</span> replicationParents.add(regionA);<a name="line.1556"></a>
+<span class="sourceLineNo">1557</span> }<a name="line.1557"></a>
+<span class="sourceLineNo">1558</span> mutations.add(makeDeleteFromRegionInfo(regionB, time));<a name="line.1558"></a>
+<span class="sourceLineNo">1559</span> if (regionBOpenSeqNum > 0) {<a name="line.1559"></a>
+<span class="sourceLineNo">1560</span> mutations.add(makePutForReplicationBarrier(regionB, regionBOpenSeqNum, time));<a name="line.1560"></a>
+<span class="sourceLineNo">1561</span> replicationParents.add(regionB);<a name="line.1561"></a>
+<span class="sourceLineNo">1562</span> }<a name="line.1562"></a>
+<span class="sourceLineNo">1563</span><a name="line.1563"></a>
+<span class="sourceLineNo">1564</span> // Put for parent<a name="line.1564"></a>
+<span class="sourceLineNo">1565</span> Put putOfMerged = makePutFromRegionInfo(mergedRegion, time);<a name="line.1565"></a>
+<span class="sourceLineNo">1566</span> putOfMerged.add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.1566"></a>
<span class="sourceLineNo">1567</span> .setRow(putOfMerged.getRow())<a name="line.1567"></a>
<span class="sourceLineNo">1568</span> .setFamily(HConstants.CATALOG_FAMILY)<a name="line.1568"></a>
-<span class="sourceLineNo">1569</span> .setQualifier(HConstants.MERGEB_QUALIFIER)<a name="line.1569"></a>
+<span class="sourceLineNo">1569</span> .setQualifier(HConstants.MERGEA_QUALIFIER)<a name="line.1569"></a>
<span class="sourceLineNo">1570</span> .setTimestamp(putOfMerged.getTimestamp())<a name="line.1570"></a>
<span class="sourceLineNo">1571</span> .setType(Type.Put)<a name="line.1571"></a>
-<span class="sourceLineNo">1572</span> .setValue(RegionInfo.toByteArray(regionB))<a name="line.1572"></a>
-<span class="sourceLineNo">1573</span> .build());<a name="line.1573"></a>
-<span class="sourceLineNo">1574</span> // Set initial state to CLOSED<a name="line.1574"></a>
-<span class="sourceLineNo">1575</span> // NOTE: If initial state is not set to CLOSED then merged region gets added with the<a name="line.1575"></a>
-<span class="sourceLineNo">1576</span> // default OFFLINE state. If Master gets restarted after this step, start up sequence of<a name="line.1576"></a>
-<span class="sourceLineNo">1577</span> // master tries to assign this offline region. This is followed by re-assignments of the<a name="line.1577"></a>
-<span class="sourceLineNo">1578</span> // merged region from resumed {@link MergeTableRegionsProcedure}<a name="line.1578"></a>
-<span class="sourceLineNo">1579</span> addRegionStateToPut(putOfMerged, RegionState.State.CLOSED);<a name="line.1579"></a>
-<span class="sourceLineNo">1580</span> mutations.add(putOfMerged);<a name="line.1580"></a>
-<span class="sourceLineNo">1581</span> // The merged is a new region, openSeqNum = 1 is fine. ServerName may be null<a name="line.1581"></a>
-<span class="sourceLineNo">1582</span> // if crash after merge happened but before we got to here.. means in-memory<a name="line.1582"></a>
-<span class="sourceLineNo">1583</span> // locations of offlined merged, now-closed, regions is lost. Should be ok. We<a name="line.1583"></a>
-<span class="sourceLineNo">1584</span> // assign the merged region later.<a name="line.1584"></a>
-<span class="sourceLineNo">1585</span> if (sn != null) {<a name="line.1585"></a>
-<span class="sourceLineNo">1586</span> addLocation(putOfMerged, sn, 1, mergedRegion.getReplicaId());<a name="line.1586"></a>
-<span class="sourceLineNo">1587</span> }<a name="line.1587"></a>
-<span class="sourceLineNo">1588</span><a name="line.1588"></a>
-<span class="sourceLineNo">1589</span> // Add empty locations for region replicas of the merged region so that number of replicas can<a name="line.1589"></a>
-<span class="sourceLineNo">1590</span> // be cached whenever the primary region is looked up from meta<a name="line.1590"></a>
-<span class="sourceLineNo">1591</span> for (int i = 1; i < regionReplication; i++) {<a name="line.1591"></a>
-<span class="sourceLineNo">1592</span> addEmptyLocation(putOfMerged, i);<a name="line.1592"></a>
-<span class="sourceLineNo">1593</span> }<a name="line.1593"></a>
-<span class="sourceLineNo">1594</span> // add parent reference for serial replication<a name="line.1594"></a>
-<span class="sourceLineNo">1595</span> if (!replicationParents.isEmpty()) {<a name="line.1595"></a>
-<span class="sourceLineNo">1596</span> addReplicationParent(putOfMerged, replicationParents);<a name="line.1596"></a>
-<span class="sourceLineNo">1597</span> }<a name="line.1597"></a>
-<span class="sourceLineNo">1598</span> byte[] tableRow = Bytes.toBytes(mergedRegion.getRegionNameAsString() + HConstants.DELIMITER);<a name="line.1598"></a>
-<span class="sourceLineNo">1599</span> multiMutate(connection, meta, tableRow, mutations);<a name="line.1599"></a>
-<span class="sourceLineNo">1600</span> }<a name="line.1600"></a>
-<span class="sourceLineNo">1601</span> }<a name="line.1601"></a>
-<span class="sourceLineNo">1602</span><a name="line.1602"></a>
-<span class="sourceLineNo">1603</span> /**<a name="line.1603"></a>
-<span class="sourceLineNo">1604</span> * Splits the region into two in an atomic operation. Offlines the parent region with the<a name="line.1604"></a>
-<span class="sourceLineNo">1605</span> * information that it is split into two, and also adds the daughter regions. Does not add the<a name="line.1605"></a>
-<span class="sourceLineNo">1606</span> * location information to the daughter regions since they are not open yet.<a name="line.1606"></a>
-<span class="sourceLineNo">1607</span> * @param connection connection we're using<a name="line.1607"></a>
-<span class="sourceLineNo">1608</span> * @param parent the parent region which is split<a name="line.1608"></a>
-<span class="sourceLineNo">1609</span> * @param parentOpenSeqNum the next open sequence id for parent region, used by serial<a name="line.1609"></a>
-<span class="sourceLineNo">1610</span> * replication. -1 if not necessary.<a name="line.1610"></a>
-<span class="sourceLineNo">1611</span> * @param splitA Split daughter region A<a name="line.1611"></a>
-<span class="sourceLineNo">1612</span> * @param splitB Split daughter region B<a name="line.1612"></a>
-<span class="sourceLineNo">1613</span> * @param sn the location of the region<a name="line.1613"></a>
-<span class="sourceLineNo">1614</span> */<a name="line.1614"></a>
-<span class="sourceLineNo">1615</span> public static void splitRegion(Connection connection, RegionInfo parent, long parentOpenSeqNum,<a name="line.1615"></a>
-<span class="sourceLineNo">1616</span> RegionInfo splitA, RegionInfo splitB, ServerName sn, int regionReplication)<a name="line.1616"></a>
-<span class="sourceLineNo">1617</span> throws IOException {<a name="line.1617"></a>
-<span class="sourceLineNo">1618</span> try (Table meta = getMetaHTable(connection)) {<a name="line.1618"></a>
-<span class="sourceLineNo">1619</span> long time = EnvironmentEdgeManager.currentTime();<a name="line.1619"></a>
-<span class="sourceLineNo">1620</span> // Put for parent<a name="line.1620"></a>
-<span class="sourceLineNo">1621</span> Put putParent = makePutFromRegionInfo(RegionInfoBuilder.newBuilder(parent)<a name="line.1621"></a>
-<span class="sourceLineNo">1622</span> .setOffline(true)<a name="line.1622"></a>
-<span class="sourceLineNo">1623</span> .setSplit(true).build(), time);<a name="line.1623"></a>
-<span class="sourceLineNo">1624</span> addDaughtersToPut(putParent, splitA, splitB);<a name="line.1624"></a>
-<span class="sourceLineNo">1625</span><a name="line.1625"></a>
-<span class="sourceLineNo">1626</span> // Puts for daughters<a name="line.1626"></a>
-<span class="sourceLineNo">1627</span> Put putA = makePutFromRegionInfo(splitA, time);<a name="line.1627"></a>
-<span class="sourceLineNo">1628</span> Put putB = makePutFromRegionInfo(splitB, time);<a name="line.1628"></a>
-<span class="sourceLineNo">1629</span> if (parentOpenSeqNum > 0) {<a name="line.1629"></a>
-<span class="sourceLineNo">1630</span> addReplicationBarrier(putParent, parentOpenSeqNum);<a name="line.1630"></a>
-<span class="sourceLineNo">1631</span> addReplicationParent(putA, Collections.singletonList(parent));<a name="line.1631"></a>
-<span class="sourceLineNo">1632</span> addReplicationParent(putB, Collections.singletonList(parent));<a name="line.1632"></a>
-<span class="sourceLineNo">1633</span> }<a name="line.1633"></a>
-<span class="sourceLineNo">1634</span> // Set initial state to CLOSED<a name="line.1634"></a>
-<span class="sourceLineNo">1635</span> // NOTE: If initial state is not set to CLOSED then daughter regions get added with the<a name="line.1635"></a>
-<span class="sourceLineNo">1636</span> // default OFFLINE state. If Master gets restarted after this step, start up sequence of<a name="line.1636"></a>
-<span class="sourceLineNo">1637</span> // master tries to assign these offline regions. This is followed by re-assignments of the<a name="line.1637"></a>
-<span class="sourceLineNo">1638</span> // daughter regions from resumed {@link SplitTableRegionProcedure}<a name="line.1638"></a>
-<span class="sourceLineNo">1639</span> addRegionStateToPut(putA, RegionState.State.CLOSED);<a name="line.1639"></a>
-<span class="sourceLineNo">1640</span> addRegionStateToPut(putB, RegionState.State.CLOSED);<a name="line.1640"></a>
-<span class="sourceLineNo">1641</span><a name="line.1641"></a>
-<span class="sourceLineNo">1642</span> addSequenceNum(putA, 1, splitA.getReplicaId()); // new regions, openSeqNum = 1 is fine.<a name="line.1642"></a>
-<span class="sourceLineNo">1643</span> addSequenceNum(putB, 1, splitB.getReplicaId());<a name="line.1643"></a>
-<span class="sourceLineNo">1644</span><a name="line.1644"></a>
-<span class="sourceLineNo">1645</span> // Add empty locations for region replicas of daughters so that number of replicas can be<a name="line.1645"></a>
-<span class="sourceLineNo">1646</span> // cached whenever the primary region is looked up from meta<a name="line.1646"></a>
-<span class="sourceLineNo">1647</span> for (int i = 1; i < regionReplication; i++) {<a name="line.1647"></a>
-<span class="sourceLineNo">1648</span> addEmptyLocation(putA, i);<a name="line.1648"></a>
-<span class="sourceLineNo">1649</span> addEmptyLocation(putB, i);<a name="line.1649"></a>
-<span class="sourceLineNo">1650</span> }<a name="line.1650"></a>
-<span class="sourceLineNo">1651</span><a name="line.1651"></a>
-<span class="sourceLineNo">1652</span> byte[] tableRow = Bytes.toBytes(parent.getRegionNameAsString() + HConstants.DELIMITER);<a name="line.1652"></a>
-<span class="sourceLineNo">1653</span> multiMutate(connection, meta, tableRow, putParent, putA, putB);<a name="line.1653"></a>
-<span class="sourceLineNo">1654</span> }<a name="line.1654"></a>
-<span class="sourceLineNo">1655</span> }<a name="line.1655"></a>
-<span class="sourceLineNo">1656</span><a name="line.1656"></a>
-<span class="sourceLineNo">1657</span> /**<a name="line.1657"></a>
-<span class="sourceLineNo">1658</span> * Update state of the table in meta.<a name="line.1658"></a>
-<span class="sourceLineNo">1659</span> * @param connection what we use for update<a name="line.1659"></a>
-<span class="sourceLineNo">1660</span> * @param state new state<a name="line.1660"></a>
-<span class="sourceLineNo">1661</span> */<a name="line.1661"></a>
-<span class="sourceLineNo">1662</span> private static void updateTableState(Connection connection, TableState state) throws IOException {<a name="line.1662"></a>
-<span class="sourceLineNo">1663</span> Put put = makePutFromTableState(state, EnvironmentEdgeManager.currentTime());<a name="line.1663"></a>
-<span class="sourceLineNo">1664</span> putToMetaTable(connection, put);<a name="line.1664"></a>
-<span class="sourceLineNo">1665</span> LOG.info("Updated {} in hbase:meta", state);<a name="line.1665"></a>
-<span class="sourceLineNo">1666</span> }<a name="line.1666"></a>
-<span class="sourceLineNo">1667</span><a name="line.1667"></a>
-<span class="sourceLineNo">1668</span> /**<a name="line.1668"></a>
-<span class="sourceLineNo">1669</span> * Construct PUT for given state<a name="line.1669"></a>
-<span class="sourceLineNo">1670</span> * @param state new state<a name="line.1670"></a>
-<span class="sourceLineNo">1671</span> */<a name="line.1671"></a>
-<span class="sourceLineNo">1672</span> public static Put makePutFromTableState(TableState state, long ts) {<a name="line.1672"></a>
-<span class="sourceLineNo">1673</span> Put put = new Put(state.getTableName().getName(), ts);<a name="line.1673"></a>
-<span class="sourceLineNo">1674</span> put.addColumn(getTableFamily(), getTableStateColumn(), state.convert().toByteArray());<a name="line.1674"></a>
-<span class="sourceLineNo">1675</span> return put;<a name="line.1675"></a>
-<span class="sourceLineNo">1676</span> }<a name="line.1676"></a>
-<span class="sourceLineNo">1677</span><a name="line.1677"></a>
-<span class="sourceLineNo">1678</span> /**<a name="line.1678"></a>
-<span class="sourceLineNo">1679</span> * Remove state for table from meta<a name="line.1679"></a>
-<span class="sourceLineNo">1680</span> * @param connection to use for deletion<a name="line.1680"></a>
-<span class="sourceLineNo">1681</span> * @param table to delete state for<a name="line.1681"></a>
-<span class="sourceLineNo">1682</span> */<a name="line.1682"></a>
-<span class="sourceLineNo">1683</span> public static void deleteTableState(Connection connection, TableName table)<a name="line.1683"></a>
-<span class="sourceLineNo">1684</span> throws IOException {<a name="line.1684"></a>
-<span class="sourceLineNo">1685</span> long time = EnvironmentEdgeManager.currentTime();<a name="line.1685"></a>
-<span class="sourceLineNo">1686</span> Delete delete = new Delete(table.getName());<a name="line.1686"></a>
-<span class="sourceLineNo">1687</span> delete.addColumns(getTableFamily(), getTableStateColumn(), time);<a name="line.1687"></a>
-<span class="sourceLineNo">1688</span> deleteFromMetaTable(connection, delete);<a name="line.1688"></a>
-<span class="sourceLineNo">1689</span> LOG.info("Deleted table " + table + " state from META");<a name="line.1689"></a>
-<span class="sourceLineNo">1690</span> }<a name="line.1690"></a>
-<span class="sourceLineNo">1691</span><a name="line.1691"></a>
-<span class="sourceLineNo">1692</span> private static void multiMutate(Connection connection, Table table, byte[] row,<a name="line.1692"></a>
-<span class="sourceLineNo">1693</span> Mutation... mutations) throws IOException {<a name="line.1693"></a>
-<span class="sourceLineNo">1694</span> multiMutate(connection, table, row, Arrays.asList(mutations));<a name="line.1694"></a>
-<span class="sourceLineNo">1695</span> }<a name="line.1695"></a>
-<span class="sourceLineNo">1696</span><a name="line.1696"></a>
-<span class="sourceLineNo">1697</span> /**<a name="line.1697"></a>
-<span class="sourceLineNo">1698</span> * Performs an atomic multi-mutate operation against the given table.<a name="line.1698"></a>
-<span class="sourceLineNo">1699</span> */<a name="line.1699"></a>
-<span class="sourceLineNo">1700</span> private static void multiMutate(Connection connection, final Table table, byte[] row,<a name="line.1700"></a>
-<span class="sourceLineNo">1701</span> final List<Mutation> mutations) throws IOException {<a name="line.1701"></a>
-<span class="sourceLineNo">1702</span> debugLogMutations(mutations);<a name="line.1702"></a>
-<span class="sourceLineNo">1703</span> // TODO: Need rollback!!!!<a name="line.1703"></a>
-<span class="sourceLineNo">1704</span> // TODO: Need Retry!!!<a name="line.1704"></a>
-<span class="sourceLineNo">1705</span> // TODO: What for a timeout? Default write timeout? GET FROM HTABLE?<a name="line.1705"></a>
-<span class="sourceLineNo">1706</span> // TODO: Review when we come through with ProcedureV2.<a name="line.1706"></a>
-<span class="sourceLineNo">1707</span> RegionServerCallable<MutateRowsResponse,<a name="line.1707"></a>
-<span class="sourceLineNo">1708</span> MultiRowMutationProtos.MultiRowMutationService.BlockingInterface> callable =<a name="line.1708"></a>
-<span class="sourceLineNo">1709</span> new RegionServerCallable<MutateRowsResponse,<a name="line.1709"></a>
-<span class="sourceLineNo">1710</span> MultiRowMutationProtos.MultiRowMutationService.BlockingInterface>(<a name="line.1710"></a>
-<span class="sourceLineNo">1711</span> connection, table.getName(), row, null/*RpcController not used in this CPEP!*/) {<a name="line.1711"></a>
-<span class="sourceLineNo">1712</span> @Override<a name="line.1712"></a>
-<span class="sourceLineNo">1713</span> protected MutateRowsResponse rpcCall() throws Exception {<a name="line.1713"></a>
-<span class="sourceLineNo">1714</span> final MutateRowsRequest.Builder builder = MutateRowsRequest.newBuilder();<a name="line.1714"></a>
-<span class="sourceLineNo">1715</span> for (Mutation mutation : mutations) {<a name="line.1715"></a>
-<span class="sourceLineNo">1716</span> if (mutation instanceof Put) {<a name="line.1716"></a>
-<span class="sourceLineNo">1717</span> builder.addMutationRequest(ProtobufUtil.toMutation(<a name="line.1717"></a>
-<span class="sourceLineNo">1718</span> ClientProtos.MutationProto.MutationType.PUT, mutation));<a name="line.1718"></a>
-<span class="sourceLineNo">1719</span> } else if (mutation instanceof Delete) {<a name="line.1719"></a>
-<span class="sourceLineNo">1720</span> builder.addMutationRequest(ProtobufUtil.toMutation(<a name="line.1720"></a>
-<span class="sourceLineNo">1721</span> ClientProtos.MutationProto.MutationType.DELETE, mutation));<a name="line.1721"></a>
-<span class="sourceLineNo">1722</span> } else {<a name="line.1722"></a>
-<span class="sourceLineNo">1723</span> throw new DoNotRetryIOException("multi in MetaEditor doesn't support "<a name="line.1723"></a>
-<span class="sourceLineNo">1724</span> + mutation.getClass().getName());<a name="line.1724"></a>
-<span class="sourceLineNo">1725</span> }<a name="line.1725"></a>
-<span class="sourceLineNo">1726</span> }<a name="line.1726"></a>
-<span class="sourceLineNo">1727</span> // The call to #prepare that ran before this invocation will have populated HRegionLocation.<a name="line.1727"></a>
-<span class="sourceLineNo">1728</span> HRegionLocation hrl = getLocation();<a name="line.1728"></a>
-<span class="sourceLineNo">1729</span> RegionSpecifier region = ProtobufUtil.buildRegionSpecifier(<a name="line.1729"></a>
-<span class="sourceLineNo">1730</span> RegionSpecifierType.REGION_NAME, hrl.getRegion().getRegionName());<a name="line.1730"></a>
-<span class="sourceLineNo">1731</span> builder.setRegion(region);<a name="line.1731"></a>
-<span class="sourceLineNo">1732</span> // The rpcController here is awkward. The Coprocessor Endpoint wants an instance of a<a name="line.1732"></a>
-<span class="sourceLineNo">1733</span> // com.google.protobuf but we are going over an rpc that is all shaded protobuf so it<a name="line.1733"></a>
-<span class="sourceLineNo">1734</span> // wants a org.apache.h.h.shaded.com.google.protobuf.RpcController. Set up a factory<a name="line.1734"></a>
-<span class="sourceLineNo">1735</span> // that makes com.google.protobuf.RpcController and then copy into it configs.<a name="line.1735"></a>
-<span class="sourceLineNo">1736</span> return getStub().mutateRows(null, builder.build());<a name="line.1736"></a>
-<span class="sourceLineNo">1737</span> }<a name="line.1737"></a>
-<span class="sourceLineNo">1738</span><a name="line.1738"></a>
-<span class="sourceLineNo">1739</span> @Override<a name="line.1739"></a>
-<span class="sourceLineNo">1740</span> // Called on the end of the super.prepare call. Set the stub.<a name="line.1740"></a>
-<span class="sourceLineNo">1741</span> protected void setStubByServiceName(ServerName serviceName/*Ignored*/) throws IOException {<a name="line.1741"></a>
-<span class="sourceLineNo">1742</span> CoprocessorRpcChannel channel = table.coprocessorService(getRow());<a name="line.1742"></a>
-<span class="sourceLineNo">1743</span> setStub(MultiRowMutationProtos.MultiRowMutationService.newBlockingStub(channel));<a name="line.1743"></a>
-<span class="sourceLineNo">1744</span> }<a name="line.1744"></a>
-<span class="sourceLineNo">1745</span> };<a name="line.1745"></a>
-<span class="sourceLineNo">1746</span> int writeTimeout = connection.getConfiguration().getInt(HConstants.HBASE_RPC_WRITE_TIMEOUT_KEY,<a name="line.1746"></a>
-<span class="sourceLineNo">1747</span> connection.getConfiguration().getInt(HConstants.HBASE_RPC_TIMEOUT_KEY,<a name="line.1747"></a>
-<span class="sourceLineNo">1748</span> HConstants.DEFAULT_HBASE_RPC_TIMEOUT));<a name="line.1748"></a>
-<span class="sourceLineNo">1749</span> // The region location should be cached in connection. Call prepare so this callable picks<a name="line.1749"></a>
-<span class="sourceLineNo">1750</span> // up the region location (see super.prepare method).<a name="line.1750"></a>
-<span class="sourceLineNo">1751</span> callable.prepare(false);<a name="line.1751"></a>
-<span class="sourceLineNo">1752</span> callable.call(writeTimeout);<a name="line.1752"></a>
-<span class="sourceLineNo">1753</span> }<a name="line.1753"></a>
-<span class="sourceLineNo">1754</span><a name="line.1754"></a>
-<span class="sourceLineNo">1755</span> /**<a name="line.1755"></a>
-<span class="sourceLineNo">1756</span> * Updates the location of the specified region in hbase:meta to be the specified server hostname<a name="line.1756"></a>
-<span class="sourceLineNo">1757</span> * and startcode.<a name="line.1757"></a>
-<span class="sourceLineNo">1758</span> * <p><a name="line.1758"></a>
-<span class="sourceLineNo">1759</span> * Uses passed catalog tracker to get a connection to the server hosting hbase:meta and makes<a name="line.1759"></a>
-<span class="sourceLineNo">1760</span> * edits to that region.<a name="line.1760"></a>
-<span class="sourceLineNo">1761</span> * @param connection connection we're using<a name="line.1761"></a>
-<span class="sourceLineNo">1762</span> * @param regionInfo region to update location of<a name="line.1762"></a>
-<span class="sourceLineNo">1763</span> * @param openSeqNum the latest sequence number obtained when the region was open<a name="line.1763"></a>
-<span class="sourceLineNo">1764</span> * @param sn Server name<a name="line.1764"></a>
-<span class="sourceLineNo">1765</span> * @param masterSystemTime wall clock time from master if passed in the open region RPC<a name="line.1765"></a>
-<span class="sourceLineNo">1766</span> */<a name="line.1766"></a>
-<span class="sourceLineNo">1767</span> @VisibleForTesting<a name="line.1767"></a>
-<span class="sourceLineNo">1768</span> public static void updateRegionLocation(Connection connection, RegionInfo regionInfo,<a name="line.1768"></a>
-<span class="sourceLineNo">1769</span> ServerName sn, long openSeqNum, long masterSystemTime) throws IOException {<a name="line.1769"></a>
-<span class="sourceLineNo">1770</span> updateLocation(connection, regionInfo, sn, openSeqNum, masterSystemTime);<a name="line.1770"></a>
-<span class="sourceLineNo">1771</span> }<a name="line.1771"></a>
-<span class="sourceLineNo">1772</span><a name="line.1772"></a>
-<span class="sourceLineNo">1773</span> /**<a name="line.1773"></a>
-<span class="sourceLineNo">1774</span> * Updates the location of the specified region to be the specified server.<a name="line.1774"></a>
-<span class="sourceLineNo">1775</span> * <p><a name="line.1775"></a>
-<span class="sourceLineNo">1776</span> * Connects to the specified server which should be hosting the specified catalog region name to<a name="line.1776"></a>
-<span class="sourceLineNo">1777</span> * perform the edit.<a name="line.1777"></a>
-<span class="sourceLineNo">1778</span> * @param connection connection we're using<a name="line.1778"></a>
-<span class="sourceLineNo">1779</span> * @param regionInfo region to update location of<a name="line.1779"></a>
-<span class="sourceLineNo">1780</span> * @param sn Server name<a name="line.1780"></a>
-<span class="sourceLineNo">1781</span> * @param openSeqNum the latest sequence number obtained when the region was open<a name="line.1781"></a>
-<span class="sourceLineNo">1782</span> * @param masterSystemTime wall clock time from master if passed in the open region RPC<a name="line.1782"></a>
-<span class="sourceLineNo">1783</span> * @throws IOException In particular could throw {@link java.net.ConnectException} if the server<a name="line.1783"></a>
-<span class="sourceLineNo">1784</span> * is down on other end.<a name="line.1784"></a>
-<span class="sourceLineNo">1785</span> */<a name="line.1785"></a>
-<span class="sourceLineNo">1786</span> private static void updateLocation(Connection connection, RegionInfo regionInfo, ServerName sn,<a name="line.1786"></a>
-<span class="sourceLineNo">1787</span> long openSeqNum, long masterSystemTime) throws IOException {<a name="line.1787"></a>
-<span class="sourceLineNo">1788</span> // region replicas are kept in the primary region's row<a name="line.1788"></a>
-<span class="sourceLineNo">1789</span> Put put = new Put(getMetaKeyForRegion(regionInfo), masterSystemTime);<a name="line.1789"></a>
-<span class="sourceLineNo">1790</span> addRegionInfo(put, regionInfo);<a name="line.1790"></a>
-<span class="sourceLineNo">1791</span> addLocation(put, sn, openSeqNum, regionInfo.getReplicaId());<a name="line.1791"></a>
-<span class="sourceLineNo">1792</span> putToMetaTable(connection, put);<a name="line.1792"></a>
-<span class="sourceLineNo">1793</span> LOG.info("Updated row {} with server=", regionInfo.getRegionNameAsString(), sn);<a name="line.1793"></a>
-<span class="sourceLineNo">1794</span> }<a name="line.1794"></a>
-<span class="sourceLineNo">1795</span><a name="line.1795"></a>
-<span class="sourceLineNo">1796</span> /**<a name="line.1796"></a>
-<span class="sourceLineNo">1797</span> * Deletes the specified region from META.<a name="line.1797"></a>
-<span class="sourceLineNo">1798</span> * @param connection connection we're using<a name="line.1798"></a>
-<span class="sourceLineNo">1799</span> * @param regionInfo region to be deleted from META<a name="line.1799"></a>
-<span class="sourceLineNo">1800</span> * @throws IOException<a name="line.1800"></a>
-<span class="sourceLineNo">1801</span> */<a name="line.1801"></a>
-<span class="sourceLineNo">1802</span> public static void deleteRegion(Connection connection, RegionInfo regionInfo) throws IOException {<a name="line.1802"></a>
-<span class="sourceLineNo">1803</span> long time = EnvironmentEdgeManager.currentTime();<a name="line.1803"></a>
-<span class="sourceLineNo">1804</span> Delete delete = new Delete(regionInfo.getRegionName());<a name="line.1804"></a>
-<span class="sourceLineNo">1805</span> delete.addFamily(getCatalogFamily(), time);<a name="line.1805"></a>
-<span class="sourceLineNo">1806</span> deleteFromMetaTable(connection, delete);<a name="line.1806"></a>
-<span class="sourceLineNo">1807</span> LOG.info("Deleted " + regionInfo.getRegionNameAsString());<a name="line.1807"></a>
-<span class="sourceLineNo">1808</span> }<a name="line.1808"></a>
-<span class="sourceLineNo">1809</span><a name="line.1809"></a>
-<span class="sourceLineNo">1810</span> /**<a name="line.1810"></a>
-<span class="sourceLineNo">1811</span> * Deletes the specified regions from META.<a name="line.1811"></a>
-<span class="sourceLineNo">1812</span> * @param connection connection we're using<a name="line.1812"></a>
-<span class="sourceLineNo">1813</span> * @param regionsInfo list of regions to be deleted from META<a name="line.1813"></a>
-<span class="sourceLineNo">1814</span> */<a name="line.1814"></a>
-<span class="sourceLineNo">1815</span> public static void deleteRegions(Connection connection, List<RegionInfo> regionsInfo)<a name="line.1815"></a>
-<span class="sourceLineNo">1816</span> throws IOException {<a name="line.1816"></a>
-<span class="sourceLineNo">1817</span> deleteRegions(connection, regionsInfo, EnvironmentEdgeManager.currentTime());<a name="line.1817"></a>
-<span class="sourceLineNo">1818</span> }<a name="line.1818"></a>
-<span class="sourceLineNo">1819</span> /**<a name="line.1819"></a>
-<span class="sourceLineNo">1820</span> * Deletes the specified regions from META.<a name="line.1820"></a>
-<span class="sourceLineNo">1821</span> * @param connection connection we're using<a name="line.1821"></a>
-<span class="sourceLineNo">1822</span> * @param regionsInfo list of regions to be deleted from META<a name="line.1822"></a>
-<span class="sourceLineNo">1823</span> */<a name="line.1823"></a>
-<span class="sourceLineNo">1824</span> public static void deleteRegions(Connection connection, List<RegionInfo> regionsInfo, long ts)<a name="line.1824"></a>
-<span class="sourceLineNo">1825</span> throws IOException {<a name="line.1825"></a>
-<span class="sourceLineNo">1826</span> List<Delete> deletes = new ArrayList<>(regionsInfo.size());<a name="line.1826"></a>
-<span class="sourceLineNo">1827</span> for (RegionInfo hri : regionsInfo) {<a name="line.1827"></a>
-<span class="sourceLineNo">1828</span> Delete e = new Delete(hri.getRegionName());<a name="line.1828"></a>
-<span class="sourceLineNo">1829</span> e.addFamily(getCatalogFamily(), ts);<a name="line.1829"></a>
-<span class="sourceLineNo">1830</span> deletes.add(e);<a name="line.1830"></a>
-<span class="sourceLineNo">1831</span> }<a name="line.1831"></a>
-<span class="sourceLineNo">1832</span> deleteFromMetaTable(connection, deletes);<a name="line.1832"></a>
-<span class="sourceLineNo">1833</span> LOG.info("Deleted {} regions from META", regionsInfo.size());<a name="line.1833"></a>
-<span class="sourceLineNo">1834</span> LOG.debug("Deleted regions: {}", regionsInfo);<a name="line.1834"></a>
-<span class="sourceLineNo">1835</span> }<a name="line.1835"></a>
-<span class="sourceLineNo">1836</span><a name="line.1836"></a>
-<span class="sourceLineNo">1837</span> /**<a name="line.1837"></a>
-<span class="sourceLineNo">1838</span> * Overwrites the specified regions from hbase:meta. Deletes old rows for the given regions and<a name="line.1838"></a>
-<span class="sourceLineNo">1839</span> * adds new ones. Regions added back have state CLOSED.<a name="line.1839"></a>
-<span class="sourceLineNo">1840</span> * @param connection connection we're using<a name="line.1840"></a>
-<span class="sourceLineNo">1841</span> * @param regionInfos list of regions to be added to META<a name="line.1841"></a>
-<span class="sourceLineNo">1842</span> */<a name="line.1842"></a>
-<span class="sourceLineNo">1843</span> public static void overwriteRegions(Connection connection,<a name="line.1843"></a>
-<span class="sourceLineNo">1844</span> List<RegionInfo> regionInfos, int regionReplication) throws IOException {<a name="line.1844"></a>
-<span class="sourceLineNo">1845</span> // use master time for delete marker and the Put<a name="line.1845"></a>
-<span class="sourceLineNo">1846</span> long now = EnvironmentEdgeManager.currentTime();<a name="line.1846"></a>
-<span class="sourceLineNo">1847</span> deleteRegions(connection, regionInfos, now);<a name="line.1847"></a>
-<span class="sourceLineNo">1848</span> // Why sleep? This is the easiest way to ensure that the previous deletes does not<a name="line.1848"></a>
-<span class="sourceLineNo">1849</span> // eclipse the following puts, that might happen in the same ts from the server.<a name="line.1849"></a>
-<span class="sourceLineNo">1850</span> // See HBASE-9906, and HBASE-9879. Once either HBASE-9879, HBASE-8770 is fixed,<a name="line.1850"></a>
-<span class="sourceLineNo">1851</span> // or HBASE-9905 is fixed and meta uses seqIds, we do not need the sleep.<a name="line.1851"></a>
-<span class="sourceLineNo">1852</span> //<a name="line.1852"></a>
-<span class="sourceLineNo">1853</span> // HBASE-13875 uses master timestamp for the mutations. The 20ms sleep is not needed<a name="line.1853"></a>
-<span class="sourceLineNo">1854</span> addRegionsToMeta(connection, regionInfos, regionReplication, now + 1);<a name="line.1854"></a>
-<span class="sourceLineNo">1855</span> LOG.info("Overwritten " + regionInfos.size() + " regions to Meta");<a name="line.1855"></a>
-<span class="sourceLineNo">1856</span> LOG.debug("Overwritten regions: {} ", regionInfos);<a name="line.1856"></a>
-<span class="sourceLineNo">1857</span> }<a name="line.1857"></a>
-<span class="sourceLineNo">1858</span><a name="line.1858"></a>
-<span class="sourceLineNo">1859</span> /**<a name="line.1859"></a>
-<span class="sourceLineNo">1860</span> * Deletes merge qualifiers for the specified merged region.<a name="line.1860"></a>
-<span class="sourceLineNo">1861</span> * @param connection connection we're using<a name="line.1861"></a>
-<span class="sourceLineNo">1862</span> * @param mergedRegion the merged region<a name="line.1862"></a>
-<span class="sourceLineNo">1863</span> */<a name="line.1863"></a>
-<span class="sourceLineNo">1864</span> public static void deleteMergeQualifiers(Connection connection, final RegionInfo mergedRegion)<a name="line.1864"></a>
-<span class="sourceLineNo">1865</span> throws IOException {<a name="line.1865"></a>
-<span class="sourceLineNo">1866</span> long time = EnvironmentEdgeManager.currentTime();<a name="line.1866"></a>
-<span class="sourceLineNo">1867</span> Delete delete = new Delete(mergedRegion.getRegionName());<a name="line.1867"></a>
-<span class="sourceLineNo">1868</span> delete.addColumns(getCatalogFamily(), HConstants.MERGEA_QUALIFIER, time);<a name="line.1868"></a>
-<span class="sourceLineNo">1869</span> delete.addColumns(getCatalogFamily(), HConstants.MERGEB_QUALIFIER, time);<a name="line.1869"></a>
-<span class="sourceLineNo">1870</span> deleteFromMetaTable(connection, delete);<a name="line.1870"></a>
-<span class="sourceLineNo">1871</span> LOG.info("Deleted references in merged region "<a name="line.1871"></a>
-<span class="sourceLineNo">1872</span> + mergedRegion.getRegionNameAsString() + ", qualifier="<a name="line.1872"></a>
-<span class="sourceLineNo">1873</span> + Bytes.toStringBinary(HConstants.MERGEA_QUALIFIER) + " and qualifier="<a name="line.1873"></a>
-<span class="sourceLineNo">1874</span> + Bytes.toStringBinary(HConstants.MERGEB_QUALIFIER));<a name="line.1874"></a>
-<span class="sourceLineNo">1875</span> }<a name="line.1875"></a>
-<span class="sourceLineNo">1876</span><a name="line.1876"></a>
-<span class="sourceLineNo">1877</span> public static Put addRegionInfo(final Put p, final RegionInfo hri)<a name="line.1877"></a>
-<span class="sourceLineNo">1878</span> throws IOException {<a name="line.1878"></a>
-<span class="sourceLineNo">1879</span> p.add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.1879"></a>
-<span class="sourceLineNo">1880</span> .setRow(p.getRow())<a name="line.1880"></a>
-<span class="sourceLineNo">1881</span> .setFamily(getCatalogFamily())<a name="line.1881"></a>
-<span class="sourceLineNo">1882</span> .setQualifier(HConstants.REGIONINFO_QUALIFIER)<a name="line.1882"></a>
-<span class="sourceLineNo">1883</span> .setTimestamp(p.getTimestamp())<a name="line.1883"></a>
-<span class="sourceLineNo">1884</span> .setType(Type.Put)<a name="line.1884"></a>
-<span class="sourceLineNo">1885</span> .setValue(RegionInfo.toByteArray(hri))<a name="line.1885"></a>
-<span class="sourceLineNo">1886</span> .build());<a name="line.1886"></a>
-<span class="sourceLineNo">1887</span> return p;<a name="line.1887"></a>
-<span class="sourceLineNo">1888</span> }<a name="line.1888"></a>
-<span class="sourceLineNo">1889</span><a name="line.1889"></a>
-<span class="sourceLineNo">1890</span> public static Put addLocation(Put p, ServerName sn, long openSeqNum, int replicaId)<a name="line.1890"></a>
-<span class="sourceLineNo">1891</span> throws IOException {<a name="line.1891"></a>
-<span class="sourceLineNo">1892</span> CellBuilder builder = CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY);<a name="line.1892"></a>
-<span class="sourceLineNo">1893</span> return p.add(builder.clear()<a name="line.1893"></a>
-<span class="sourceLineNo">1894</span> .setRow(p.getRow())<a name="line.1894"></a>
-<span class="sourceLineNo">1895</span> .setFamily(getCatalogFamily())<a name="line.1895"></a>
-<span class="sourceLineNo">1896</span> .setQualifier(getServerColumn(replicaId))<a name="line.1896"></a>
-<span class="sourceLineNo">1897</span> .setTimestamp(p.getTimestamp())<a name="line.1897"></a>
-<span class="sourceLineNo">1898</span> .setType(Cell.Type.Put)<a name="line.1898"></a>
-<span class="sourceLineNo">1899</span> .setValue(Bytes.toBytes(sn.getAddress().toString()))<a name="line.1899"></a>
-<span class="sourceLineNo">1900</span> .build())<a name="line.1900"></a>
-<span class="sourceLineNo">1901</span> .add(builder.clear()<a name="line.1901"></a>
+<span class="sourceLineNo">1572</span> .setValue(RegionInfo.toByteArray(regionA))<a name="line.1572"></a>
+<span class="sourceLineNo">1573</span> .build())<a name="line.1573"></a>
+<span class="sourceLineNo">1574</span> .add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.1574"></a>
+<span class="sourceLineNo">1575</span> .setRow(putOfMerged.getRow())<a name="line.1575"></a>
+<span class="sourceLineNo">1576</span> .setFamily(HConstants.CATALOG_FAMILY)<a name="line.1576"></a>
+<span class="sourceLineNo">1577</span> .setQualifier(HConstants.MERGEB_QUALIFIER)<a name="line.1577"></a>
+<span class="sourceLineNo">1578</span> .setTimestamp(putOfMerged.getTimestamp())<a name="line.1578"></a>
+<span class="sourceLineNo">1579</span> .setType(Type.Put)<a name="line.1579"></a>
+<span class="sourceLineNo">1580</span> .setValue(RegionInfo.toByteArray(regionB))<a name="line.1580"></a>
+<span class="sourceLineNo">1581</span> .build());<a name="line.1581"></a>
+<span class="sourceLineNo">1582</span> // Set initial state to CLOSED<a name="line.1582"></a>
+<span class="sourceLineNo">1583</span> // NOTE: If initial state is not set to CLOSED then merged region gets added with the<a name="line.1583"></a>
+<span class="sourceLineNo">1584</span> // default OFFLINE state. If Master gets restarted after this step, start up sequence of<a name="line.1584"></a>
+<span class="sourceLineNo">1585</span> // master tries to assign this offline region. This is followed by re-assignments of the<a name="line.1585"></a>
+<span class="sourceLineNo">1586</span> // merged region from resumed {@link MergeTableRegionsProcedure}<a name="line.1586"></a>
+<span class="sourceLineNo">1587</span> addRegionStateToPut(putOfMerged, RegionState.State.CLOSED);<a name="line.1587"></a>
+<span class="sourceLineNo">1588</span> mutations.add(putOfMerged);<a name="line.1588"></a>
+<span class="sourceLineNo">1589</span> // The merged is a new region, openSeqNum = 1 is fine. ServerName may be null<a name="line.1589"></a>
+<span class="sourceLineNo">1590</span> // if crash after merge happened but before we got to here.. means in-memory<a name="line.1590"></a>
+<span class="sourceLineNo">1591</span> // locations of offlined merged, now-closed, regions is lost. Should be ok. We<a name="line.1591"></a>
+<span class="sourceLineNo">1592</span> // assign the merged region later.<a name="line.1592"></a>
+<span class="sourceLineNo">1593</span> if (sn != null) {<a name="line.1593"></a>
+<span class="sourceLineNo">1594</span> addLocation(putOfMerged, sn, 1, mergedRegion.getReplicaId());<a name="line.1594"></a>
+<span class="sourceLineNo">1595</span> }<a name="line.1595"></a>
+<span class="sourceLineNo">1596</span><a name="line.1596"></a>
+<span class="sourceLineNo">1597</span> // Add empty locations for region replicas of the merged region so that number of replicas can<a name="line.1597"></a>
+<span class="sourceLineNo">1598</span> // be cached whenever the primary region is looked up from meta<a name="line.1598"></a>
+<span class="sourceLineNo">1599</span> for (int i = 1; i < regionReplication; i++) {<a name="line.1599"></a>
+<span class="sourceLineNo">1600</span> addEmptyLocation(putOfMerged, i);<a name="line.1600"></a>
+<span class="sourceLineNo">1601</span> }<a name="line.1601"></a>
+<span class="sourceLineNo">1602</span> // add parent reference for serial replication<a name="line.1602"></a>
+<span class="sourceLineNo">1603</span> if (!replicationParents.isEmpty()) {<a name="line.1603"></a>
+<span class="sourceLineNo">1604</span> addReplicationParent(putOfMerged, replicationParents);<a name="line.1604"></a>
+<span class="sourceLineNo">1605</span> }<a name="line.1605"></a>
+<span class="sourceLineNo">1606</span> byte[] tableRow = Bytes.toBytes(mergedRegion.getRegionNameAsString() + HConstants.DELIMITER);<a name="line.1606"></a>
+<span class="sourceLineNo">1607</span> multiMutate(connection, meta, tableRow, mutations);<a name="line.1607"></a>
+<span class="sourceLineNo">1608</span> }<a name="line.1608"></a>
+<span class="sourceLineNo">1609</span> }<a name="line.1609"></a>
+<span class="sourceLineNo">1610</span><a name="line.1610"></a>
+<span class="sourceLineNo">1611</span> /**<a name="line.1611"></a>
+<span class="sourceLineNo">1612</span> * Splits the region into two in an atomic operation. Offlines the parent region with the<a name="line.1612"></a>
+<span class="sourceLineNo">1613</span> * information that it is split into two, and also adds the daughter regions. Does not add the<a name="line.1613"></a>
+<span class="sourceLineNo">1614</span> * location information to the daughter regions since they are not open yet.<a name="line.1614"></a>
+<span class="sourceLineNo">1615</span> * @param connection connection we're using<a name="line.1615"></a>
+<span class="sourceLineNo">1616</span> * @param parent the parent region which is split<a name="line.1616"></a>
+<span class="sourceLineNo">1617</span> * @param parentOpenSeqNum the next open sequence id for parent region, used by serial<a name="line.1617"></a>
+<span class="sourceLineNo">1618</span> * replication. -1 if not necessary.<a name="line.1618"></a>
+<span class="so
<TRUNCATED>
[40/51] [partial] hbase-site git commit: Published site at
9101fc246f86445006bfbcdfda5cc495016dc280.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/master/HMasterCommandLine.LocalHMaster.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/HMasterCommandLine.LocalHMaster.html b/devapidocs/org/apache/hadoop/hbase/master/HMasterCommandLine.LocalHMaster.html
index 2d56475..75a99c7 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/HMasterCommandLine.LocalHMaster.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/HMasterCommandLine.LocalHMaster.html
@@ -247,7 +247,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html" tit
<!-- -->
</a>
<h3>Methods inherited from 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></h3>
-<code><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#abort-java.lang.String-java.lang.Throwable-">abort</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#abortProcedure-long-boolean-">abortProcedure</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#addColumn-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.client.ColumnFamilyDescriptor-long-long-">addColumn</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#addReplicationPeer-java.lang.String-org.apache.hadoop.hbase.replication.ReplicationPeerConfig-boolean-">addReplicationPeer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#balance--">balance</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#balance-boolean-">balance</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#balanceSwitch-boolean-">balanceSwitch</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMa
ster.html#canCreateBaseZNode--">canCreateBaseZNode</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#canUpdateTableDescriptor--">canUpdateTableDescriptor</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#checkIfShouldMoveSystemRegionAsync--">checkIfShouldMoveSystemRegionAsync</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#checkInitialized--">checkInitialized</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#checkServiceStarted--">checkServiceStarted</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#checkTableModifiable-org.apache.hadoop.hbase.TableName-">checkTableModifiable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#configureInfoServer--">configureInfoServer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#constructMaster-java.lang.Class-org.apache.hadoop.conf.Configuration-">constructMaster</a>, <a href="../../.
./../../org/apache/hadoop/hbase/master/HMaster.html#createMetaBootstrap--">createMetaBootstrap</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#createNamespace-org.apache.hadoop.hbase.NamespaceDescriptor-long-long-">createNamespace</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#createRpcServices--">createRpcServices</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#createServerManager-org.apache.hadoop.hbase.master.MasterServices-">createServerManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#createSystemTable-org.apache.hadoop.hbase.client.TableDescriptor-">createSystemTable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#createTable-org.apache.hadoop.hbase.client.TableDescriptor-byte:A:A-long-long-">createTable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#decommissionRegionServers-java.util.List-boolean-">decommissionRegionSer
vers</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#decorateMasterConfiguration-org.apache.hadoop.conf.Configuration-">decorateMasterConfiguration</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#deleteColumn-org.apache.hadoop.hbase.TableName-byte:A-long-long-">deleteColumn</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#deleteNamespace-java.lang.String-long-long-">deleteNamespace</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#deleteTable-org.apache.hadoop.hbase.TableName-long-long-">deleteTable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#disableReplicationPeer-java.lang.String-">disableReplicationPeer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#disableTable-org.apache.hadoop.hbase.TableName-long-long-">disableTable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#enableReplicationPeer-java.lang.String-
">enableReplicationPeer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#enableTable-org.apache.hadoop.hbase.TableName-long-long-">enableTable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getAssignmentManager--">getAssignmentManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getAverageLoad--">getAverageLoad</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getCatalogJanitor--">getCatalogJanitor</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getClientIdAuditPrefix--">getClientIdAuditPrefix</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getClusterMetrics--">getClusterMetrics</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getClusterMetrics-java.util.EnumSet-">getClusterMetrics</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getClusterMetricsWithoutCoprocessor--">getClusterMetricsWi
thoutCoprocessor</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getClusterMetricsWithoutCoprocessor-java.util.EnumSet-">getClusterMetricsWithoutCoprocessor</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getClusterSchema--">getClusterSchema</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getDumpServlet--">getDumpServlet</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getFavoredNodesManager--">getFavoredNodesManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getHFileCleaner--">getHFileCleaner</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getInitializedEvent--">getInitializedEvent</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getLastMajorCompactionTimestamp-org.apache.hadoop.hbase.TableName-">getLastMajorCompactionTimestamp</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getLast
MajorCompactionTimestampForRegion-byte:A-">getLastMajorCompactionTimestampForRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getLoadBalancer--">getLoadBalancer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getLoadBalancerClassName--">getLoadBalancerClassName</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getLoadedCoprocessors--">getLoadedCoprocessors</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getLockManager--">getLockManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getLocks--">getLocks</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getLogCleaner--">getLogCleaner</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterActiveTime--">getMasterActiveTime</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterCoprocessorHost--">getMasterCoprocessorHost</a>, <a href=
"../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterCoprocessors--">getMasterCoprocessors</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterFileSystem--">getMasterFileSystem</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterFinishedInitializationTime--">getMasterFinishedInitializationTime</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterMetrics--">getMasterMetrics</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterProcedureExecutor--">getMasterProcedureExecutor</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterProcedureManagerHost--">getMasterProcedureManagerHost</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterQuotaManager--">getMasterQuotaManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterRpcServices--">getMasterRpcServices</a>, <a href
="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterStartTime--">getMasterStartTime</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterWalManager--">getMasterWalManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMergePlanCount--">getMergePlanCount</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMetaTableObserver--">getMetaTableObserver</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMobCompactionState-org.apache.hadoop.hbase.TableName-">getMobCompactionState</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getNamespace-java.lang.String-">getNamespace</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getNamespaces--">getNamespaces</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getNumWALFiles--">getNumWALFiles</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.
html#getProcedures--">getProcedures</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getProcessName--">getProcessName</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getQuotaObserverChore--">getQuotaObserverChore</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getRegionNormalizer--">getRegionNormalizer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getRegionNormalizerTracker--">getRegionNormalizerTracker</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getRegionServerFatalLogBuffer--">getRegionServerFatalLogBuffer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getRegionServerInfoPort-org.apache.hadoop.hbase.ServerName-">getRegionServerInfoPort</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getRegionServerVersion-org.apache.hadoop.hbase.ServerName-">getRegionServerVersion</a>, <a href="../../../../../org/apache
/hadoop/hbase/master/HMaster.html#getRemoteInetAddress-int-long-">getRemoteInetAddress</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getReplicationPeerConfig-java.lang.String-">getReplicationPeerConfig</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getReplicationPeerManager--">getReplicationPeerManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getServerCrashProcessingEnabledEvent--">getServerCrashProcessingEnabledEvent</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getServerManager--">getServerManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getServerName--">getServerName</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getSnapshotManager--">getSnapshotManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getSnapshotQuotaObserverChore--">getSnapshotQuotaObserverChore</a>, <a href="../../../../
../org/apache/hadoop/hbase/master/HMaster.html#getSpaceQuotaSnapshotNotifier--">getSpaceQuotaSnapshotNotifier</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getSplitOrMergeTracker--">getSplitOrMergeTracker</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getSplitPlanCount--">getSplitPlanCount</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getTableDescriptors--">getTableDescriptors</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getTableRegionForRow-org.apache.hadoop.hbase.TableName-byte:A-">getTableRegionForRow</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getTableStateManager--">getTableStateManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getUseThisHostnameInstead-org.apache.hadoop.conf.Configuration-">getUseThisHostnameInstead</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getWalProcedureStore--">
getWalProcedureStore</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getZooKeeper--">getZooKeeper</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#initClusterSchemaService--">initClusterSchemaService</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#initializeZKBasedSystemTrackers--">initializeZKBasedSystemTrackers</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isActiveMaster--">isActiveMaster</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isBalancerOn--">isBalancerOn</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isCatalogJanitorEnabled--">isCatalogJanitorEnabled</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isCleanerChoreEnabled--">isCleanerChoreEnabled</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isInitialized--">isInitialized</a>, <a href="../../../../../org/apache/hadoop/hbase
/master/HMaster.html#isInMaintenanceMode--">isInMaintenanceMode</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isNormalizerOn--">isNormalizerOn</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isServerCrashProcessingEnabled--">isServerCrashProcessingEnabled</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isSplitOrMergeEnabled-org.apache.hadoop.hbase.client.MasterSwitchType-">isSplitOrMergeEnabled</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#listDecommissionedRegionServers--">listDecommissionedRegionServers</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#listReplicationPeers-java.lang.String-">listReplicationPeers</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#listTableDescriptors-java.lang.String-java.lang.String-java.util.List-boolean-">listTableDescriptors</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#l
istTableDescriptorsByNamespace-java.lang.String-">listTableDescriptorsByNamespace</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#listTableNames-java.lang.String-java.lang.String-boolean-">listTableNames</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#listTableNamesByNamespace-java.lang.String-">listTableNamesByNamespace</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#login-org.apache.hadoop.hbase.security.UserProvider-java.lang.String-">login</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#main-java.lang.String:A-">main</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#mergeRegions-org.apache.hadoop.hbase.client.RegionInfo:A-boolean-long-long-">mergeRegions</a>, <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>, <a
href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#modifyNamespace-org.apache.hadoop.hbase.NamespaceDescriptor-long-long-">modifyNamespace</a>, <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>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#move-byte:A-byte:A-">move</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#normalizeRegions--">normalizeRegions</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#recommissionRegionServer-org.apache.hadoop.hbase.ServerName-java.util.List-">recommissionRegionServer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#recoverMeta--">recoverMeta</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#registerService-com.google.protobuf.Service-">registerService</a>, <a href="../../../../../org/ap
ache/hadoop/hbase/master/HMaster.html#remoteProcedureCompleted-long-">remoteProcedureCompleted</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#remoteProcedureFailed-long-org.apache.hadoop.hbase.procedure2.RemoteProcedureException-">remoteProcedureFailed</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#removeReplicationPeer-java.lang.String-">removeReplicationPeer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#reportMobCompactionEnd-org.apache.hadoop.hbase.TableName-">reportMobCompactionEnd</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#reportMobCompactionStart-org.apache.hadoop.hbase.TableName-">reportMobCompactionStart</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#requestMobCompaction-org.apache.hadoop.hbase.TableName-java.util.List-boolean-">requestMobCompaction</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#restoreSnapshot-org.a
pache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription-long-long-boolean-">restoreSnapshot</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#setCatalogJanitorEnabled-boolean-">setCatalogJanitorEnabled</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#setInitialized-boolean-">setInitialized</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#setServerCrashProcessingEnabled-boolean-">setServerCrashProcessingEnabled</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#shutdown--">shutdown</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#splitRegion-org.apache.hadoop.hbase.client.RegionInfo-byte:A-long-long-">splitRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#stop-java.lang.String-">stop</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#stopMaster--">stopMaster</a>, <a href="../../../../../org/apa
che/hadoop/hbase/master/HMaster.html#stopServiceThreads--">stopServiceThreads</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#truncateTable-org.apache.hadoop.hbase.TableName-boolean-long-long-">truncateTable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#updateConfigurationForSpaceQuotaObserver-org.apache.hadoop.conf.Configuration-">updateConfigurationForSpaceQuotaObserver</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#updateReplicationPeerConfig-java.lang.String-org.apache.hadoop.hbase.replication.ReplicationPeerConfig-">updateReplicationPeerConfig</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#waitForMasterActive--">waitForMasterActive</a></code></li>
+<code><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#abort-java.lang.String-java.lang.Throwable-">abort</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#abortProcedure-long-boolean-">abortProcedure</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#addColumn-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.client.ColumnFamilyDescriptor-long-long-">addColumn</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#addReplicationPeer-java.lang.String-org.apache.hadoop.hbase.replication.ReplicationPeerConfig-boolean-">addReplicationPeer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#balance--">balance</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#balance-boolean-">balance</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#balanceSwitch-boolean-">balanceSwitch</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMa
ster.html#canCreateBaseZNode--">canCreateBaseZNode</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#canUpdateTableDescriptor--">canUpdateTableDescriptor</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#checkIfShouldMoveSystemRegionAsync--">checkIfShouldMoveSystemRegionAsync</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#checkInitialized--">checkInitialized</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#checkServiceStarted--">checkServiceStarted</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#checkTableModifiable-org.apache.hadoop.hbase.TableName-">checkTableModifiable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#configureInfoServer--">configureInfoServer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#constructMaster-java.lang.Class-org.apache.hadoop.conf.Configuration-">constructMaster</a>, <a href="../../.
./../../org/apache/hadoop/hbase/master/HMaster.html#createMetaBootstrap--">createMetaBootstrap</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#createNamespace-org.apache.hadoop.hbase.NamespaceDescriptor-long-long-">createNamespace</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#createRpcServices--">createRpcServices</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#createServerManager-org.apache.hadoop.hbase.master.MasterServices-">createServerManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#createSystemTable-org.apache.hadoop.hbase.client.TableDescriptor-">createSystemTable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#createTable-org.apache.hadoop.hbase.client.TableDescriptor-byte:A:A-long-long-">createTable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#decommissionRegionServers-java.util.List-boolean-">decommissionRegionSer
vers</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#decorateMasterConfiguration-org.apache.hadoop.conf.Configuration-">decorateMasterConfiguration</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#deleteColumn-org.apache.hadoop.hbase.TableName-byte:A-long-long-">deleteColumn</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#deleteNamespace-java.lang.String-long-long-">deleteNamespace</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#deleteTable-org.apache.hadoop.hbase.TableName-long-long-">deleteTable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#disableReplicationPeer-java.lang.String-">disableReplicationPeer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#disableTable-org.apache.hadoop.hbase.TableName-long-long-">disableTable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#enableReplicationPeer-java.lang.String-
">enableReplicationPeer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#enableTable-org.apache.hadoop.hbase.TableName-long-long-">enableTable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getAssignmentManager--">getAssignmentManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getAverageLoad--">getAverageLoad</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getCatalogJanitor--">getCatalogJanitor</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getClientIdAuditPrefix--">getClientIdAuditPrefix</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getClusterMetrics--">getClusterMetrics</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getClusterMetrics-java.util.EnumSet-">getClusterMetrics</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getClusterMetricsWithoutCoprocessor--">getClusterMetricsWi
thoutCoprocessor</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getClusterMetricsWithoutCoprocessor-java.util.EnumSet-">getClusterMetricsWithoutCoprocessor</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getClusterSchema--">getClusterSchema</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getDumpServlet--">getDumpServlet</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getFavoredNodesManager--">getFavoredNodesManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getHFileCleaner--">getHFileCleaner</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getInitializedEvent--">getInitializedEvent</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getLastMajorCompactionTimestamp-org.apache.hadoop.hbase.TableName-">getLastMajorCompactionTimestamp</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getLast
MajorCompactionTimestampForRegion-byte:A-">getLastMajorCompactionTimestampForRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getLoadBalancer--">getLoadBalancer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getLoadBalancerClassName--">getLoadBalancerClassName</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getLoadedCoprocessors--">getLoadedCoprocessors</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getLockManager--">getLockManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getLocks--">getLocks</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getLogCleaner--">getLogCleaner</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterActiveTime--">getMasterActiveTime</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterCoprocessorHost--">getMasterCoprocessorHost</a>, <a href=
"../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterCoprocessors--">getMasterCoprocessors</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterFileSystem--">getMasterFileSystem</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterFinishedInitializationTime--">getMasterFinishedInitializationTime</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterMetrics--">getMasterMetrics</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterProcedureExecutor--">getMasterProcedureExecutor</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterProcedureManagerHost--">getMasterProcedureManagerHost</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterQuotaManager--">getMasterQuotaManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterRpcServices--">getMasterRpcServices</a>, <a href
="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterStartTime--">getMasterStartTime</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterWalManager--">getMasterWalManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMergePlanCount--">getMergePlanCount</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMetaTableObserver--">getMetaTableObserver</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMobCompactionState-org.apache.hadoop.hbase.TableName-">getMobCompactionState</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getNamespace-java.lang.String-">getNamespace</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getNamespaces--">getNamespaces</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getNumWALFiles--">getNumWALFiles</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.
html#getProcedures--">getProcedures</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getProcessName--">getProcessName</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getQuotaObserverChore--">getQuotaObserverChore</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getRegionNormalizer--">getRegionNormalizer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getRegionNormalizerTracker--">getRegionNormalizerTracker</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getRegionServerFatalLogBuffer--">getRegionServerFatalLogBuffer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getRegionServerInfoPort-org.apache.hadoop.hbase.ServerName-">getRegionServerInfoPort</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getRegionServerVersion-org.apache.hadoop.hbase.ServerName-">getRegionServerVersion</a>, <a href="../../../../../org/apache
/hadoop/hbase/master/HMaster.html#getRemoteInetAddress-int-long-">getRemoteInetAddress</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getReplicationPeerConfig-java.lang.String-">getReplicationPeerConfig</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getReplicationPeerManager--">getReplicationPeerManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getServerManager--">getServerManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getServerName--">getServerName</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getSnapshotManager--">getSnapshotManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getSnapshotQuotaObserverChore--">getSnapshotQuotaObserverChore</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getSpaceQuotaSnapshotNotifier--">getSpaceQuotaSnapshotNotifier</a>, <a href="../../../../../org/apache/
hadoop/hbase/master/HMaster.html#getSplitOrMergeTracker--">getSplitOrMergeTracker</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getSplitPlanCount--">getSplitPlanCount</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getTableDescriptors--">getTableDescriptors</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getTableRegionForRow-org.apache.hadoop.hbase.TableName-byte:A-">getTableRegionForRow</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getTableStateManager--">getTableStateManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getUseThisHostnameInstead-org.apache.hadoop.conf.Configuration-">getUseThisHostnameInstead</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getWalProcedureStore--">getWalProcedureStore</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getZooKeeper--">getZooKeeper</a>, <a href="../../../../.
./org/apache/hadoop/hbase/master/HMaster.html#initClusterSchemaService--">initClusterSchemaService</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#initializeZKBasedSystemTrackers--">initializeZKBasedSystemTrackers</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isActiveMaster--">isActiveMaster</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isBalancerOn--">isBalancerOn</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isCatalogJanitorEnabled--">isCatalogJanitorEnabled</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isCleanerChoreEnabled--">isCleanerChoreEnabled</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isInitialized--">isInitialized</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isInMaintenanceMode--">isInMaintenanceMode</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isNormalizerO
n--">isNormalizerOn</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isSplitOrMergeEnabled-org.apache.hadoop.hbase.client.MasterSwitchType-">isSplitOrMergeEnabled</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#listDecommissionedRegionServers--">listDecommissionedRegionServers</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#listReplicationPeers-java.lang.String-">listReplicationPeers</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#listTableDescriptors-java.lang.String-java.lang.String-java.util.List-boolean-">listTableDescriptors</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#listTableDescriptorsByNamespace-java.lang.String-">listTableDescriptorsByNamespace</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#listTableNames-java.lang.String-java.lang.String-boolean-">listTableNames</a>, <a href="../../../../../org/apache/hadoop/hbase/master
/HMaster.html#listTableNamesByNamespace-java.lang.String-">listTableNamesByNamespace</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#login-org.apache.hadoop.hbase.security.UserProvider-java.lang.String-">login</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#main-java.lang.String:A-">main</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#mergeRegions-org.apache.hadoop.hbase.client.RegionInfo:A-boolean-long-long-">mergeRegions</a>, <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>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#modifyNamespace-org.apache.hadoop.hbase.NamespaceDescriptor-long-long-">modifyNamespace</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#modifyTable-org.apache.hadoop.hbase.TableName-org.apache.hadoo
p.hbase.client.TableDescriptor-long-long-">modifyTable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#move-byte:A-byte:A-">move</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#normalizeRegions--">normalizeRegions</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#recommissionRegionServer-org.apache.hadoop.hbase.ServerName-java.util.List-">recommissionRegionServer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#registerService-com.google.protobuf.Service-">registerService</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#remoteProcedureCompleted-long-">remoteProcedureCompleted</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#remoteProcedureFailed-long-org.apache.hadoop.hbase.procedure2.RemoteProcedureException-">remoteProcedureFailed</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#removeReplicationPeer-java.lang.Stri
ng-">removeReplicationPeer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#reportMobCompactionEnd-org.apache.hadoop.hbase.TableName-">reportMobCompactionEnd</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#reportMobCompactionStart-org.apache.hadoop.hbase.TableName-">reportMobCompactionStart</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#requestMobCompaction-org.apache.hadoop.hbase.TableName-java.util.List-boolean-">requestMobCompaction</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#restoreSnapshot-org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription-long-long-boolean-">restoreSnapshot</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#setCatalogJanitorEnabled-boolean-">setCatalogJanitorEnabled</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#setInitialized-boolean-">setInitialized</a>, <a href="../../../../
../org/apache/hadoop/hbase/master/HMaster.html#shutdown--">shutdown</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#splitRegion-org.apache.hadoop.hbase.client.RegionInfo-byte:A-long-long-">splitRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#stop-java.lang.String-">stop</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#stopMaster--">stopMaster</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#stopServiceThreads--">stopServiceThreads</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#truncateTable-org.apache.hadoop.hbase.TableName-boolean-long-long-">truncateTable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#updateConfigurationForSpaceQuotaObserver-org.apache.hadoop.conf.Configuration-">updateConfigurationForSpaceQuotaObserver</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#updateReplicationPeerConfig-java.la
ng.String-org.apache.hadoop.hbase.replication.ReplicationPeerConfig-">updateReplicationPeerConfig</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#waitForMasterActive--">waitForMasterActive</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.regionserver.HRegionServer">
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/master/MasterMetaBootstrap.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/MasterMetaBootstrap.html b/devapidocs/org/apache/hadoop/hbase/master/MasterMetaBootstrap.html
index 7afc662..4e6c69c 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/MasterMetaBootstrap.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/MasterMetaBootstrap.html
@@ -18,7 +18,7 @@
catch(err) {
}
//-->
-var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10};
+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";
@@ -110,7 +110,7 @@ var activeTableTab = "activeTableTab";
<hr>
<br>
<pre>@InterfaceAudience.Private
-public class <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#line.42">MasterMetaBootstrap</a>
+class <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#line.41">MasterMetaBootstrap</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">Used by the HMaster on startup to split meta logs and assign the meta table.</div>
</li>
@@ -172,25 +172,13 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
-<td class="colFirst"><code>protected void</code></td>
+<td class="colFirst"><code>(package private) void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#assignMetaReplicas--">assignMetaReplicas</a></span>()</code>
<div class="block">For assigning hbase:meta replicas only.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>private void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#enableCrashedServerProcessing--">enableCrashedServerProcessing</a></span>()</code> </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/master/MasterMetaBootstrap.html#processDeadServers--">processDeadServers</a></span>()</code> </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/master/MasterMetaBootstrap.html#recoverMeta--">recoverMeta</a></span>()</code> </td>
-</tr>
-<tr id="i4" class="altColor">
-<td class="colFirst"><code>private void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#unassignExcessMetaReplica-int-">unassignExcessMetaReplica</a></span>(int numMetaReplicasConfigured)</code> </td>
</tr>
</table>
@@ -221,7 +209,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 org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#line.43">LOG</a></pre>
+<pre>private static final org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#line.42">LOG</a></pre>
</li>
</ul>
<a name="master">
@@ -230,7 +218,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockListLast">
<li class="blockList">
<h4>master</h4>
-<pre>private final <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/MasterMetaBootstrap.html#line.45">master</a></pre>
+<pre>private final <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/MasterMetaBootstrap.html#line.44">master</a></pre>
</li>
</ul>
</li>
@@ -247,7 +235,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockListLast">
<li class="blockList">
<h4>MasterMetaBootstrap</h4>
-<pre>public <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#line.47">MasterMetaBootstrap</a>(<a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a> master)</pre>
+<pre>public <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#line.46">MasterMetaBootstrap</a>(<a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a> master)</pre>
</li>
</ul>
</li>
@@ -258,41 +246,16 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<!-- -->
</a>
<h3>Method Detail</h3>
-<a name="recoverMeta--">
-<!-- -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>recoverMeta</h4>
-<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#line.51">recoverMeta</a>()
- throws <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>,
- <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/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></code></dd>
-<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="processDeadServers--">
-<!-- -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>processDeadServers</h4>
-<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#line.60">processDeadServers</a>()</pre>
-</li>
-</ul>
<a name="assignMetaReplicas--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>assignMetaReplicas</h4>
-<pre>protected void <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#line.79">assignMetaReplicas</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>,
- org.apache.zookeeper.KeeperException</pre>
+<pre>void <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#line.55">assignMetaReplicas</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>,
+ org.apache.zookeeper.KeeperException</pre>
<div class="block">For assigning hbase:meta replicas only.
TODO: The way this assign runs, nothing but chance to stop all replicas showing up on same
server as the hbase:meta region.</div>
@@ -307,24 +270,10 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<a name="unassignExcessMetaReplica-int-">
<!-- -->
</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>unassignExcessMetaReplica</h4>
-<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#line.117">unassignExcessMetaReplica</a>(int numMetaReplicasConfigured)</pre>
-</li>
-</ul>
-<a name="enableCrashedServerProcessing--">
-<!-- -->
-</a>
<ul class="blockListLast">
<li class="blockList">
-<h4>enableCrashedServerProcessing</h4>
-<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#line.141">enableCrashedServerProcessing</a>()
- throws <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>
-<dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><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></code></dd>
-</dl>
+<h4>unassignExcessMetaReplica</h4>
+<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterMetaBootstrap.html#line.93">unassignExcessMetaReplica</a>(int numMetaReplicasConfigured)</pre>
</li>
</ul>
</li>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/master/MasterServices.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/MasterServices.html b/devapidocs/org/apache/hadoop/hbase/master/MasterServices.html
index 5a536ab..e2c59f6 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/MasterServices.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/MasterServices.html
@@ -18,7 +18,7 @@
catch(err) {
}
//-->
-var methods = {"i0":6,"i1":6,"i2":6,"i3":6,"i4":6,"i5":6,"i6":6,"i7":6,"i8":6,"i9":6,"i10":6,"i11":6,"i12":6,"i13":6,"i14":6,"i15":6,"i16":6,"i17":6,"i18":6,"i19":6,"i20":6,"i21":6,"i22":6,"i23":6,"i24":6,"i25":6,"i26":6,"i27":6,"i28":6,"i29":6,"i30":6,"i31":6,"i32":6,"i33":6,"i34":6,"i35":6,"i36":6,"i37":6,"i38":6,"i39":6,"i40":6,"i41":6,"i42":6,"i43":6,"i44":6,"i45":6,"i46":6,"i47":6,"i48":6,"i49":6,"i50":6,"i51":6,"i52":6,"i53":6,"i54":6,"i55":6,"i56":6,"i57":6,"i58":6};
+var methods = {"i0":6,"i1":6,"i2":6,"i3":6,"i4":6,"i5":6,"i6":6,"i7":6,"i8":6,"i9":6,"i10":6,"i11":6,"i12":6,"i13":6,"i14":6,"i15":6,"i16":6,"i17":6,"i18":6,"i19":6,"i20":6,"i21":6,"i22":6,"i23":6,"i24":6,"i25":6,"i26":6,"i27":6,"i28":6,"i29":6,"i30":6,"i31":6,"i32":6,"i33":6,"i34":6,"i35":6,"i36":6,"i37":6,"i38":6,"i39":6,"i40":6,"i41":6,"i42":6,"i43":6,"i44":6,"i45":6,"i46":6,"i47":6,"i48":6,"i49":6,"i50":6,"i51":6,"i52":6,"i53":6,"i54":6,"i55":6,"i56":6};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
@@ -368,31 +368,27 @@ extends <a href="../../../../../org/apache/hadoop/hbase/Server.html" title="inte
</tr>
<tr id="i45" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterServices.html#isServerCrashProcessingEnabled--">isServerCrashProcessingEnabled</a></span>()</code> </td>
-</tr>
-<tr id="i46" class="altColor">
-<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterServices.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> switchType)</code> </td>
</tr>
-<tr id="i47" class="rowColor">
+<tr id="i46" 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><<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerDescription.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerDescription</a>></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterServices.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> regex)</code>
<div class="block">Return a list of replication peers.</div>
</td>
</tr>
-<tr id="i48" class="altColor">
+<tr id="i47" 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><<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterServices.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> name)</code>
<div class="block">Get list of table descriptors by namespace</div>
</td>
</tr>
-<tr id="i49" class="rowColor">
+<tr id="i48" 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><<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterServices.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> name)</code>
<div class="block">Get list of table names by namespace</div>
</td>
</tr>
-<tr id="i50" class="altColor">
+<tr id="i49" class="rowColor">
<td class="colFirst"><code>long</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterServices.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>[] regionsToMerge,
boolean forcible,
@@ -401,7 +397,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/Server.html" title="inte
<div class="block">Merge regions in a table.</div>
</td>
</tr>
-<tr id="i51" class="rowColor">
+<tr id="i50" class="altColor">
<td class="colFirst"><code>long</code></td>
<td class="colLast"><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> tableName,
<a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a> descriptor,
@@ -410,7 +406,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/Server.html" title="inte
<div class="block">Modify the column descriptor of an existing column in an existing table</div>
</td>
</tr>
-<tr id="i52" class="altColor">
+<tr id="i51" class="rowColor">
<td class="colFirst"><code>long</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterServices.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> tableName,
<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a> descriptor,
@@ -419,25 +415,19 @@ extends <a href="../../../../../org/apache/hadoop/hbase/Server.html" title="inte
<div class="block">Modify the descriptor of an existing table</div>
</td>
</tr>
-<tr id="i53" class="rowColor">
-<td class="colFirst"><code>boolean</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterServices.html#recoverMeta--">recoverMeta</a></span>()</code>
-<div class="block">Recover meta table.</div>
-</td>
-</tr>
-<tr id="i54" class="altColor">
+<tr id="i52" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterServices.html#registerService-com.google.protobuf.Service-">registerService</a></span>(com.google.protobuf.Service instance)</code>
<div class="block">Registers a new protocol buffer <code>Service</code> subclass as a master coprocessor endpoint.</div>
</td>
</tr>
-<tr id="i55" class="rowColor">
+<tr id="i53" class="rowColor">
<td class="colFirst"><code>long</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterServices.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> peerId)</code>
<div class="block">Removes a peer and stops the replication</div>
</td>
</tr>
-<tr id="i56" class="altColor">
+<tr id="i54" class="altColor">
<td class="colFirst"><code>long</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterServices.html#splitRegion-org.apache.hadoop.hbase.client.RegionInfo-byte:A-long-long-">splitRegion</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo,
byte[] splitRow,
@@ -446,7 +436,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/Server.html" title="inte
<div class="block">Split a region.</div>
</td>
</tr>
-<tr id="i57" class="rowColor">
+<tr id="i55" class="rowColor">
<td class="colFirst"><code>long</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterServices.html#truncateTable-org.apache.hadoop.hbase.TableName-boolean-long-long-">truncateTable</a></span>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> tableName,
boolean preserveSplits,
@@ -455,7 +445,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/Server.html" title="inte
<div class="block">Truncate a table</div>
</td>
</tr>
-<tr id="i58" class="altColor">
+<tr id="i56" class="altColor">
<td class="colFirst"><code>long</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterServices.html#updateReplicationPeerConfig-java.lang.String-org.apache.hadoop.hbase.replication.ReplicationPeerConfig-">updateReplicationPeerConfig</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> peerId,
<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig</a> peerConfig)</code>
@@ -1009,26 +999,13 @@ extends <a href="../../../../../org/apache/hadoop/hbase/Server.html" title="inte
</dl>
</li>
</ul>
-<a name="isServerCrashProcessingEnabled--">
-<!-- -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>isServerCrashProcessingEnabled</h4>
-<pre>boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterServices.html#line.326">isServerCrashProcessingEnabled</a>()</pre>
-<dl>
-<dt><span class="returnLabel">Returns:</span></dt>
-<dd>true if master enables ServerShutdownHandler;</dd>
-</dl>
-</li>
-</ul>
<a name="registerService-com.google.protobuf.Service-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>registerService</h4>
-<pre>boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterServices.html#line.341">registerService</a>(com.google.protobuf.Service instance)</pre>
+<pre>boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterServices.html#line.336">registerService</a>(com.google.protobuf.Service instance)</pre>
<div class="block">Registers a new protocol buffer <code>Service</code> subclass as a master coprocessor endpoint.
<p>
@@ -1052,7 +1029,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/Server.html" title="inte
<ul class="blockList">
<li class="blockList">
<h4>isActiveMaster</h4>
-<pre>boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterServices.html#line.346">isActiveMaster</a>()</pre>
+<pre>boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterServices.html#line.341">isActiveMaster</a>()</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true if master is the active one</dd>
@@ -1065,7 +1042,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/Server.html" title="inte
<ul class="blockList">
<li class="blockList">
<h4>isInitialized</h4>
-<pre>boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterServices.html#line.351">isInitialized</a>()</pre>
+<pre>boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterServices.html#line.346">isInitialized</a>()</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true if master is initialized</dd>
@@ -1078,7 +1055,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/Server.html" title="inte
<ul class="blockList">
<li class="blockList">
<h4>isInMaintenanceMode</h4>
-<pre>boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterServices.html#line.357">isInMaintenanceMode</a>()
+<pre>boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterServices.html#line.352">isInMaintenanceMode</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="returnLabel">Returns:</span></dt>
@@ -1094,7 +1071,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/Server.html" title="inte
<ul class="blockList">
<li class="blockList">
<h4>abortProcedure</h4>
-<pre>boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterServices.html#line.366">abortProcedure</a>(long procId,
+<pre>boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterServices.html#line.361">abortProcedure</a>(long procId,
boolean mayInterruptIfRunning)
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">Abort a procedure.</div>
@@ -1115,7 +1092,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/Server.html" title="inte
<ul class="blockList">
<li class="blockList">
<h4>getProcedures</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><<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?>> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterServices.html#line.374">getProcedures</a>()
+<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><<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?>> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterServices.html#line.369">getProcedures</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">Get procedures</div>
<dl>
@@ -1132,7 +1109,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/Server.html" title="inte
<ul class="blockList">
<li class="blockList">
<h4>getLocks</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><<a href="../../../../../org/apache/hadoop/hbase/procedure2/LockedResource.html" title="class in org.apache.hadoop.hbase.procedure2">LockedResource</a>> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterServices.html#line.381">getLocks</a>()
+<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><<a href="../../../../../org/apache/hadoop/hbase/procedure2/LockedResource.html" title="class in org.apache.hadoop.hbase.procedure2">LockedResource</a>> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterServices.html#line.376">getLocks</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">Get locks</div>
<dl>
@@ -1149,7 +1126,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/Server.html" title="inte
<ul class="blockList">
<li class="blockList">
<h4>listTableDescriptorsByNamespace</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><<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/master/MasterServices.html#line.389">listTableDescriptorsByNamespace</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> name)
+<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><<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/master/MasterServices.html#line.384">listTableDescriptorsByNamespace</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> name)
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">Get list of table descriptors by namespace</div>
<dl>
@@ -1168,7 +1145,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/Server.html" title="inte
<ul class="blockList">
<li class="blockList">
<h4>listTableNamesByNamespace</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><<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterServices.html#line.397">listTableNamesByNamespace</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> name)
+<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><<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterServices.html#line.392">listTableNamesByNamespace</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> name)
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">Get list of table names by namespace</div>
<dl>
@@ -1187,7 +1164,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/Server.html" title="inte
<ul class="blockList">
<li class="blockList">
<h4>getLastMajorCompactionTimestamp</h4>
-<pre>long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterServices.html#line.405">getLastMajorCompactionTimestamp</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> table)
+<pre>long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterServices.html#line.400">getLastMajorCompactionTimestamp</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> table)
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>
@@ -1206,7 +1183,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/Server.html" title="inte
<ul class="blockList">
<li class="blockList">
<h4>getLastMajorCompactionTimestampForRegion</h4>
-<pre>long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterServices.html#line.413">getLastMajorCompactionTimestampForRegion</a>(byte[] regionName)
+<pre>long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterServices.html#line.408">getLastMajorCompactionTimestampForRegion</a>(byte[] regionName)
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>
@@ -1225,7 +1202,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/Server.html" title="inte
<ul class="blockList">
<li class="blockList">
<h4>getLoadBalancer</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/master/LoadBalancer.html" title="interface in org.apache.hadoop.hbase.master">LoadBalancer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterServices.html#line.418">getLoadBalancer</a>()</pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/master/LoadBalancer.html" title="interface in org.apache.hadoop.hbase.master">LoadBalancer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterServices.html#line.413">getLoadBalancer</a>()</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>load balancer</dd>
@@ -1238,7 +1215,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/Server.html" title="inte
<ul class="blockList">
<li class="blockList">
<h4>isSplitOrMergeEnabled</h4>
-<pre>boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterServices.html#line.420">isSplitOrMergeEnabled</a>(<a href="../../../../../org/apache/hadoop/hbase/client/MasterSwitchType.html" title="enum in org.apache.hadoop.hbase.client">MasterSwitchType</a> switchType)</pre>
+<pre>boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterServices.html#line.415">isSplitOrMergeEnabled</a>(<a href="../../../../../org/apache/hadoop/hbase/client/MasterSwitchType.html" title="enum in org.apache.hadoop.hbase.client">MasterSwitchType</a> switchType)</pre>
</li>
</ul>
<a name="getFavoredNodesManager--">
@@ -1247,7 +1224,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/Server.html" title="inte
<ul class="blockList">
<li class="blockList">
<h4>getFavoredNodesManager</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/favored/FavoredNodesManager.html" title="class in org.apache.hadoop.hbase.favored">FavoredNodesManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterServices.html#line.425">getFavoredNodesManager</a>()</pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/favored/FavoredNodesManager.html" title="class in org.apache.hadoop.hbase.favored">FavoredNodesManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterServices.html#line.420">getFavoredNodesManager</a>()</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Favored Nodes Manager</dd>
@@ -1260,7 +1237,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/Server.html" title="inte
<ul class="blockList">
<li class="blockList">
<h4>addReplicationPeer</h4>
-<pre>long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterServices.html#line.433">addReplicationPeer</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> peerId,
+<pre>long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterServices.html#line.428">addReplicationPeer</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> peerId,
<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig</a> peerConfig,
boolean enabled)
throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a>,
@@ -1283,7 +1260,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/Server.html" title="inte
<ul class="blockList">
<li class="blockList">
<h4>removeReplicationPeer</h4>
-<pre>long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterServices.html#line.440">removeReplicationPeer</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> peerId)
+<pre>long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterServices.html#line.435">removeReplicationPeer</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> peerId)
throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a>,
<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">Removes a peer and stops the replication</div>
@@ -1302,7 +1279,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/Server.html" title="inte
<ul class="blockList">
<li class="blockList">
<h4>enableReplicationPeer</h4>
-<pre>long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterServices.html#line.446">enableReplicationPeer</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> peerId)
+<pre>long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterServices.html#line.441">enableReplicationPeer</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> peerId)
throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a>,
<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">Restart the replication stream to the specified peer</div>
@@ -1321,7 +1298,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/Server.html" title="inte
<ul class="blockList">
<li class="blockList">
<h4>disableReplicationPeer</h4>
-<pre>long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterServices.html#line.452">disableReplicationPeer</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> peerId)
+<pre>long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterServices.html#line.447">disableReplicationPeer</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> peerId)
throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a>,
<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">Stop the replication stream to the specified peer</div>
@@ -1340,7 +1317,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/Server.html" title="inte
<ul class="blockList">
<li class="blockList">
<h4>getReplicationPeerConfig</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterServices.html#line.459">getReplicationPeerConfig</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> peerId)
+<pre><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterServices.html#line.454">getReplicationPeerConfig</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> peerId)
throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a>,
<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">Returns the configured ReplicationPeerConfig for the specified peer</div>
@@ -1361,7 +1338,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/Server.html" title="inte
<ul class="blockList">
<li class="blockList">
<h4>getReplicationPeerManager</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/master/replication/ReplicationPeerManager.html" title="class in org.apache.hadoop.hbase.master.replication">ReplicationPeerManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterServices.html#line.465">getReplicationPeerManager</a>()</pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/master/replication/ReplicationPeerManager.html" title="class in org.apache.hadoop.hbase.master.replication">ReplicationPeerManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterServices.html#line.460">getReplicationPeerManager</a>()</pre>
<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>
</li>
</ul>
@@ -1371,7 +1348,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/Server.html" title="inte
<ul class="blockList">
<li class="blockList">
<h4>updateReplicationPeerConfig</h4>
-<pre>long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterServices.html#line.472">updateReplicationPeerConfig</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> peerId,
+<pre>long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterServices.html#line.467">updateReplicationPeerConfig</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> peerId,
<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig</a> peerConfig)
throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a>,
<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>
@@ -1392,7 +1369,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/Server.html" title="inte
<ul class="blockList">
<li class="blockList">
<h4>listReplicationPeers</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><<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerDescription.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerDescription</a>> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterServices.html#line.480">listReplicationPeers</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> regex)
+<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><<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerDescription.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerDescription</a>> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterServices.html#line.475">listReplicationPeers</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> regex)
throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a>,
<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 a list of replication peers.</div>
@@ -1413,7 +1390,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/Server.html" title="inte
<ul class="blockList">
<li class="blockList">
<h4>getLockManager</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/master/locking/LockManager.html" title="class in org.apache.hadoop.hbase.master.locking">LockManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterServices.html#line.486">getLockManager</a>()</pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/master/locking/LockManager.html" title="class in org.apache.hadoop.hbase.master.locking">LockManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterServices.html#line.481">getLockManager</a>()</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd><a href="../../../../../org/apache/hadoop/hbase/master/locking/LockManager.html" title="class in org.apache.hadoop.hbase.master.locking"><code>LockManager</code></a> to lock namespaces/tables/regions.</dd>
@@ -1426,7 +1403,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/Server.html" title="inte
<ul class="blockList">
<li class="blockList">
<h4>getRegionServerVersion</h4>
-<pre><a href="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/MasterServices.html#line.488">getRegionServerVersion</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> sn)</pre>
+<pre><a href="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/MasterServices.html#line.483">getRegionServerVersion</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> sn)</pre>
</li>
</ul>
<a name="checkIfShouldMoveSystemRegionAsync--">
@@ -1435,36 +1412,19 @@ extends <a href="../../../../../org/apache/hadoop/hbase/Server.html" title="inte
<ul class="blockList">
<li class="blockList">
<h4>checkIfShouldMoveSystemRegionAsync</h4>
-<pre>void <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterServices.html#line.495">checkIfShouldMoveSystemRegionAsync</a>()</pre>
+<pre>void <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterServices.html#line.490">checkIfShouldMoveSystemRegionAsync</a>()</pre>
<div class="block">Called when a new RegionServer is added to the cluster.
Checks if new server has a newer version than any existing server and will move system tables
there if so.</div>
</li>
</ul>
-<a name="recoverMeta--">
-<!-- -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>recoverMeta</h4>
-<pre>boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterServices.html#line.502">recoverMeta</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">Recover meta table. Will result in no-op is meta is already initialized. Any code that has
- access to master and requires to access meta during process initialization can call this
- method to make sure meta is initialized.</div>
-<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="getClientIdAuditPrefix--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getClientIdAuditPrefix</h4>
-<pre><a href="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/MasterServices.html#line.504">getClientIdAuditPrefix</a>()</pre>
+<pre><a href="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/MasterServices.html#line.492">getClientIdAuditPrefix</a>()</pre>
</li>
</ul>
<a name="isClusterUp--">
@@ -1473,7 +1433,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/Server.html" title="inte
<ul class="blockListLast">
<li class="blockList">
<h4>isClusterUp</h4>
-<pre>boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterServices.html#line.509">isClusterUp</a>()</pre>
+<pre>boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterServices.html#line.497">isClusterUp</a>()</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>True if cluster is up; false if cluster is not up (we are shutting down).</dd>
[17/51] [partial] hbase-site git commit: Published site at
9101fc246f86445006bfbcdfda5cc495016dc280.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.Visitor.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.Visitor.html b/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.Visitor.html
index fea2b5a..c7a6cc4 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.Visitor.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.Visitor.html
@@ -1354,816 +1354,824 @@
<span class="sourceLineNo">1346</span> */<a name="line.1346"></a>
<span class="sourceLineNo">1347</span> public static void putsToMetaTable(final Connection connection, final List<Put> ps)<a name="line.1347"></a>
<span class="sourceLineNo">1348</span> throws IOException {<a name="line.1348"></a>
-<span class="sourceLineNo">1349</span> try (Table t = getMetaHTable(connection)) {<a name="line.1349"></a>
-<span class="sourceLineNo">1350</span> debugLogMutations(ps);<a name="line.1350"></a>
-<span class="sourceLineNo">1351</span> t.put(ps);<a name="line.1351"></a>
-<span class="sourceLineNo">1352</span> }<a name="line.1352"></a>
-<span class="sourceLineNo">1353</span> }<a name="line.1353"></a>
-<span class="sourceLineNo">1354</span><a name="line.1354"></a>
-<span class="sourceLineNo">1355</span> /**<a name="line.1355"></a>
-<span class="sourceLineNo">1356</span> * Delete the passed <code>d</code> from the <code>hbase:meta</code> table.<a name="line.1356"></a>
-<span class="sourceLineNo">1357</span> * @param connection connection we're using<a name="line.1357"></a>
-<span class="sourceLineNo">1358</span> * @param d Delete to add to hbase:meta<a name="line.1358"></a>
-<span class="sourceLineNo">1359</span> */<a name="line.1359"></a>
-<span class="sourceLineNo">1360</span> private static void deleteFromMetaTable(final Connection connection, final Delete d)<a name="line.1360"></a>
-<span class="sourceLineNo">1361</span> throws IOException {<a name="line.1361"></a>
-<span class="sourceLineNo">1362</span> List<Delete> dels = new ArrayList<>(1);<a name="line.1362"></a>
-<span class="sourceLineNo">1363</span> dels.add(d);<a name="line.1363"></a>
-<span class="sourceLineNo">1364</span> deleteFromMetaTable(connection, dels);<a name="line.1364"></a>
-<span class="sourceLineNo">1365</span> }<a name="line.1365"></a>
-<span class="sourceLineNo">1366</span><a name="line.1366"></a>
-<span class="sourceLineNo">1367</span> /**<a name="line.1367"></a>
-<span class="sourceLineNo">1368</span> * Delete the passed <code>deletes</code> from the <code>hbase:meta</code> table.<a name="line.1368"></a>
-<span class="sourceLineNo">1369</span> * @param connection connection we're using<a name="line.1369"></a>
-<span class="sourceLineNo">1370</span> * @param deletes Deletes to add to hbase:meta This list should support #remove.<a name="line.1370"></a>
-<span class="sourceLineNo">1371</span> */<a name="line.1371"></a>
-<span class="sourceLineNo">1372</span> private static void deleteFromMetaTable(final Connection connection, final List<Delete> deletes)<a name="line.1372"></a>
-<span class="sourceLineNo">1373</span> throws IOException {<a name="line.1373"></a>
-<span class="sourceLineNo">1374</span> try (Table t = getMetaHTable(connection)) {<a name="line.1374"></a>
-<span class="sourceLineNo">1375</span> debugLogMutations(deletes);<a name="line.1375"></a>
-<span class="sourceLineNo">1376</span> t.delete(deletes);<a name="line.1376"></a>
-<span class="sourceLineNo">1377</span> }<a name="line.1377"></a>
-<span class="sourceLineNo">1378</span> }<a name="line.1378"></a>
-<span class="sourceLineNo">1379</span><a name="line.1379"></a>
-<span class="sourceLineNo">1380</span> /**<a name="line.1380"></a>
-<span class="sourceLineNo">1381</span> * Deletes some replica columns corresponding to replicas for the passed rows<a name="line.1381"></a>
-<span class="sourceLineNo">1382</span> * @param metaRows rows in hbase:meta<a name="line.1382"></a>
-<span class="sourceLineNo">1383</span> * @param replicaIndexToDeleteFrom the replica ID we would start deleting from<a name="line.1383"></a>
-<span class="sourceLineNo">1384</span> * @param numReplicasToRemove how many replicas to remove<a name="line.1384"></a>
-<span class="sourceLineNo">1385</span> * @param connection connection we're using to access meta table<a name="line.1385"></a>
-<span class="sourceLineNo">1386</span> */<a name="line.1386"></a>
-<span class="sourceLineNo">1387</span> public static void removeRegionReplicasFromMeta(Set<byte[]> metaRows,<a name="line.1387"></a>
-<span class="sourceLineNo">1388</span> int replicaIndexToDeleteFrom, int numReplicasToRemove, Connection connection)<a name="line.1388"></a>
-<span class="sourceLineNo">1389</span> throws IOException {<a name="line.1389"></a>
-<span class="sourceLineNo">1390</span> int absoluteIndex = replicaIndexToDeleteFrom + numReplicasToRemove;<a name="line.1390"></a>
-<span class="sourceLineNo">1391</span> for (byte[] row : metaRows) {<a name="line.1391"></a>
-<span class="sourceLineNo">1392</span> long now = EnvironmentEdgeManager.currentTime();<a name="line.1392"></a>
-<span class="sourceLineNo">1393</span> Delete deleteReplicaLocations = new Delete(row);<a name="line.1393"></a>
-<span class="sourceLineNo">1394</span> for (int i = replicaIndexToDeleteFrom; i < absoluteIndex; i++) {<a name="line.1394"></a>
-<span class="sourceLineNo">1395</span> deleteReplicaLocations.addColumns(getCatalogFamily(),<a name="line.1395"></a>
-<span class="sourceLineNo">1396</span> getServerColumn(i), now);<a name="line.1396"></a>
-<span class="sourceLineNo">1397</span> deleteReplicaLocations.addColumns(getCatalogFamily(),<a name="line.1397"></a>
-<span class="sourceLineNo">1398</span> getSeqNumColumn(i), now);<a name="line.1398"></a>
-<span class="sourceLineNo">1399</span> deleteReplicaLocations.addColumns(getCatalogFamily(),<a name="line.1399"></a>
-<span class="sourceLineNo">1400</span> getStartCodeColumn(i), now);<a name="line.1400"></a>
-<span class="sourceLineNo">1401</span> }<a name="line.1401"></a>
-<span class="sourceLineNo">1402</span> deleteFromMetaTable(connection, deleteReplicaLocations);<a name="line.1402"></a>
-<span class="sourceLineNo">1403</span> }<a name="line.1403"></a>
-<span class="sourceLineNo">1404</span> }<a name="line.1404"></a>
-<span class="sourceLineNo">1405</span><a name="line.1405"></a>
-<span class="sourceLineNo">1406</span> /**<a name="line.1406"></a>
-<span class="sourceLineNo">1407</span> * Execute the passed <code>mutations</code> against <code>hbase:meta</code> table.<a name="line.1407"></a>
-<span class="sourceLineNo">1408</span> * @param connection connection we're using<a name="line.1408"></a>
-<span class="sourceLineNo">1409</span> * @param mutations Puts and Deletes to execute on hbase:meta<a name="line.1409"></a>
-<span class="sourceLineNo">1410</span> * @throws IOException<a name="line.1410"></a>
-<span class="sourceLineNo">1411</span> */<a name="line.1411"></a>
-<span class="sourceLineNo">1412</span> public static void mutateMetaTable(final Connection connection,<a name="line.1412"></a>
-<span class="sourceLineNo">1413</span> final List<Mutation> mutations)<a name="line.1413"></a>
-<span class="sourceLineNo">1414</span> throws IOException {<a name="line.1414"></a>
-<span class="sourceLineNo">1415</span> Table t = getMetaHTable(connection);<a name="line.1415"></a>
-<span class="sourceLineNo">1416</span> try {<a name="line.1416"></a>
-<span class="sourceLineNo">1417</span> debugLogMutations(mutations);<a name="line.1417"></a>
-<span class="sourceLineNo">1418</span> t.batch(mutations, null);<a name="line.1418"></a>
-<span class="sourceLineNo">1419</span> } catch (InterruptedException e) {<a name="line.1419"></a>
-<span class="sourceLineNo">1420</span> InterruptedIOException ie = new InterruptedIOException(e.getMessage());<a name="line.1420"></a>
-<span class="sourceLineNo">1421</span> ie.initCause(e);<a name="line.1421"></a>
-<span class="sourceLineNo">1422</span> throw ie;<a name="line.1422"></a>
-<span class="sourceLineNo">1423</span> } finally {<a name="line.1423"></a>
-<span class="sourceLineNo">1424</span> t.close();<a name="line.1424"></a>
-<span class="sourceLineNo">1425</span> }<a name="line.1425"></a>
-<span class="sourceLineNo">1426</span> }<a name="line.1426"></a>
-<span class="sourceLineNo">1427</span><a name="line.1427"></a>
-<span class="sourceLineNo">1428</span> private static void addRegionStateToPut(Put put, RegionState.State state) throws IOException {<a name="line.1428"></a>
-<span class="sourceLineNo">1429</span> put.add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.1429"></a>
-<span class="sourceLineNo">1430</span> .setRow(put.getRow())<a name="line.1430"></a>
-<span class="sourceLineNo">1431</span> .setFamily(HConstants.CATALOG_FAMILY)<a name="line.1431"></a>
-<span class="sourceLineNo">1432</span> .setQualifier(getRegionStateColumn())<a name="line.1432"></a>
-<span class="sourceLineNo">1433</span> .setTimestamp(put.getTimestamp())<a name="line.1433"></a>
-<span class="sourceLineNo">1434</span> .setType(Cell.Type.Put)<a name="line.1434"></a>
-<span class="sourceLineNo">1435</span> .setValue(Bytes.toBytes(state.name()))<a name="line.1435"></a>
-<span class="sourceLineNo">1436</span> .build());<a name="line.1436"></a>
-<span class="sourceLineNo">1437</span> }<a name="line.1437"></a>
-<span class="sourceLineNo">1438</span><a name="line.1438"></a>
-<span class="sourceLineNo">1439</span> /**<a name="line.1439"></a>
-<span class="sourceLineNo">1440</span> * Adds daughter region infos to hbase:meta row for the specified region. Note that this does not<a name="line.1440"></a>
-<span class="sourceLineNo">1441</span> * add its daughter's as different rows, but adds information about the daughters in the same row<a name="line.1441"></a>
-<span class="sourceLineNo">1442</span> * as the parent. Use<a name="line.1442"></a>
-<span class="sourceLineNo">1443</span> * {@link #splitRegion(Connection, RegionInfo, long, RegionInfo, RegionInfo, ServerName, int)}<a name="line.1443"></a>
-<span class="sourceLineNo">1444</span> * if you want to do that.<a name="line.1444"></a>
-<span class="sourceLineNo">1445</span> * @param connection connection we're using<a name="line.1445"></a>
-<span class="sourceLineNo">1446</span> * @param regionInfo RegionInfo of parent region<a name="line.1446"></a>
-<span class="sourceLineNo">1447</span> * @param splitA first split daughter of the parent regionInfo<a name="line.1447"></a>
-<span class="sourceLineNo">1448</span> * @param splitB second split daughter of the parent regionInfo<a name="line.1448"></a>
-<span class="sourceLineNo">1449</span> * @throws IOException if problem connecting or updating meta<a name="line.1449"></a>
-<span class="sourceLineNo">1450</span> */<a name="line.1450"></a>
-<span class="sourceLineNo">1451</span> public static void addSplitsToParent(Connection connection, RegionInfo regionInfo,<a name="line.1451"></a>
-<span class="sourceLineNo">1452</span> RegionInfo splitA, RegionInfo splitB) throws IOException {<a name="line.1452"></a>
-<span class="sourceLineNo">1453</span> Table meta = getMetaHTable(connection);<a name="line.1453"></a>
-<span class="sourceLineNo">1454</span> try {<a name="line.1454"></a>
-<span class="sourceLineNo">1455</span> Put put = makePutFromRegionInfo(regionInfo, EnvironmentEdgeManager.currentTime());<a name="line.1455"></a>
-<span class="sourceLineNo">1456</span> addDaughtersToPut(put, splitA, splitB);<a name="line.1456"></a>
-<span class="sourceLineNo">1457</span> meta.put(put);<a name="line.1457"></a>
-<span class="sourceLineNo">1458</span> debugLogMutation(put);<a name="line.1458"></a>
-<span class="sourceLineNo">1459</span> LOG.debug("Added region {}", regionInfo.getRegionNameAsString());<a name="line.1459"></a>
-<span class="sourceLineNo">1460</span> } finally {<a name="line.1460"></a>
-<span class="sourceLineNo">1461</span> meta.close();<a name="line.1461"></a>
-<span class="sourceLineNo">1462</span> }<a name="line.1462"></a>
-<span class="sourceLineNo">1463</span> }<a name="line.1463"></a>
-<span class="sourceLineNo">1464</span><a name="line.1464"></a>
-<span class="sourceLineNo">1465</span> /**<a name="line.1465"></a>
-<span class="sourceLineNo">1466</span> * Adds a (single) hbase:meta row for the specified new region and its daughters. Note that this<a name="line.1466"></a>
-<span class="sourceLineNo">1467</span> * does not add its daughter's as different rows, but adds information about the daughters<a name="line.1467"></a>
-<span class="sourceLineNo">1468</span> * in the same row as the parent. Use<a name="line.1468"></a>
-<span class="sourceLineNo">1469</span> * {@link #splitRegion(Connection, RegionInfo, long, RegionInfo, RegionInfo, ServerName, int)}<a name="line.1469"></a>
-<span class="sourceLineNo">1470</span> * if you want to do that.<a name="line.1470"></a>
-<span class="sourceLineNo">1471</span> * @param connection connection we're using<a name="line.1471"></a>
-<span class="sourceLineNo">1472</span> * @param regionInfo region information<a name="line.1472"></a>
-<span class="sourceLineNo">1473</span> * @throws IOException if problem connecting or updating meta<a name="line.1473"></a>
-<span class="sourceLineNo">1474</span> */<a name="line.1474"></a>
-<span class="sourceLineNo">1475</span> @VisibleForTesting<a name="line.1475"></a>
-<span class="sourceLineNo">1476</span> public static void addRegionToMeta(Connection connection, RegionInfo regionInfo)<a name="line.1476"></a>
-<span class="sourceLineNo">1477</span> throws IOException {<a name="line.1477"></a>
-<span class="sourceLineNo">1478</span> addRegionsToMeta(connection, Collections.singletonList(regionInfo), 1);<a name="line.1478"></a>
-<span class="sourceLineNo">1479</span> }<a name="line.1479"></a>
-<span class="sourceLineNo">1480</span><a name="line.1480"></a>
-<span class="sourceLineNo">1481</span> /**<a name="line.1481"></a>
-<span class="sourceLineNo">1482</span> * Adds a hbase:meta row for each of the specified new regions. Initial state for new regions<a name="line.1482"></a>
-<span class="sourceLineNo">1483</span> * is CLOSED.<a name="line.1483"></a>
-<span class="sourceLineNo">1484</span> * @param connection connection we're using<a name="line.1484"></a>
-<span class="sourceLineNo">1485</span> * @param regionInfos region information list<a name="line.1485"></a>
-<span class="sourceLineNo">1486</span> * @throws IOException if problem connecting or updating meta<a name="line.1486"></a>
-<span class="sourceLineNo">1487</span> */<a name="line.1487"></a>
-<span class="sourceLineNo">1488</span> public static void addRegionsToMeta(Connection connection, List<RegionInfo> regionInfos,<a name="line.1488"></a>
-<span class="sourceLineNo">1489</span> int regionReplication) throws IOException {<a name="line.1489"></a>
-<span class="sourceLineNo">1490</span> addRegionsToMeta(connection, regionInfos, regionReplication,<a name="line.1490"></a>
-<span class="sourceLineNo">1491</span> EnvironmentEdgeManager.currentTime());<a name="line.1491"></a>
-<span class="sourceLineNo">1492</span> }<a name="line.1492"></a>
-<span class="sourceLineNo">1493</span><a name="line.1493"></a>
-<span class="sourceLineNo">1494</span> /**<a name="line.1494"></a>
-<span class="sourceLineNo">1495</span> * Adds a hbase:meta row for each of the specified new regions. Initial state for new regions<a name="line.1495"></a>
-<span class="sourceLineNo">1496</span> * is CLOSED.<a name="line.1496"></a>
-<span class="sourceLineNo">1497</span> * @param connection connection we're using<a name="line.1497"></a>
-<span class="sourceLineNo">1498</span> * @param regionInfos region information list<a name="line.1498"></a>
-<span class="sourceLineNo">1499</span> * @param regionReplication<a name="line.1499"></a>
-<span class="sourceLineNo">1500</span> * @param ts desired timestamp<a name="line.1500"></a>
-<span class="sourceLineNo">1501</span> * @throws IOException if problem connecting or updating meta<a name="line.1501"></a>
-<span class="sourceLineNo">1502</span> */<a name="line.1502"></a>
-<span class="sourceLineNo">1503</span> private static void addRegionsToMeta(Connection connection, List<RegionInfo> regionInfos,<a name="line.1503"></a>
-<span class="sourceLineNo">1504</span> int regionReplication, long ts) throws IOException {<a name="line.1504"></a>
-<span class="sourceLineNo">1505</span> List<Put> puts = new ArrayList<>();<a name="line.1505"></a>
-<span class="sourceLineNo">1506</span> for (RegionInfo regionInfo : regionInfos) {<a name="line.1506"></a>
-<span class="sourceLineNo">1507</span> if (RegionReplicaUtil.isDefaultReplica(regionInfo)) {<a name="line.1507"></a>
-<span class="sourceLineNo">1508</span> Put put = makePutFromRegionInfo(regionInfo, ts);<a name="line.1508"></a>
-<span class="sourceLineNo">1509</span> // New regions are added with initial state of CLOSED.<a name="line.1509"></a>
-<span class="sourceLineNo">1510</span> addRegionStateToPut(put, RegionState.State.CLOSED);<a name="line.1510"></a>
-<span class="sourceLineNo">1511</span> // Add empty locations for region replicas so that number of replicas can be cached<a name="line.1511"></a>
-<span class="sourceLineNo">1512</span> // whenever the primary region is looked up from meta<a name="line.1512"></a>
-<span class="sourceLineNo">1513</span> for (int i = 1; i < regionReplication; i++) {<a name="line.1513"></a>
-<span class="sourceLineNo">1514</span> addEmptyLocation(put, i);<a name="line.1514"></a>
-<span class="sourceLineNo">1515</span> }<a name="line.1515"></a>
-<span class="sourceLineNo">1516</span> puts.add(put);<a name="line.1516"></a>
-<span class="sourceLineNo">1517</span> }<a name="line.1517"></a>
-<span class="sourceLineNo">1518</span> }<a name="line.1518"></a>
-<span class="sourceLineNo">1519</span> putsToMetaTable(connection, puts);<a name="line.1519"></a>
-<span class="sourceLineNo">1520</span> LOG.info("Added {} regions to meta.", puts.size());<a name="line.1520"></a>
-<span class="sourceLineNo">1521</span> }<a name="line.1521"></a>
-<span class="sourceLineNo">1522</span><a name="line.1522"></a>
-<span class="sourceLineNo">1523</span> /**<a name="line.1523"></a>
-<span class="sourceLineNo">1524</span> * Merge the two regions into one in an atomic operation. Deletes the two merging regions in<a name="line.1524"></a>
-<span class="sourceLineNo">1525</span> * hbase:meta and adds the merged region with the information of two merging regions.<a name="line.1525"></a>
-<span class="sourceLineNo">1526</span> * @param connection connection we're using<a name="line.1526"></a>
-<span class="sourceLineNo">1527</span> * @param mergedRegion the merged region<a name="line.1527"></a>
-<span class="sourceLineNo">1528</span> * @param regionA merge parent region A<a name="line.1528"></a>
-<span class="sourceLineNo">1529</span> * @param regionAOpenSeqNum the next open sequence id for region A, used by serial replication. -1<a name="line.1529"></a>
-<span class="sourceLineNo">1530</span> * if not necessary.<a name="line.1530"></a>
-<span class="sourceLineNo">1531</span> * @param regionB merge parent region B<a name="line.1531"></a>
-<span class="sourceLineNo">1532</span> * @param regionBOpenSeqNum the next open sequence id for region B, used by serial replication. -1<a name="line.1532"></a>
-<span class="sourceLineNo">1533</span> * if not necessary.<a name="line.1533"></a>
-<span class="sourceLineNo">1534</span> * @param sn the location of the region<a name="line.1534"></a>
-<span class="sourceLineNo">1535</span> */<a name="line.1535"></a>
-<span class="sourceLineNo">1536</span> public static void mergeRegions(Connection connection, RegionInfo mergedRegion,<a name="line.1536"></a>
-<span class="sourceLineNo">1537</span> RegionInfo regionA, long regionAOpenSeqNum, RegionInfo regionB, long regionBOpenSeqNum,<a name="line.1537"></a>
-<span class="sourceLineNo">1538</span> ServerName sn, int regionReplication) throws IOException {<a name="line.1538"></a>
-<span class="sourceLineNo">1539</span> try (Table meta = getMetaHTable(connection)) {<a name="line.1539"></a>
-<span class="sourceLineNo">1540</span> long time = EnvironmentEdgeManager.currentTime();<a name="line.1540"></a>
-<span class="sourceLineNo">1541</span> List<Mutation> mutations = new ArrayList<>();<a name="line.1541"></a>
-<span class="sourceLineNo">1542</span><a name="line.1542"></a>
-<span class="sourceLineNo">1543</span> List<RegionInfo> replicationParents = new ArrayList<>(2);<a name="line.1543"></a>
-<span class="sourceLineNo">1544</span> // Deletes for merging regions<a name="line.1544"></a>
-<span class="sourceLineNo">1545</span> mutations.add(makeDeleteFromRegionInfo(regionA, time));<a name="line.1545"></a>
-<span class="sourceLineNo">1546</span> if (regionAOpenSeqNum > 0) {<a name="line.1546"></a>
-<span class="sourceLineNo">1547</span> mutations.add(makePutForReplicationBarrier(regionA, regionAOpenSeqNum, time));<a name="line.1547"></a>
-<span class="sourceLineNo">1548</span> replicationParents.add(regionA);<a name="line.1548"></a>
-<span class="sourceLineNo">1549</span> }<a name="line.1549"></a>
-<span class="sourceLineNo">1550</span> mutations.add(makeDeleteFromRegionInfo(regionB, time));<a name="line.1550"></a>
-<span class="sourceLineNo">1551</span> if (regionBOpenSeqNum > 0) {<a name="line.1551"></a>
-<span class="sourceLineNo">1552</span> mutations.add(makePutForReplicationBarrier(regionB, regionBOpenSeqNum, time));<a name="line.1552"></a>
-<span class="sourceLineNo">1553</span> replicationParents.add(regionB);<a name="line.1553"></a>
-<span class="sourceLineNo">1554</span> }<a name="line.1554"></a>
-<span class="sourceLineNo">1555</span><a name="line.1555"></a>
-<span class="sourceLineNo">1556</span> // Put for parent<a name="line.1556"></a>
-<span class="sourceLineNo">1557</span> Put putOfMerged = makePutFromRegionInfo(mergedRegion, time);<a name="line.1557"></a>
-<span class="sourceLineNo">1558</span> putOfMerged.add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.1558"></a>
-<span class="sourceLineNo">1559</span> .setRow(putOfMerged.getRow())<a name="line.1559"></a>
-<span class="sourceLineNo">1560</span> .setFamily(HConstants.CATALOG_FAMILY)<a name="line.1560"></a>
-<span class="sourceLineNo">1561</span> .setQualifier(HConstants.MERGEA_QUALIFIER)<a name="line.1561"></a>
-<span class="sourceLineNo">1562</span> .setTimestamp(putOfMerged.getTimestamp())<a name="line.1562"></a>
-<span class="sourceLineNo">1563</span> .setType(Type.Put)<a name="line.1563"></a>
-<span class="sourceLineNo">1564</span> .setValue(RegionInfo.toByteArray(regionA))<a name="line.1564"></a>
-<span class="sourceLineNo">1565</span> .build())<a name="line.1565"></a>
-<span class="sourceLineNo">1566</span> .add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.1566"></a>
+<span class="sourceLineNo">1349</span> if (ps.isEmpty()) {<a name="line.1349"></a>
+<span class="sourceLineNo">1350</span> return;<a name="line.1350"></a>
+<span class="sourceLineNo">1351</span> }<a name="line.1351"></a>
+<span class="sourceLineNo">1352</span> try (Table t = getMetaHTable(connection)) {<a name="line.1352"></a>
+<span class="sourceLineNo">1353</span> debugLogMutations(ps);<a name="line.1353"></a>
+<span class="sourceLineNo">1354</span> // the implementation for putting a single Put is much simpler so here we do a check first.<a name="line.1354"></a>
+<span class="sourceLineNo">1355</span> if (ps.size() == 1) {<a name="line.1355"></a>
+<span class="sourceLineNo">1356</span> t.put(ps.get(0));<a name="line.1356"></a>
+<span class="sourceLineNo">1357</span> } else {<a name="line.1357"></a>
+<span class="sourceLineNo">1358</span> t.put(ps);<a name="line.1358"></a>
+<span class="sourceLineNo">1359</span> }<a name="line.1359"></a>
+<span class="sourceLineNo">1360</span> }<a name="line.1360"></a>
+<span class="sourceLineNo">1361</span> }<a name="line.1361"></a>
+<span class="sourceLineNo">1362</span><a name="line.1362"></a>
+<span class="sourceLineNo">1363</span> /**<a name="line.1363"></a>
+<span class="sourceLineNo">1364</span> * Delete the passed <code>d</code> from the <code>hbase:meta</code> table.<a name="line.1364"></a>
+<span class="sourceLineNo">1365</span> * @param connection connection we're using<a name="line.1365"></a>
+<span class="sourceLineNo">1366</span> * @param d Delete to add to hbase:meta<a name="line.1366"></a>
+<span class="sourceLineNo">1367</span> */<a name="line.1367"></a>
+<span class="sourceLineNo">1368</span> private static void deleteFromMetaTable(final Connection connection, final Delete d)<a name="line.1368"></a>
+<span class="sourceLineNo">1369</span> throws IOException {<a name="line.1369"></a>
+<span class="sourceLineNo">1370</span> List<Delete> dels = new ArrayList<>(1);<a name="line.1370"></a>
+<span class="sourceLineNo">1371</span> dels.add(d);<a name="line.1371"></a>
+<span class="sourceLineNo">1372</span> deleteFromMetaTable(connection, dels);<a name="line.1372"></a>
+<span class="sourceLineNo">1373</span> }<a name="line.1373"></a>
+<span class="sourceLineNo">1374</span><a name="line.1374"></a>
+<span class="sourceLineNo">1375</span> /**<a name="line.1375"></a>
+<span class="sourceLineNo">1376</span> * Delete the passed <code>deletes</code> from the <code>hbase:meta</code> table.<a name="line.1376"></a>
+<span class="sourceLineNo">1377</span> * @param connection connection we're using<a name="line.1377"></a>
+<span class="sourceLineNo">1378</span> * @param deletes Deletes to add to hbase:meta This list should support #remove.<a name="line.1378"></a>
+<span class="sourceLineNo">1379</span> */<a name="line.1379"></a>
+<span class="sourceLineNo">1380</span> private static void deleteFromMetaTable(final Connection connection, final List<Delete> deletes)<a name="line.1380"></a>
+<span class="sourceLineNo">1381</span> throws IOException {<a name="line.1381"></a>
+<span class="sourceLineNo">1382</span> try (Table t = getMetaHTable(connection)) {<a name="line.1382"></a>
+<span class="sourceLineNo">1383</span> debugLogMutations(deletes);<a name="line.1383"></a>
+<span class="sourceLineNo">1384</span> t.delete(deletes);<a name="line.1384"></a>
+<span class="sourceLineNo">1385</span> }<a name="line.1385"></a>
+<span class="sourceLineNo">1386</span> }<a name="line.1386"></a>
+<span class="sourceLineNo">1387</span><a name="line.1387"></a>
+<span class="sourceLineNo">1388</span> /**<a name="line.1388"></a>
+<span class="sourceLineNo">1389</span> * Deletes some replica columns corresponding to replicas for the passed rows<a name="line.1389"></a>
+<span class="sourceLineNo">1390</span> * @param metaRows rows in hbase:meta<a name="line.1390"></a>
+<span class="sourceLineNo">1391</span> * @param replicaIndexToDeleteFrom the replica ID we would start deleting from<a name="line.1391"></a>
+<span class="sourceLineNo">1392</span> * @param numReplicasToRemove how many replicas to remove<a name="line.1392"></a>
+<span class="sourceLineNo">1393</span> * @param connection connection we're using to access meta table<a name="line.1393"></a>
+<span class="sourceLineNo">1394</span> */<a name="line.1394"></a>
+<span class="sourceLineNo">1395</span> public static void removeRegionReplicasFromMeta(Set<byte[]> metaRows,<a name="line.1395"></a>
+<span class="sourceLineNo">1396</span> int replicaIndexToDeleteFrom, int numReplicasToRemove, Connection connection)<a name="line.1396"></a>
+<span class="sourceLineNo">1397</span> throws IOException {<a name="line.1397"></a>
+<span class="sourceLineNo">1398</span> int absoluteIndex = replicaIndexToDeleteFrom + numReplicasToRemove;<a name="line.1398"></a>
+<span class="sourceLineNo">1399</span> for (byte[] row : metaRows) {<a name="line.1399"></a>
+<span class="sourceLineNo">1400</span> long now = EnvironmentEdgeManager.currentTime();<a name="line.1400"></a>
+<span class="sourceLineNo">1401</span> Delete deleteReplicaLocations = new Delete(row);<a name="line.1401"></a>
+<span class="sourceLineNo">1402</span> for (int i = replicaIndexToDeleteFrom; i < absoluteIndex; i++) {<a name="line.1402"></a>
+<span class="sourceLineNo">1403</span> deleteReplicaLocations.addColumns(getCatalogFamily(),<a name="line.1403"></a>
+<span class="sourceLineNo">1404</span> getServerColumn(i), now);<a name="line.1404"></a>
+<span class="sourceLineNo">1405</span> deleteReplicaLocations.addColumns(getCatalogFamily(),<a name="line.1405"></a>
+<span class="sourceLineNo">1406</span> getSeqNumColumn(i), now);<a name="line.1406"></a>
+<span class="sourceLineNo">1407</span> deleteReplicaLocations.addColumns(getCatalogFamily(),<a name="line.1407"></a>
+<span class="sourceLineNo">1408</span> getStartCodeColumn(i), now);<a name="line.1408"></a>
+<span class="sourceLineNo">1409</span> }<a name="line.1409"></a>
+<span class="sourceLineNo">1410</span> deleteFromMetaTable(connection, deleteReplicaLocations);<a name="line.1410"></a>
+<span class="sourceLineNo">1411</span> }<a name="line.1411"></a>
+<span class="sourceLineNo">1412</span> }<a name="line.1412"></a>
+<span class="sourceLineNo">1413</span><a name="line.1413"></a>
+<span class="sourceLineNo">1414</span> /**<a name="line.1414"></a>
+<span class="sourceLineNo">1415</span> * Execute the passed <code>mutations</code> against <code>hbase:meta</code> table.<a name="line.1415"></a>
+<span class="sourceLineNo">1416</span> * @param connection connection we're using<a name="line.1416"></a>
+<span class="sourceLineNo">1417</span> * @param mutations Puts and Deletes to execute on hbase:meta<a name="line.1417"></a>
+<span class="sourceLineNo">1418</span> * @throws IOException<a name="line.1418"></a>
+<span class="sourceLineNo">1419</span> */<a name="line.1419"></a>
+<span class="sourceLineNo">1420</span> public static void mutateMetaTable(final Connection connection,<a name="line.1420"></a>
+<span class="sourceLineNo">1421</span> final List<Mutation> mutations)<a name="line.1421"></a>
+<span class="sourceLineNo">1422</span> throws IOException {<a name="line.1422"></a>
+<span class="sourceLineNo">1423</span> Table t = getMetaHTable(connection);<a name="line.1423"></a>
+<span class="sourceLineNo">1424</span> try {<a name="line.1424"></a>
+<span class="sourceLineNo">1425</span> debugLogMutations(mutations);<a name="line.1425"></a>
+<span class="sourceLineNo">1426</span> t.batch(mutations, null);<a name="line.1426"></a>
+<span class="sourceLineNo">1427</span> } catch (InterruptedException e) {<a name="line.1427"></a>
+<span class="sourceLineNo">1428</span> InterruptedIOException ie = new InterruptedIOException(e.getMessage());<a name="line.1428"></a>
+<span class="sourceLineNo">1429</span> ie.initCause(e);<a name="line.1429"></a>
+<span class="sourceLineNo">1430</span> throw ie;<a name="line.1430"></a>
+<span class="sourceLineNo">1431</span> } finally {<a name="line.1431"></a>
+<span class="sourceLineNo">1432</span> t.close();<a name="line.1432"></a>
+<span class="sourceLineNo">1433</span> }<a name="line.1433"></a>
+<span class="sourceLineNo">1434</span> }<a name="line.1434"></a>
+<span class="sourceLineNo">1435</span><a name="line.1435"></a>
+<span class="sourceLineNo">1436</span> private static void addRegionStateToPut(Put put, RegionState.State state) throws IOException {<a name="line.1436"></a>
+<span class="sourceLineNo">1437</span> put.add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.1437"></a>
+<span class="sourceLineNo">1438</span> .setRow(put.getRow())<a name="line.1438"></a>
+<span class="sourceLineNo">1439</span> .setFamily(HConstants.CATALOG_FAMILY)<a name="line.1439"></a>
+<span class="sourceLineNo">1440</span> .setQualifier(getRegionStateColumn())<a name="line.1440"></a>
+<span class="sourceLineNo">1441</span> .setTimestamp(put.getTimestamp())<a name="line.1441"></a>
+<span class="sourceLineNo">1442</span> .setType(Cell.Type.Put)<a name="line.1442"></a>
+<span class="sourceLineNo">1443</span> .setValue(Bytes.toBytes(state.name()))<a name="line.1443"></a>
+<span class="sourceLineNo">1444</span> .build());<a name="line.1444"></a>
+<span class="sourceLineNo">1445</span> }<a name="line.1445"></a>
+<span class="sourceLineNo">1446</span><a name="line.1446"></a>
+<span class="sourceLineNo">1447</span> /**<a name="line.1447"></a>
+<span class="sourceLineNo">1448</span> * Adds daughter region infos to hbase:meta row for the specified region. Note that this does not<a name="line.1448"></a>
+<span class="sourceLineNo">1449</span> * add its daughter's as different rows, but adds information about the daughters in the same row<a name="line.1449"></a>
+<span class="sourceLineNo">1450</span> * as the parent. Use<a name="line.1450"></a>
+<span class="sourceLineNo">1451</span> * {@link #splitRegion(Connection, RegionInfo, long, RegionInfo, RegionInfo, ServerName, int)}<a name="line.1451"></a>
+<span class="sourceLineNo">1452</span> * if you want to do that.<a name="line.1452"></a>
+<span class="sourceLineNo">1453</span> * @param connection connection we're using<a name="line.1453"></a>
+<span class="sourceLineNo">1454</span> * @param regionInfo RegionInfo of parent region<a name="line.1454"></a>
+<span class="sourceLineNo">1455</span> * @param splitA first split daughter of the parent regionInfo<a name="line.1455"></a>
+<span class="sourceLineNo">1456</span> * @param splitB second split daughter of the parent regionInfo<a name="line.1456"></a>
+<span class="sourceLineNo">1457</span> * @throws IOException if problem connecting or updating meta<a name="line.1457"></a>
+<span class="sourceLineNo">1458</span> */<a name="line.1458"></a>
+<span class="sourceLineNo">1459</span> public static void addSplitsToParent(Connection connection, RegionInfo regionInfo,<a name="line.1459"></a>
+<span class="sourceLineNo">1460</span> RegionInfo splitA, RegionInfo splitB) throws IOException {<a name="line.1460"></a>
+<span class="sourceLineNo">1461</span> Table meta = getMetaHTable(connection);<a name="line.1461"></a>
+<span class="sourceLineNo">1462</span> try {<a name="line.1462"></a>
+<span class="sourceLineNo">1463</span> Put put = makePutFromRegionInfo(regionInfo, EnvironmentEdgeManager.currentTime());<a name="line.1463"></a>
+<span class="sourceLineNo">1464</span> addDaughtersToPut(put, splitA, splitB);<a name="line.1464"></a>
+<span class="sourceLineNo">1465</span> meta.put(put);<a name="line.1465"></a>
+<span class="sourceLineNo">1466</span> debugLogMutation(put);<a name="line.1466"></a>
+<span class="sourceLineNo">1467</span> LOG.debug("Added region {}", regionInfo.getRegionNameAsString());<a name="line.1467"></a>
+<span class="sourceLineNo">1468</span> } finally {<a name="line.1468"></a>
+<span class="sourceLineNo">1469</span> meta.close();<a name="line.1469"></a>
+<span class="sourceLineNo">1470</span> }<a name="line.1470"></a>
+<span class="sourceLineNo">1471</span> }<a name="line.1471"></a>
+<span class="sourceLineNo">1472</span><a name="line.1472"></a>
+<span class="sourceLineNo">1473</span> /**<a name="line.1473"></a>
+<span class="sourceLineNo">1474</span> * Adds a (single) hbase:meta row for the specified new region and its daughters. Note that this<a name="line.1474"></a>
+<span class="sourceLineNo">1475</span> * does not add its daughter's as different rows, but adds information about the daughters<a name="line.1475"></a>
+<span class="sourceLineNo">1476</span> * in the same row as the parent. Use<a name="line.1476"></a>
+<span class="sourceLineNo">1477</span> * {@link #splitRegion(Connection, RegionInfo, long, RegionInfo, RegionInfo, ServerName, int)}<a name="line.1477"></a>
+<span class="sourceLineNo">1478</span> * if you want to do that.<a name="line.1478"></a>
+<span class="sourceLineNo">1479</span> * @param connection connection we're using<a name="line.1479"></a>
+<span class="sourceLineNo">1480</span> * @param regionInfo region information<a name="line.1480"></a>
+<span class="sourceLineNo">1481</span> * @throws IOException if problem connecting or updating meta<a name="line.1481"></a>
+<span class="sourceLineNo">1482</span> */<a name="line.1482"></a>
+<span class="sourceLineNo">1483</span> @VisibleForTesting<a name="line.1483"></a>
+<span class="sourceLineNo">1484</span> public static void addRegionToMeta(Connection connection, RegionInfo regionInfo)<a name="line.1484"></a>
+<span class="sourceLineNo">1485</span> throws IOException {<a name="line.1485"></a>
+<span class="sourceLineNo">1486</span> addRegionsToMeta(connection, Collections.singletonList(regionInfo), 1);<a name="line.1486"></a>
+<span class="sourceLineNo">1487</span> }<a name="line.1487"></a>
+<span class="sourceLineNo">1488</span><a name="line.1488"></a>
+<span class="sourceLineNo">1489</span> /**<a name="line.1489"></a>
+<span class="sourceLineNo">1490</span> * Adds a hbase:meta row for each of the specified new regions. Initial state for new regions<a name="line.1490"></a>
+<span class="sourceLineNo">1491</span> * is CLOSED.<a name="line.1491"></a>
+<span class="sourceLineNo">1492</span> * @param connection connection we're using<a name="line.1492"></a>
+<span class="sourceLineNo">1493</span> * @param regionInfos region information list<a name="line.1493"></a>
+<span class="sourceLineNo">1494</span> * @throws IOException if problem connecting or updating meta<a name="line.1494"></a>
+<span class="sourceLineNo">1495</span> */<a name="line.1495"></a>
+<span class="sourceLineNo">1496</span> public static void addRegionsToMeta(Connection connection, List<RegionInfo> regionInfos,<a name="line.1496"></a>
+<span class="sourceLineNo">1497</span> int regionReplication) throws IOException {<a name="line.1497"></a>
+<span class="sourceLineNo">1498</span> addRegionsToMeta(connection, regionInfos, regionReplication,<a name="line.1498"></a>
+<span class="sourceLineNo">1499</span> EnvironmentEdgeManager.currentTime());<a name="line.1499"></a>
+<span class="sourceLineNo">1500</span> }<a name="line.1500"></a>
+<span class="sourceLineNo">1501</span><a name="line.1501"></a>
+<span class="sourceLineNo">1502</span> /**<a name="line.1502"></a>
+<span class="sourceLineNo">1503</span> * Adds a hbase:meta row for each of the specified new regions. Initial state for new regions<a name="line.1503"></a>
+<span class="sourceLineNo">1504</span> * is CLOSED.<a name="line.1504"></a>
+<span class="sourceLineNo">1505</span> * @param connection connection we're using<a name="line.1505"></a>
+<span class="sourceLineNo">1506</span> * @param regionInfos region information list<a name="line.1506"></a>
+<span class="sourceLineNo">1507</span> * @param regionReplication<a name="line.1507"></a>
+<span class="sourceLineNo">1508</span> * @param ts desired timestamp<a name="line.1508"></a>
+<span class="sourceLineNo">1509</span> * @throws IOException if problem connecting or updating meta<a name="line.1509"></a>
+<span class="sourceLineNo">1510</span> */<a name="line.1510"></a>
+<span class="sourceLineNo">1511</span> private static void addRegionsToMeta(Connection connection, List<RegionInfo> regionInfos,<a name="line.1511"></a>
+<span class="sourceLineNo">1512</span> int regionReplication, long ts) throws IOException {<a name="line.1512"></a>
+<span class="sourceLineNo">1513</span> List<Put> puts = new ArrayList<>();<a name="line.1513"></a>
+<span class="sourceLineNo">1514</span> for (RegionInfo regionInfo : regionInfos) {<a name="line.1514"></a>
+<span class="sourceLineNo">1515</span> if (RegionReplicaUtil.isDefaultReplica(regionInfo)) {<a name="line.1515"></a>
+<span class="sourceLineNo">1516</span> Put put = makePutFromRegionInfo(regionInfo, ts);<a name="line.1516"></a>
+<span class="sourceLineNo">1517</span> // New regions are added with initial state of CLOSED.<a name="line.1517"></a>
+<span class="sourceLineNo">1518</span> addRegionStateToPut(put, RegionState.State.CLOSED);<a name="line.1518"></a>
+<span class="sourceLineNo">1519</span> // Add empty locations for region replicas so that number of replicas can be cached<a name="line.1519"></a>
+<span class="sourceLineNo">1520</span> // whenever the primary region is looked up from meta<a name="line.1520"></a>
+<span class="sourceLineNo">1521</span> for (int i = 1; i < regionReplication; i++) {<a name="line.1521"></a>
+<span class="sourceLineNo">1522</span> addEmptyLocation(put, i);<a name="line.1522"></a>
+<span class="sourceLineNo">1523</span> }<a name="line.1523"></a>
+<span class="sourceLineNo">1524</span> puts.add(put);<a name="line.1524"></a>
+<span class="sourceLineNo">1525</span> }<a name="line.1525"></a>
+<span class="sourceLineNo">1526</span> }<a name="line.1526"></a>
+<span class="sourceLineNo">1527</span> putsToMetaTable(connection, puts);<a name="line.1527"></a>
+<span class="sourceLineNo">1528</span> LOG.info("Added {} regions to meta.", puts.size());<a name="line.1528"></a>
+<span class="sourceLineNo">1529</span> }<a name="line.1529"></a>
+<span class="sourceLineNo">1530</span><a name="line.1530"></a>
+<span class="sourceLineNo">1531</span> /**<a name="line.1531"></a>
+<span class="sourceLineNo">1532</span> * Merge the two regions into one in an atomic operation. Deletes the two merging regions in<a name="line.1532"></a>
+<span class="sourceLineNo">1533</span> * hbase:meta and adds the merged region with the information of two merging regions.<a name="line.1533"></a>
+<span class="sourceLineNo">1534</span> * @param connection connection we're using<a name="line.1534"></a>
+<span class="sourceLineNo">1535</span> * @param mergedRegion the merged region<a name="line.1535"></a>
+<span class="sourceLineNo">1536</span> * @param regionA merge parent region A<a name="line.1536"></a>
+<span class="sourceLineNo">1537</span> * @param regionAOpenSeqNum the next open sequence id for region A, used by serial replication. -1<a name="line.1537"></a>
+<span class="sourceLineNo">1538</span> * if not necessary.<a name="line.1538"></a>
+<span class="sourceLineNo">1539</span> * @param regionB merge parent region B<a name="line.1539"></a>
+<span class="sourceLineNo">1540</span> * @param regionBOpenSeqNum the next open sequence id for region B, used by serial replication. -1<a name="line.1540"></a>
+<span class="sourceLineNo">1541</span> * if not necessary.<a name="line.1541"></a>
+<span class="sourceLineNo">1542</span> * @param sn the location of the region<a name="line.1542"></a>
+<span class="sourceLineNo">1543</span> */<a name="line.1543"></a>
+<span class="sourceLineNo">1544</span> public static void mergeRegions(Connection connection, RegionInfo mergedRegion,<a name="line.1544"></a>
+<span class="sourceLineNo">1545</span> RegionInfo regionA, long regionAOpenSeqNum, RegionInfo regionB, long regionBOpenSeqNum,<a name="line.1545"></a>
+<span class="sourceLineNo">1546</span> ServerName sn, int regionReplication) throws IOException {<a name="line.1546"></a>
+<span class="sourceLineNo">1547</span> try (Table meta = getMetaHTable(connection)) {<a name="line.1547"></a>
+<span class="sourceLineNo">1548</span> long time = EnvironmentEdgeManager.currentTime();<a name="line.1548"></a>
+<span class="sourceLineNo">1549</span> List<Mutation> mutations = new ArrayList<>();<a name="line.1549"></a>
+<span class="sourceLineNo">1550</span><a name="line.1550"></a>
+<span class="sourceLineNo">1551</span> List<RegionInfo> replicationParents = new ArrayList<>(2);<a name="line.1551"></a>
+<span class="sourceLineNo">1552</span> // Deletes for merging regions<a name="line.1552"></a>
+<span class="sourceLineNo">1553</span> mutations.add(makeDeleteFromRegionInfo(regionA, time));<a name="line.1553"></a>
+<span class="sourceLineNo">1554</span> if (regionAOpenSeqNum > 0) {<a name="line.1554"></a>
+<span class="sourceLineNo">1555</span> mutations.add(makePutForReplicationBarrier(regionA, regionAOpenSeqNum, time));<a name="line.1555"></a>
+<span class="sourceLineNo">1556</span> replicationParents.add(regionA);<a name="line.1556"></a>
+<span class="sourceLineNo">1557</span> }<a name="line.1557"></a>
+<span class="sourceLineNo">1558</span> mutations.add(makeDeleteFromRegionInfo(regionB, time));<a name="line.1558"></a>
+<span class="sourceLineNo">1559</span> if (regionBOpenSeqNum > 0) {<a name="line.1559"></a>
+<span class="sourceLineNo">1560</span> mutations.add(makePutForReplicationBarrier(regionB, regionBOpenSeqNum, time));<a name="line.1560"></a>
+<span class="sourceLineNo">1561</span> replicationParents.add(regionB);<a name="line.1561"></a>
+<span class="sourceLineNo">1562</span> }<a name="line.1562"></a>
+<span class="sourceLineNo">1563</span><a name="line.1563"></a>
+<span class="sourceLineNo">1564</span> // Put for parent<a name="line.1564"></a>
+<span class="sourceLineNo">1565</span> Put putOfMerged = makePutFromRegionInfo(mergedRegion, time);<a name="line.1565"></a>
+<span class="sourceLineNo">1566</span> putOfMerged.add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.1566"></a>
<span class="sourceLineNo">1567</span> .setRow(putOfMerged.getRow())<a name="line.1567"></a>
<span class="sourceLineNo">1568</span> .setFamily(HConstants.CATALOG_FAMILY)<a name="line.1568"></a>
-<span class="sourceLineNo">1569</span> .setQualifier(HConstants.MERGEB_QUALIFIER)<a name="line.1569"></a>
+<span class="sourceLineNo">1569</span> .setQualifier(HConstants.MERGEA_QUALIFIER)<a name="line.1569"></a>
<span class="sourceLineNo">1570</span> .setTimestamp(putOfMerged.getTimestamp())<a name="line.1570"></a>
<span class="sourceLineNo">1571</span> .setType(Type.Put)<a name="line.1571"></a>
-<span class="sourceLineNo">1572</span> .setValue(RegionInfo.toByteArray(regionB))<a name="line.1572"></a>
-<span class="sourceLineNo">1573</span> .build());<a name="line.1573"></a>
-<span class="sourceLineNo">1574</span> // Set initial state to CLOSED<a name="line.1574"></a>
-<span class="sourceLineNo">1575</span> // NOTE: If initial state is not set to CLOSED then merged region gets added with the<a name="line.1575"></a>
-<span class="sourceLineNo">1576</span> // default OFFLINE state. If Master gets restarted after this step, start up sequence of<a name="line.1576"></a>
-<span class="sourceLineNo">1577</span> // master tries to assign this offline region. This is followed by re-assignments of the<a name="line.1577"></a>
-<span class="sourceLineNo">1578</span> // merged region from resumed {@link MergeTableRegionsProcedure}<a name="line.1578"></a>
-<span class="sourceLineNo">1579</span> addRegionStateToPut(putOfMerged, RegionState.State.CLOSED);<a name="line.1579"></a>
-<span class="sourceLineNo">1580</span> mutations.add(putOfMerged);<a name="line.1580"></a>
-<span class="sourceLineNo">1581</span> // The merged is a new region, openSeqNum = 1 is fine. ServerName may be null<a name="line.1581"></a>
-<span class="sourceLineNo">1582</span> // if crash after merge happened but before we got to here.. means in-memory<a name="line.1582"></a>
-<span class="sourceLineNo">1583</span> // locations of offlined merged, now-closed, regions is lost. Should be ok. We<a name="line.1583"></a>
-<span class="sourceLineNo">1584</span> // assign the merged region later.<a name="line.1584"></a>
-<span class="sourceLineNo">1585</span> if (sn != null) {<a name="line.1585"></a>
-<span class="sourceLineNo">1586</span> addLocation(putOfMerged, sn, 1, mergedRegion.getReplicaId());<a name="line.1586"></a>
-<span class="sourceLineNo">1587</span> }<a name="line.1587"></a>
-<span class="sourceLineNo">1588</span><a name="line.1588"></a>
-<span class="sourceLineNo">1589</span> // Add empty locations for region replicas of the merged region so that number of replicas can<a name="line.1589"></a>
-<span class="sourceLineNo">1590</span> // be cached whenever the primary region is looked up from meta<a name="line.1590"></a>
-<span class="sourceLineNo">1591</span> for (int i = 1; i < regionReplication; i++) {<a name="line.1591"></a>
-<span class="sourceLineNo">1592</span> addEmptyLocation(putOfMerged, i);<a name="line.1592"></a>
-<span class="sourceLineNo">1593</span> }<a name="line.1593"></a>
-<span class="sourceLineNo">1594</span> // add parent reference for serial replication<a name="line.1594"></a>
-<span class="sourceLineNo">1595</span> if (!replicationParents.isEmpty()) {<a name="line.1595"></a>
-<span class="sourceLineNo">1596</span> addReplicationParent(putOfMerged, replicationParents);<a name="line.1596"></a>
-<span class="sourceLineNo">1597</span> }<a name="line.1597"></a>
-<span class="sourceLineNo">1598</span> byte[] tableRow = Bytes.toBytes(mergedRegion.getRegionNameAsString() + HConstants.DELIMITER);<a name="line.1598"></a>
-<span class="sourceLineNo">1599</span> multiMutate(connection, meta, tableRow, mutations);<a name="line.1599"></a>
-<span class="sourceLineNo">1600</span> }<a name="line.1600"></a>
-<span class="sourceLineNo">1601</span> }<a name="line.1601"></a>
-<span class="sourceLineNo">1602</span><a name="line.1602"></a>
-<span class="sourceLineNo">1603</span> /**<a name="line.1603"></a>
-<span class="sourceLineNo">1604</span> * Splits the region into two in an atomic operation. Offlines the parent region with the<a name="line.1604"></a>
-<span class="sourceLineNo">1605</span> * information that it is split into two, and also adds the daughter regions. Does not add the<a name="line.1605"></a>
-<span class="sourceLineNo">1606</span> * location information to the daughter regions since they are not open yet.<a name="line.1606"></a>
-<span class="sourceLineNo">1607</span> * @param connection connection we're using<a name="line.1607"></a>
-<span class="sourceLineNo">1608</span> * @param parent the parent region which is split<a name="line.1608"></a>
-<span class="sourceLineNo">1609</span> * @param parentOpenSeqNum the next open sequence id for parent region, used by serial<a name="line.1609"></a>
-<span class="sourceLineNo">1610</span> * replication. -1 if not necessary.<a name="line.1610"></a>
-<span class="sourceLineNo">1611</span> * @param splitA Split daughter region A<a name="line.1611"></a>
-<span class="sourceLineNo">1612</span> * @param splitB Split daughter region B<a name="line.1612"></a>
-<span class="sourceLineNo">1613</span> * @param sn the location of the region<a name="line.1613"></a>
-<span class="sourceLineNo">1614</span> */<a name="line.1614"></a>
-<span class="sourceLineNo">1615</span> public static void splitRegion(Connection connection, RegionInfo parent, long parentOpenSeqNum,<a name="line.1615"></a>
-<span class="sourceLineNo">1616</span> RegionInfo splitA, RegionInfo splitB, ServerName sn, int regionReplication)<a name="line.1616"></a>
-<span class="sourceLineNo">1617</span> throws IOException {<a name="line.1617"></a>
-<span class="sourceLineNo">1618</span> try (Table meta = getMetaHTable(connection)) {<a name="line.1618"></a>
-<span class="sourceLineNo">1619</span> long time = EnvironmentEdgeManager.currentTime();<a name="line.1619"></a>
-<span class="sourceLineNo">1620</span> // Put for parent<a name="line.1620"></a>
-<span class="sourceLineNo">1621</span> Put putParent = makePutFromRegionInfo(RegionInfoBuilder.newBuilder(parent)<a name="line.1621"></a>
-<span class="sourceLineNo">1622</span> .setOffline(true)<a name="line.1622"></a>
-<span class="sourceLineNo">1623</span> .setSplit(true).build(), time);<a name="line.1623"></a>
-<span class="sourceLineNo">1624</span> addDaughtersToPut(putParent, splitA, splitB);<a name="line.1624"></a>
-<span class="sourceLineNo">1625</span><a name="line.1625"></a>
-<span class="sourceLineNo">1626</span> // Puts for daughters<a name="line.1626"></a>
-<span class="sourceLineNo">1627</span> Put putA = makePutFromRegionInfo(splitA, time);<a name="line.1627"></a>
-<span class="sourceLineNo">1628</span> Put putB = makePutFromRegionInfo(splitB, time);<a name="line.1628"></a>
-<span class="sourceLineNo">1629</span> if (parentOpenSeqNum > 0) {<a name="line.1629"></a>
-<span class="sourceLineNo">1630</span> addReplicationBarrier(putParent, parentOpenSeqNum);<a name="line.1630"></a>
-<span class="sourceLineNo">1631</span> addReplicationParent(putA, Collections.singletonList(parent));<a name="line.1631"></a>
-<span class="sourceLineNo">1632</span> addReplicationParent(putB, Collections.singletonList(parent));<a name="line.1632"></a>
-<span class="sourceLineNo">1633</span> }<a name="line.1633"></a>
-<span class="sourceLineNo">1634</span> // Set initial state to CLOSED<a name="line.1634"></a>
-<span class="sourceLineNo">1635</span> // NOTE: If initial state is not set to CLOSED then daughter regions get added with the<a name="line.1635"></a>
-<span class="sourceLineNo">1636</span> // default OFFLINE state. If Master gets restarted after this step, start up sequence of<a name="line.1636"></a>
-<span class="sourceLineNo">1637</span> // master tries to assign these offline regions. This is followed by re-assignments of the<a name="line.1637"></a>
-<span class="sourceLineNo">1638</span> // daughter regions from resumed {@link SplitTableRegionProcedure}<a name="line.1638"></a>
-<span class="sourceLineNo">1639</span> addRegionStateToPut(putA, RegionState.State.CLOSED);<a name="line.1639"></a>
-<span class="sourceLineNo">1640</span> addRegionStateToPut(putB, RegionState.State.CLOSED);<a name="line.1640"></a>
-<span class="sourceLineNo">1641</span><a name="line.1641"></a>
-<span class="sourceLineNo">1642</span> addSequenceNum(putA, 1, splitA.getReplicaId()); // new regions, openSeqNum = 1 is fine.<a name="line.1642"></a>
-<span class="sourceLineNo">1643</span> addSequenceNum(putB, 1, splitB.getReplicaId());<a name="line.1643"></a>
-<span class="sourceLineNo">1644</span><a name="line.1644"></a>
-<span class="sourceLineNo">1645</span> // Add empty locations for region replicas of daughters so that number of replicas can be<a name="line.1645"></a>
-<span class="sourceLineNo">1646</span> // cached whenever the primary region is looked up from meta<a name="line.1646"></a>
-<span class="sourceLineNo">1647</span> for (int i = 1; i < regionReplication; i++) {<a name="line.1647"></a>
-<span class="sourceLineNo">1648</span> addEmptyLocation(putA, i);<a name="line.1648"></a>
-<span class="sourceLineNo">1649</span> addEmptyLocation(putB, i);<a name="line.1649"></a>
-<span class="sourceLineNo">1650</span> }<a name="line.1650"></a>
-<span class="sourceLineNo">1651</span><a name="line.1651"></a>
-<span class="sourceLineNo">1652</span> byte[] tableRow = Bytes.toBytes(parent.getRegionNameAsString() + HConstants.DELIMITER);<a name="line.1652"></a>
-<span class="sourceLineNo">1653</span> multiMutate(connection, meta, tableRow, putParent, putA, putB);<a name="line.1653"></a>
-<span class="sourceLineNo">1654</span> }<a name="line.1654"></a>
-<span class="sourceLineNo">1655</span> }<a name="line.1655"></a>
-<span class="sourceLineNo">1656</span><a name="line.1656"></a>
-<span class="sourceLineNo">1657</span> /**<a name="line.1657"></a>
-<span class="sourceLineNo">1658</span> * Update state of the table in meta.<a name="line.1658"></a>
-<span class="sourceLineNo">1659</span> * @param connection what we use for update<a name="line.1659"></a>
-<span class="sourceLineNo">1660</span> * @param state new state<a name="line.1660"></a>
-<span class="sourceLineNo">1661</span> */<a name="line.1661"></a>
-<span class="sourceLineNo">1662</span> private static void updateTableState(Connection connection, TableState state) throws IOException {<a name="line.1662"></a>
-<span class="sourceLineNo">1663</span> Put put = makePutFromTableState(state, EnvironmentEdgeManager.currentTime());<a name="line.1663"></a>
-<span class="sourceLineNo">1664</span> putToMetaTable(connection, put);<a name="line.1664"></a>
-<span class="sourceLineNo">1665</span> LOG.info("Updated {} in hbase:meta", state);<a name="line.1665"></a>
-<span class="sourceLineNo">1666</span> }<a name="line.1666"></a>
-<span class="sourceLineNo">1667</span><a name="line.1667"></a>
-<span class="sourceLineNo">1668</span> /**<a name="line.1668"></a>
-<span class="sourceLineNo">1669</span> * Construct PUT for given state<a name="line.1669"></a>
-<span class="sourceLineNo">1670</span> * @param state new state<a name="line.1670"></a>
-<span class="sourceLineNo">1671</span> */<a name="line.1671"></a>
-<span class="sourceLineNo">1672</span> public static Put makePutFromTableState(TableState state, long ts) {<a name="line.1672"></a>
-<span class="sourceLineNo">1673</span> Put put = new Put(state.getTableName().getName(), ts);<a name="line.1673"></a>
-<span class="sourceLineNo">1674</span> put.addColumn(getTableFamily(), getTableStateColumn(), state.convert().toByteArray());<a name="line.1674"></a>
-<span class="sourceLineNo">1675</span> return put;<a name="line.1675"></a>
-<span class="sourceLineNo">1676</span> }<a name="line.1676"></a>
-<span class="sourceLineNo">1677</span><a name="line.1677"></a>
-<span class="sourceLineNo">1678</span> /**<a name="line.1678"></a>
-<span class="sourceLineNo">1679</span> * Remove state for table from meta<a name="line.1679"></a>
-<span class="sourceLineNo">1680</span> * @param connection to use for deletion<a name="line.1680"></a>
-<span class="sourceLineNo">1681</span> * @param table to delete state for<a name="line.1681"></a>
-<span class="sourceLineNo">1682</span> */<a name="line.1682"></a>
-<span class="sourceLineNo">1683</span> public static void deleteTableState(Connection connection, TableName table)<a name="line.1683"></a>
-<span class="sourceLineNo">1684</span> throws IOException {<a name="line.1684"></a>
-<span class="sourceLineNo">1685</span> long time = EnvironmentEdgeManager.currentTime();<a name="line.1685"></a>
-<span class="sourceLineNo">1686</span> Delete delete = new Delete(table.getName());<a name="line.1686"></a>
-<span class="sourceLineNo">1687</span> delete.addColumns(getTableFamily(), getTableStateColumn(), time);<a name="line.1687"></a>
-<span class="sourceLineNo">1688</span> deleteFromMetaTable(connection, delete);<a name="line.1688"></a>
-<span class="sourceLineNo">1689</span> LOG.info("Deleted table " + table + " state from META");<a name="line.1689"></a>
-<span class="sourceLineNo">1690</span> }<a name="line.1690"></a>
-<span class="sourceLineNo">1691</span><a name="line.1691"></a>
-<span class="sourceLineNo">1692</span> private static void multiMutate(Connection connection, Table table, byte[] row,<a name="line.1692"></a>
-<span class="sourceLineNo">1693</span> Mutation... mutations) throws IOException {<a name="line.1693"></a>
-<span class="sourceLineNo">1694</span> multiMutate(connection, table, row, Arrays.asList(mutations));<a name="line.1694"></a>
-<span class="sourceLineNo">1695</span> }<a name="line.1695"></a>
-<span class="sourceLineNo">1696</span><a name="line.1696"></a>
-<span class="sourceLineNo">1697</span> /**<a name="line.1697"></a>
-<span class="sourceLineNo">1698</span> * Performs an atomic multi-mutate operation against the given table.<a name="line.1698"></a>
-<span class="sourceLineNo">1699</span> */<a name="line.1699"></a>
-<span class="sourceLineNo">1700</span> private static void multiMutate(Connection connection, final Table table, byte[] row,<a name="line.1700"></a>
-<span class="sourceLineNo">1701</span> final List<Mutation> mutations) throws IOException {<a name="line.1701"></a>
-<span class="sourceLineNo">1702</span> debugLogMutations(mutations);<a name="line.1702"></a>
-<span class="sourceLineNo">1703</span> // TODO: Need rollback!!!!<a name="line.1703"></a>
-<span class="sourceLineNo">1704</span> // TODO: Need Retry!!!<a name="line.1704"></a>
-<span class="sourceLineNo">1705</span> // TODO: What for a timeout? Default write timeout? GET FROM HTABLE?<a name="line.1705"></a>
-<span class="sourceLineNo">1706</span> // TODO: Review when we come through with ProcedureV2.<a name="line.1706"></a>
-<span class="sourceLineNo">1707</span> RegionServerCallable<MutateRowsResponse,<a name="line.1707"></a>
-<span class="sourceLineNo">1708</span> MultiRowMutationProtos.MultiRowMutationService.BlockingInterface> callable =<a name="line.1708"></a>
-<span class="sourceLineNo">1709</span> new RegionServerCallable<MutateRowsResponse,<a name="line.1709"></a>
-<span class="sourceLineNo">1710</span> MultiRowMutationProtos.MultiRowMutationService.BlockingInterface>(<a name="line.1710"></a>
-<span class="sourceLineNo">1711</span> connection, table.getName(), row, null/*RpcController not used in this CPEP!*/) {<a name="line.1711"></a>
-<span class="sourceLineNo">1712</span> @Override<a name="line.1712"></a>
-<span class="sourceLineNo">1713</span> protected MutateRowsResponse rpcCall() throws Exception {<a name="line.1713"></a>
-<span class="sourceLineNo">1714</span> final MutateRowsRequest.Builder builder = MutateRowsRequest.newBuilder();<a name="line.1714"></a>
-<span class="sourceLineNo">1715</span> for (Mutation mutation : mutations) {<a name="line.1715"></a>
-<span class="sourceLineNo">1716</span> if (mutation instanceof Put) {<a name="line.1716"></a>
-<span class="sourceLineNo">1717</span> builder.addMutationRequest(ProtobufUtil.toMutation(<a name="line.1717"></a>
-<span class="sourceLineNo">1718</span> ClientProtos.MutationProto.MutationType.PUT, mutation));<a name="line.1718"></a>
-<span class="sourceLineNo">1719</span> } else if (mutation instanceof Delete) {<a name="line.1719"></a>
-<span class="sourceLineNo">1720</span> builder.addMutationRequest(ProtobufUtil.toMutation(<a name="line.1720"></a>
-<span class="sourceLineNo">1721</span> ClientProtos.MutationProto.MutationType.DELETE, mutation));<a name="line.1721"></a>
-<span class="sourceLineNo">1722</span> } else {<a name="line.1722"></a>
-<span class="sourceLineNo">1723</span> throw new DoNotRetryIOException("multi in MetaEditor doesn't support "<a name="line.1723"></a>
-<span class="sourceLineNo">1724</span> + mutation.getClass().getName());<a name="line.1724"></a>
-<span class="sourceLineNo">1725</span> }<a name="line.1725"></a>
-<span class="sourceLineNo">1726</span> }<a name="line.1726"></a>
-<span class="sourceLineNo">1727</span> // The call to #prepare that ran before this invocation will have populated HRegionLocation.<a name="line.1727"></a>
-<span class="sourceLineNo">1728</span> HRegionLocation hrl = getLocation();<a name="line.1728"></a>
-<span class="sourceLineNo">1729</span> RegionSpecifier region = ProtobufUtil.buildRegionSpecifier(<a name="line.1729"></a>
-<span class="sourceLineNo">1730</span> RegionSpecifierType.REGION_NAME, hrl.getRegion().getRegionName());<a name="line.1730"></a>
-<span class="sourceLineNo">1731</span> builder.setRegion(region);<a name="line.1731"></a>
-<span class="sourceLineNo">1732</span> // The rpcController here is awkward. The Coprocessor Endpoint wants an instance of a<a name="line.1732"></a>
-<span class="sourceLineNo">1733</span> // com.google.protobuf but we are going over an rpc that is all shaded protobuf so it<a name="line.1733"></a>
-<span class="sourceLineNo">1734</span> // wants a org.apache.h.h.shaded.com.google.protobuf.RpcController. Set up a factory<a name="line.1734"></a>
-<span class="sourceLineNo">1735</span> // that makes com.google.protobuf.RpcController and then copy into it configs.<a name="line.1735"></a>
-<span class="sourceLineNo">1736</span> return getStub().mutateRows(null, builder.build());<a name="line.1736"></a>
-<span class="sourceLineNo">1737</span> }<a name="line.1737"></a>
-<span class="sourceLineNo">1738</span><a name="line.1738"></a>
-<span class="sourceLineNo">1739</span> @Override<a name="line.1739"></a>
-<span class="sourceLineNo">1740</span> // Called on the end of the super.prepare call. Set the stub.<a name="line.1740"></a>
-<span class="sourceLineNo">1741</span> protected void setStubByServiceName(ServerName serviceName/*Ignored*/) throws IOException {<a name="line.1741"></a>
-<span class="sourceLineNo">1742</span> CoprocessorRpcChannel channel = table.coprocessorService(getRow());<a name="line.1742"></a>
-<span class="sourceLineNo">1743</span> setStub(MultiRowMutationProtos.MultiRowMutationService.newBlockingStub(channel));<a name="line.1743"></a>
-<span class="sourceLineNo">1744</span> }<a name="line.1744"></a>
-<span class="sourceLineNo">1745</span> };<a name="line.1745"></a>
-<span class="sourceLineNo">1746</span> int writeTimeout = connection.getConfiguration().getInt(HConstants.HBASE_RPC_WRITE_TIMEOUT_KEY,<a name="line.1746"></a>
-<span class="sourceLineNo">1747</span> connection.getConfiguration().getInt(HConstants.HBASE_RPC_TIMEOUT_KEY,<a name="line.1747"></a>
-<span class="sourceLineNo">1748</span> HConstants.DEFAULT_HBASE_RPC_TIMEOUT));<a name="line.1748"></a>
-<span class="sourceLineNo">1749</span> // The region location should be cached in connection. Call prepare so this callable picks<a name="line.1749"></a>
-<span class="sourceLineNo">1750</span> // up the region location (see super.prepare method).<a name="line.1750"></a>
-<span class="sourceLineNo">1751</span> callable.prepare(false);<a name="line.1751"></a>
-<span class="sourceLineNo">1752</span> callable.call(writeTimeout);<a name="line.1752"></a>
-<span class="sourceLineNo">1753</span> }<a name="line.1753"></a>
-<span class="sourceLineNo">1754</span><a name="line.1754"></a>
-<span class="sourceLineNo">1755</span> /**<a name="line.1755"></a>
-<span class="sourceLineNo">1756</span> * Updates the location of the specified region in hbase:meta to be the specified server hostname<a name="line.1756"></a>
-<span class="sourceLineNo">1757</span> * and startcode.<a name="line.1757"></a>
-<span class="sourceLineNo">1758</span> * <p><a name="line.1758"></a>
-<span class="sourceLineNo">1759</span> * Uses passed catalog tracker to get a connection to the server hosting hbase:meta and makes<a name="line.1759"></a>
-<span class="sourceLineNo">1760</span> * edits to that region.<a name="line.1760"></a>
-<span class="sourceLineNo">1761</span> * @param connection connection we're using<a name="line.1761"></a>
-<span class="sourceLineNo">1762</span> * @param regionInfo region to update location of<a name="line.1762"></a>
-<span class="sourceLineNo">1763</span> * @param openSeqNum the latest sequence number obtained when the region was open<a name="line.1763"></a>
-<span class="sourceLineNo">1764</span> * @param sn Server name<a name="line.1764"></a>
-<span class="sourceLineNo">1765</span> * @param masterSystemTime wall clock time from master if passed in the open region RPC<a name="line.1765"></a>
-<span class="sourceLineNo">1766</span> */<a name="line.1766"></a>
-<span class="sourceLineNo">1767</span> @VisibleForTesting<a name="line.1767"></a>
-<span class="sourceLineNo">1768</span> public static void updateRegionLocation(Connection connection, RegionInfo regionInfo,<a name="line.1768"></a>
-<span class="sourceLineNo">1769</span> ServerName sn, long openSeqNum, long masterSystemTime) throws IOException {<a name="line.1769"></a>
-<span class="sourceLineNo">1770</span> updateLocation(connection, regionInfo, sn, openSeqNum, masterSystemTime);<a name="line.1770"></a>
-<span class="sourceLineNo">1771</span> }<a name="line.1771"></a>
-<span class="sourceLineNo">1772</span><a name="line.1772"></a>
-<span class="sourceLineNo">1773</span> /**<a name="line.1773"></a>
-<span class="sourceLineNo">1774</span> * Updates the location of the specified region to be the specified server.<a name="line.1774"></a>
-<span class="sourceLineNo">1775</span> * <p><a name="line.1775"></a>
-<span class="sourceLineNo">1776</span> * Connects to the specified server which should be hosting the specified catalog region name to<a name="line.1776"></a>
-<span class="sourceLineNo">1777</span> * perform the edit.<a name="line.1777"></a>
-<span class="sourceLineNo">1778</span> * @param connection connection we're using<a name="line.1778"></a>
-<span class="sourceLineNo">1779</span> * @param regionInfo region to update location of<a name="line.1779"></a>
-<span class="sourceLineNo">1780</span> * @param sn Server name<a name="line.1780"></a>
-<span class="sourceLineNo">1781</span> * @param openSeqNum the latest sequence number obtained when the region was open<a name="line.1781"></a>
-<span class="sourceLineNo">1782</span> * @param masterSystemTime wall clock time from master if passed in the open region RPC<a name="line.1782"></a>
-<span class="sourceLineNo">1783</span> * @throws IOException In particular could throw {@link java.net.ConnectException} if the server<a name="line.1783"></a>
-<span class="sourceLineNo">1784</span> * is down on other end.<a name="line.1784"></a>
-<span class="sourceLineNo">1785</span> */<a name="line.1785"></a>
-<span class="sourceLineNo">1786</span> private static void updateLocation(Connection connection, RegionInfo regionInfo, ServerName sn,<a name="line.1786"></a>
-<span class="sourceLineNo">1787</span> long openSeqNum, long masterSystemTime) throws IOException {<a name="line.1787"></a>
-<span class="sourceLineNo">1788</span> // region replicas are kept in the primary region's row<a name="line.1788"></a>
-<span class="sourceLineNo">1789</span> Put put = new Put(getMetaKeyForRegion(regionInfo), masterSystemTime);<a name="line.1789"></a>
-<span class="sourceLineNo">1790</span> addRegionInfo(put, regionInfo);<a name="line.1790"></a>
-<span class="sourceLineNo">1791</span> addLocation(put, sn, openSeqNum, regionInfo.getReplicaId());<a name="line.1791"></a>
-<span class="sourceLineNo">1792</span> putToMetaTable(connection, put);<a name="line.1792"></a>
-<span class="sourceLineNo">1793</span> LOG.info("Updated row {} with server=", regionInfo.getRegionNameAsString(), sn);<a name="line.1793"></a>
-<span class="sourceLineNo">1794</span> }<a name="line.1794"></a>
-<span class="sourceLineNo">1795</span><a name="line.1795"></a>
-<span class="sourceLineNo">1796</span> /**<a name="line.1796"></a>
-<span class="sourceLineNo">1797</span> * Deletes the specified region from META.<a name="line.1797"></a>
-<span class="sourceLineNo">1798</span> * @param connection connection we're using<a name="line.1798"></a>
-<span class="sourceLineNo">1799</span> * @param regionInfo region to be deleted from META<a name="line.1799"></a>
-<span class="sourceLineNo">1800</span> * @throws IOException<a name="line.1800"></a>
-<span class="sourceLineNo">1801</span> */<a name="line.1801"></a>
-<span class="sourceLineNo">1802</span> public static void deleteRegion(Connection connection, RegionInfo regionInfo) throws IOException {<a name="line.1802"></a>
-<span class="sourceLineNo">1803</span> long time = EnvironmentEdgeManager.currentTime();<a name="line.1803"></a>
-<span class="sourceLineNo">1804</span> Delete delete = new Delete(regionInfo.getRegionName());<a name="line.1804"></a>
-<span class="sourceLineNo">1805</span> delete.addFamily(getCatalogFamily(), time);<a name="line.1805"></a>
-<span class="sourceLineNo">1806</span> deleteFromMetaTable(connection, delete);<a name="line.1806"></a>
-<span class="sourceLineNo">1807</span> LOG.info("Deleted " + regionInfo.getRegionNameAsString());<a name="line.1807"></a>
-<span class="sourceLineNo">1808</span> }<a name="line.1808"></a>
-<span class="sourceLineNo">1809</span><a name="line.1809"></a>
-<span class="sourceLineNo">1810</span> /**<a name="line.1810"></a>
-<span class="sourceLineNo">1811</span> * Deletes the specified regions from META.<a name="line.1811"></a>
-<span class="sourceLineNo">1812</span> * @param connection connection we're using<a name="line.1812"></a>
-<span class="sourceLineNo">1813</span> * @param regionsInfo list of regions to be deleted from META<a name="line.1813"></a>
-<span class="sourceLineNo">1814</span> */<a name="line.1814"></a>
-<span class="sourceLineNo">1815</span> public static void deleteRegions(Connection connection, List<RegionInfo> regionsInfo)<a name="line.1815"></a>
-<span class="sourceLineNo">1816</span> throws IOException {<a name="line.1816"></a>
-<span class="sourceLineNo">1817</span> deleteRegions(connection, regionsInfo, EnvironmentEdgeManager.currentTime());<a name="line.1817"></a>
-<span class="sourceLineNo">1818</span> }<a name="line.1818"></a>
-<span class="sourceLineNo">1819</span> /**<a name="line.1819"></a>
-<span class="sourceLineNo">1820</span> * Deletes the specified regions from META.<a name="line.1820"></a>
-<span class="sourceLineNo">1821</span> * @param connection connection we're using<a name="line.1821"></a>
-<span class="sourceLineNo">1822</span> * @param regionsInfo list of regions to be deleted from META<a name="line.1822"></a>
-<span class="sourceLineNo">1823</span> */<a name="line.1823"></a>
-<span class="sourceLineNo">1824</span> public static void deleteRegions(Connection connection, List<RegionInfo> regionsInfo, long ts)<a name="line.1824"></a>
-<span class="sourceLineNo">1825</span> throws IOException {<a name="line.1825"></a>
-<span class="sourceLineNo">1826</span> List<Delete> deletes = new ArrayList<>(regionsInfo.size());<a name="line.1826"></a>
-<span class="sourceLineNo">1827</span> for (RegionInfo hri : regionsInfo) {<a name="line.1827"></a>
-<span class="sourceLineNo">1828</span> Delete e = new Delete(hri.getRegionName());<a name="line.1828"></a>
-<span class="sourceLineNo">1829</span> e.addFamily(getCatalogFamily(), ts);<a name="line.1829"></a>
-<span class="sourceLineNo">1830</span> deletes.add(e);<a name="line.1830"></a>
-<span class="sourceLineNo">1831</span> }<a name="line.1831"></a>
-<span class="sourceLineNo">1832</span> deleteFromMetaTable(connection, deletes);<a name="line.1832"></a>
-<span class="sourceLineNo">1833</span> LOG.info("Deleted {} regions from META", regionsInfo.size());<a name="line.1833"></a>
-<span class="sourceLineNo">1834</span> LOG.debug("Deleted regions: {}", regionsInfo);<a name="line.1834"></a>
-<span class="sourceLineNo">1835</span> }<a name="line.1835"></a>
-<span class="sourceLineNo">1836</span><a name="line.1836"></a>
-<span class="sourceLineNo">1837</span> /**<a name="line.1837"></a>
-<span class="sourceLineNo">1838</span> * Overwrites the specified regions from hbase:meta. Deletes old rows for the given regions and<a name="line.1838"></a>
-<span class="sourceLineNo">1839</span> * adds new ones. Regions added back have state CLOSED.<a name="line.1839"></a>
-<span class="sourceLineNo">1840</span> * @param connection connection we're using<a name="line.1840"></a>
-<span class="sourceLineNo">1841</span> * @param regionInfos list of regions to be added to META<a name="line.1841"></a>
-<span class="sourceLineNo">1842</span> */<a name="line.1842"></a>
-<span class="sourceLineNo">1843</span> public static void overwriteRegions(Connection connection,<a name="line.1843"></a>
-<span class="sourceLineNo">1844</span> List<RegionInfo> regionInfos, int regionReplication) throws IOException {<a name="line.1844"></a>
-<span class="sourceLineNo">1845</span> // use master time for delete marker and the Put<a name="line.1845"></a>
-<span class="sourceLineNo">1846</span> long now = EnvironmentEdgeManager.currentTime();<a name="line.1846"></a>
-<span class="sourceLineNo">1847</span> deleteRegions(connection, regionInfos, now);<a name="line.1847"></a>
-<span class="sourceLineNo">1848</span> // Why sleep? This is the easiest way to ensure that the previous deletes does not<a name="line.1848"></a>
-<span class="sourceLineNo">1849</span> // eclipse the following puts, that might happen in the same ts from the server.<a name="line.1849"></a>
-<span class="sourceLineNo">1850</span> // See HBASE-9906, and HBASE-9879. Once either HBASE-9879, HBASE-8770 is fixed,<a name="line.1850"></a>
-<span class="sourceLineNo">1851</span> // or HBASE-9905 is fixed and meta uses seqIds, we do not need the sleep.<a name="line.1851"></a>
-<span class="sourceLineNo">1852</span> //<a name="line.1852"></a>
-<span class="sourceLineNo">1853</span> // HBASE-13875 uses master timestamp for the mutations. The 20ms sleep is not needed<a name="line.1853"></a>
-<span class="sourceLineNo">1854</span> addRegionsToMeta(connection, regionInfos, regionReplication, now + 1);<a name="line.1854"></a>
-<span class="sourceLineNo">1855</span> LOG.info("Overwritten " + regionInfos.size() + " regions to Meta");<a name="line.1855"></a>
-<span class="sourceLineNo">1856</span> LOG.debug("Overwritten regions: {} ", regionInfos);<a name="line.1856"></a>
-<span class="sourceLineNo">1857</span> }<a name="line.1857"></a>
-<span class="sourceLineNo">1858</span><a name="line.1858"></a>
-<span class="sourceLineNo">1859</span> /**<a name="line.1859"></a>
-<span class="sourceLineNo">1860</span> * Deletes merge qualifiers for the specified merged region.<a name="line.1860"></a>
-<span class="sourceLineNo">1861</span> * @param connection connection we're using<a name="line.1861"></a>
-<span class="sourceLineNo">1862</span> * @param mergedRegion the merged region<a name="line.1862"></a>
-<span class="sourceLineNo">1863</span> */<a name="line.1863"></a>
-<span class="sourceLineNo">1864</span> public static void deleteMergeQualifiers(Connection connection, final RegionInfo mergedRegion)<a name="line.1864"></a>
-<span class="sourceLineNo">1865</span> throws IOException {<a name="line.1865"></a>
-<span class="sourceLineNo">1866</span> long time = EnvironmentEdgeManager.currentTime();<a name="line.1866"></a>
-<span class="sourceLineNo">1867</span> Delete delete = new Delete(mergedRegion.getRegionName());<a name="line.1867"></a>
-<span class="sourceLineNo">1868</span> delete.addColumns(getCatalogFamily(), HConstants.MERGEA_QUALIFIER, time);<a name="line.1868"></a>
-<span class="sourceLineNo">1869</span> delete.addColumns(getCatalogFamily(), HConstants.MERGEB_QUALIFIER, time);<a name="line.1869"></a>
-<span class="sourceLineNo">1870</span> deleteFromMetaTable(connection, delete);<a name="line.1870"></a>
-<span class="sourceLineNo">1871</span> LOG.info("Deleted references in merged region "<a name="line.1871"></a>
-<span class="sourceLineNo">1872</span> + mergedRegion.getRegionNameAsString() + ", qualifier="<a name="line.1872"></a>
-<span class="sourceLineNo">1873</span> + Bytes.toStringBinary(HConstants.MERGEA_QUALIFIER) + " and qualifier="<a name="line.1873"></a>
-<span class="sourceLineNo">1874</span> + Bytes.toStringBinary(HConstants.MERGEB_QUALIFIER));<a name="line.1874"></a>
-<span class="sourceLineNo">1875</span> }<a name="line.1875"></a>
-<span class="sourceLineNo">1876</span><a name="line.1876"></a>
-<span class="sourceLineNo">1877</span> public static Put addRegionInfo(final Put p, final RegionInfo hri)<a name="line.1877"></a>
-<span class="sourceLineNo">1878</span> throws IOException {<a name="line.1878"></a>
-<span class="sourceLineNo">1879</span> p.add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.1879"></a>
-<span class="sourceLineNo">1880</span> .setRow(p.getRow())<a name="line.1880"></a>
-<span class="sourceLineNo">1881</span> .setFamily(getCatalogFamily())<a name="line.1881"></a>
-<span class="sourceLineNo">1882</span> .setQualifier(HConstants.REGIONINFO_QUALIFIER)<a name="line.1882"></a>
-<span class="sourceLineNo">1883</span> .setTimestamp(p.getTimestamp())<a name="line.1883"></a>
-<span class="sourceLineNo">1884</span> .setType(Type.Put)<a name="line.1884"></a>
-<span class="sourceLineNo">1885</span> .setValue(RegionInfo.toByteArray(hri))<a name="line.1885"></a>
-<span class="sourceLineNo">1886</span> .build());<a name="line.1886"></a>
-<span class="sourceLineNo">1887</span> return p;<a name="line.1887"></a>
-<span class="sourceLineNo">1888</span> }<a name="line.1888"></a>
-<span class="sourceLineNo">1889</span><a name="line.1889"></a>
-<span class="sourceLineNo">1890</span> public static Put addLocation(Put p, ServerName sn, long openSeqNum, int replicaId)<a name="line.1890"></a>
-<span class="sourceLineNo">1891</span> throws IOException {<a name="line.1891"></a>
-<span class="sourceLineNo">1892</span> CellBuilder builder = CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY);<a name="line.1892"></a>
-<span class="sourceLineNo">1893</span> return p.add(builder.clear()<a name="line.1893"></a>
-<span class="sourceLineNo">1894</span> .setRow(p.getRow())<a name="line.1894"></a>
-<span class="sourceLineNo">1895</span> .setFamily(getCatalogFamily())<a name="line.1895"></a>
-<span class="sourceLineNo">1896</span> .setQualifier(getServerColumn(replicaId))<a name="line.1896"></a>
-<span class="sourceLineNo">1897</span> .setTimestamp(p.getTimestamp())<a name="line.1897"></a>
-<span class="sourceLineNo">1898</span> .setType(Cell.Type.Put)<a name="line.1898"></a>
-<span class="sourceLineNo">1899</span> .setValue(Bytes.toBytes(sn.getAddress().toString()))<a name="line.1899"></a>
-<span class="sourceLineNo">1900</span> .build())<a name="line.1900"></a>
-<span class="sourceLineNo">1901</span> .add(builder.clear()<a name="line.1901"></a>
+<span class="sourceLineNo">1572</span> .setValue(RegionInfo.toByteArray(regionA))<a name="line.1572"></a>
+<span class="sourceLineNo">1573</span> .build())<a name="line.1573"></a>
+<span class="sourceLineNo">1574</span> .add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.1574"></a>
+<span class="sourceLineNo">1575</span> .setRow(putOfMerged.getRow())<a name="line.1575"></a>
+<span class="sourceLineNo">1576</span> .setFamily(HConstants.CATALOG_FAMILY)<a name="line.1576"></a>
+<span class="sourceLineNo">1577</span> .setQualifier(HConstants.MERGEB_QUALIFIER)<a name="line.1577"></a>
+<span class="sourceLineNo">1578</span> .setTimestamp(putOfMerged.getTimestamp())<a name="line.1578"></a>
+<span class="sourceLineNo">1579</span> .setType(Type.Put)<a name="line.1579"></a>
+<span class="sourceLineNo">1580</span> .setValue(RegionInfo.toByteArray(regionB))<a name="line.1580"></a>
+<span class="sourceLineNo">1581</span> .build());<a name="line.1581"></a>
+<span class="sourceLineNo">1582</span> // Set initial state to CLOSED<a name="line.1582"></a>
+<span class="sourceLineNo">1583</span> // NOTE: If initial state is not set to CLOSED then merged region gets added with the<a name="line.1583"></a>
+<span class="sourceLineNo">1584</span> // default OFFLINE state. If Master gets restarted after this step, start up sequence of<a name="line.1584"></a>
+<span class="sourceLineNo">1585</span> // master tries to assign this offline region. This is followed by re-assignments of the<a name="line.1585"></a>
+<span class="sourceLineNo">1586</span> // merged region from resumed {@link MergeTableRegionsProcedure}<a name="line.1586"></a>
+<span class="sourceLineNo">1587</span> addRegionStateToPut(putOfMerged, RegionState.State.CLOSED);<a name="line.1587"></a>
+<span class="sourceLineNo">1588</span> mutations.add(putOfMerged);<a name="line.1588"></a>
+<span class="sourceLineNo">1589</span> // The merged is a new region, openSeqNum = 1 is fine. ServerName may be null<a name="line.1589"></a>
+<span class="sourceLineNo">1590</span> // if crash after merge happened but before we got to here.. means in-memory<a name="line.1590"></a>
+<span class="sourceLineNo">1591</span> // locations of offlined merged, now-closed, regions is lost. Should be ok. We<a name="line.1591"></a>
+<span class="sourceLineNo">1592</span> // assign the merged region later.<a name="line.1592"></a>
+<span class="sourceLineNo">1593</span> if (sn != null) {<a name="line.1593"></a>
+<span class="sourceLineNo">1594</span> addLocation(putOfMerged, sn, 1, mergedRegion.getReplicaId());<a name="line.1594"></a>
+<span class="sourceLineNo">1595</span> }<a name="line.1595"></a>
+<span class="sourceLineNo">1596</span><a name="line.1596"></a>
+<span class="sourceLineNo">1597</span> // Add empty locations for region replicas of the merged region so that number of replicas can<a name="line.1597"></a>
+<span class="sourceLineNo">1598</span> // be cached whenever the primary region is looked up from meta<a name="line.1598"></a>
+<span class="sourceLineNo">1599</span> for (int i = 1; i < regionReplication; i++) {<a name="line.1599"></a>
+<span class="sourceLineNo">1600</span> addEmptyLocation(putOfMerged, i);<a name="line.1600"></a>
+<span class="sourceLineNo">1601</span> }<a name="line.1601"></a>
+<span class="sourceLineNo">1602</span> // add parent reference for serial replication<a name="line.1602"></a>
+<span class="sourceLineNo">1603</span> if (!replicationParents.isEmpty()) {<a name="line.1603"></a>
+<span class="sourceLineNo">1604</span> addReplicationParent(putOfMerged, replicationParents);<a name="line.1604"></a>
+<span class="sourceLineNo">1605</span> }<a name="line.1605"></a>
+<span class="sourceLineNo">1606</span> byte[] tableRow = Bytes.toBytes(mergedRegion.getRegionNameAsString() + HConstants.DELIMITER);<a name="line.1606"></a>
+<span class="sourceLineNo">1607</span> multiMutate(connection, meta, tableRow, mutations);<a name="line.1607"></a>
+<span class="sourceLineNo">1608</span> }<a name="line.1608"></a>
+<span class="sourceLineNo">1609</span> }<a name="line.1609"></a>
+<span class="sourceLineNo">1610</span><a name="line.1610"></a>
+<span class="sourceLineNo">1611</span> /**<a name="line.1611"></a>
+<span class="sourceLineNo">1612</span> * Splits the region into two in an atomic operation. Offlines the parent region with the<a name="line.1612"></a>
+<span class="sourceLineNo">1613</span> * information that it is split into two, and also adds the daughter regions. Does not add the<a name="line.1613"></a>
+<span class="sourceLineNo">1614</span> * location information to the daughter regions since they are not open yet.<a name="line.1614"></a>
+<span class="sourceLineNo">1615</span> * @param connection connection we're using<a name="line.1615"></a>
+<span class="sourceLineNo">1616</span> * @param parent the parent region which is split<a name="line.1616"></a>
+<span class="sourceLineNo">1617</span> * @param parentOpenSeqNum the next open sequence id for parent region, used by serial<a name="line.1617"></a>
+<span class="sourceLineNo">1618</span> * replication. -1 if not necessary.<a name="line.1618"></a>
+<span class="sourceLineNo">1619</span> * @param splitA Split da
<TRUNCATED>
[26/51] [partial] hbase-site git commit: Published site at
9101fc246f86445006bfbcdfda5cc495016dc280.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/Procedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/Procedure.html b/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/Procedure.html
index 61707dd..4a4d446 100644
--- a/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/Procedure.html
+++ b/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/Procedure.html
@@ -257,21 +257,21 @@
<tbody>
<tr class="altColor">
<td class="colFirst"><code>boolean</code></td>
-<td class="colLast"><span class="typeNameLabel">AssignmentManager.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#waitMetaInitialized-org.apache.hadoop.hbase.procedure2.Procedure-">waitMetaInitialized</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> proc)</code> </td>
+<td class="colLast"><span class="typeNameLabel">AssignmentManager.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#waitMetaAssigned-org.apache.hadoop.hbase.procedure2.Procedure-org.apache.hadoop.hbase.client.RegionInfo-">waitMetaAssigned</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> proc,
+ <a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo)</code>
+<div class="block">Notice that this event does not mean the AM has already finished region state rebuilding.</div>
+</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
-<td class="colLast"><span class="typeNameLabel">AssignmentManager.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#waitMetaInitialized-org.apache.hadoop.hbase.procedure2.Procedure-org.apache.hadoop.hbase.client.RegionInfo-">waitMetaInitialized</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> proc,
- <a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo)</code> </td>
+<td class="colLast"><span class="typeNameLabel">AssignmentManager.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#waitMetaLoaded-org.apache.hadoop.hbase.procedure2.Procedure-">waitMetaLoaded</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> proc)</code>
+<div class="block">Wait until AM finishes the meta loading, i.e, the region states rebuilding.</div>
+</td>
</tr>
<tr class="altColor">
-<td class="colFirst"><code>boolean</code></td>
-<td class="colLast"><span class="typeNameLabel">AssignmentManager.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#waitMetaLoaded-org.apache.hadoop.hbase.procedure2.Procedure-">waitMetaLoaded</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> proc)</code> </td>
-</tr>
-<tr class="rowColor">
<td class="colFirst"><code>protected boolean</code></td>
<td class="colLast"><span class="typeNameLabel">AssignmentManager.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#waitServerReportEvent-org.apache.hadoop.hbase.ServerName-org.apache.hadoop.hbase.procedure2.Procedure-">waitServerReportEvent</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> serverName,
- <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> proc)</code> </td>
+ <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> proc)</code> </td>
</tr>
</tbody>
</table>
@@ -373,38 +373,47 @@
</tr>
<tr class="altColor">
<td class="colFirst"><code>class </code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">InitMetaProcedure</a></span></code>
+<div class="block">This procedure is used to initialize meta table for a new hbase deploy.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>class </code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ModifyNamespaceProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ModifyNamespaceProcedure</a></span></code>
<div class="block">The procedure to add a namespace to an existing table.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>class </code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ModifyTableProcedure</a></span></code> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>class </code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RecoverMetaProcedure</a></span></code>
-<div class="block">This procedure recovers meta from prior shutdown/ crash of a server, and brings meta online by
- assigning meta region/s.</div>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span>
+<div class="block"><span class="deprecationComment">Do not use any more, leave it here only for compatible. The recovery work will be
+ done in <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>ServerCrashProcedure</code></a> directly, and the initial work for meta table
+ will be done by <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>InitMetaProcedure</code></a>.</span></div>
+</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>class </code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ReopenTableRegionsProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ReopenTableRegionsProcedure</a></span></code>
<div class="block">Used for non table procedures to reopen the regions for a table.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>class </code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RestoreSnapshotProcedure</a></span></code> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>class </code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ServerCrashProcedure</a></span></code>
<div class="block">Handle crashed server.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>class </code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TruncateTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">TruncateTableProcedure</a></span></code> </td>
</tr>
@@ -542,7 +551,9 @@
</tr>
<tr class="rowColor">
<td class="colFirst"><code>(package private) boolean</code></td>
-<td class="colLast"><span class="typeNameLabel">MetaQueue.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MetaQueue.html#requireExclusiveLock-org.apache.hadoop.hbase.procedure2.Procedure-">requireExclusiveLock</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> proc)</code> </td>
+<td class="colLast"><span class="typeNameLabel">MetaQueue.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MetaQueue.html#requireExclusiveLock-org.apache.hadoop.hbase.procedure2.Procedure-">requireExclusiveLock</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> proc)</code>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
+ </td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>boolean</code></td>
@@ -580,64 +591,59 @@
<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> procedure)</code> </td>
</tr>
<tr class="altColor">
-<td class="colFirst"><code>boolean</code></td>
-<td class="colLast"><span class="typeNameLabel">MasterProcedureEnv.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html#waitFailoverCleanup-org.apache.hadoop.hbase.procedure2.Procedure-">waitFailoverCleanup</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> proc)</code> </td>
-</tr>
-<tr class="rowColor">
<td class="colFirst"><code>static byte[]</code></td>
<td class="colLast"><span class="typeNameLabel">ProcedureSyncWait.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ProcedureSyncWait.html#waitForProcedureToComplete-org.apache.hadoop.hbase.procedure2.ProcedureExecutor-org.apache.hadoop.hbase.procedure2.Procedure-long-">waitForProcedureToComplete</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureExecutor</a><<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>> procExec,
<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> proc,
long timeout)</code> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>static byte[]</code></td>
<td class="colLast"><span class="typeNameLabel">ProcedureSyncWait.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ProcedureSyncWait.html#waitForProcedureToCompleteIOE-org.apache.hadoop.hbase.procedure2.ProcedureExecutor-org.apache.hadoop.hbase.procedure2.Procedure-long-">waitForProcedureToCompleteIOE</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureExecutor</a><<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>> procExec,
<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> proc,
long timeout)</code> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><span class="typeNameLabel">MasterProcedureEnv.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html#waitInitialized-org.apache.hadoop.hbase.procedure2.Procedure-">waitInitialized</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> proc)</code> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><span class="typeNameLabel">MasterProcedureScheduler.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#waitMetaExclusiveLock-org.apache.hadoop.hbase.procedure2.Procedure-">waitMetaExclusiveLock</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> procedure)</code>
-<div class="block">Try to acquire the exclusive lock on meta.</div>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span>
+<div class="block"><span class="deprecationComment">only used for <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>RecoverMetaProcedure</code></a>. Should be removed along with
+ <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>RecoverMetaProcedure</code></a>.</span></div>
+</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>boolean</code></td>
-<td class="colLast"><span class="typeNameLabel">MasterProcedureScheduler.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#waitNamespaceExclusiveLock-org.apache.hadoop.hbase.procedure2.Procedure-java.lang.String-">waitNamespaceExclusiveLock</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> procedure,
+<td class="colLast"><span class="typeNameLabel">MasterProcedureScheduler.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#waitNamespaceExclusiveLock-org.apache.hadoop.hbase.procedure2.Procedure-java.lang.String-">waitNamespaceExclusiveLock</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> procedure,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> namespace)</code>
<div class="block">Suspend the procedure if the specified namespace is already locked.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><span class="typeNameLabel">MasterProcedureScheduler.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#waitPeerExclusiveLock-org.apache.hadoop.hbase.procedure2.Procedure-java.lang.String-">waitPeerExclusiveLock</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> procedure,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> peerId)</code>
<div class="block">Try to acquire the exclusive lock on the specified peer.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>boolean</code></td>
-<td class="colLast"><span class="typeNameLabel">MasterProcedureScheduler.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#waitRegion-org.apache.hadoop.hbase.procedure2.Procedure-org.apache.hadoop.hbase.client.RegionInfo-">waitRegion</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> procedure,
+<td class="colLast"><span class="typeNameLabel">MasterProcedureScheduler.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#waitRegion-org.apache.hadoop.hbase.procedure2.Procedure-org.apache.hadoop.hbase.client.RegionInfo-">waitRegion</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> procedure,
<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo)</code>
<div class="block">Suspend the procedure if the specified region is already locked.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
-<td class="colLast"><span class="typeNameLabel">MasterProcedureScheduler.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#waitRegions-org.apache.hadoop.hbase.procedure2.Procedure-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.client.RegionInfo...-">waitRegions</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> procedure,
+<td class="colLast"><span class="typeNameLabel">MasterProcedureScheduler.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#waitRegions-org.apache.hadoop.hbase.procedure2.Procedure-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.client.RegionInfo...-">waitRegions</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> procedure,
<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> table,
<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>... regionInfo)</code>
<div class="block">Suspend the procedure if the specified set of regions are already locked.</div>
</td>
</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>boolean</code></td>
-<td class="colLast"><span class="typeNameLabel">MasterProcedureEnv.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html#waitServerCrashProcessingEnabled-org.apache.hadoop.hbase.procedure2.Procedure-">waitServerCrashProcessingEnabled</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> proc)</code> </td>
-</tr>
<tr class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><span class="typeNameLabel">MasterProcedureScheduler.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#waitServerExclusiveLock-org.apache.hadoop.hbase.procedure2.Procedure-org.apache.hadoop.hbase.ServerName-">waitServerExclusiveLock</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> procedure,
@@ -647,7 +653,7 @@
</tr>
<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
-<td class="colLast"><span class="typeNameLabel">MasterProcedureScheduler.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#waitTableExclusiveLock-org.apache.hadoop.hbase.procedure2.Procedure-org.apache.hadoop.hbase.TableName-">waitTableExclusiveLock</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> procedure,
+<td class="colLast"><span class="typeNameLabel">MasterProcedureScheduler.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#waitTableExclusiveLock-org.apache.hadoop.hbase.procedure2.Procedure-org.apache.hadoop.hbase.TableName-">waitTableExclusiveLock</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> procedure,
<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> table)</code>
<div class="block">Suspend the procedure if the specified table is already locked.</div>
</td>
@@ -659,7 +665,7 @@
</tr>
<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
-<td class="colLast"><span class="typeNameLabel">MasterProcedureScheduler.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#waitTableSharedLock-org.apache.hadoop.hbase.procedure2.Procedure-org.apache.hadoop.hbase.TableName-">waitTableSharedLock</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> procedure,
+<td class="colLast"><span class="typeNameLabel">MasterProcedureScheduler.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#waitTableSharedLock-org.apache.hadoop.hbase.procedure2.Procedure-org.apache.hadoop.hbase.TableName-">waitTableSharedLock</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> procedure,
<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> table)</code>
<div class="block">Suspend the procedure if the specified table is already locked.</div>
</td>
@@ -667,12 +673,15 @@
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><span class="typeNameLabel">MasterProcedureScheduler.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#wakeMetaExclusiveLock-org.apache.hadoop.hbase.procedure2.Procedure-">wakeMetaExclusiveLock</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> procedure)</code>
-<div class="block">Wake the procedures waiting for meta.</div>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span>
+<div class="block"><span class="deprecationComment">only used for <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>RecoverMetaProcedure</code></a>. Should be removed along with
+ <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>RecoverMetaProcedure</code></a>.</span></div>
+</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
-<td class="colLast"><span class="typeNameLabel">MasterProcedureScheduler.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#wakeNamespaceExclusiveLock-org.apache.hadoop.hbase.procedure2.Procedure-java.lang.String-">wakeNamespaceExclusiveLock</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> procedure,
+<td class="colLast"><span class="typeNameLabel">MasterProcedureScheduler.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#wakeNamespaceExclusiveLock-org.apache.hadoop.hbase.procedure2.Procedure-java.lang.String-">wakeNamespaceExclusiveLock</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> procedure,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> namespace)</code>
<div class="block">Wake the procedures waiting for the specified namespace</div>
</td>
@@ -686,14 +695,14 @@
</tr>
<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
-<td class="colLast"><span class="typeNameLabel">MasterProcedureScheduler.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#wakeRegion-org.apache.hadoop.hbase.procedure2.Procedure-org.apache.hadoop.hbase.client.RegionInfo-">wakeRegion</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> procedure,
+<td class="colLast"><span class="typeNameLabel">MasterProcedureScheduler.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#wakeRegion-org.apache.hadoop.hbase.procedure2.Procedure-org.apache.hadoop.hbase.client.RegionInfo-">wakeRegion</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> procedure,
<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo)</code>
<div class="block">Wake the procedures waiting for the specified region</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
-<td class="colLast"><span class="typeNameLabel">MasterProcedureScheduler.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#wakeRegions-org.apache.hadoop.hbase.procedure2.Procedure-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.client.RegionInfo...-">wakeRegions</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> procedure,
+<td class="colLast"><span class="typeNameLabel">MasterProcedureScheduler.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#wakeRegions-org.apache.hadoop.hbase.procedure2.Procedure-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.client.RegionInfo...-">wakeRegions</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> procedure,
<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> table,
<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>... regionInfo)</code>
<div class="block">Wake the procedures waiting for the specified regions</div>
@@ -708,14 +717,14 @@
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
-<td class="colLast"><span class="typeNameLabel">MasterProcedureScheduler.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#wakeTableExclusiveLock-org.apache.hadoop.hbase.procedure2.Procedure-org.apache.hadoop.hbase.TableName-">wakeTableExclusiveLock</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> procedure,
+<td class="colLast"><span class="typeNameLabel">MasterProcedureScheduler.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#wakeTableExclusiveLock-org.apache.hadoop.hbase.procedure2.Procedure-org.apache.hadoop.hbase.TableName-">wakeTableExclusiveLock</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> procedure,
<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> table)</code>
<div class="block">Wake the procedures waiting for the specified table</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
-<td class="colLast"><span class="typeNameLabel">MasterProcedureScheduler.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#wakeTableSharedLock-org.apache.hadoop.hbase.procedure2.Procedure-org.apache.hadoop.hbase.TableName-">wakeTableSharedLock</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a> procedure,
+<td class="colLast"><span class="typeNameLabel">MasterProcedureScheduler.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#wakeTableSharedLock-org.apache.hadoop.hbase.procedure2.Procedure-org.apache.hadoop.hbase.TableName-">wakeTableSharedLock</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a><?> procedure,
<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> table)</code>
<div class="block">Wake the procedures waiting for the specified table</div>
</td>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/ProcedureEvent.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/ProcedureEvent.html b/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/ProcedureEvent.html
index a9a3870..fc8e575 100644
--- a/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/ProcedureEvent.html
+++ b/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/ProcedureEvent.html
@@ -126,10 +126,6 @@
<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureEvent.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureEvent</a><?></code></td>
<td class="colLast"><span class="typeNameLabel">HMaster.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/HMaster.html#initialized">initialized</a></span></code> </td>
</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureEvent.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureEvent</a><?></code></td>
-<td class="colLast"><span class="typeNameLabel">HMaster.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/HMaster.html#serverCrashProcessingEnabled">serverCrashProcessingEnabled</a></span></code> </td>
-</tr>
</tbody>
</table>
<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing methods, and an explanation">
@@ -147,10 +143,6 @@
<td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureEvent.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureEvent</a><?></code></td>
<td class="colLast"><span class="typeNameLabel">HMaster.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/HMaster.html#getInitializedEvent--">getInitializedEvent</a></span>()</code> </td>
</tr>
-<tr class="altColor">
-<td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureEvent.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureEvent</a><?></code></td>
-<td class="colLast"><span class="typeNameLabel">HMaster.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/HMaster.html#getServerCrashProcessingEnabledEvent--">getServerCrashProcessingEnabledEvent</a></span>()</code> </td>
-</tr>
</tbody>
</table>
</li>
@@ -188,18 +180,10 @@
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureEvent.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureEvent</a><?></code></td>
-<td class="colLast"><span class="typeNameLabel">AssignmentManager.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#failoverCleanupDone">failoverCleanupDone</a></span></code>
-<div class="block">Indicator that AssignmentManager has recovered the region states so
- that ServerCrashProcedure can be fully enabled and re-assign regions
- of dead servers.</div>
-</td>
+<td class="colLast"><span class="typeNameLabel">AssignmentManager.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#metaAssignEvent">metaAssignEvent</a></span></code> </td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureEvent.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureEvent</a><?></code></td>
-<td class="colLast"><span class="typeNameLabel">AssignmentManager.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#metaInitializedEvent">metaInitializedEvent</a></span></code> </td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureEvent.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureEvent</a><?></code></td>
<td class="colLast"><span class="typeNameLabel">AssignmentManager.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#metaLoadEvent">metaLoadEvent</a></span></code> </td>
</tr>
</tbody>
@@ -212,18 +196,14 @@
</tr>
<tbody>
<tr class="altColor">
-<td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureEvent.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureEvent</a></code></td>
-<td class="colLast"><span class="typeNameLabel">AssignmentManager.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#getFailoverCleanupEvent--">getFailoverCleanupEvent</a></span>()</code> </td>
+<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureEvent.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureEvent</a><?></code></td>
+<td class="colLast"><span class="typeNameLabel">AssignmentManager.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#getMetaAssignEvent-org.apache.hadoop.hbase.client.RegionInfo-">getMetaAssignEvent</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> metaRegionInfo)</code> </td>
</tr>
<tr class="rowColor">
-<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureEvent.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureEvent</a></code></td>
-<td class="colLast"><span class="typeNameLabel">AssignmentManager.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#getMetaInitializedEvent-org.apache.hadoop.hbase.client.RegionInfo-">getMetaInitializedEvent</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> metaRegionInfo)</code> </td>
-</tr>
-<tr class="altColor">
<td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureEvent.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureEvent</a><?></code></td>
<td class="colLast"><span class="typeNameLabel">RegionStates.RegionStateNode.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html#getProcedureEvent--">getProcedureEvent</a></span>()</code> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureEvent.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureEvent</a><?></code></td>
<td class="colLast"><span class="typeNameLabel">RegionStates.ServerStateNode.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.ServerStateNode.html#getReportEvent--">getReportEvent</a></span>()</code> </td>
</tr>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/ProcedureExecutor.WorkerThread.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/ProcedureExecutor.WorkerThread.html b/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/ProcedureExecutor.WorkerThread.html
index 502515c..7b26aca 100644
--- a/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/ProcedureExecutor.WorkerThread.html
+++ b/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/ProcedureExecutor.WorkerThread.html
@@ -118,7 +118,7 @@
<tr class="altColor">
<td class="colFirst"><code>private <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CopyOnWriteArrayList.html?is-external=true" title="class or interface in java.util.concurrent">CopyOnWriteArrayList</a><<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.WorkerThread.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureExecutor.WorkerThread</a>></code></td>
<td class="colLast"><span class="typeNameLabel">ProcedureExecutor.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#workerThreads">workerThreads</a></span></code>
-<div class="block">Created in the <a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#start-int-boolean-"><code>ProcedureExecutor.start(int, boolean)</code></a> method.</div>
+<div class="block">Created in the <code>#start(int, boolean)</code> method.</div>
</td>
</tr>
</tbody>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/ProcedureStateSerializer.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/ProcedureStateSerializer.html b/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/ProcedureStateSerializer.html
index 3b6267e..225a2f6 100644
--- a/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/ProcedureStateSerializer.html
+++ b/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/ProcedureStateSerializer.html
@@ -212,7 +212,9 @@
<tbody>
<tr class="altColor">
<td class="colFirst"><code>protected void</code></td>
-<td class="colLast"><span class="typeNameLabel">RecoverMetaProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#deserializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">deserializeStateData</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a> serializer)</code> </td>
+<td class="colLast"><span class="typeNameLabel">RecoverMetaProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#deserializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">deserializeStateData</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a> serializer)</code>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
+ </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected void</code></td>
@@ -264,64 +266,74 @@
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected void</code></td>
-<td class="colLast"><span class="typeNameLabel">ReopenTableRegionsProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ReopenTableRegionsProcedure.html#deserializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">deserializeStateData</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a> serializer)</code> </td>
+<td class="colLast"><span class="typeNameLabel">InitMetaProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html#deserializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">deserializeStateData</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a> serializer)</code> </td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected void</code></td>
-<td class="colLast"><span class="typeNameLabel">DeleteNamespaceProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/DeleteNamespaceProcedure.html#deserializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">deserializeStateData</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a> serializer)</code> </td>
+<td class="colLast"><span class="typeNameLabel">ReopenTableRegionsProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ReopenTableRegionsProcedure.html#deserializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">deserializeStateData</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a> serializer)</code> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected void</code></td>
-<td class="colLast"><span class="typeNameLabel">RecoverMetaProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#serializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">serializeStateData</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a> serializer)</code> </td>
+<td class="colLast"><span class="typeNameLabel">DeleteNamespaceProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/DeleteNamespaceProcedure.html#deserializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">deserializeStateData</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a> serializer)</code> </td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected void</code></td>
-<td class="colLast"><span class="typeNameLabel">EnableTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/EnableTableProcedure.html#serializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">serializeStateData</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a> serializer)</code> </td>
+<td class="colLast"><span class="typeNameLabel">RecoverMetaProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#serializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">serializeStateData</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a> serializer)</code>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
+ </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected void</code></td>
-<td class="colLast"><span class="typeNameLabel">CreateTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/CreateTableProcedure.html#serializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">serializeStateData</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a> serializer)</code> </td>
+<td class="colLast"><span class="typeNameLabel">EnableTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/EnableTableProcedure.html#serializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">serializeStateData</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a> serializer)</code> </td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected void</code></td>
-<td class="colLast"><span class="typeNameLabel">ModifyNamespaceProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ModifyNamespaceProcedure.html#serializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">serializeStateData</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a> serializer)</code> </td>
+<td class="colLast"><span class="typeNameLabel">CreateTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/CreateTableProcedure.html#serializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">serializeStateData</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a> serializer)</code> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected void</code></td>
-<td class="colLast"><span class="typeNameLabel">TruncateTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TruncateTableProcedure.html#serializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">serializeStateData</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a> serializer)</code> </td>
+<td class="colLast"><span class="typeNameLabel">ModifyNamespaceProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ModifyNamespaceProcedure.html#serializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">serializeStateData</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a> serializer)</code> </td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected void</code></td>
-<td class="colLast"><span class="typeNameLabel">RestoreSnapshotProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html#serializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">serializeStateData</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a> serializer)</code> </td>
+<td class="colLast"><span class="typeNameLabel">TruncateTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TruncateTableProcedure.html#serializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">serializeStateData</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a> serializer)</code> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected void</code></td>
-<td class="colLast"><span class="typeNameLabel">AbstractStateMachineRegionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/AbstractStateMachineRegionProcedure.html#serializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">serializeStateData</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a> serializer)</code> </td>
+<td class="colLast"><span class="typeNameLabel">RestoreSnapshotProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html#serializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">serializeStateData</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a> serializer)</code> </td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected void</code></td>
-<td class="colLast"><span class="typeNameLabel">DeleteTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/DeleteTableProcedure.html#serializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">serializeStateData</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a> serializer)</code> </td>
+<td class="colLast"><span class="typeNameLabel">AbstractStateMachineRegionProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/AbstractStateMachineRegionProcedure.html#serializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">serializeStateData</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a> serializer)</code> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected void</code></td>
-<td class="colLast"><span class="typeNameLabel">CloneSnapshotProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/CloneSnapshotProcedure.html#serializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">serializeStateData</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a> serializer)</code> </td>
+<td class="colLast"><span class="typeNameLabel">DeleteTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/DeleteTableProcedure.html#serializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">serializeStateData</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a> serializer)</code> </td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected void</code></td>
-<td class="colLast"><span class="typeNameLabel">CreateNamespaceProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/CreateNamespaceProcedure.html#serializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">serializeStateData</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a> serializer)</code> </td>
+<td class="colLast"><span class="typeNameLabel">CloneSnapshotProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/CloneSnapshotProcedure.html#serializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">serializeStateData</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a> serializer)</code> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected void</code></td>
-<td class="colLast"><span class="typeNameLabel">DisableTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/DisableTableProcedure.html#serializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">serializeStateData</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a> serializer)</code> </td>
+<td class="colLast"><span class="typeNameLabel">CreateNamespaceProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/CreateNamespaceProcedure.html#serializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">serializeStateData</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a> serializer)</code> </td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected void</code></td>
-<td class="colLast"><span class="typeNameLabel">ServerCrashProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#serializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">serializeStateData</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a> serializer)</code> </td>
+<td class="colLast"><span class="typeNameLabel">DisableTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/DisableTableProcedure.html#serializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">serializeStateData</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a> serializer)</code> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><span class="typeNameLabel">ServerCrashProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#serializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">serializeStateData</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a> serializer)</code> </td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><span class="typeNameLabel">ModifyTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html#serializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">serializeStateData</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a> serializer)</code> </td>
</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><span class="typeNameLabel">InitMetaProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html#serializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">serializeStateData</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a> serializer)</code> </td>
+</tr>
<tr class="altColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><span class="typeNameLabel">ReopenTableRegionsProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ReopenTableRegionsProcedure.html#serializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">serializeStateData</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a> serializer)</code> </td>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/ProcedureSuspendedException.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/ProcedureSuspendedException.html b/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/ProcedureSuspendedException.html
index 0ffe676..d389463 100644
--- a/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/ProcedureSuspendedException.html
+++ b/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/ProcedureSuspendedException.html
@@ -188,15 +188,22 @@
<tbody>
<tr class="altColor">
<td class="colFirst"><code>protected <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2">StateMachineProcedure.Flow</a></code></td>
-<td class="colLast"><span class="typeNameLabel">RecoverMetaProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RecoverMetaState-">executeFromState</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
- org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RecoverMetaState state)</code> </td>
+<td class="colLast"><span class="typeNameLabel">InitMetaProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html#executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.InitMetaState-">executeFromState</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
+ org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.InitMetaState state)</code> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2">StateMachineProcedure.Flow</a></code></td>
+<td class="colLast"><span class="typeNameLabel">RecoverMetaProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RecoverMetaState-">executeFromState</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
+ org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RecoverMetaState state)</code>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
+ </td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>protected <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2">StateMachineProcedure.Flow</a></code></td>
<td class="colLast"><span class="typeNameLabel">ReopenTableRegionsProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ReopenTableRegionsProcedure.html#executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ReopenTableRegionsState-">executeFromState</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ReopenTableRegionsState state)</code> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>protected <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2">StateMachineProcedure.Flow</a></code></td>
<td class="colLast"><span class="typeNameLabel">ServerCrashProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ServerCrashState-">executeFromState</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ServerCrashState state)</code> </td>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/ProcedureYieldException.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/ProcedureYieldException.html b/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/ProcedureYieldException.html
index 5c716bd..cacb475 100644
--- a/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/ProcedureYieldException.html
+++ b/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/ProcedureYieldException.html
@@ -140,15 +140,22 @@
<tbody>
<tr class="altColor">
<td class="colFirst"><code>protected <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2">StateMachineProcedure.Flow</a></code></td>
-<td class="colLast"><span class="typeNameLabel">RecoverMetaProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RecoverMetaState-">executeFromState</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
- org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RecoverMetaState state)</code> </td>
+<td class="colLast"><span class="typeNameLabel">InitMetaProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html#executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.InitMetaState-">executeFromState</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
+ org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.InitMetaState state)</code> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2">StateMachineProcedure.Flow</a></code></td>
+<td class="colLast"><span class="typeNameLabel">RecoverMetaProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RecoverMetaState-">executeFromState</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
+ org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RecoverMetaState state)</code>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
+ </td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>protected <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2">StateMachineProcedure.Flow</a></code></td>
<td class="colLast"><span class="typeNameLabel">ReopenTableRegionsProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ReopenTableRegionsProcedure.html#executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ReopenTableRegionsState-">executeFromState</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ReopenTableRegionsState state)</code> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>protected <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2">StateMachineProcedure.Flow</a></code></td>
<td class="colLast"><span class="typeNameLabel">ServerCrashProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ServerCrashState-">executeFromState</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ServerCrashState state)</code> </td>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/StateMachineProcedure.Flow.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/StateMachineProcedure.Flow.html b/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/StateMachineProcedure.Flow.html
index 6a9522c..698497f 100644
--- a/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/StateMachineProcedure.Flow.html
+++ b/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/StateMachineProcedure.Flow.html
@@ -190,35 +190,42 @@
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2">StateMachineProcedure.Flow</a></code></td>
+<td class="colLast"><span class="typeNameLabel">InitMetaProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html#executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.InitMetaState-">executeFromState</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
+ org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.InitMetaState state)</code> </td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>protected <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2">StateMachineProcedure.Flow</a></code></td>
<td class="colLast"><span class="typeNameLabel">ModifyNamespaceProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ModifyNamespaceProcedure.html#executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ModifyNamespaceState-">executeFromState</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ModifyNamespaceState state)</code> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>protected <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2">StateMachineProcedure.Flow</a></code></td>
<td class="colLast"><span class="typeNameLabel">ModifyTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html#executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ModifyTableState-">executeFromState</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ModifyTableState state)</code> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>protected <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2">StateMachineProcedure.Flow</a></code></td>
<td class="colLast"><span class="typeNameLabel">RecoverMetaProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html#executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RecoverMetaState-">executeFromState</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
- org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RecoverMetaState state)</code> </td>
+ org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RecoverMetaState state)</code>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
+ </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>protected <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2">StateMachineProcedure.Flow</a></code></td>
<td class="colLast"><span class="typeNameLabel">ReopenTableRegionsProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ReopenTableRegionsProcedure.html#executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ReopenTableRegionsState-">executeFromState</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ReopenTableRegionsState state)</code> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>protected <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2">StateMachineProcedure.Flow</a></code></td>
<td class="colLast"><span class="typeNameLabel">RestoreSnapshotProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html#executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RestoreSnapshotState-">executeFromState</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RestoreSnapshotState state)</code> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>protected <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2">StateMachineProcedure.Flow</a></code></td>
<td class="colLast"><span class="typeNameLabel">ServerCrashProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ServerCrashState-">executeFromState</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ServerCrashState state)</code> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>protected <a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2">StateMachineProcedure.Flow</a></code></td>
<td class="colLast"><span class="typeNameLabel">TruncateTableProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TruncateTableProcedure.html#executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.TruncateTableState-">executeFromState</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a> env,
org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.TruncateTableState state)</code> </td>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/StateMachineProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/StateMachineProcedure.html b/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/StateMachineProcedure.html
index aa850b9..c7740ba 100644
--- a/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/StateMachineProcedure.html
+++ b/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/StateMachineProcedure.html
@@ -206,38 +206,47 @@
</tr>
<tr class="altColor">
<td class="colFirst"><code>class </code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">InitMetaProcedure</a></span></code>
+<div class="block">This procedure is used to initialize meta table for a new hbase deploy.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>class </code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ModifyNamespaceProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ModifyNamespaceProcedure</a></span></code>
<div class="block">The procedure to add a namespace to an existing table.</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>class </code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ModifyTableProcedure</a></span></code> </td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>class </code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RecoverMetaProcedure</a></span></code>
-<div class="block">This procedure recovers meta from prior shutdown/ crash of a server, and brings meta online by
- assigning meta region/s.</div>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span>
+<div class="block"><span class="deprecationComment">Do not use any more, leave it here only for compatible. The recovery work will be
+ done in <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>ServerCrashProcedure</code></a> directly, and the initial work for meta table
+ will be done by <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>InitMetaProcedure</code></a>.</span></div>
+</div>
</td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>class </code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ReopenTableRegionsProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ReopenTableRegionsProcedure</a></span></code>
<div class="block">Used for non table procedures to reopen the regions for a table.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>class </code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RestoreSnapshotProcedure</a></span></code> </td>
</tr>
-<tr class="rowColor">
+<tr class="altColor">
<td class="colFirst"><code>class </code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ServerCrashProcedure</a></span></code>
<div class="block">Handle crashed server.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>class </code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TruncateTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">TruncateTableProcedure</a></span></code> </td>
</tr>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/TimeoutExecutorThread.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/TimeoutExecutorThread.html b/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/TimeoutExecutorThread.html
index c5358c9..39500c9 100644
--- a/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/TimeoutExecutorThread.html
+++ b/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/TimeoutExecutorThread.html
@@ -105,7 +105,7 @@
<tr class="altColor">
<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/procedure2/TimeoutExecutorThread.html" title="class in org.apache.hadoop.hbase.procedure2">TimeoutExecutorThread</a></code></td>
<td class="colLast"><span class="typeNameLabel">ProcedureExecutor.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#timeoutExecutor">timeoutExecutor</a></span></code>
-<div class="block">Created in the <a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#start-int-boolean-"><code>ProcedureExecutor.start(int, boolean)</code></a> method.</div>
+<div class="block">Created in the <code>#start(int, boolean)</code> method.</div>
</td>
</tr>
</tbody>
[16/51] [partial] hbase-site git commit: Published site at
9101fc246f86445006bfbcdfda5cc495016dc280.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.html b/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.html
index fea2b5a..c7a6cc4 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.html
@@ -1354,816 +1354,824 @@
<span class="sourceLineNo">1346</span> */<a name="line.1346"></a>
<span class="sourceLineNo">1347</span> public static void putsToMetaTable(final Connection connection, final List<Put> ps)<a name="line.1347"></a>
<span class="sourceLineNo">1348</span> throws IOException {<a name="line.1348"></a>
-<span class="sourceLineNo">1349</span> try (Table t = getMetaHTable(connection)) {<a name="line.1349"></a>
-<span class="sourceLineNo">1350</span> debugLogMutations(ps);<a name="line.1350"></a>
-<span class="sourceLineNo">1351</span> t.put(ps);<a name="line.1351"></a>
-<span class="sourceLineNo">1352</span> }<a name="line.1352"></a>
-<span class="sourceLineNo">1353</span> }<a name="line.1353"></a>
-<span class="sourceLineNo">1354</span><a name="line.1354"></a>
-<span class="sourceLineNo">1355</span> /**<a name="line.1355"></a>
-<span class="sourceLineNo">1356</span> * Delete the passed <code>d</code> from the <code>hbase:meta</code> table.<a name="line.1356"></a>
-<span class="sourceLineNo">1357</span> * @param connection connection we're using<a name="line.1357"></a>
-<span class="sourceLineNo">1358</span> * @param d Delete to add to hbase:meta<a name="line.1358"></a>
-<span class="sourceLineNo">1359</span> */<a name="line.1359"></a>
-<span class="sourceLineNo">1360</span> private static void deleteFromMetaTable(final Connection connection, final Delete d)<a name="line.1360"></a>
-<span class="sourceLineNo">1361</span> throws IOException {<a name="line.1361"></a>
-<span class="sourceLineNo">1362</span> List<Delete> dels = new ArrayList<>(1);<a name="line.1362"></a>
-<span class="sourceLineNo">1363</span> dels.add(d);<a name="line.1363"></a>
-<span class="sourceLineNo">1364</span> deleteFromMetaTable(connection, dels);<a name="line.1364"></a>
-<span class="sourceLineNo">1365</span> }<a name="line.1365"></a>
-<span class="sourceLineNo">1366</span><a name="line.1366"></a>
-<span class="sourceLineNo">1367</span> /**<a name="line.1367"></a>
-<span class="sourceLineNo">1368</span> * Delete the passed <code>deletes</code> from the <code>hbase:meta</code> table.<a name="line.1368"></a>
-<span class="sourceLineNo">1369</span> * @param connection connection we're using<a name="line.1369"></a>
-<span class="sourceLineNo">1370</span> * @param deletes Deletes to add to hbase:meta This list should support #remove.<a name="line.1370"></a>
-<span class="sourceLineNo">1371</span> */<a name="line.1371"></a>
-<span class="sourceLineNo">1372</span> private static void deleteFromMetaTable(final Connection connection, final List<Delete> deletes)<a name="line.1372"></a>
-<span class="sourceLineNo">1373</span> throws IOException {<a name="line.1373"></a>
-<span class="sourceLineNo">1374</span> try (Table t = getMetaHTable(connection)) {<a name="line.1374"></a>
-<span class="sourceLineNo">1375</span> debugLogMutations(deletes);<a name="line.1375"></a>
-<span class="sourceLineNo">1376</span> t.delete(deletes);<a name="line.1376"></a>
-<span class="sourceLineNo">1377</span> }<a name="line.1377"></a>
-<span class="sourceLineNo">1378</span> }<a name="line.1378"></a>
-<span class="sourceLineNo">1379</span><a name="line.1379"></a>
-<span class="sourceLineNo">1380</span> /**<a name="line.1380"></a>
-<span class="sourceLineNo">1381</span> * Deletes some replica columns corresponding to replicas for the passed rows<a name="line.1381"></a>
-<span class="sourceLineNo">1382</span> * @param metaRows rows in hbase:meta<a name="line.1382"></a>
-<span class="sourceLineNo">1383</span> * @param replicaIndexToDeleteFrom the replica ID we would start deleting from<a name="line.1383"></a>
-<span class="sourceLineNo">1384</span> * @param numReplicasToRemove how many replicas to remove<a name="line.1384"></a>
-<span class="sourceLineNo">1385</span> * @param connection connection we're using to access meta table<a name="line.1385"></a>
-<span class="sourceLineNo">1386</span> */<a name="line.1386"></a>
-<span class="sourceLineNo">1387</span> public static void removeRegionReplicasFromMeta(Set<byte[]> metaRows,<a name="line.1387"></a>
-<span class="sourceLineNo">1388</span> int replicaIndexToDeleteFrom, int numReplicasToRemove, Connection connection)<a name="line.1388"></a>
-<span class="sourceLineNo">1389</span> throws IOException {<a name="line.1389"></a>
-<span class="sourceLineNo">1390</span> int absoluteIndex = replicaIndexToDeleteFrom + numReplicasToRemove;<a name="line.1390"></a>
-<span class="sourceLineNo">1391</span> for (byte[] row : metaRows) {<a name="line.1391"></a>
-<span class="sourceLineNo">1392</span> long now = EnvironmentEdgeManager.currentTime();<a name="line.1392"></a>
-<span class="sourceLineNo">1393</span> Delete deleteReplicaLocations = new Delete(row);<a name="line.1393"></a>
-<span class="sourceLineNo">1394</span> for (int i = replicaIndexToDeleteFrom; i < absoluteIndex; i++) {<a name="line.1394"></a>
-<span class="sourceLineNo">1395</span> deleteReplicaLocations.addColumns(getCatalogFamily(),<a name="line.1395"></a>
-<span class="sourceLineNo">1396</span> getServerColumn(i), now);<a name="line.1396"></a>
-<span class="sourceLineNo">1397</span> deleteReplicaLocations.addColumns(getCatalogFamily(),<a name="line.1397"></a>
-<span class="sourceLineNo">1398</span> getSeqNumColumn(i), now);<a name="line.1398"></a>
-<span class="sourceLineNo">1399</span> deleteReplicaLocations.addColumns(getCatalogFamily(),<a name="line.1399"></a>
-<span class="sourceLineNo">1400</span> getStartCodeColumn(i), now);<a name="line.1400"></a>
-<span class="sourceLineNo">1401</span> }<a name="line.1401"></a>
-<span class="sourceLineNo">1402</span> deleteFromMetaTable(connection, deleteReplicaLocations);<a name="line.1402"></a>
-<span class="sourceLineNo">1403</span> }<a name="line.1403"></a>
-<span class="sourceLineNo">1404</span> }<a name="line.1404"></a>
-<span class="sourceLineNo">1405</span><a name="line.1405"></a>
-<span class="sourceLineNo">1406</span> /**<a name="line.1406"></a>
-<span class="sourceLineNo">1407</span> * Execute the passed <code>mutations</code> against <code>hbase:meta</code> table.<a name="line.1407"></a>
-<span class="sourceLineNo">1408</span> * @param connection connection we're using<a name="line.1408"></a>
-<span class="sourceLineNo">1409</span> * @param mutations Puts and Deletes to execute on hbase:meta<a name="line.1409"></a>
-<span class="sourceLineNo">1410</span> * @throws IOException<a name="line.1410"></a>
-<span class="sourceLineNo">1411</span> */<a name="line.1411"></a>
-<span class="sourceLineNo">1412</span> public static void mutateMetaTable(final Connection connection,<a name="line.1412"></a>
-<span class="sourceLineNo">1413</span> final List<Mutation> mutations)<a name="line.1413"></a>
-<span class="sourceLineNo">1414</span> throws IOException {<a name="line.1414"></a>
-<span class="sourceLineNo">1415</span> Table t = getMetaHTable(connection);<a name="line.1415"></a>
-<span class="sourceLineNo">1416</span> try {<a name="line.1416"></a>
-<span class="sourceLineNo">1417</span> debugLogMutations(mutations);<a name="line.1417"></a>
-<span class="sourceLineNo">1418</span> t.batch(mutations, null);<a name="line.1418"></a>
-<span class="sourceLineNo">1419</span> } catch (InterruptedException e) {<a name="line.1419"></a>
-<span class="sourceLineNo">1420</span> InterruptedIOException ie = new InterruptedIOException(e.getMessage());<a name="line.1420"></a>
-<span class="sourceLineNo">1421</span> ie.initCause(e);<a name="line.1421"></a>
-<span class="sourceLineNo">1422</span> throw ie;<a name="line.1422"></a>
-<span class="sourceLineNo">1423</span> } finally {<a name="line.1423"></a>
-<span class="sourceLineNo">1424</span> t.close();<a name="line.1424"></a>
-<span class="sourceLineNo">1425</span> }<a name="line.1425"></a>
-<span class="sourceLineNo">1426</span> }<a name="line.1426"></a>
-<span class="sourceLineNo">1427</span><a name="line.1427"></a>
-<span class="sourceLineNo">1428</span> private static void addRegionStateToPut(Put put, RegionState.State state) throws IOException {<a name="line.1428"></a>
-<span class="sourceLineNo">1429</span> put.add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.1429"></a>
-<span class="sourceLineNo">1430</span> .setRow(put.getRow())<a name="line.1430"></a>
-<span class="sourceLineNo">1431</span> .setFamily(HConstants.CATALOG_FAMILY)<a name="line.1431"></a>
-<span class="sourceLineNo">1432</span> .setQualifier(getRegionStateColumn())<a name="line.1432"></a>
-<span class="sourceLineNo">1433</span> .setTimestamp(put.getTimestamp())<a name="line.1433"></a>
-<span class="sourceLineNo">1434</span> .setType(Cell.Type.Put)<a name="line.1434"></a>
-<span class="sourceLineNo">1435</span> .setValue(Bytes.toBytes(state.name()))<a name="line.1435"></a>
-<span class="sourceLineNo">1436</span> .build());<a name="line.1436"></a>
-<span class="sourceLineNo">1437</span> }<a name="line.1437"></a>
-<span class="sourceLineNo">1438</span><a name="line.1438"></a>
-<span class="sourceLineNo">1439</span> /**<a name="line.1439"></a>
-<span class="sourceLineNo">1440</span> * Adds daughter region infos to hbase:meta row for the specified region. Note that this does not<a name="line.1440"></a>
-<span class="sourceLineNo">1441</span> * add its daughter's as different rows, but adds information about the daughters in the same row<a name="line.1441"></a>
-<span class="sourceLineNo">1442</span> * as the parent. Use<a name="line.1442"></a>
-<span class="sourceLineNo">1443</span> * {@link #splitRegion(Connection, RegionInfo, long, RegionInfo, RegionInfo, ServerName, int)}<a name="line.1443"></a>
-<span class="sourceLineNo">1444</span> * if you want to do that.<a name="line.1444"></a>
-<span class="sourceLineNo">1445</span> * @param connection connection we're using<a name="line.1445"></a>
-<span class="sourceLineNo">1446</span> * @param regionInfo RegionInfo of parent region<a name="line.1446"></a>
-<span class="sourceLineNo">1447</span> * @param splitA first split daughter of the parent regionInfo<a name="line.1447"></a>
-<span class="sourceLineNo">1448</span> * @param splitB second split daughter of the parent regionInfo<a name="line.1448"></a>
-<span class="sourceLineNo">1449</span> * @throws IOException if problem connecting or updating meta<a name="line.1449"></a>
-<span class="sourceLineNo">1450</span> */<a name="line.1450"></a>
-<span class="sourceLineNo">1451</span> public static void addSplitsToParent(Connection connection, RegionInfo regionInfo,<a name="line.1451"></a>
-<span class="sourceLineNo">1452</span> RegionInfo splitA, RegionInfo splitB) throws IOException {<a name="line.1452"></a>
-<span class="sourceLineNo">1453</span> Table meta = getMetaHTable(connection);<a name="line.1453"></a>
-<span class="sourceLineNo">1454</span> try {<a name="line.1454"></a>
-<span class="sourceLineNo">1455</span> Put put = makePutFromRegionInfo(regionInfo, EnvironmentEdgeManager.currentTime());<a name="line.1455"></a>
-<span class="sourceLineNo">1456</span> addDaughtersToPut(put, splitA, splitB);<a name="line.1456"></a>
-<span class="sourceLineNo">1457</span> meta.put(put);<a name="line.1457"></a>
-<span class="sourceLineNo">1458</span> debugLogMutation(put);<a name="line.1458"></a>
-<span class="sourceLineNo">1459</span> LOG.debug("Added region {}", regionInfo.getRegionNameAsString());<a name="line.1459"></a>
-<span class="sourceLineNo">1460</span> } finally {<a name="line.1460"></a>
-<span class="sourceLineNo">1461</span> meta.close();<a name="line.1461"></a>
-<span class="sourceLineNo">1462</span> }<a name="line.1462"></a>
-<span class="sourceLineNo">1463</span> }<a name="line.1463"></a>
-<span class="sourceLineNo">1464</span><a name="line.1464"></a>
-<span class="sourceLineNo">1465</span> /**<a name="line.1465"></a>
-<span class="sourceLineNo">1466</span> * Adds a (single) hbase:meta row for the specified new region and its daughters. Note that this<a name="line.1466"></a>
-<span class="sourceLineNo">1467</span> * does not add its daughter's as different rows, but adds information about the daughters<a name="line.1467"></a>
-<span class="sourceLineNo">1468</span> * in the same row as the parent. Use<a name="line.1468"></a>
-<span class="sourceLineNo">1469</span> * {@link #splitRegion(Connection, RegionInfo, long, RegionInfo, RegionInfo, ServerName, int)}<a name="line.1469"></a>
-<span class="sourceLineNo">1470</span> * if you want to do that.<a name="line.1470"></a>
-<span class="sourceLineNo">1471</span> * @param connection connection we're using<a name="line.1471"></a>
-<span class="sourceLineNo">1472</span> * @param regionInfo region information<a name="line.1472"></a>
-<span class="sourceLineNo">1473</span> * @throws IOException if problem connecting or updating meta<a name="line.1473"></a>
-<span class="sourceLineNo">1474</span> */<a name="line.1474"></a>
-<span class="sourceLineNo">1475</span> @VisibleForTesting<a name="line.1475"></a>
-<span class="sourceLineNo">1476</span> public static void addRegionToMeta(Connection connection, RegionInfo regionInfo)<a name="line.1476"></a>
-<span class="sourceLineNo">1477</span> throws IOException {<a name="line.1477"></a>
-<span class="sourceLineNo">1478</span> addRegionsToMeta(connection, Collections.singletonList(regionInfo), 1);<a name="line.1478"></a>
-<span class="sourceLineNo">1479</span> }<a name="line.1479"></a>
-<span class="sourceLineNo">1480</span><a name="line.1480"></a>
-<span class="sourceLineNo">1481</span> /**<a name="line.1481"></a>
-<span class="sourceLineNo">1482</span> * Adds a hbase:meta row for each of the specified new regions. Initial state for new regions<a name="line.1482"></a>
-<span class="sourceLineNo">1483</span> * is CLOSED.<a name="line.1483"></a>
-<span class="sourceLineNo">1484</span> * @param connection connection we're using<a name="line.1484"></a>
-<span class="sourceLineNo">1485</span> * @param regionInfos region information list<a name="line.1485"></a>
-<span class="sourceLineNo">1486</span> * @throws IOException if problem connecting or updating meta<a name="line.1486"></a>
-<span class="sourceLineNo">1487</span> */<a name="line.1487"></a>
-<span class="sourceLineNo">1488</span> public static void addRegionsToMeta(Connection connection, List<RegionInfo> regionInfos,<a name="line.1488"></a>
-<span class="sourceLineNo">1489</span> int regionReplication) throws IOException {<a name="line.1489"></a>
-<span class="sourceLineNo">1490</span> addRegionsToMeta(connection, regionInfos, regionReplication,<a name="line.1490"></a>
-<span class="sourceLineNo">1491</span> EnvironmentEdgeManager.currentTime());<a name="line.1491"></a>
-<span class="sourceLineNo">1492</span> }<a name="line.1492"></a>
-<span class="sourceLineNo">1493</span><a name="line.1493"></a>
-<span class="sourceLineNo">1494</span> /**<a name="line.1494"></a>
-<span class="sourceLineNo">1495</span> * Adds a hbase:meta row for each of the specified new regions. Initial state for new regions<a name="line.1495"></a>
-<span class="sourceLineNo">1496</span> * is CLOSED.<a name="line.1496"></a>
-<span class="sourceLineNo">1497</span> * @param connection connection we're using<a name="line.1497"></a>
-<span class="sourceLineNo">1498</span> * @param regionInfos region information list<a name="line.1498"></a>
-<span class="sourceLineNo">1499</span> * @param regionReplication<a name="line.1499"></a>
-<span class="sourceLineNo">1500</span> * @param ts desired timestamp<a name="line.1500"></a>
-<span class="sourceLineNo">1501</span> * @throws IOException if problem connecting or updating meta<a name="line.1501"></a>
-<span class="sourceLineNo">1502</span> */<a name="line.1502"></a>
-<span class="sourceLineNo">1503</span> private static void addRegionsToMeta(Connection connection, List<RegionInfo> regionInfos,<a name="line.1503"></a>
-<span class="sourceLineNo">1504</span> int regionReplication, long ts) throws IOException {<a name="line.1504"></a>
-<span class="sourceLineNo">1505</span> List<Put> puts = new ArrayList<>();<a name="line.1505"></a>
-<span class="sourceLineNo">1506</span> for (RegionInfo regionInfo : regionInfos) {<a name="line.1506"></a>
-<span class="sourceLineNo">1507</span> if (RegionReplicaUtil.isDefaultReplica(regionInfo)) {<a name="line.1507"></a>
-<span class="sourceLineNo">1508</span> Put put = makePutFromRegionInfo(regionInfo, ts);<a name="line.1508"></a>
-<span class="sourceLineNo">1509</span> // New regions are added with initial state of CLOSED.<a name="line.1509"></a>
-<span class="sourceLineNo">1510</span> addRegionStateToPut(put, RegionState.State.CLOSED);<a name="line.1510"></a>
-<span class="sourceLineNo">1511</span> // Add empty locations for region replicas so that number of replicas can be cached<a name="line.1511"></a>
-<span class="sourceLineNo">1512</span> // whenever the primary region is looked up from meta<a name="line.1512"></a>
-<span class="sourceLineNo">1513</span> for (int i = 1; i < regionReplication; i++) {<a name="line.1513"></a>
-<span class="sourceLineNo">1514</span> addEmptyLocation(put, i);<a name="line.1514"></a>
-<span class="sourceLineNo">1515</span> }<a name="line.1515"></a>
-<span class="sourceLineNo">1516</span> puts.add(put);<a name="line.1516"></a>
-<span class="sourceLineNo">1517</span> }<a name="line.1517"></a>
-<span class="sourceLineNo">1518</span> }<a name="line.1518"></a>
-<span class="sourceLineNo">1519</span> putsToMetaTable(connection, puts);<a name="line.1519"></a>
-<span class="sourceLineNo">1520</span> LOG.info("Added {} regions to meta.", puts.size());<a name="line.1520"></a>
-<span class="sourceLineNo">1521</span> }<a name="line.1521"></a>
-<span class="sourceLineNo">1522</span><a name="line.1522"></a>
-<span class="sourceLineNo">1523</span> /**<a name="line.1523"></a>
-<span class="sourceLineNo">1524</span> * Merge the two regions into one in an atomic operation. Deletes the two merging regions in<a name="line.1524"></a>
-<span class="sourceLineNo">1525</span> * hbase:meta and adds the merged region with the information of two merging regions.<a name="line.1525"></a>
-<span class="sourceLineNo">1526</span> * @param connection connection we're using<a name="line.1526"></a>
-<span class="sourceLineNo">1527</span> * @param mergedRegion the merged region<a name="line.1527"></a>
-<span class="sourceLineNo">1528</span> * @param regionA merge parent region A<a name="line.1528"></a>
-<span class="sourceLineNo">1529</span> * @param regionAOpenSeqNum the next open sequence id for region A, used by serial replication. -1<a name="line.1529"></a>
-<span class="sourceLineNo">1530</span> * if not necessary.<a name="line.1530"></a>
-<span class="sourceLineNo">1531</span> * @param regionB merge parent region B<a name="line.1531"></a>
-<span class="sourceLineNo">1532</span> * @param regionBOpenSeqNum the next open sequence id for region B, used by serial replication. -1<a name="line.1532"></a>
-<span class="sourceLineNo">1533</span> * if not necessary.<a name="line.1533"></a>
-<span class="sourceLineNo">1534</span> * @param sn the location of the region<a name="line.1534"></a>
-<span class="sourceLineNo">1535</span> */<a name="line.1535"></a>
-<span class="sourceLineNo">1536</span> public static void mergeRegions(Connection connection, RegionInfo mergedRegion,<a name="line.1536"></a>
-<span class="sourceLineNo">1537</span> RegionInfo regionA, long regionAOpenSeqNum, RegionInfo regionB, long regionBOpenSeqNum,<a name="line.1537"></a>
-<span class="sourceLineNo">1538</span> ServerName sn, int regionReplication) throws IOException {<a name="line.1538"></a>
-<span class="sourceLineNo">1539</span> try (Table meta = getMetaHTable(connection)) {<a name="line.1539"></a>
-<span class="sourceLineNo">1540</span> long time = EnvironmentEdgeManager.currentTime();<a name="line.1540"></a>
-<span class="sourceLineNo">1541</span> List<Mutation> mutations = new ArrayList<>();<a name="line.1541"></a>
-<span class="sourceLineNo">1542</span><a name="line.1542"></a>
-<span class="sourceLineNo">1543</span> List<RegionInfo> replicationParents = new ArrayList<>(2);<a name="line.1543"></a>
-<span class="sourceLineNo">1544</span> // Deletes for merging regions<a name="line.1544"></a>
-<span class="sourceLineNo">1545</span> mutations.add(makeDeleteFromRegionInfo(regionA, time));<a name="line.1545"></a>
-<span class="sourceLineNo">1546</span> if (regionAOpenSeqNum > 0) {<a name="line.1546"></a>
-<span class="sourceLineNo">1547</span> mutations.add(makePutForReplicationBarrier(regionA, regionAOpenSeqNum, time));<a name="line.1547"></a>
-<span class="sourceLineNo">1548</span> replicationParents.add(regionA);<a name="line.1548"></a>
-<span class="sourceLineNo">1549</span> }<a name="line.1549"></a>
-<span class="sourceLineNo">1550</span> mutations.add(makeDeleteFromRegionInfo(regionB, time));<a name="line.1550"></a>
-<span class="sourceLineNo">1551</span> if (regionBOpenSeqNum > 0) {<a name="line.1551"></a>
-<span class="sourceLineNo">1552</span> mutations.add(makePutForReplicationBarrier(regionB, regionBOpenSeqNum, time));<a name="line.1552"></a>
-<span class="sourceLineNo">1553</span> replicationParents.add(regionB);<a name="line.1553"></a>
-<span class="sourceLineNo">1554</span> }<a name="line.1554"></a>
-<span class="sourceLineNo">1555</span><a name="line.1555"></a>
-<span class="sourceLineNo">1556</span> // Put for parent<a name="line.1556"></a>
-<span class="sourceLineNo">1557</span> Put putOfMerged = makePutFromRegionInfo(mergedRegion, time);<a name="line.1557"></a>
-<span class="sourceLineNo">1558</span> putOfMerged.add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.1558"></a>
-<span class="sourceLineNo">1559</span> .setRow(putOfMerged.getRow())<a name="line.1559"></a>
-<span class="sourceLineNo">1560</span> .setFamily(HConstants.CATALOG_FAMILY)<a name="line.1560"></a>
-<span class="sourceLineNo">1561</span> .setQualifier(HConstants.MERGEA_QUALIFIER)<a name="line.1561"></a>
-<span class="sourceLineNo">1562</span> .setTimestamp(putOfMerged.getTimestamp())<a name="line.1562"></a>
-<span class="sourceLineNo">1563</span> .setType(Type.Put)<a name="line.1563"></a>
-<span class="sourceLineNo">1564</span> .setValue(RegionInfo.toByteArray(regionA))<a name="line.1564"></a>
-<span class="sourceLineNo">1565</span> .build())<a name="line.1565"></a>
-<span class="sourceLineNo">1566</span> .add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.1566"></a>
+<span class="sourceLineNo">1349</span> if (ps.isEmpty()) {<a name="line.1349"></a>
+<span class="sourceLineNo">1350</span> return;<a name="line.1350"></a>
+<span class="sourceLineNo">1351</span> }<a name="line.1351"></a>
+<span class="sourceLineNo">1352</span> try (Table t = getMetaHTable(connection)) {<a name="line.1352"></a>
+<span class="sourceLineNo">1353</span> debugLogMutations(ps);<a name="line.1353"></a>
+<span class="sourceLineNo">1354</span> // the implementation for putting a single Put is much simpler so here we do a check first.<a name="line.1354"></a>
+<span class="sourceLineNo">1355</span> if (ps.size() == 1) {<a name="line.1355"></a>
+<span class="sourceLineNo">1356</span> t.put(ps.get(0));<a name="line.1356"></a>
+<span class="sourceLineNo">1357</span> } else {<a name="line.1357"></a>
+<span class="sourceLineNo">1358</span> t.put(ps);<a name="line.1358"></a>
+<span class="sourceLineNo">1359</span> }<a name="line.1359"></a>
+<span class="sourceLineNo">1360</span> }<a name="line.1360"></a>
+<span class="sourceLineNo">1361</span> }<a name="line.1361"></a>
+<span class="sourceLineNo">1362</span><a name="line.1362"></a>
+<span class="sourceLineNo">1363</span> /**<a name="line.1363"></a>
+<span class="sourceLineNo">1364</span> * Delete the passed <code>d</code> from the <code>hbase:meta</code> table.<a name="line.1364"></a>
+<span class="sourceLineNo">1365</span> * @param connection connection we're using<a name="line.1365"></a>
+<span class="sourceLineNo">1366</span> * @param d Delete to add to hbase:meta<a name="line.1366"></a>
+<span class="sourceLineNo">1367</span> */<a name="line.1367"></a>
+<span class="sourceLineNo">1368</span> private static void deleteFromMetaTable(final Connection connection, final Delete d)<a name="line.1368"></a>
+<span class="sourceLineNo">1369</span> throws IOException {<a name="line.1369"></a>
+<span class="sourceLineNo">1370</span> List<Delete> dels = new ArrayList<>(1);<a name="line.1370"></a>
+<span class="sourceLineNo">1371</span> dels.add(d);<a name="line.1371"></a>
+<span class="sourceLineNo">1372</span> deleteFromMetaTable(connection, dels);<a name="line.1372"></a>
+<span class="sourceLineNo">1373</span> }<a name="line.1373"></a>
+<span class="sourceLineNo">1374</span><a name="line.1374"></a>
+<span class="sourceLineNo">1375</span> /**<a name="line.1375"></a>
+<span class="sourceLineNo">1376</span> * Delete the passed <code>deletes</code> from the <code>hbase:meta</code> table.<a name="line.1376"></a>
+<span class="sourceLineNo">1377</span> * @param connection connection we're using<a name="line.1377"></a>
+<span class="sourceLineNo">1378</span> * @param deletes Deletes to add to hbase:meta This list should support #remove.<a name="line.1378"></a>
+<span class="sourceLineNo">1379</span> */<a name="line.1379"></a>
+<span class="sourceLineNo">1380</span> private static void deleteFromMetaTable(final Connection connection, final List<Delete> deletes)<a name="line.1380"></a>
+<span class="sourceLineNo">1381</span> throws IOException {<a name="line.1381"></a>
+<span class="sourceLineNo">1382</span> try (Table t = getMetaHTable(connection)) {<a name="line.1382"></a>
+<span class="sourceLineNo">1383</span> debugLogMutations(deletes);<a name="line.1383"></a>
+<span class="sourceLineNo">1384</span> t.delete(deletes);<a name="line.1384"></a>
+<span class="sourceLineNo">1385</span> }<a name="line.1385"></a>
+<span class="sourceLineNo">1386</span> }<a name="line.1386"></a>
+<span class="sourceLineNo">1387</span><a name="line.1387"></a>
+<span class="sourceLineNo">1388</span> /**<a name="line.1388"></a>
+<span class="sourceLineNo">1389</span> * Deletes some replica columns corresponding to replicas for the passed rows<a name="line.1389"></a>
+<span class="sourceLineNo">1390</span> * @param metaRows rows in hbase:meta<a name="line.1390"></a>
+<span class="sourceLineNo">1391</span> * @param replicaIndexToDeleteFrom the replica ID we would start deleting from<a name="line.1391"></a>
+<span class="sourceLineNo">1392</span> * @param numReplicasToRemove how many replicas to remove<a name="line.1392"></a>
+<span class="sourceLineNo">1393</span> * @param connection connection we're using to access meta table<a name="line.1393"></a>
+<span class="sourceLineNo">1394</span> */<a name="line.1394"></a>
+<span class="sourceLineNo">1395</span> public static void removeRegionReplicasFromMeta(Set<byte[]> metaRows,<a name="line.1395"></a>
+<span class="sourceLineNo">1396</span> int replicaIndexToDeleteFrom, int numReplicasToRemove, Connection connection)<a name="line.1396"></a>
+<span class="sourceLineNo">1397</span> throws IOException {<a name="line.1397"></a>
+<span class="sourceLineNo">1398</span> int absoluteIndex = replicaIndexToDeleteFrom + numReplicasToRemove;<a name="line.1398"></a>
+<span class="sourceLineNo">1399</span> for (byte[] row : metaRows) {<a name="line.1399"></a>
+<span class="sourceLineNo">1400</span> long now = EnvironmentEdgeManager.currentTime();<a name="line.1400"></a>
+<span class="sourceLineNo">1401</span> Delete deleteReplicaLocations = new Delete(row);<a name="line.1401"></a>
+<span class="sourceLineNo">1402</span> for (int i = replicaIndexToDeleteFrom; i < absoluteIndex; i++) {<a name="line.1402"></a>
+<span class="sourceLineNo">1403</span> deleteReplicaLocations.addColumns(getCatalogFamily(),<a name="line.1403"></a>
+<span class="sourceLineNo">1404</span> getServerColumn(i), now);<a name="line.1404"></a>
+<span class="sourceLineNo">1405</span> deleteReplicaLocations.addColumns(getCatalogFamily(),<a name="line.1405"></a>
+<span class="sourceLineNo">1406</span> getSeqNumColumn(i), now);<a name="line.1406"></a>
+<span class="sourceLineNo">1407</span> deleteReplicaLocations.addColumns(getCatalogFamily(),<a name="line.1407"></a>
+<span class="sourceLineNo">1408</span> getStartCodeColumn(i), now);<a name="line.1408"></a>
+<span class="sourceLineNo">1409</span> }<a name="line.1409"></a>
+<span class="sourceLineNo">1410</span> deleteFromMetaTable(connection, deleteReplicaLocations);<a name="line.1410"></a>
+<span class="sourceLineNo">1411</span> }<a name="line.1411"></a>
+<span class="sourceLineNo">1412</span> }<a name="line.1412"></a>
+<span class="sourceLineNo">1413</span><a name="line.1413"></a>
+<span class="sourceLineNo">1414</span> /**<a name="line.1414"></a>
+<span class="sourceLineNo">1415</span> * Execute the passed <code>mutations</code> against <code>hbase:meta</code> table.<a name="line.1415"></a>
+<span class="sourceLineNo">1416</span> * @param connection connection we're using<a name="line.1416"></a>
+<span class="sourceLineNo">1417</span> * @param mutations Puts and Deletes to execute on hbase:meta<a name="line.1417"></a>
+<span class="sourceLineNo">1418</span> * @throws IOException<a name="line.1418"></a>
+<span class="sourceLineNo">1419</span> */<a name="line.1419"></a>
+<span class="sourceLineNo">1420</span> public static void mutateMetaTable(final Connection connection,<a name="line.1420"></a>
+<span class="sourceLineNo">1421</span> final List<Mutation> mutations)<a name="line.1421"></a>
+<span class="sourceLineNo">1422</span> throws IOException {<a name="line.1422"></a>
+<span class="sourceLineNo">1423</span> Table t = getMetaHTable(connection);<a name="line.1423"></a>
+<span class="sourceLineNo">1424</span> try {<a name="line.1424"></a>
+<span class="sourceLineNo">1425</span> debugLogMutations(mutations);<a name="line.1425"></a>
+<span class="sourceLineNo">1426</span> t.batch(mutations, null);<a name="line.1426"></a>
+<span class="sourceLineNo">1427</span> } catch (InterruptedException e) {<a name="line.1427"></a>
+<span class="sourceLineNo">1428</span> InterruptedIOException ie = new InterruptedIOException(e.getMessage());<a name="line.1428"></a>
+<span class="sourceLineNo">1429</span> ie.initCause(e);<a name="line.1429"></a>
+<span class="sourceLineNo">1430</span> throw ie;<a name="line.1430"></a>
+<span class="sourceLineNo">1431</span> } finally {<a name="line.1431"></a>
+<span class="sourceLineNo">1432</span> t.close();<a name="line.1432"></a>
+<span class="sourceLineNo">1433</span> }<a name="line.1433"></a>
+<span class="sourceLineNo">1434</span> }<a name="line.1434"></a>
+<span class="sourceLineNo">1435</span><a name="line.1435"></a>
+<span class="sourceLineNo">1436</span> private static void addRegionStateToPut(Put put, RegionState.State state) throws IOException {<a name="line.1436"></a>
+<span class="sourceLineNo">1437</span> put.add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.1437"></a>
+<span class="sourceLineNo">1438</span> .setRow(put.getRow())<a name="line.1438"></a>
+<span class="sourceLineNo">1439</span> .setFamily(HConstants.CATALOG_FAMILY)<a name="line.1439"></a>
+<span class="sourceLineNo">1440</span> .setQualifier(getRegionStateColumn())<a name="line.1440"></a>
+<span class="sourceLineNo">1441</span> .setTimestamp(put.getTimestamp())<a name="line.1441"></a>
+<span class="sourceLineNo">1442</span> .setType(Cell.Type.Put)<a name="line.1442"></a>
+<span class="sourceLineNo">1443</span> .setValue(Bytes.toBytes(state.name()))<a name="line.1443"></a>
+<span class="sourceLineNo">1444</span> .build());<a name="line.1444"></a>
+<span class="sourceLineNo">1445</span> }<a name="line.1445"></a>
+<span class="sourceLineNo">1446</span><a name="line.1446"></a>
+<span class="sourceLineNo">1447</span> /**<a name="line.1447"></a>
+<span class="sourceLineNo">1448</span> * Adds daughter region infos to hbase:meta row for the specified region. Note that this does not<a name="line.1448"></a>
+<span class="sourceLineNo">1449</span> * add its daughter's as different rows, but adds information about the daughters in the same row<a name="line.1449"></a>
+<span class="sourceLineNo">1450</span> * as the parent. Use<a name="line.1450"></a>
+<span class="sourceLineNo">1451</span> * {@link #splitRegion(Connection, RegionInfo, long, RegionInfo, RegionInfo, ServerName, int)}<a name="line.1451"></a>
+<span class="sourceLineNo">1452</span> * if you want to do that.<a name="line.1452"></a>
+<span class="sourceLineNo">1453</span> * @param connection connection we're using<a name="line.1453"></a>
+<span class="sourceLineNo">1454</span> * @param regionInfo RegionInfo of parent region<a name="line.1454"></a>
+<span class="sourceLineNo">1455</span> * @param splitA first split daughter of the parent regionInfo<a name="line.1455"></a>
+<span class="sourceLineNo">1456</span> * @param splitB second split daughter of the parent regionInfo<a name="line.1456"></a>
+<span class="sourceLineNo">1457</span> * @throws IOException if problem connecting or updating meta<a name="line.1457"></a>
+<span class="sourceLineNo">1458</span> */<a name="line.1458"></a>
+<span class="sourceLineNo">1459</span> public static void addSplitsToParent(Connection connection, RegionInfo regionInfo,<a name="line.1459"></a>
+<span class="sourceLineNo">1460</span> RegionInfo splitA, RegionInfo splitB) throws IOException {<a name="line.1460"></a>
+<span class="sourceLineNo">1461</span> Table meta = getMetaHTable(connection);<a name="line.1461"></a>
+<span class="sourceLineNo">1462</span> try {<a name="line.1462"></a>
+<span class="sourceLineNo">1463</span> Put put = makePutFromRegionInfo(regionInfo, EnvironmentEdgeManager.currentTime());<a name="line.1463"></a>
+<span class="sourceLineNo">1464</span> addDaughtersToPut(put, splitA, splitB);<a name="line.1464"></a>
+<span class="sourceLineNo">1465</span> meta.put(put);<a name="line.1465"></a>
+<span class="sourceLineNo">1466</span> debugLogMutation(put);<a name="line.1466"></a>
+<span class="sourceLineNo">1467</span> LOG.debug("Added region {}", regionInfo.getRegionNameAsString());<a name="line.1467"></a>
+<span class="sourceLineNo">1468</span> } finally {<a name="line.1468"></a>
+<span class="sourceLineNo">1469</span> meta.close();<a name="line.1469"></a>
+<span class="sourceLineNo">1470</span> }<a name="line.1470"></a>
+<span class="sourceLineNo">1471</span> }<a name="line.1471"></a>
+<span class="sourceLineNo">1472</span><a name="line.1472"></a>
+<span class="sourceLineNo">1473</span> /**<a name="line.1473"></a>
+<span class="sourceLineNo">1474</span> * Adds a (single) hbase:meta row for the specified new region and its daughters. Note that this<a name="line.1474"></a>
+<span class="sourceLineNo">1475</span> * does not add its daughter's as different rows, but adds information about the daughters<a name="line.1475"></a>
+<span class="sourceLineNo">1476</span> * in the same row as the parent. Use<a name="line.1476"></a>
+<span class="sourceLineNo">1477</span> * {@link #splitRegion(Connection, RegionInfo, long, RegionInfo, RegionInfo, ServerName, int)}<a name="line.1477"></a>
+<span class="sourceLineNo">1478</span> * if you want to do that.<a name="line.1478"></a>
+<span class="sourceLineNo">1479</span> * @param connection connection we're using<a name="line.1479"></a>
+<span class="sourceLineNo">1480</span> * @param regionInfo region information<a name="line.1480"></a>
+<span class="sourceLineNo">1481</span> * @throws IOException if problem connecting or updating meta<a name="line.1481"></a>
+<span class="sourceLineNo">1482</span> */<a name="line.1482"></a>
+<span class="sourceLineNo">1483</span> @VisibleForTesting<a name="line.1483"></a>
+<span class="sourceLineNo">1484</span> public static void addRegionToMeta(Connection connection, RegionInfo regionInfo)<a name="line.1484"></a>
+<span class="sourceLineNo">1485</span> throws IOException {<a name="line.1485"></a>
+<span class="sourceLineNo">1486</span> addRegionsToMeta(connection, Collections.singletonList(regionInfo), 1);<a name="line.1486"></a>
+<span class="sourceLineNo">1487</span> }<a name="line.1487"></a>
+<span class="sourceLineNo">1488</span><a name="line.1488"></a>
+<span class="sourceLineNo">1489</span> /**<a name="line.1489"></a>
+<span class="sourceLineNo">1490</span> * Adds a hbase:meta row for each of the specified new regions. Initial state for new regions<a name="line.1490"></a>
+<span class="sourceLineNo">1491</span> * is CLOSED.<a name="line.1491"></a>
+<span class="sourceLineNo">1492</span> * @param connection connection we're using<a name="line.1492"></a>
+<span class="sourceLineNo">1493</span> * @param regionInfos region information list<a name="line.1493"></a>
+<span class="sourceLineNo">1494</span> * @throws IOException if problem connecting or updating meta<a name="line.1494"></a>
+<span class="sourceLineNo">1495</span> */<a name="line.1495"></a>
+<span class="sourceLineNo">1496</span> public static void addRegionsToMeta(Connection connection, List<RegionInfo> regionInfos,<a name="line.1496"></a>
+<span class="sourceLineNo">1497</span> int regionReplication) throws IOException {<a name="line.1497"></a>
+<span class="sourceLineNo">1498</span> addRegionsToMeta(connection, regionInfos, regionReplication,<a name="line.1498"></a>
+<span class="sourceLineNo">1499</span> EnvironmentEdgeManager.currentTime());<a name="line.1499"></a>
+<span class="sourceLineNo">1500</span> }<a name="line.1500"></a>
+<span class="sourceLineNo">1501</span><a name="line.1501"></a>
+<span class="sourceLineNo">1502</span> /**<a name="line.1502"></a>
+<span class="sourceLineNo">1503</span> * Adds a hbase:meta row for each of the specified new regions. Initial state for new regions<a name="line.1503"></a>
+<span class="sourceLineNo">1504</span> * is CLOSED.<a name="line.1504"></a>
+<span class="sourceLineNo">1505</span> * @param connection connection we're using<a name="line.1505"></a>
+<span class="sourceLineNo">1506</span> * @param regionInfos region information list<a name="line.1506"></a>
+<span class="sourceLineNo">1507</span> * @param regionReplication<a name="line.1507"></a>
+<span class="sourceLineNo">1508</span> * @param ts desired timestamp<a name="line.1508"></a>
+<span class="sourceLineNo">1509</span> * @throws IOException if problem connecting or updating meta<a name="line.1509"></a>
+<span class="sourceLineNo">1510</span> */<a name="line.1510"></a>
+<span class="sourceLineNo">1511</span> private static void addRegionsToMeta(Connection connection, List<RegionInfo> regionInfos,<a name="line.1511"></a>
+<span class="sourceLineNo">1512</span> int regionReplication, long ts) throws IOException {<a name="line.1512"></a>
+<span class="sourceLineNo">1513</span> List<Put> puts = new ArrayList<>();<a name="line.1513"></a>
+<span class="sourceLineNo">1514</span> for (RegionInfo regionInfo : regionInfos) {<a name="line.1514"></a>
+<span class="sourceLineNo">1515</span> if (RegionReplicaUtil.isDefaultReplica(regionInfo)) {<a name="line.1515"></a>
+<span class="sourceLineNo">1516</span> Put put = makePutFromRegionInfo(regionInfo, ts);<a name="line.1516"></a>
+<span class="sourceLineNo">1517</span> // New regions are added with initial state of CLOSED.<a name="line.1517"></a>
+<span class="sourceLineNo">1518</span> addRegionStateToPut(put, RegionState.State.CLOSED);<a name="line.1518"></a>
+<span class="sourceLineNo">1519</span> // Add empty locations for region replicas so that number of replicas can be cached<a name="line.1519"></a>
+<span class="sourceLineNo">1520</span> // whenever the primary region is looked up from meta<a name="line.1520"></a>
+<span class="sourceLineNo">1521</span> for (int i = 1; i < regionReplication; i++) {<a name="line.1521"></a>
+<span class="sourceLineNo">1522</span> addEmptyLocation(put, i);<a name="line.1522"></a>
+<span class="sourceLineNo">1523</span> }<a name="line.1523"></a>
+<span class="sourceLineNo">1524</span> puts.add(put);<a name="line.1524"></a>
+<span class="sourceLineNo">1525</span> }<a name="line.1525"></a>
+<span class="sourceLineNo">1526</span> }<a name="line.1526"></a>
+<span class="sourceLineNo">1527</span> putsToMetaTable(connection, puts);<a name="line.1527"></a>
+<span class="sourceLineNo">1528</span> LOG.info("Added {} regions to meta.", puts.size());<a name="line.1528"></a>
+<span class="sourceLineNo">1529</span> }<a name="line.1529"></a>
+<span class="sourceLineNo">1530</span><a name="line.1530"></a>
+<span class="sourceLineNo">1531</span> /**<a name="line.1531"></a>
+<span class="sourceLineNo">1532</span> * Merge the two regions into one in an atomic operation. Deletes the two merging regions in<a name="line.1532"></a>
+<span class="sourceLineNo">1533</span> * hbase:meta and adds the merged region with the information of two merging regions.<a name="line.1533"></a>
+<span class="sourceLineNo">1534</span> * @param connection connection we're using<a name="line.1534"></a>
+<span class="sourceLineNo">1535</span> * @param mergedRegion the merged region<a name="line.1535"></a>
+<span class="sourceLineNo">1536</span> * @param regionA merge parent region A<a name="line.1536"></a>
+<span class="sourceLineNo">1537</span> * @param regionAOpenSeqNum the next open sequence id for region A, used by serial replication. -1<a name="line.1537"></a>
+<span class="sourceLineNo">1538</span> * if not necessary.<a name="line.1538"></a>
+<span class="sourceLineNo">1539</span> * @param regionB merge parent region B<a name="line.1539"></a>
+<span class="sourceLineNo">1540</span> * @param regionBOpenSeqNum the next open sequence id for region B, used by serial replication. -1<a name="line.1540"></a>
+<span class="sourceLineNo">1541</span> * if not necessary.<a name="line.1541"></a>
+<span class="sourceLineNo">1542</span> * @param sn the location of the region<a name="line.1542"></a>
+<span class="sourceLineNo">1543</span> */<a name="line.1543"></a>
+<span class="sourceLineNo">1544</span> public static void mergeRegions(Connection connection, RegionInfo mergedRegion,<a name="line.1544"></a>
+<span class="sourceLineNo">1545</span> RegionInfo regionA, long regionAOpenSeqNum, RegionInfo regionB, long regionBOpenSeqNum,<a name="line.1545"></a>
+<span class="sourceLineNo">1546</span> ServerName sn, int regionReplication) throws IOException {<a name="line.1546"></a>
+<span class="sourceLineNo">1547</span> try (Table meta = getMetaHTable(connection)) {<a name="line.1547"></a>
+<span class="sourceLineNo">1548</span> long time = EnvironmentEdgeManager.currentTime();<a name="line.1548"></a>
+<span class="sourceLineNo">1549</span> List<Mutation> mutations = new ArrayList<>();<a name="line.1549"></a>
+<span class="sourceLineNo">1550</span><a name="line.1550"></a>
+<span class="sourceLineNo">1551</span> List<RegionInfo> replicationParents = new ArrayList<>(2);<a name="line.1551"></a>
+<span class="sourceLineNo">1552</span> // Deletes for merging regions<a name="line.1552"></a>
+<span class="sourceLineNo">1553</span> mutations.add(makeDeleteFromRegionInfo(regionA, time));<a name="line.1553"></a>
+<span class="sourceLineNo">1554</span> if (regionAOpenSeqNum > 0) {<a name="line.1554"></a>
+<span class="sourceLineNo">1555</span> mutations.add(makePutForReplicationBarrier(regionA, regionAOpenSeqNum, time));<a name="line.1555"></a>
+<span class="sourceLineNo">1556</span> replicationParents.add(regionA);<a name="line.1556"></a>
+<span class="sourceLineNo">1557</span> }<a name="line.1557"></a>
+<span class="sourceLineNo">1558</span> mutations.add(makeDeleteFromRegionInfo(regionB, time));<a name="line.1558"></a>
+<span class="sourceLineNo">1559</span> if (regionBOpenSeqNum > 0) {<a name="line.1559"></a>
+<span class="sourceLineNo">1560</span> mutations.add(makePutForReplicationBarrier(regionB, regionBOpenSeqNum, time));<a name="line.1560"></a>
+<span class="sourceLineNo">1561</span> replicationParents.add(regionB);<a name="line.1561"></a>
+<span class="sourceLineNo">1562</span> }<a name="line.1562"></a>
+<span class="sourceLineNo">1563</span><a name="line.1563"></a>
+<span class="sourceLineNo">1564</span> // Put for parent<a name="line.1564"></a>
+<span class="sourceLineNo">1565</span> Put putOfMerged = makePutFromRegionInfo(mergedRegion, time);<a name="line.1565"></a>
+<span class="sourceLineNo">1566</span> putOfMerged.add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.1566"></a>
<span class="sourceLineNo">1567</span> .setRow(putOfMerged.getRow())<a name="line.1567"></a>
<span class="sourceLineNo">1568</span> .setFamily(HConstants.CATALOG_FAMILY)<a name="line.1568"></a>
-<span class="sourceLineNo">1569</span> .setQualifier(HConstants.MERGEB_QUALIFIER)<a name="line.1569"></a>
+<span class="sourceLineNo">1569</span> .setQualifier(HConstants.MERGEA_QUALIFIER)<a name="line.1569"></a>
<span class="sourceLineNo">1570</span> .setTimestamp(putOfMerged.getTimestamp())<a name="line.1570"></a>
<span class="sourceLineNo">1571</span> .setType(Type.Put)<a name="line.1571"></a>
-<span class="sourceLineNo">1572</span> .setValue(RegionInfo.toByteArray(regionB))<a name="line.1572"></a>
-<span class="sourceLineNo">1573</span> .build());<a name="line.1573"></a>
-<span class="sourceLineNo">1574</span> // Set initial state to CLOSED<a name="line.1574"></a>
-<span class="sourceLineNo">1575</span> // NOTE: If initial state is not set to CLOSED then merged region gets added with the<a name="line.1575"></a>
-<span class="sourceLineNo">1576</span> // default OFFLINE state. If Master gets restarted after this step, start up sequence of<a name="line.1576"></a>
-<span class="sourceLineNo">1577</span> // master tries to assign this offline region. This is followed by re-assignments of the<a name="line.1577"></a>
-<span class="sourceLineNo">1578</span> // merged region from resumed {@link MergeTableRegionsProcedure}<a name="line.1578"></a>
-<span class="sourceLineNo">1579</span> addRegionStateToPut(putOfMerged, RegionState.State.CLOSED);<a name="line.1579"></a>
-<span class="sourceLineNo">1580</span> mutations.add(putOfMerged);<a name="line.1580"></a>
-<span class="sourceLineNo">1581</span> // The merged is a new region, openSeqNum = 1 is fine. ServerName may be null<a name="line.1581"></a>
-<span class="sourceLineNo">1582</span> // if crash after merge happened but before we got to here.. means in-memory<a name="line.1582"></a>
-<span class="sourceLineNo">1583</span> // locations of offlined merged, now-closed, regions is lost. Should be ok. We<a name="line.1583"></a>
-<span class="sourceLineNo">1584</span> // assign the merged region later.<a name="line.1584"></a>
-<span class="sourceLineNo">1585</span> if (sn != null) {<a name="line.1585"></a>
-<span class="sourceLineNo">1586</span> addLocation(putOfMerged, sn, 1, mergedRegion.getReplicaId());<a name="line.1586"></a>
-<span class="sourceLineNo">1587</span> }<a name="line.1587"></a>
-<span class="sourceLineNo">1588</span><a name="line.1588"></a>
-<span class="sourceLineNo">1589</span> // Add empty locations for region replicas of the merged region so that number of replicas can<a name="line.1589"></a>
-<span class="sourceLineNo">1590</span> // be cached whenever the primary region is looked up from meta<a name="line.1590"></a>
-<span class="sourceLineNo">1591</span> for (int i = 1; i < regionReplication; i++) {<a name="line.1591"></a>
-<span class="sourceLineNo">1592</span> addEmptyLocation(putOfMerged, i);<a name="line.1592"></a>
-<span class="sourceLineNo">1593</span> }<a name="line.1593"></a>
-<span class="sourceLineNo">1594</span> // add parent reference for serial replication<a name="line.1594"></a>
-<span class="sourceLineNo">1595</span> if (!replicationParents.isEmpty()) {<a name="line.1595"></a>
-<span class="sourceLineNo">1596</span> addReplicationParent(putOfMerged, replicationParents);<a name="line.1596"></a>
-<span class="sourceLineNo">1597</span> }<a name="line.1597"></a>
-<span class="sourceLineNo">1598</span> byte[] tableRow = Bytes.toBytes(mergedRegion.getRegionNameAsString() + HConstants.DELIMITER);<a name="line.1598"></a>
-<span class="sourceLineNo">1599</span> multiMutate(connection, meta, tableRow, mutations);<a name="line.1599"></a>
-<span class="sourceLineNo">1600</span> }<a name="line.1600"></a>
-<span class="sourceLineNo">1601</span> }<a name="line.1601"></a>
-<span class="sourceLineNo">1602</span><a name="line.1602"></a>
-<span class="sourceLineNo">1603</span> /**<a name="line.1603"></a>
-<span class="sourceLineNo">1604</span> * Splits the region into two in an atomic operation. Offlines the parent region with the<a name="line.1604"></a>
-<span class="sourceLineNo">1605</span> * information that it is split into two, and also adds the daughter regions. Does not add the<a name="line.1605"></a>
-<span class="sourceLineNo">1606</span> * location information to the daughter regions since they are not open yet.<a name="line.1606"></a>
-<span class="sourceLineNo">1607</span> * @param connection connection we're using<a name="line.1607"></a>
-<span class="sourceLineNo">1608</span> * @param parent the parent region which is split<a name="line.1608"></a>
-<span class="sourceLineNo">1609</span> * @param parentOpenSeqNum the next open sequence id for parent region, used by serial<a name="line.1609"></a>
-<span class="sourceLineNo">1610</span> * replication. -1 if not necessary.<a name="line.1610"></a>
-<span class="sourceLineNo">1611</span> * @param splitA Split daughter region A<a name="line.1611"></a>
-<span class="sourceLineNo">1612</span> * @param splitB Split daughter region B<a name="line.1612"></a>
-<span class="sourceLineNo">1613</span> * @param sn the location of the region<a name="line.1613"></a>
-<span class="sourceLineNo">1614</span> */<a name="line.1614"></a>
-<span class="sourceLineNo">1615</span> public static void splitRegion(Connection connection, RegionInfo parent, long parentOpenSeqNum,<a name="line.1615"></a>
-<span class="sourceLineNo">1616</span> RegionInfo splitA, RegionInfo splitB, ServerName sn, int regionReplication)<a name="line.1616"></a>
-<span class="sourceLineNo">1617</span> throws IOException {<a name="line.1617"></a>
-<span class="sourceLineNo">1618</span> try (Table meta = getMetaHTable(connection)) {<a name="line.1618"></a>
-<span class="sourceLineNo">1619</span> long time = EnvironmentEdgeManager.currentTime();<a name="line.1619"></a>
-<span class="sourceLineNo">1620</span> // Put for parent<a name="line.1620"></a>
-<span class="sourceLineNo">1621</span> Put putParent = makePutFromRegionInfo(RegionInfoBuilder.newBuilder(parent)<a name="line.1621"></a>
-<span class="sourceLineNo">1622</span> .setOffline(true)<a name="line.1622"></a>
-<span class="sourceLineNo">1623</span> .setSplit(true).build(), time);<a name="line.1623"></a>
-<span class="sourceLineNo">1624</span> addDaughtersToPut(putParent, splitA, splitB);<a name="line.1624"></a>
-<span class="sourceLineNo">1625</span><a name="line.1625"></a>
-<span class="sourceLineNo">1626</span> // Puts for daughters<a name="line.1626"></a>
-<span class="sourceLineNo">1627</span> Put putA = makePutFromRegionInfo(splitA, time);<a name="line.1627"></a>
-<span class="sourceLineNo">1628</span> Put putB = makePutFromRegionInfo(splitB, time);<a name="line.1628"></a>
-<span class="sourceLineNo">1629</span> if (parentOpenSeqNum > 0) {<a name="line.1629"></a>
-<span class="sourceLineNo">1630</span> addReplicationBarrier(putParent, parentOpenSeqNum);<a name="line.1630"></a>
-<span class="sourceLineNo">1631</span> addReplicationParent(putA, Collections.singletonList(parent));<a name="line.1631"></a>
-<span class="sourceLineNo">1632</span> addReplicationParent(putB, Collections.singletonList(parent));<a name="line.1632"></a>
-<span class="sourceLineNo">1633</span> }<a name="line.1633"></a>
-<span class="sourceLineNo">1634</span> // Set initial state to CLOSED<a name="line.1634"></a>
-<span class="sourceLineNo">1635</span> // NOTE: If initial state is not set to CLOSED then daughter regions get added with the<a name="line.1635"></a>
-<span class="sourceLineNo">1636</span> // default OFFLINE state. If Master gets restarted after this step, start up sequence of<a name="line.1636"></a>
-<span class="sourceLineNo">1637</span> // master tries to assign these offline regions. This is followed by re-assignments of the<a name="line.1637"></a>
-<span class="sourceLineNo">1638</span> // daughter regions from resumed {@link SplitTableRegionProcedure}<a name="line.1638"></a>
-<span class="sourceLineNo">1639</span> addRegionStateToPut(putA, RegionState.State.CLOSED);<a name="line.1639"></a>
-<span class="sourceLineNo">1640</span> addRegionStateToPut(putB, RegionState.State.CLOSED);<a name="line.1640"></a>
-<span class="sourceLineNo">1641</span><a name="line.1641"></a>
-<span class="sourceLineNo">1642</span> addSequenceNum(putA, 1, splitA.getReplicaId()); // new regions, openSeqNum = 1 is fine.<a name="line.1642"></a>
-<span class="sourceLineNo">1643</span> addSequenceNum(putB, 1, splitB.getReplicaId());<a name="line.1643"></a>
-<span class="sourceLineNo">1644</span><a name="line.1644"></a>
-<span class="sourceLineNo">1645</span> // Add empty locations for region replicas of daughters so that number of replicas can be<a name="line.1645"></a>
-<span class="sourceLineNo">1646</span> // cached whenever the primary region is looked up from meta<a name="line.1646"></a>
-<span class="sourceLineNo">1647</span> for (int i = 1; i < regionReplication; i++) {<a name="line.1647"></a>
-<span class="sourceLineNo">1648</span> addEmptyLocation(putA, i);<a name="line.1648"></a>
-<span class="sourceLineNo">1649</span> addEmptyLocation(putB, i);<a name="line.1649"></a>
-<span class="sourceLineNo">1650</span> }<a name="line.1650"></a>
-<span class="sourceLineNo">1651</span><a name="line.1651"></a>
-<span class="sourceLineNo">1652</span> byte[] tableRow = Bytes.toBytes(parent.getRegionNameAsString() + HConstants.DELIMITER);<a name="line.1652"></a>
-<span class="sourceLineNo">1653</span> multiMutate(connection, meta, tableRow, putParent, putA, putB);<a name="line.1653"></a>
-<span class="sourceLineNo">1654</span> }<a name="line.1654"></a>
-<span class="sourceLineNo">1655</span> }<a name="line.1655"></a>
-<span class="sourceLineNo">1656</span><a name="line.1656"></a>
-<span class="sourceLineNo">1657</span> /**<a name="line.1657"></a>
-<span class="sourceLineNo">1658</span> * Update state of the table in meta.<a name="line.1658"></a>
-<span class="sourceLineNo">1659</span> * @param connection what we use for update<a name="line.1659"></a>
-<span class="sourceLineNo">1660</span> * @param state new state<a name="line.1660"></a>
-<span class="sourceLineNo">1661</span> */<a name="line.1661"></a>
-<span class="sourceLineNo">1662</span> private static void updateTableState(Connection connection, TableState state) throws IOException {<a name="line.1662"></a>
-<span class="sourceLineNo">1663</span> Put put = makePutFromTableState(state, EnvironmentEdgeManager.currentTime());<a name="line.1663"></a>
-<span class="sourceLineNo">1664</span> putToMetaTable(connection, put);<a name="line.1664"></a>
-<span class="sourceLineNo">1665</span> LOG.info("Updated {} in hbase:meta", state);<a name="line.1665"></a>
-<span class="sourceLineNo">1666</span> }<a name="line.1666"></a>
-<span class="sourceLineNo">1667</span><a name="line.1667"></a>
-<span class="sourceLineNo">1668</span> /**<a name="line.1668"></a>
-<span class="sourceLineNo">1669</span> * Construct PUT for given state<a name="line.1669"></a>
-<span class="sourceLineNo">1670</span> * @param state new state<a name="line.1670"></a>
-<span class="sourceLineNo">1671</span> */<a name="line.1671"></a>
-<span class="sourceLineNo">1672</span> public static Put makePutFromTableState(TableState state, long ts) {<a name="line.1672"></a>
-<span class="sourceLineNo">1673</span> Put put = new Put(state.getTableName().getName(), ts);<a name="line.1673"></a>
-<span class="sourceLineNo">1674</span> put.addColumn(getTableFamily(), getTableStateColumn(), state.convert().toByteArray());<a name="line.1674"></a>
-<span class="sourceLineNo">1675</span> return put;<a name="line.1675"></a>
-<span class="sourceLineNo">1676</span> }<a name="line.1676"></a>
-<span class="sourceLineNo">1677</span><a name="line.1677"></a>
-<span class="sourceLineNo">1678</span> /**<a name="line.1678"></a>
-<span class="sourceLineNo">1679</span> * Remove state for table from meta<a name="line.1679"></a>
-<span class="sourceLineNo">1680</span> * @param connection to use for deletion<a name="line.1680"></a>
-<span class="sourceLineNo">1681</span> * @param table to delete state for<a name="line.1681"></a>
-<span class="sourceLineNo">1682</span> */<a name="line.1682"></a>
-<span class="sourceLineNo">1683</span> public static void deleteTableState(Connection connection, TableName table)<a name="line.1683"></a>
-<span class="sourceLineNo">1684</span> throws IOException {<a name="line.1684"></a>
-<span class="sourceLineNo">1685</span> long time = EnvironmentEdgeManager.currentTime();<a name="line.1685"></a>
-<span class="sourceLineNo">1686</span> Delete delete = new Delete(table.getName());<a name="line.1686"></a>
-<span class="sourceLineNo">1687</span> delete.addColumns(getTableFamily(), getTableStateColumn(), time);<a name="line.1687"></a>
-<span class="sourceLineNo">1688</span> deleteFromMetaTable(connection, delete);<a name="line.1688"></a>
-<span class="sourceLineNo">1689</span> LOG.info("Deleted table " + table + " state from META");<a name="line.1689"></a>
-<span class="sourceLineNo">1690</span> }<a name="line.1690"></a>
-<span class="sourceLineNo">1691</span><a name="line.1691"></a>
-<span class="sourceLineNo">1692</span> private static void multiMutate(Connection connection, Table table, byte[] row,<a name="line.1692"></a>
-<span class="sourceLineNo">1693</span> Mutation... mutations) throws IOException {<a name="line.1693"></a>
-<span class="sourceLineNo">1694</span> multiMutate(connection, table, row, Arrays.asList(mutations));<a name="line.1694"></a>
-<span class="sourceLineNo">1695</span> }<a name="line.1695"></a>
-<span class="sourceLineNo">1696</span><a name="line.1696"></a>
-<span class="sourceLineNo">1697</span> /**<a name="line.1697"></a>
-<span class="sourceLineNo">1698</span> * Performs an atomic multi-mutate operation against the given table.<a name="line.1698"></a>
-<span class="sourceLineNo">1699</span> */<a name="line.1699"></a>
-<span class="sourceLineNo">1700</span> private static void multiMutate(Connection connection, final Table table, byte[] row,<a name="line.1700"></a>
-<span class="sourceLineNo">1701</span> final List<Mutation> mutations) throws IOException {<a name="line.1701"></a>
-<span class="sourceLineNo">1702</span> debugLogMutations(mutations);<a name="line.1702"></a>
-<span class="sourceLineNo">1703</span> // TODO: Need rollback!!!!<a name="line.1703"></a>
-<span class="sourceLineNo">1704</span> // TODO: Need Retry!!!<a name="line.1704"></a>
-<span class="sourceLineNo">1705</span> // TODO: What for a timeout? Default write timeout? GET FROM HTABLE?<a name="line.1705"></a>
-<span class="sourceLineNo">1706</span> // TODO: Review when we come through with ProcedureV2.<a name="line.1706"></a>
-<span class="sourceLineNo">1707</span> RegionServerCallable<MutateRowsResponse,<a name="line.1707"></a>
-<span class="sourceLineNo">1708</span> MultiRowMutationProtos.MultiRowMutationService.BlockingInterface> callable =<a name="line.1708"></a>
-<span class="sourceLineNo">1709</span> new RegionServerCallable<MutateRowsResponse,<a name="line.1709"></a>
-<span class="sourceLineNo">1710</span> MultiRowMutationProtos.MultiRowMutationService.BlockingInterface>(<a name="line.1710"></a>
-<span class="sourceLineNo">1711</span> connection, table.getName(), row, null/*RpcController not used in this CPEP!*/) {<a name="line.1711"></a>
-<span class="sourceLineNo">1712</span> @Override<a name="line.1712"></a>
-<span class="sourceLineNo">1713</span> protected MutateRowsResponse rpcCall() throws Exception {<a name="line.1713"></a>
-<span class="sourceLineNo">1714</span> final MutateRowsRequest.Builder builder = MutateRowsRequest.newBuilder();<a name="line.1714"></a>
-<span class="sourceLineNo">1715</span> for (Mutation mutation : mutations) {<a name="line.1715"></a>
-<span class="sourceLineNo">1716</span> if (mutation instanceof Put) {<a name="line.1716"></a>
-<span class="sourceLineNo">1717</span> builder.addMutationRequest(ProtobufUtil.toMutation(<a name="line.1717"></a>
-<span class="sourceLineNo">1718</span> ClientProtos.MutationProto.MutationType.PUT, mutation));<a name="line.1718"></a>
-<span class="sourceLineNo">1719</span> } else if (mutation instanceof Delete) {<a name="line.1719"></a>
-<span class="sourceLineNo">1720</span> builder.addMutationRequest(ProtobufUtil.toMutation(<a name="line.1720"></a>
-<span class="sourceLineNo">1721</span> ClientProtos.MutationProto.MutationType.DELETE, mutation));<a name="line.1721"></a>
-<span class="sourceLineNo">1722</span> } else {<a name="line.1722"></a>
-<span class="sourceLineNo">1723</span> throw new DoNotRetryIOException("multi in MetaEditor doesn't support "<a name="line.1723"></a>
-<span class="sourceLineNo">1724</span> + mutation.getClass().getName());<a name="line.1724"></a>
-<span class="sourceLineNo">1725</span> }<a name="line.1725"></a>
-<span class="sourceLineNo">1726</span> }<a name="line.1726"></a>
-<span class="sourceLineNo">1727</span> // The call to #prepare that ran before this invocation will have populated HRegionLocation.<a name="line.1727"></a>
-<span class="sourceLineNo">1728</span> HRegionLocation hrl = getLocation();<a name="line.1728"></a>
-<span class="sourceLineNo">1729</span> RegionSpecifier region = ProtobufUtil.buildRegionSpecifier(<a name="line.1729"></a>
-<span class="sourceLineNo">1730</span> RegionSpecifierType.REGION_NAME, hrl.getRegion().getRegionName());<a name="line.1730"></a>
-<span class="sourceLineNo">1731</span> builder.setRegion(region);<a name="line.1731"></a>
-<span class="sourceLineNo">1732</span> // The rpcController here is awkward. The Coprocessor Endpoint wants an instance of a<a name="line.1732"></a>
-<span class="sourceLineNo">1733</span> // com.google.protobuf but we are going over an rpc that is all shaded protobuf so it<a name="line.1733"></a>
-<span class="sourceLineNo">1734</span> // wants a org.apache.h.h.shaded.com.google.protobuf.RpcController. Set up a factory<a name="line.1734"></a>
-<span class="sourceLineNo">1735</span> // that makes com.google.protobuf.RpcController and then copy into it configs.<a name="line.1735"></a>
-<span class="sourceLineNo">1736</span> return getStub().mutateRows(null, builder.build());<a name="line.1736"></a>
-<span class="sourceLineNo">1737</span> }<a name="line.1737"></a>
-<span class="sourceLineNo">1738</span><a name="line.1738"></a>
-<span class="sourceLineNo">1739</span> @Override<a name="line.1739"></a>
-<span class="sourceLineNo">1740</span> // Called on the end of the super.prepare call. Set the stub.<a name="line.1740"></a>
-<span class="sourceLineNo">1741</span> protected void setStubByServiceName(ServerName serviceName/*Ignored*/) throws IOException {<a name="line.1741"></a>
-<span class="sourceLineNo">1742</span> CoprocessorRpcChannel channel = table.coprocessorService(getRow());<a name="line.1742"></a>
-<span class="sourceLineNo">1743</span> setStub(MultiRowMutationProtos.MultiRowMutationService.newBlockingStub(channel));<a name="line.1743"></a>
-<span class="sourceLineNo">1744</span> }<a name="line.1744"></a>
-<span class="sourceLineNo">1745</span> };<a name="line.1745"></a>
-<span class="sourceLineNo">1746</span> int writeTimeout = connection.getConfiguration().getInt(HConstants.HBASE_RPC_WRITE_TIMEOUT_KEY,<a name="line.1746"></a>
-<span class="sourceLineNo">1747</span> connection.getConfiguration().getInt(HConstants.HBASE_RPC_TIMEOUT_KEY,<a name="line.1747"></a>
-<span class="sourceLineNo">1748</span> HConstants.DEFAULT_HBASE_RPC_TIMEOUT));<a name="line.1748"></a>
-<span class="sourceLineNo">1749</span> // The region location should be cached in connection. Call prepare so this callable picks<a name="line.1749"></a>
-<span class="sourceLineNo">1750</span> // up the region location (see super.prepare method).<a name="line.1750"></a>
-<span class="sourceLineNo">1751</span> callable.prepare(false);<a name="line.1751"></a>
-<span class="sourceLineNo">1752</span> callable.call(writeTimeout);<a name="line.1752"></a>
-<span class="sourceLineNo">1753</span> }<a name="line.1753"></a>
-<span class="sourceLineNo">1754</span><a name="line.1754"></a>
-<span class="sourceLineNo">1755</span> /**<a name="line.1755"></a>
-<span class="sourceLineNo">1756</span> * Updates the location of the specified region in hbase:meta to be the specified server hostname<a name="line.1756"></a>
-<span class="sourceLineNo">1757</span> * and startcode.<a name="line.1757"></a>
-<span class="sourceLineNo">1758</span> * <p><a name="line.1758"></a>
-<span class="sourceLineNo">1759</span> * Uses passed catalog tracker to get a connection to the server hosting hbase:meta and makes<a name="line.1759"></a>
-<span class="sourceLineNo">1760</span> * edits to that region.<a name="line.1760"></a>
-<span class="sourceLineNo">1761</span> * @param connection connection we're using<a name="line.1761"></a>
-<span class="sourceLineNo">1762</span> * @param regionInfo region to update location of<a name="line.1762"></a>
-<span class="sourceLineNo">1763</span> * @param openSeqNum the latest sequence number obtained when the region was open<a name="line.1763"></a>
-<span class="sourceLineNo">1764</span> * @param sn Server name<a name="line.1764"></a>
-<span class="sourceLineNo">1765</span> * @param masterSystemTime wall clock time from master if passed in the open region RPC<a name="line.1765"></a>
-<span class="sourceLineNo">1766</span> */<a name="line.1766"></a>
-<span class="sourceLineNo">1767</span> @VisibleForTesting<a name="line.1767"></a>
-<span class="sourceLineNo">1768</span> public static void updateRegionLocation(Connection connection, RegionInfo regionInfo,<a name="line.1768"></a>
-<span class="sourceLineNo">1769</span> ServerName sn, long openSeqNum, long masterSystemTime) throws IOException {<a name="line.1769"></a>
-<span class="sourceLineNo">1770</span> updateLocation(connection, regionInfo, sn, openSeqNum, masterSystemTime);<a name="line.1770"></a>
-<span class="sourceLineNo">1771</span> }<a name="line.1771"></a>
-<span class="sourceLineNo">1772</span><a name="line.1772"></a>
-<span class="sourceLineNo">1773</span> /**<a name="line.1773"></a>
-<span class="sourceLineNo">1774</span> * Updates the location of the specified region to be the specified server.<a name="line.1774"></a>
-<span class="sourceLineNo">1775</span> * <p><a name="line.1775"></a>
-<span class="sourceLineNo">1776</span> * Connects to the specified server which should be hosting the specified catalog region name to<a name="line.1776"></a>
-<span class="sourceLineNo">1777</span> * perform the edit.<a name="line.1777"></a>
-<span class="sourceLineNo">1778</span> * @param connection connection we're using<a name="line.1778"></a>
-<span class="sourceLineNo">1779</span> * @param regionInfo region to update location of<a name="line.1779"></a>
-<span class="sourceLineNo">1780</span> * @param sn Server name<a name="line.1780"></a>
-<span class="sourceLineNo">1781</span> * @param openSeqNum the latest sequence number obtained when the region was open<a name="line.1781"></a>
-<span class="sourceLineNo">1782</span> * @param masterSystemTime wall clock time from master if passed in the open region RPC<a name="line.1782"></a>
-<span class="sourceLineNo">1783</span> * @throws IOException In particular could throw {@link java.net.ConnectException} if the server<a name="line.1783"></a>
-<span class="sourceLineNo">1784</span> * is down on other end.<a name="line.1784"></a>
-<span class="sourceLineNo">1785</span> */<a name="line.1785"></a>
-<span class="sourceLineNo">1786</span> private static void updateLocation(Connection connection, RegionInfo regionInfo, ServerName sn,<a name="line.1786"></a>
-<span class="sourceLineNo">1787</span> long openSeqNum, long masterSystemTime) throws IOException {<a name="line.1787"></a>
-<span class="sourceLineNo">1788</span> // region replicas are kept in the primary region's row<a name="line.1788"></a>
-<span class="sourceLineNo">1789</span> Put put = new Put(getMetaKeyForRegion(regionInfo), masterSystemTime);<a name="line.1789"></a>
-<span class="sourceLineNo">1790</span> addRegionInfo(put, regionInfo);<a name="line.1790"></a>
-<span class="sourceLineNo">1791</span> addLocation(put, sn, openSeqNum, regionInfo.getReplicaId());<a name="line.1791"></a>
-<span class="sourceLineNo">1792</span> putToMetaTable(connection, put);<a name="line.1792"></a>
-<span class="sourceLineNo">1793</span> LOG.info("Updated row {} with server=", regionInfo.getRegionNameAsString(), sn);<a name="line.1793"></a>
-<span class="sourceLineNo">1794</span> }<a name="line.1794"></a>
-<span class="sourceLineNo">1795</span><a name="line.1795"></a>
-<span class="sourceLineNo">1796</span> /**<a name="line.1796"></a>
-<span class="sourceLineNo">1797</span> * Deletes the specified region from META.<a name="line.1797"></a>
-<span class="sourceLineNo">1798</span> * @param connection connection we're using<a name="line.1798"></a>
-<span class="sourceLineNo">1799</span> * @param regionInfo region to be deleted from META<a name="line.1799"></a>
-<span class="sourceLineNo">1800</span> * @throws IOException<a name="line.1800"></a>
-<span class="sourceLineNo">1801</span> */<a name="line.1801"></a>
-<span class="sourceLineNo">1802</span> public static void deleteRegion(Connection connection, RegionInfo regionInfo) throws IOException {<a name="line.1802"></a>
-<span class="sourceLineNo">1803</span> long time = EnvironmentEdgeManager.currentTime();<a name="line.1803"></a>
-<span class="sourceLineNo">1804</span> Delete delete = new Delete(regionInfo.getRegionName());<a name="line.1804"></a>
-<span class="sourceLineNo">1805</span> delete.addFamily(getCatalogFamily(), time);<a name="line.1805"></a>
-<span class="sourceLineNo">1806</span> deleteFromMetaTable(connection, delete);<a name="line.1806"></a>
-<span class="sourceLineNo">1807</span> LOG.info("Deleted " + regionInfo.getRegionNameAsString());<a name="line.1807"></a>
-<span class="sourceLineNo">1808</span> }<a name="line.1808"></a>
-<span class="sourceLineNo">1809</span><a name="line.1809"></a>
-<span class="sourceLineNo">1810</span> /**<a name="line.1810"></a>
-<span class="sourceLineNo">1811</span> * Deletes the specified regions from META.<a name="line.1811"></a>
-<span class="sourceLineNo">1812</span> * @param connection connection we're using<a name="line.1812"></a>
-<span class="sourceLineNo">1813</span> * @param regionsInfo list of regions to be deleted from META<a name="line.1813"></a>
-<span class="sourceLineNo">1814</span> */<a name="line.1814"></a>
-<span class="sourceLineNo">1815</span> public static void deleteRegions(Connection connection, List<RegionInfo> regionsInfo)<a name="line.1815"></a>
-<span class="sourceLineNo">1816</span> throws IOException {<a name="line.1816"></a>
-<span class="sourceLineNo">1817</span> deleteRegions(connection, regionsInfo, EnvironmentEdgeManager.currentTime());<a name="line.1817"></a>
-<span class="sourceLineNo">1818</span> }<a name="line.1818"></a>
-<span class="sourceLineNo">1819</span> /**<a name="line.1819"></a>
-<span class="sourceLineNo">1820</span> * Deletes the specified regions from META.<a name="line.1820"></a>
-<span class="sourceLineNo">1821</span> * @param connection connection we're using<a name="line.1821"></a>
-<span class="sourceLineNo">1822</span> * @param regionsInfo list of regions to be deleted from META<a name="line.1822"></a>
-<span class="sourceLineNo">1823</span> */<a name="line.1823"></a>
-<span class="sourceLineNo">1824</span> public static void deleteRegions(Connection connection, List<RegionInfo> regionsInfo, long ts)<a name="line.1824"></a>
-<span class="sourceLineNo">1825</span> throws IOException {<a name="line.1825"></a>
-<span class="sourceLineNo">1826</span> List<Delete> deletes = new ArrayList<>(regionsInfo.size());<a name="line.1826"></a>
-<span class="sourceLineNo">1827</span> for (RegionInfo hri : regionsInfo) {<a name="line.1827"></a>
-<span class="sourceLineNo">1828</span> Delete e = new Delete(hri.getRegionName());<a name="line.1828"></a>
-<span class="sourceLineNo">1829</span> e.addFamily(getCatalogFamily(), ts);<a name="line.1829"></a>
-<span class="sourceLineNo">1830</span> deletes.add(e);<a name="line.1830"></a>
-<span class="sourceLineNo">1831</span> }<a name="line.1831"></a>
-<span class="sourceLineNo">1832</span> deleteFromMetaTable(connection, deletes);<a name="line.1832"></a>
-<span class="sourceLineNo">1833</span> LOG.info("Deleted {} regions from META", regionsInfo.size());<a name="line.1833"></a>
-<span class="sourceLineNo">1834</span> LOG.debug("Deleted regions: {}", regionsInfo);<a name="line.1834"></a>
-<span class="sourceLineNo">1835</span> }<a name="line.1835"></a>
-<span class="sourceLineNo">1836</span><a name="line.1836"></a>
-<span class="sourceLineNo">1837</span> /**<a name="line.1837"></a>
-<span class="sourceLineNo">1838</span> * Overwrites the specified regions from hbase:meta. Deletes old rows for the given regions and<a name="line.1838"></a>
-<span class="sourceLineNo">1839</span> * adds new ones. Regions added back have state CLOSED.<a name="line.1839"></a>
-<span class="sourceLineNo">1840</span> * @param connection connection we're using<a name="line.1840"></a>
-<span class="sourceLineNo">1841</span> * @param regionInfos list of regions to be added to META<a name="line.1841"></a>
-<span class="sourceLineNo">1842</span> */<a name="line.1842"></a>
-<span class="sourceLineNo">1843</span> public static void overwriteRegions(Connection connection,<a name="line.1843"></a>
-<span class="sourceLineNo">1844</span> List<RegionInfo> regionInfos, int regionReplication) throws IOException {<a name="line.1844"></a>
-<span class="sourceLineNo">1845</span> // use master time for delete marker and the Put<a name="line.1845"></a>
-<span class="sourceLineNo">1846</span> long now = EnvironmentEdgeManager.currentTime();<a name="line.1846"></a>
-<span class="sourceLineNo">1847</span> deleteRegions(connection, regionInfos, now);<a name="line.1847"></a>
-<span class="sourceLineNo">1848</span> // Why sleep? This is the easiest way to ensure that the previous deletes does not<a name="line.1848"></a>
-<span class="sourceLineNo">1849</span> // eclipse the following puts, that might happen in the same ts from the server.<a name="line.1849"></a>
-<span class="sourceLineNo">1850</span> // See HBASE-9906, and HBASE-9879. Once either HBASE-9879, HBASE-8770 is fixed,<a name="line.1850"></a>
-<span class="sourceLineNo">1851</span> // or HBASE-9905 is fixed and meta uses seqIds, we do not need the sleep.<a name="line.1851"></a>
-<span class="sourceLineNo">1852</span> //<a name="line.1852"></a>
-<span class="sourceLineNo">1853</span> // HBASE-13875 uses master timestamp for the mutations. The 20ms sleep is not needed<a name="line.1853"></a>
-<span class="sourceLineNo">1854</span> addRegionsToMeta(connection, regionInfos, regionReplication, now + 1);<a name="line.1854"></a>
-<span class="sourceLineNo">1855</span> LOG.info("Overwritten " + regionInfos.size() + " regions to Meta");<a name="line.1855"></a>
-<span class="sourceLineNo">1856</span> LOG.debug("Overwritten regions: {} ", regionInfos);<a name="line.1856"></a>
-<span class="sourceLineNo">1857</span> }<a name="line.1857"></a>
-<span class="sourceLineNo">1858</span><a name="line.1858"></a>
-<span class="sourceLineNo">1859</span> /**<a name="line.1859"></a>
-<span class="sourceLineNo">1860</span> * Deletes merge qualifiers for the specified merged region.<a name="line.1860"></a>
-<span class="sourceLineNo">1861</span> * @param connection connection we're using<a name="line.1861"></a>
-<span class="sourceLineNo">1862</span> * @param mergedRegion the merged region<a name="line.1862"></a>
-<span class="sourceLineNo">1863</span> */<a name="line.1863"></a>
-<span class="sourceLineNo">1864</span> public static void deleteMergeQualifiers(Connection connection, final RegionInfo mergedRegion)<a name="line.1864"></a>
-<span class="sourceLineNo">1865</span> throws IOException {<a name="line.1865"></a>
-<span class="sourceLineNo">1866</span> long time = EnvironmentEdgeManager.currentTime();<a name="line.1866"></a>
-<span class="sourceLineNo">1867</span> Delete delete = new Delete(mergedRegion.getRegionName());<a name="line.1867"></a>
-<span class="sourceLineNo">1868</span> delete.addColumns(getCatalogFamily(), HConstants.MERGEA_QUALIFIER, time);<a name="line.1868"></a>
-<span class="sourceLineNo">1869</span> delete.addColumns(getCatalogFamily(), HConstants.MERGEB_QUALIFIER, time);<a name="line.1869"></a>
-<span class="sourceLineNo">1870</span> deleteFromMetaTable(connection, delete);<a name="line.1870"></a>
-<span class="sourceLineNo">1871</span> LOG.info("Deleted references in merged region "<a name="line.1871"></a>
-<span class="sourceLineNo">1872</span> + mergedRegion.getRegionNameAsString() + ", qualifier="<a name="line.1872"></a>
-<span class="sourceLineNo">1873</span> + Bytes.toStringBinary(HConstants.MERGEA_QUALIFIER) + " and qualifier="<a name="line.1873"></a>
-<span class="sourceLineNo">1874</span> + Bytes.toStringBinary(HConstants.MERGEB_QUALIFIER));<a name="line.1874"></a>
-<span class="sourceLineNo">1875</span> }<a name="line.1875"></a>
-<span class="sourceLineNo">1876</span><a name="line.1876"></a>
-<span class="sourceLineNo">1877</span> public static Put addRegionInfo(final Put p, final RegionInfo hri)<a name="line.1877"></a>
-<span class="sourceLineNo">1878</span> throws IOException {<a name="line.1878"></a>
-<span class="sourceLineNo">1879</span> p.add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.1879"></a>
-<span class="sourceLineNo">1880</span> .setRow(p.getRow())<a name="line.1880"></a>
-<span class="sourceLineNo">1881</span> .setFamily(getCatalogFamily())<a name="line.1881"></a>
-<span class="sourceLineNo">1882</span> .setQualifier(HConstants.REGIONINFO_QUALIFIER)<a name="line.1882"></a>
-<span class="sourceLineNo">1883</span> .setTimestamp(p.getTimestamp())<a name="line.1883"></a>
-<span class="sourceLineNo">1884</span> .setType(Type.Put)<a name="line.1884"></a>
-<span class="sourceLineNo">1885</span> .setValue(RegionInfo.toByteArray(hri))<a name="line.1885"></a>
-<span class="sourceLineNo">1886</span> .build());<a name="line.1886"></a>
-<span class="sourceLineNo">1887</span> return p;<a name="line.1887"></a>
-<span class="sourceLineNo">1888</span> }<a name="line.1888"></a>
-<span class="sourceLineNo">1889</span><a name="line.1889"></a>
-<span class="sourceLineNo">1890</span> public static Put addLocation(Put p, ServerName sn, long openSeqNum, int replicaId)<a name="line.1890"></a>
-<span class="sourceLineNo">1891</span> throws IOException {<a name="line.1891"></a>
-<span class="sourceLineNo">1892</span> CellBuilder builder = CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY);<a name="line.1892"></a>
-<span class="sourceLineNo">1893</span> return p.add(builder.clear()<a name="line.1893"></a>
-<span class="sourceLineNo">1894</span> .setRow(p.getRow())<a name="line.1894"></a>
-<span class="sourceLineNo">1895</span> .setFamily(getCatalogFamily())<a name="line.1895"></a>
-<span class="sourceLineNo">1896</span> .setQualifier(getServerColumn(replicaId))<a name="line.1896"></a>
-<span class="sourceLineNo">1897</span> .setTimestamp(p.getTimestamp())<a name="line.1897"></a>
-<span class="sourceLineNo">1898</span> .setType(Cell.Type.Put)<a name="line.1898"></a>
-<span class="sourceLineNo">1899</span> .setValue(Bytes.toBytes(sn.getAddress().toString()))<a name="line.1899"></a>
-<span class="sourceLineNo">1900</span> .build())<a name="line.1900"></a>
-<span class="sourceLineNo">1901</span> .add(builder.clear()<a name="line.1901"></a>
+<span class="sourceLineNo">1572</span> .setValue(RegionInfo.toByteArray(regionA))<a name="line.1572"></a>
+<span class="sourceLineNo">1573</span> .build())<a name="line.1573"></a>
+<span class="sourceLineNo">1574</span> .add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.1574"></a>
+<span class="sourceLineNo">1575</span> .setRow(putOfMerged.getRow())<a name="line.1575"></a>
+<span class="sourceLineNo">1576</span> .setFamily(HConstants.CATALOG_FAMILY)<a name="line.1576"></a>
+<span class="sourceLineNo">1577</span> .setQualifier(HConstants.MERGEB_QUALIFIER)<a name="line.1577"></a>
+<span class="sourceLineNo">1578</span> .setTimestamp(putOfMerged.getTimestamp())<a name="line.1578"></a>
+<span class="sourceLineNo">1579</span> .setType(Type.Put)<a name="line.1579"></a>
+<span class="sourceLineNo">1580</span> .setValue(RegionInfo.toByteArray(regionB))<a name="line.1580"></a>
+<span class="sourceLineNo">1581</span> .build());<a name="line.1581"></a>
+<span class="sourceLineNo">1582</span> // Set initial state to CLOSED<a name="line.1582"></a>
+<span class="sourceLineNo">1583</span> // NOTE: If initial state is not set to CLOSED then merged region gets added with the<a name="line.1583"></a>
+<span class="sourceLineNo">1584</span> // default OFFLINE state. If Master gets restarted after this step, start up sequence of<a name="line.1584"></a>
+<span class="sourceLineNo">1585</span> // master tries to assign this offline region. This is followed by re-assignments of the<a name="line.1585"></a>
+<span class="sourceLineNo">1586</span> // merged region from resumed {@link MergeTableRegionsProcedure}<a name="line.1586"></a>
+<span class="sourceLineNo">1587</span> addRegionStateToPut(putOfMerged, RegionState.State.CLOSED);<a name="line.1587"></a>
+<span class="sourceLineNo">1588</span> mutations.add(putOfMerged);<a name="line.1588"></a>
+<span class="sourceLineNo">1589</span> // The merged is a new region, openSeqNum = 1 is fine. ServerName may be null<a name="line.1589"></a>
+<span class="sourceLineNo">1590</span> // if crash after merge happened but before we got to here.. means in-memory<a name="line.1590"></a>
+<span class="sourceLineNo">1591</span> // locations of offlined merged, now-closed, regions is lost. Should be ok. We<a name="line.1591"></a>
+<span class="sourceLineNo">1592</span> // assign the merged region later.<a name="line.1592"></a>
+<span class="sourceLineNo">1593</span> if (sn != null) {<a name="line.1593"></a>
+<span class="sourceLineNo">1594</span> addLocation(putOfMerged, sn, 1, mergedRegion.getReplicaId());<a name="line.1594"></a>
+<span class="sourceLineNo">1595</span> }<a name="line.1595"></a>
+<span class="sourceLineNo">1596</span><a name="line.1596"></a>
+<span class="sourceLineNo">1597</span> // Add empty locations for region replicas of the merged region so that number of replicas can<a name="line.1597"></a>
+<span class="sourceLineNo">1598</span> // be cached whenever the primary region is looked up from meta<a name="line.1598"></a>
+<span class="sourceLineNo">1599</span> for (int i = 1; i < regionReplication; i++) {<a name="line.1599"></a>
+<span class="sourceLineNo">1600</span> addEmptyLocation(putOfMerged, i);<a name="line.1600"></a>
+<span class="sourceLineNo">1601</span> }<a name="line.1601"></a>
+<span class="sourceLineNo">1602</span> // add parent reference for serial replication<a name="line.1602"></a>
+<span class="sourceLineNo">1603</span> if (!replicationParents.isEmpty()) {<a name="line.1603"></a>
+<span class="sourceLineNo">1604</span> addReplicationParent(putOfMerged, replicationParents);<a name="line.1604"></a>
+<span class="sourceLineNo">1605</span> }<a name="line.1605"></a>
+<span class="sourceLineNo">1606</span> byte[] tableRow = Bytes.toBytes(mergedRegion.getRegionNameAsString() + HConstants.DELIMITER);<a name="line.1606"></a>
+<span class="sourceLineNo">1607</span> multiMutate(connection, meta, tableRow, mutations);<a name="line.1607"></a>
+<span class="sourceLineNo">1608</span> }<a name="line.1608"></a>
+<span class="sourceLineNo">1609</span> }<a name="line.1609"></a>
+<span class="sourceLineNo">1610</span><a name="line.1610"></a>
+<span class="sourceLineNo">1611</span> /**<a name="line.1611"></a>
+<span class="sourceLineNo">1612</span> * Splits the region into two in an atomic operation. Offlines the parent region with the<a name="line.1612"></a>
+<span class="sourceLineNo">1613</span> * information that it is split into two, and also adds the daughter regions. Does not add the<a name="line.1613"></a>
+<span class="sourceLineNo">1614</span> * location information to the daughter regions since they are not open yet.<a name="line.1614"></a>
+<span class="sourceLineNo">1615</span> * @param connection connection we're using<a name="line.1615"></a>
+<span class="sourceLineNo">1616</span> * @param parent the parent region which is split<a name="line.1616"></a>
+<span class="sourceLineNo">1617</span> * @param parentOpenSeqNum the next open sequence id for parent region, used by serial<a name="line.1617"></a>
+<span class="sourceLineNo">1618</span> * replication. -1 if not necessary.<a name="line.1618"></a>
+<span class="sourceLineNo">1619</span> * @param splitA Split daughter region A<a name="line.1619"></a>
<TRUNCATED>
[08/51] [partial] hbase-site git commit: Published site at
9101fc246f86445006bfbcdfda5cc495016dc280.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/src-html/org/apache/hadoop/hbase/master/MasterWalManager.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/MasterWalManager.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/MasterWalManager.html
index dd2def7..498695e 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/MasterWalManager.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/MasterWalManager.html
@@ -34,282 +34,308 @@
<span class="sourceLineNo">026</span>import java.util.Set;<a name="line.26"></a>
<span class="sourceLineNo">027</span>import java.util.concurrent.locks.Lock;<a name="line.27"></a>
<span class="sourceLineNo">028</span>import java.util.concurrent.locks.ReentrantLock;<a name="line.28"></a>
-<span class="sourceLineNo">029</span><a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.hadoop.conf.Configuration;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hadoop.fs.FileStatus;<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.fs.PathFilter;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.HConstants;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.ServerName;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.wal.AbstractFSWALProvider;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.wal.WALSplitter;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.slf4j.Logger;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.slf4j.LoggerFactory;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<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> * This class abstracts a bunch of operations the HMaster needs<a name="line.47"></a>
-<span class="sourceLineNo">048</span> * when splitting log files e.g. finding log files, dirs etc.<a name="line.48"></a>
-<span class="sourceLineNo">049</span> */<a name="line.49"></a>
-<span class="sourceLineNo">050</span>@InterfaceAudience.Private<a name="line.50"></a>
-<span class="sourceLineNo">051</span>public class MasterWalManager {<a name="line.51"></a>
-<span class="sourceLineNo">052</span> private static final Logger LOG = LoggerFactory.getLogger(MasterWalManager.class);<a name="line.52"></a>
-<span class="sourceLineNo">053</span><a name="line.53"></a>
-<span class="sourceLineNo">054</span> final static PathFilter META_FILTER = new PathFilter() {<a name="line.54"></a>
-<span class="sourceLineNo">055</span> @Override<a name="line.55"></a>
-<span class="sourceLineNo">056</span> public boolean accept(Path p) {<a name="line.56"></a>
-<span class="sourceLineNo">057</span> return AbstractFSWALProvider.isMetaFile(p);<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><a name="line.60"></a>
-<span class="sourceLineNo">061</span> final static PathFilter NON_META_FILTER = new PathFilter() {<a name="line.61"></a>
-<span class="sourceLineNo">062</span> @Override<a name="line.62"></a>
-<span class="sourceLineNo">063</span> public boolean accept(Path p) {<a name="line.63"></a>
-<span class="sourceLineNo">064</span> return !AbstractFSWALProvider.isMetaFile(p);<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> // metrics for master<a name="line.68"></a>
-<span class="sourceLineNo">069</span> // TODO: Rename it, since those metrics are split-manager related<a name="line.69"></a>
-<span class="sourceLineNo">070</span> private final MetricsMasterFileSystem metricsMasterFilesystem = new MetricsMasterFileSystem();<a name="line.70"></a>
-<span class="sourceLineNo">071</span><a name="line.71"></a>
-<span class="sourceLineNo">072</span> // Keep around for convenience.<a name="line.72"></a>
-<span class="sourceLineNo">073</span> private final MasterServices services;<a name="line.73"></a>
-<span class="sourceLineNo">074</span> private final Configuration conf;<a name="line.74"></a>
-<span class="sourceLineNo">075</span> private final FileSystem fs;<a name="line.75"></a>
-<span class="sourceLineNo">076</span><a name="line.76"></a>
-<span class="sourceLineNo">077</span> // The Path to the old logs dir<a name="line.77"></a>
-<span class="sourceLineNo">078</span> private final Path oldLogDir;<a name="line.78"></a>
-<span class="sourceLineNo">079</span> private final Path rootDir;<a name="line.79"></a>
-<span class="sourceLineNo">080</span><a name="line.80"></a>
-<span class="sourceLineNo">081</span> // create the split log lock<a name="line.81"></a>
-<span class="sourceLineNo">082</span> private final Lock splitLogLock = new ReentrantLock();<a name="line.82"></a>
-<span class="sourceLineNo">083</span> private final SplitLogManager splitLogManager;<a name="line.83"></a>
-<span class="sourceLineNo">084</span><a name="line.84"></a>
-<span class="sourceLineNo">085</span> // Is the fileystem ok?<a name="line.85"></a>
-<span class="sourceLineNo">086</span> private volatile boolean fsOk = true;<a name="line.86"></a>
-<span class="sourceLineNo">087</span><a name="line.87"></a>
-<span class="sourceLineNo">088</span> public MasterWalManager(MasterServices services) throws IOException {<a name="line.88"></a>
-<span class="sourceLineNo">089</span> this(services.getConfiguration(), services.getMasterFileSystem().getWALFileSystem(),<a name="line.89"></a>
-<span class="sourceLineNo">090</span> services.getMasterFileSystem().getWALRootDir(), services);<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> public MasterWalManager(Configuration conf, FileSystem fs, Path rootDir, MasterServices services)<a name="line.93"></a>
-<span class="sourceLineNo">094</span> throws IOException {<a name="line.94"></a>
-<span class="sourceLineNo">095</span> this.fs = fs;<a name="line.95"></a>
-<span class="sourceLineNo">096</span> this.conf = conf;<a name="line.96"></a>
-<span class="sourceLineNo">097</span> this.rootDir = rootDir;<a name="line.97"></a>
-<span class="sourceLineNo">098</span> this.services = services;<a name="line.98"></a>
-<span class="sourceLineNo">099</span> this.splitLogManager = new SplitLogManager(services, conf);<a name="line.99"></a>
-<span class="sourceLineNo">100</span><a name="line.100"></a>
-<span class="sourceLineNo">101</span> this.oldLogDir = new Path(rootDir, HConstants.HREGION_OLDLOGDIR_NAME);<a name="line.101"></a>
-<span class="sourceLineNo">102</span> }<a name="line.102"></a>
-<span class="sourceLineNo">103</span><a name="line.103"></a>
-<span class="sourceLineNo">104</span> public void stop() {<a name="line.104"></a>
-<span class="sourceLineNo">105</span> if (splitLogManager != null) {<a name="line.105"></a>
-<span class="sourceLineNo">106</span> splitLogManager.stop();<a name="line.106"></a>
-<span class="sourceLineNo">107</span> }<a name="line.107"></a>
-<span class="sourceLineNo">108</span> }<a name="line.108"></a>
-<span class="sourceLineNo">109</span><a name="line.109"></a>
-<span class="sourceLineNo">110</span> @VisibleForTesting<a name="line.110"></a>
-<span class="sourceLineNo">111</span> SplitLogManager getSplitLogManager() {<a name="line.111"></a>
-<span class="sourceLineNo">112</span> return this.splitLogManager;<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> * Get the directory where old logs go<a name="line.116"></a>
-<span class="sourceLineNo">117</span> * @return the dir<a name="line.117"></a>
-<span class="sourceLineNo">118</span> */<a name="line.118"></a>
-<span class="sourceLineNo">119</span> Path getOldLogDir() {<a name="line.119"></a>
-<span class="sourceLineNo">120</span> return this.oldLogDir;<a name="line.120"></a>
-<span class="sourceLineNo">121</span> }<a name="line.121"></a>
-<span class="sourceLineNo">122</span><a name="line.122"></a>
-<span class="sourceLineNo">123</span> public FileSystem getFileSystem() {<a name="line.123"></a>
-<span class="sourceLineNo">124</span> return this.fs;<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> * Checks to see if the file system is still accessible.<a name="line.128"></a>
-<span class="sourceLineNo">129</span> * If not, sets closed<a name="line.129"></a>
-<span class="sourceLineNo">130</span> * @return false if file system is not available<a name="line.130"></a>
-<span class="sourceLineNo">131</span> */<a name="line.131"></a>
-<span class="sourceLineNo">132</span> private boolean checkFileSystem() {<a name="line.132"></a>
-<span class="sourceLineNo">133</span> if (this.fsOk) {<a name="line.133"></a>
-<span class="sourceLineNo">134</span> try {<a name="line.134"></a>
-<span class="sourceLineNo">135</span> FSUtils.checkFileSystemAvailable(this.fs);<a name="line.135"></a>
-<span class="sourceLineNo">136</span> FSUtils.checkDfsSafeMode(this.conf);<a name="line.136"></a>
-<span class="sourceLineNo">137</span> } catch (IOException e) {<a name="line.137"></a>
-<span class="sourceLineNo">138</span> services.abort("Shutting down HBase cluster: file system not available", e);<a name="line.138"></a>
-<span class="sourceLineNo">139</span> this.fsOk = false;<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> return this.fsOk;<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> * Inspect the log directory to find dead servers which need recovery work<a name="line.146"></a>
-<span class="sourceLineNo">147</span> * @return A set of ServerNames which aren't running but still have WAL files left in file system<a name="line.147"></a>
-<span class="sourceLineNo">148</span> */<a name="line.148"></a>
-<span class="sourceLineNo">149</span> public Set<ServerName> getFailedServersFromLogFolders() {<a name="line.149"></a>
-<span class="sourceLineNo">150</span> boolean retrySplitting = !conf.getBoolean("hbase.hlog.split.skip.errors",<a name="line.150"></a>
-<span class="sourceLineNo">151</span> WALSplitter.SPLIT_SKIP_ERRORS_DEFAULT);<a name="line.151"></a>
-<span class="sourceLineNo">152</span><a name="line.152"></a>
-<span class="sourceLineNo">153</span> Set<ServerName> serverNames = new HashSet<>();<a name="line.153"></a>
-<span class="sourceLineNo">154</span> Path logsDirPath = new Path(this.rootDir, HConstants.HREGION_LOGDIR_NAME);<a name="line.154"></a>
-<span class="sourceLineNo">155</span><a name="line.155"></a>
-<span class="sourceLineNo">156</span> do {<a name="line.156"></a>
-<span class="sourceLineNo">157</span> if (services.isStopped()) {<a name="line.157"></a>
-<span class="sourceLineNo">158</span> LOG.warn("Master stopped while trying to get failed servers.");<a name="line.158"></a>
-<span class="sourceLineNo">159</span> break;<a name="line.159"></a>
+<span class="sourceLineNo">029</span>import java.util.stream.Collectors;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import java.util.stream.Stream;<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.FileStatus;<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.fs.PathFilter;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.HConstants;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.ServerName;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.wal.AbstractFSWALProvider;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.wal.WALSplitter;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.slf4j.Logger;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.slf4j.LoggerFactory;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<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> * This class abstracts a bunch of operations the HMaster needs<a name="line.48"></a>
+<span class="sourceLineNo">049</span> * when splitting log files e.g. finding log files, dirs etc.<a name="line.49"></a>
+<span class="sourceLineNo">050</span> */<a name="line.50"></a>
+<span class="sourceLineNo">051</span>@InterfaceAudience.Private<a name="line.51"></a>
+<span class="sourceLineNo">052</span>public class MasterWalManager {<a name="line.52"></a>
+<span class="sourceLineNo">053</span> private static final Logger LOG = LoggerFactory.getLogger(MasterWalManager.class);<a name="line.53"></a>
+<span class="sourceLineNo">054</span><a name="line.54"></a>
+<span class="sourceLineNo">055</span> final static PathFilter META_FILTER = new PathFilter() {<a name="line.55"></a>
+<span class="sourceLineNo">056</span> @Override<a name="line.56"></a>
+<span class="sourceLineNo">057</span> public boolean accept(Path p) {<a name="line.57"></a>
+<span class="sourceLineNo">058</span> return AbstractFSWALProvider.isMetaFile(p);<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><a name="line.61"></a>
+<span class="sourceLineNo">062</span> final static PathFilter NON_META_FILTER = new PathFilter() {<a name="line.62"></a>
+<span class="sourceLineNo">063</span> @Override<a name="line.63"></a>
+<span class="sourceLineNo">064</span> public boolean accept(Path p) {<a name="line.64"></a>
+<span class="sourceLineNo">065</span> return !AbstractFSWALProvider.isMetaFile(p);<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> // metrics for master<a name="line.69"></a>
+<span class="sourceLineNo">070</span> // TODO: Rename it, since those metrics are split-manager related<a name="line.70"></a>
+<span class="sourceLineNo">071</span> private final MetricsMasterFileSystem metricsMasterFilesystem = new MetricsMasterFileSystem();<a name="line.71"></a>
+<span class="sourceLineNo">072</span><a name="line.72"></a>
+<span class="sourceLineNo">073</span> // Keep around for convenience.<a name="line.73"></a>
+<span class="sourceLineNo">074</span> private final MasterServices services;<a name="line.74"></a>
+<span class="sourceLineNo">075</span> private final Configuration conf;<a name="line.75"></a>
+<span class="sourceLineNo">076</span> private final FileSystem fs;<a name="line.76"></a>
+<span class="sourceLineNo">077</span><a name="line.77"></a>
+<span class="sourceLineNo">078</span> // The Path to the old logs dir<a name="line.78"></a>
+<span class="sourceLineNo">079</span> private final Path oldLogDir;<a name="line.79"></a>
+<span class="sourceLineNo">080</span> private final Path rootDir;<a name="line.80"></a>
+<span class="sourceLineNo">081</span><a name="line.81"></a>
+<span class="sourceLineNo">082</span> // create the split log lock<a name="line.82"></a>
+<span class="sourceLineNo">083</span> private final Lock splitLogLock = new ReentrantLock();<a name="line.83"></a>
+<span class="sourceLineNo">084</span> private final SplitLogManager splitLogManager;<a name="line.84"></a>
+<span class="sourceLineNo">085</span><a name="line.85"></a>
+<span class="sourceLineNo">086</span> // Is the fileystem ok?<a name="line.86"></a>
+<span class="sourceLineNo">087</span> private volatile boolean fsOk = true;<a name="line.87"></a>
+<span class="sourceLineNo">088</span><a name="line.88"></a>
+<span class="sourceLineNo">089</span> public MasterWalManager(MasterServices services) throws IOException {<a name="line.89"></a>
+<span class="sourceLineNo">090</span> this(services.getConfiguration(), services.getMasterFileSystem().getWALFileSystem(),<a name="line.90"></a>
+<span class="sourceLineNo">091</span> services.getMasterFileSystem().getWALRootDir(), services);<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> public MasterWalManager(Configuration conf, FileSystem fs, Path rootDir, MasterServices services)<a name="line.94"></a>
+<span class="sourceLineNo">095</span> throws IOException {<a name="line.95"></a>
+<span class="sourceLineNo">096</span> this.fs = fs;<a name="line.96"></a>
+<span class="sourceLineNo">097</span> this.conf = conf;<a name="line.97"></a>
+<span class="sourceLineNo">098</span> this.rootDir = rootDir;<a name="line.98"></a>
+<span class="sourceLineNo">099</span> this.services = services;<a name="line.99"></a>
+<span class="sourceLineNo">100</span> this.splitLogManager = new SplitLogManager(services, conf);<a name="line.100"></a>
+<span class="sourceLineNo">101</span><a name="line.101"></a>
+<span class="sourceLineNo">102</span> this.oldLogDir = new Path(rootDir, HConstants.HREGION_OLDLOGDIR_NAME);<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 void stop() {<a name="line.105"></a>
+<span class="sourceLineNo">106</span> if (splitLogManager != null) {<a name="line.106"></a>
+<span class="sourceLineNo">107</span> splitLogManager.stop();<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> @VisibleForTesting<a name="line.111"></a>
+<span class="sourceLineNo">112</span> SplitLogManager getSplitLogManager() {<a name="line.112"></a>
+<span class="sourceLineNo">113</span> return this.splitLogManager;<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> /**<a name="line.116"></a>
+<span class="sourceLineNo">117</span> * Get the directory where old logs go<a name="line.117"></a>
+<span class="sourceLineNo">118</span> * @return the dir<a name="line.118"></a>
+<span class="sourceLineNo">119</span> */<a name="line.119"></a>
+<span class="sourceLineNo">120</span> Path getOldLogDir() {<a name="line.120"></a>
+<span class="sourceLineNo">121</span> return this.oldLogDir;<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 FileSystem getFileSystem() {<a name="line.124"></a>
+<span class="sourceLineNo">125</span> return this.fs;<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> * Checks to see if the file system is still accessible.<a name="line.129"></a>
+<span class="sourceLineNo">130</span> * If not, sets closed<a name="line.130"></a>
+<span class="sourceLineNo">131</span> * @return false if file system is not available<a name="line.131"></a>
+<span class="sourceLineNo">132</span> */<a name="line.132"></a>
+<span class="sourceLineNo">133</span> private boolean checkFileSystem() {<a name="line.133"></a>
+<span class="sourceLineNo">134</span> if (this.fsOk) {<a name="line.134"></a>
+<span class="sourceLineNo">135</span> try {<a name="line.135"></a>
+<span class="sourceLineNo">136</span> FSUtils.checkFileSystemAvailable(this.fs);<a name="line.136"></a>
+<span class="sourceLineNo">137</span> FSUtils.checkDfsSafeMode(this.conf);<a name="line.137"></a>
+<span class="sourceLineNo">138</span> } catch (IOException e) {<a name="line.138"></a>
+<span class="sourceLineNo">139</span> services.abort("Shutting down HBase cluster: file system not available", e);<a name="line.139"></a>
+<span class="sourceLineNo">140</span> this.fsOk = 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> return this.fsOk;<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> public Set<ServerName> getLiveServersFromWALDir() throws IOException {<a name="line.146"></a>
+<span class="sourceLineNo">147</span> Path walDirPath = new Path(rootDir, HConstants.HREGION_LOGDIR_NAME);<a name="line.147"></a>
+<span class="sourceLineNo">148</span> FileStatus[] walDirForLiveServers = FSUtils.listStatus(fs, walDirPath,<a name="line.148"></a>
+<span class="sourceLineNo">149</span> p -> !p.getName().endsWith(AbstractFSWALProvider.SPLITTING_EXT));<a name="line.149"></a>
+<span class="sourceLineNo">150</span> if (walDirForLiveServers == null) {<a name="line.150"></a>
+<span class="sourceLineNo">151</span> return Collections.emptySet();<a name="line.151"></a>
+<span class="sourceLineNo">152</span> }<a name="line.152"></a>
+<span class="sourceLineNo">153</span> return Stream.of(walDirForLiveServers).map(s -> {<a name="line.153"></a>
+<span class="sourceLineNo">154</span> ServerName serverName = AbstractFSWALProvider.getServerNameFromWALDirectoryName(s.getPath());<a name="line.154"></a>
+<span class="sourceLineNo">155</span> if (serverName == null) {<a name="line.155"></a>
+<span class="sourceLineNo">156</span> LOG.warn("Log folder {} doesn't look like its name includes a " +<a name="line.156"></a>
+<span class="sourceLineNo">157</span> "region server name; leaving in place. If you see later errors about missing " +<a name="line.157"></a>
+<span class="sourceLineNo">158</span> "write ahead logs they may be saved in this location.", s.getPath());<a name="line.158"></a>
+<span class="sourceLineNo">159</span> return null;<a name="line.159"></a>
<span class="sourceLineNo">160</span> }<a name="line.160"></a>
-<span class="sourceLineNo">161</span> try {<a name="line.161"></a>
-<span class="sourceLineNo">162</span> if (!this.fs.exists(logsDirPath)) return serverNames;<a name="line.162"></a>
-<span class="sourceLineNo">163</span> FileStatus[] logFolders = FSUtils.listStatus(this.fs, logsDirPath, null);<a name="line.163"></a>
-<span class="sourceLineNo">164</span> // Get online servers after getting log folders to avoid log folder deletion of newly<a name="line.164"></a>
-<span class="sourceLineNo">165</span> // checked in region servers . see HBASE-5916<a name="line.165"></a>
-<span class="sourceLineNo">166</span> Set<ServerName> onlineServers = services.getServerManager().getOnlineServers().keySet();<a name="line.166"></a>
-<span class="sourceLineNo">167</span><a name="line.167"></a>
-<span class="sourceLineNo">168</span> if (logFolders == null || logFolders.length == 0) {<a name="line.168"></a>
-<span class="sourceLineNo">169</span> LOG.debug("No log files to split, proceeding...");<a name="line.169"></a>
-<span class="sourceLineNo">170</span> return serverNames;<a name="line.170"></a>
-<span class="sourceLineNo">171</span> }<a name="line.171"></a>
-<span class="sourceLineNo">172</span> for (FileStatus status : logFolders) {<a name="line.172"></a>
-<span class="sourceLineNo">173</span> FileStatus[] curLogFiles = FSUtils.listStatus(this.fs, status.getPath(), null);<a name="line.173"></a>
-<span class="sourceLineNo">174</span> if (curLogFiles == null || curLogFiles.length == 0) {<a name="line.174"></a>
-<span class="sourceLineNo">175</span> // Empty log folder. No recovery needed<a name="line.175"></a>
-<span class="sourceLineNo">176</span> continue;<a name="line.176"></a>
-<span class="sourceLineNo">177</span> }<a name="line.177"></a>
-<span class="sourceLineNo">178</span> final ServerName serverName = AbstractFSWALProvider.getServerNameFromWALDirectoryName(<a name="line.178"></a>
-<span class="sourceLineNo">179</span> status.getPath());<a name="line.179"></a>
-<span class="sourceLineNo">180</span> if (null == serverName) {<a name="line.180"></a>
-<span class="sourceLineNo">181</span> LOG.warn("Log folder " + status.getPath() + " doesn't look like its name includes a " +<a name="line.181"></a>
-<span class="sourceLineNo">182</span> "region server name; leaving in place. If you see later errors about missing " +<a name="line.182"></a>
-<span class="sourceLineNo">183</span> "write ahead logs they may be saved in this location.");<a name="line.183"></a>
-<span class="sourceLineNo">184</span> } else if (!onlineServers.contains(serverName)) {<a name="line.184"></a>
-<span class="sourceLineNo">185</span> LOG.info("Log folder " + status.getPath() + " doesn't belong "<a name="line.185"></a>
-<span class="sourceLineNo">186</span> + "to a known region server, splitting");<a name="line.186"></a>
-<span class="sourceLineNo">187</span> serverNames.add(serverName);<a name="line.187"></a>
-<span class="sourceLineNo">188</span> } else {<a name="line.188"></a>
-<span class="sourceLineNo">189</span> LOG.info("Log folder " + status.getPath() + " belongs to an existing region server");<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> retrySplitting = false;<a name="line.192"></a>
-<span class="sourceLineNo">193</span> } catch (IOException ioe) {<a name="line.193"></a>
-<span class="sourceLineNo">194</span> LOG.warn("Failed getting failed servers to be recovered.", ioe);<a name="line.194"></a>
-<span class="sourceLineNo">195</span> if (!checkFileSystem()) {<a name="line.195"></a>
-<span class="sourceLineNo">196</span> LOG.warn("Bad Filesystem, exiting");<a name="line.196"></a>
-<span class="sourceLineNo">197</span> Runtime.getRuntime().halt(1);<a name="line.197"></a>
-<span class="sourceLineNo">198</span> }<a name="line.198"></a>
-<span class="sourceLineNo">199</span> try {<a name="line.199"></a>
-<span class="sourceLineNo">200</span> if (retrySplitting) {<a name="line.200"></a>
-<span class="sourceLineNo">201</span> Thread.sleep(conf.getInt("hbase.hlog.split.failure.retry.interval", 30 * 1000));<a name="line.201"></a>
+<span class="sourceLineNo">161</span> return serverName;<a name="line.161"></a>
+<span class="sourceLineNo">162</span> }).filter(s -> s != null).collect(Collectors.toSet());<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> * Inspect the log directory to find dead servers which need recovery work<a name="line.166"></a>
+<span class="sourceLineNo">167</span> * @return A set of ServerNames which aren't running but still have WAL files left in file system<a name="line.167"></a>
+<span class="sourceLineNo">168</span> * @deprecated With proc-v2, we can record the crash server with procedure store, so do not need<a name="line.168"></a>
+<span class="sourceLineNo">169</span> * to scan the wal directory to find out the splitting wal directory any more. Leave<a name="line.169"></a>
+<span class="sourceLineNo">170</span> * it here only because {@code RecoverMetaProcedure}(which is also deprecated) uses<a name="line.170"></a>
+<span class="sourceLineNo">171</span> * it.<a name="line.171"></a>
+<span class="sourceLineNo">172</span> */<a name="line.172"></a>
+<span class="sourceLineNo">173</span> @Deprecated<a name="line.173"></a>
+<span class="sourceLineNo">174</span> public Set<ServerName> getFailedServersFromLogFolders() {<a name="line.174"></a>
+<span class="sourceLineNo">175</span> boolean retrySplitting = !conf.getBoolean("hbase.hlog.split.skip.errors",<a name="line.175"></a>
+<span class="sourceLineNo">176</span> WALSplitter.SPLIT_SKIP_ERRORS_DEFAULT);<a name="line.176"></a>
+<span class="sourceLineNo">177</span><a name="line.177"></a>
+<span class="sourceLineNo">178</span> Set<ServerName> serverNames = new HashSet<>();<a name="line.178"></a>
+<span class="sourceLineNo">179</span> Path logsDirPath = new Path(this.rootDir, HConstants.HREGION_LOGDIR_NAME);<a name="line.179"></a>
+<span class="sourceLineNo">180</span><a name="line.180"></a>
+<span class="sourceLineNo">181</span> do {<a name="line.181"></a>
+<span class="sourceLineNo">182</span> if (services.isStopped()) {<a name="line.182"></a>
+<span class="sourceLineNo">183</span> LOG.warn("Master stopped while trying to get failed servers.");<a name="line.183"></a>
+<span class="sourceLineNo">184</span> break;<a name="line.184"></a>
+<span class="sourceLineNo">185</span> }<a name="line.185"></a>
+<span class="sourceLineNo">186</span> try {<a name="line.186"></a>
+<span class="sourceLineNo">187</span> if (!this.fs.exists(logsDirPath)) return serverNames;<a name="line.187"></a>
+<span class="sourceLineNo">188</span> FileStatus[] logFolders = FSUtils.listStatus(this.fs, logsDirPath, null);<a name="line.188"></a>
+<span class="sourceLineNo">189</span> // Get online servers after getting log folders to avoid log folder deletion of newly<a name="line.189"></a>
+<span class="sourceLineNo">190</span> // checked in region servers . see HBASE-5916<a name="line.190"></a>
+<span class="sourceLineNo">191</span> Set<ServerName> onlineServers = services.getServerManager().getOnlineServers().keySet();<a name="line.191"></a>
+<span class="sourceLineNo">192</span><a name="line.192"></a>
+<span class="sourceLineNo">193</span> if (logFolders == null || logFolders.length == 0) {<a name="line.193"></a>
+<span class="sourceLineNo">194</span> LOG.debug("No log files to split, proceeding...");<a name="line.194"></a>
+<span class="sourceLineNo">195</span> return serverNames;<a name="line.195"></a>
+<span class="sourceLineNo">196</span> }<a name="line.196"></a>
+<span class="sourceLineNo">197</span> for (FileStatus status : logFolders) {<a name="line.197"></a>
+<span class="sourceLineNo">198</span> FileStatus[] curLogFiles = FSUtils.listStatus(this.fs, status.getPath(), null);<a name="line.198"></a>
+<span class="sourceLineNo">199</span> if (curLogFiles == null || curLogFiles.length == 0) {<a name="line.199"></a>
+<span class="sourceLineNo">200</span> // Empty log folder. No recovery needed<a name="line.200"></a>
+<span class="sourceLineNo">201</span> continue;<a name="line.201"></a>
<span class="sourceLineNo">202</span> }<a name="line.202"></a>
-<span class="sourceLineNo">203</span> } catch (InterruptedException e) {<a name="line.203"></a>
-<span class="sourceLineNo">204</span> LOG.warn("Interrupted, aborting since cannot return w/o splitting");<a name="line.204"></a>
-<span class="sourceLineNo">205</span> Thread.currentThread().interrupt();<a name="line.205"></a>
-<span class="sourceLineNo">206</span> retrySplitting = false;<a name="line.206"></a>
-<span class="sourceLineNo">207</span> Runtime.getRuntime().halt(1);<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> } while (retrySplitting);<a name="line.210"></a>
-<span class="sourceLineNo">211</span><a name="line.211"></a>
-<span class="sourceLineNo">212</span> return serverNames;<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 splitLog(final ServerName serverName) throws IOException {<a name="line.215"></a>
-<span class="sourceLineNo">216</span> splitLog(Collections.<ServerName>singleton(serverName));<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> * Specialized method to handle the splitting for meta WAL<a name="line.220"></a>
-<span class="sourceLineNo">221</span> * @param serverName logs belonging to this server will be split<a name="line.221"></a>
-<span class="sourceLineNo">222</span> */<a name="line.222"></a>
-<span class="sourceLineNo">223</span> public void splitMetaLog(final ServerName serverName) throws IOException {<a name="line.223"></a>
-<span class="sourceLineNo">224</span> splitMetaLog(Collections.<ServerName>singleton(serverName));<a name="line.224"></a>
-<span class="sourceLineNo">225</span> }<a name="line.225"></a>
-<span class="sourceLineNo">226</span><a name="line.226"></a>
-<span class="sourceLineNo">227</span> /**<a name="line.227"></a>
-<span class="sourceLineNo">228</span> * Specialized method to handle the splitting for meta WAL<a name="line.228"></a>
-<span class="sourceLineNo">229</span> * @param serverNames logs belonging to these servers will be split<a name="line.229"></a>
-<span class="sourceLineNo">230</span> */<a name="line.230"></a>
-<span class="sourceLineNo">231</span> public void splitMetaLog(final Set<ServerName> serverNames) throws IOException {<a name="line.231"></a>
-<span class="sourceLineNo">232</span> splitLog(serverNames, META_FILTER);<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> @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="UL_UNRELEASED_LOCK", justification=<a name="line.235"></a>
-<span class="sourceLineNo">236</span> "We only release this lock when we set it. Updates to code that uses it should verify use " +<a name="line.236"></a>
-<span class="sourceLineNo">237</span> "of the guard boolean.")<a name="line.237"></a>
-<span class="sourceLineNo">238</span> private List<Path> getLogDirs(final Set<ServerName> serverNames) throws IOException {<a name="line.238"></a>
-<span class="sourceLineNo">239</span> List<Path> logDirs = new ArrayList<>();<a name="line.239"></a>
-<span class="sourceLineNo">240</span> boolean needReleaseLock = false;<a name="line.240"></a>
-<span class="sourceLineNo">241</span> if (!this.services.isInitialized()) {<a name="line.241"></a>
-<span class="sourceLineNo">242</span> // during master initialization, we could have multiple places splitting a same wal<a name="line.242"></a>
-<span class="sourceLineNo">243</span> this.splitLogLock.lock();<a name="line.243"></a>
-<span class="sourceLineNo">244</span> needReleaseLock = true;<a name="line.244"></a>
-<span class="sourceLineNo">245</span> }<a name="line.245"></a>
-<span class="sourceLineNo">246</span> try {<a name="line.246"></a>
-<span class="sourceLineNo">247</span> for (ServerName serverName : serverNames) {<a name="line.247"></a>
-<span class="sourceLineNo">248</span> Path logDir = new Path(this.rootDir,<a name="line.248"></a>
-<span class="sourceLineNo">249</span> AbstractFSWALProvider.getWALDirectoryName(serverName.toString()));<a name="line.249"></a>
-<span class="sourceLineNo">250</span> Path splitDir = logDir.suffix(AbstractFSWALProvider.SPLITTING_EXT);<a name="line.250"></a>
-<span class="sourceLineNo">251</span> // Rename the directory so a rogue RS doesn't create more WALs<a name="line.251"></a>
-<span class="sourceLineNo">252</span> if (fs.exists(logDir)) {<a name="line.252"></a>
-<span class="sourceLineNo">253</span> if (!this.fs.rename(logDir, splitDir)) {<a name="line.253"></a>
-<span class="sourceLineNo">254</span> throw new IOException("Failed fs.rename for log split: " + logDir);<a name="line.254"></a>
-<span class="sourceLineNo">255</span> }<a name="line.255"></a>
-<span class="sourceLineNo">256</span> logDir = splitDir;<a name="line.256"></a>
-<span class="sourceLineNo">257</span> LOG.debug("Renamed region directory: " + splitDir);<a name="line.257"></a>
-<span class="sourceLineNo">258</span> } else if (!fs.exists(splitDir)) {<a name="line.258"></a>
-<span class="sourceLineNo">259</span> LOG.info("Log dir for server " + serverName + " does not exist");<a name="line.259"></a>
-<span class="sourceLineNo">260</span> continue;<a name="line.260"></a>
-<span class="sourceLineNo">261</span> }<a name="line.261"></a>
-<span class="sourceLineNo">262</span> logDirs.add(splitDir);<a name="line.262"></a>
-<span class="sourceLineNo">263</span> }<a name="line.263"></a>
-<span class="sourceLineNo">264</span> } catch (IOException ioe) {<a name="line.264"></a>
-<span class="sourceLineNo">265</span> if (!checkFileSystem()) {<a name="line.265"></a>
-<span class="sourceLineNo">266</span> this.services.abort("Aborting due to filesystem unavailable", ioe);<a name="line.266"></a>
-<span class="sourceLineNo">267</span> throw ioe;<a name="line.267"></a>
-<span class="sourceLineNo">268</span> }<a name="line.268"></a>
-<span class="sourceLineNo">269</span> } finally {<a name="line.269"></a>
-<span class="sourceLineNo">270</span> if (needReleaseLock) {<a name="line.270"></a>
-<span class="sourceLineNo">271</span> this.splitLogLock.unlock();<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> return logDirs;<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> public void splitLog(final Set<ServerName> serverNames) throws IOException {<a name="line.277"></a>
-<span class="sourceLineNo">278</span> splitLog(serverNames, NON_META_FILTER);<a name="line.278"></a>
-<span class="sourceLineNo">279</span> }<a name="line.279"></a>
-<span class="sourceLineNo">280</span><a name="line.280"></a>
-<span class="sourceLineNo">281</span> /**<a name="line.281"></a>
-<span class="sourceLineNo">282</span> * This method is the base split method that splits WAL files matching a filter. Callers should<a name="line.282"></a>
-<span class="sourceLineNo">283</span> * pass the appropriate filter for meta and non-meta WALs.<a name="line.283"></a>
-<span class="sourceLineNo">284</span> * @param serverNames logs belonging to these servers will be split; this will rename the log<a name="line.284"></a>
-<span class="sourceLineNo">285</span> * directory out from under a soft-failed server<a name="line.285"></a>
-<span class="sourceLineNo">286</span> */<a name="line.286"></a>
-<span class="sourceLineNo">287</span> public void splitLog(final Set<ServerName> serverNames, PathFilter filter) throws IOException {<a name="line.287"></a>
-<span class="sourceLineNo">288</span> long splitTime = 0, splitLogSize = 0;<a name="line.288"></a>
-<span class="sourceLineNo">289</span> List<Path> logDirs = getLogDirs(serverNames);<a name="line.289"></a>
-<span class="sourceLineNo">290</span><a name="line.290"></a>
-<span class="sourceLineNo">291</span> splitLogManager.handleDeadWorkers(serverNames);<a name="line.291"></a>
-<span class="sourceLineNo">292</span> splitTime = EnvironmentEdgeManager.currentTime();<a name="line.292"></a>
-<span class="sourceLineNo">293</span> splitLogSize = splitLogManager.splitLogDistributed(serverNames, logDirs, filter);<a name="line.293"></a>
-<span class="sourceLineNo">294</span> splitTime = EnvironmentEdgeManager.currentTime() - splitTime;<a name="line.294"></a>
-<span class="sourceLineNo">295</span><a name="line.295"></a>
-<span class="sourceLineNo">296</span> if (this.metricsMasterFilesystem != null) {<a name="line.296"></a>
-<span class="sourceLineNo">297</span> if (filter == META_FILTER) {<a name="line.297"></a>
-<span class="sourceLineNo">298</span> this.metricsMasterFilesystem.addMetaWALSplit(splitTime, splitLogSize);<a name="line.298"></a>
-<span class="sourceLineNo">299</span> } else {<a name="line.299"></a>
-<span class="sourceLineNo">300</span> this.metricsMasterFilesystem.addSplit(splitTime, splitLogSize);<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>}<a name="line.304"></a>
+<span class="sourceLineNo">203</span> final ServerName serverName = AbstractFSWALProvider.getServerNameFromWALDirectoryName(<a name="line.203"></a>
+<span class="sourceLineNo">204</span> status.getPath());<a name="line.204"></a>
+<span class="sourceLineNo">205</span> if (null == serverName) {<a name="line.205"></a>
+<span class="sourceLineNo">206</span> LOG.warn("Log folder " + status.getPath() + " doesn't look like its name includes a " +<a name="line.206"></a>
+<span class="sourceLineNo">207</span> "region server name; leaving in place. If you see later errors about missing " +<a name="line.207"></a>
+<span class="sourceLineNo">208</span> "write ahead logs they may be saved in this location.");<a name="line.208"></a>
+<span class="sourceLineNo">209</span> } else if (!onlineServers.contains(serverName)) {<a name="line.209"></a>
+<span class="sourceLineNo">210</span> LOG.info("Log folder " + status.getPath() + " doesn't belong "<a name="line.210"></a>
+<span class="sourceLineNo">211</span> + "to a known region server, splitting");<a name="line.211"></a>
+<span class="sourceLineNo">212</span> serverNames.add(serverName);<a name="line.212"></a>
+<span class="sourceLineNo">213</span> } else {<a name="line.213"></a>
+<span class="sourceLineNo">214</span> LOG.info("Log folder " + status.getPath() + " belongs to an existing region server");<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> retrySplitting = false;<a name="line.217"></a>
+<span class="sourceLineNo">218</span> } catch (IOException ioe) {<a name="line.218"></a>
+<span class="sourceLineNo">219</span> LOG.warn("Failed getting failed servers to be recovered.", ioe);<a name="line.219"></a>
+<span class="sourceLineNo">220</span> if (!checkFileSystem()) {<a name="line.220"></a>
+<span class="sourceLineNo">221</span> LOG.warn("Bad Filesystem, exiting");<a name="line.221"></a>
+<span class="sourceLineNo">222</span> Runtime.getRuntime().halt(1);<a name="line.222"></a>
+<span class="sourceLineNo">223</span> }<a name="line.223"></a>
+<span class="sourceLineNo">224</span> try {<a name="line.224"></a>
+<span class="sourceLineNo">225</span> if (retrySplitting) {<a name="line.225"></a>
+<span class="sourceLineNo">226</span> Thread.sleep(conf.getInt("hbase.hlog.split.failure.retry.interval", 30 * 1000));<a name="line.226"></a>
+<span class="sourceLineNo">227</span> }<a name="line.227"></a>
+<span class="sourceLineNo">228</span> } catch (InterruptedException e) {<a name="line.228"></a>
+<span class="sourceLineNo">229</span> LOG.warn("Interrupted, aborting since cannot return w/o splitting");<a name="line.229"></a>
+<span class="sourceLineNo">230</span> Thread.currentThread().interrupt();<a name="line.230"></a>
+<span class="sourceLineNo">231</span> retrySplitting = false;<a name="line.231"></a>
+<span class="sourceLineNo">232</span> Runtime.getRuntime().halt(1);<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> } while (retrySplitting);<a name="line.235"></a>
+<span class="sourceLineNo">236</span><a name="line.236"></a>
+<span class="sourceLineNo">237</span> return serverNames;<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 void splitLog(final ServerName serverName) throws IOException {<a name="line.240"></a>
+<span class="sourceLineNo">241</span> splitLog(Collections.<ServerName>singleton(serverName));<a name="line.241"></a>
+<span class="sourceLineNo">242</span> }<a name="line.242"></a>
+<span class="sourceLineNo">243</span><a name="line.243"></a>
+<span class="sourceLineNo">244</span> /**<a name="line.244"></a>
+<span class="sourceLineNo">245</span> * Specialized method to handle the splitting for meta WAL<a name="line.245"></a>
+<span class="sourceLineNo">246</span> * @param serverName logs belonging to this server will be split<a name="line.246"></a>
+<span class="sourceLineNo">247</span> */<a name="line.247"></a>
+<span class="sourceLineNo">248</span> public void splitMetaLog(final ServerName serverName) throws IOException {<a name="line.248"></a>
+<span class="sourceLineNo">249</span> splitMetaLog(Collections.<ServerName>singleton(serverName));<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> * Specialized method to handle the splitting for meta WAL<a name="line.253"></a>
+<span class="sourceLineNo">254</span> * @param serverNames logs belonging to these servers will be split<a name="line.254"></a>
+<span class="sourceLineNo">255</span> */<a name="line.255"></a>
+<span class="sourceLineNo">256</span> public void splitMetaLog(final Set<ServerName> serverNames) throws IOException {<a name="line.256"></a>
+<span class="sourceLineNo">257</span> splitLog(serverNames, META_FILTER);<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> @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="UL_UNRELEASED_LOCK", justification=<a name="line.260"></a>
+<span class="sourceLineNo">261</span> "We only release this lock when we set it. Updates to code that uses it should verify use " +<a name="line.261"></a>
+<span class="sourceLineNo">262</span> "of the guard boolean.")<a name="line.262"></a>
+<span class="sourceLineNo">263</span> private List<Path> getLogDirs(final Set<ServerName> serverNames) throws IOException {<a name="line.263"></a>
+<span class="sourceLineNo">264</span> List<Path> logDirs = new ArrayList<>();<a name="line.264"></a>
+<span class="sourceLineNo">265</span> boolean needReleaseLock = false;<a name="line.265"></a>
+<span class="sourceLineNo">266</span> if (!this.services.isInitialized()) {<a name="line.266"></a>
+<span class="sourceLineNo">267</span> // during master initialization, we could have multiple places splitting a same wal<a name="line.267"></a>
+<span class="sourceLineNo">268</span> // XXX: Does this still exist after we move to proc-v2?<a name="line.268"></a>
+<span class="sourceLineNo">269</span> this.splitLogLock.lock();<a name="line.269"></a>
+<span class="sourceLineNo">270</span> needReleaseLock = true;<a name="line.270"></a>
+<span class="sourceLineNo">271</span> }<a name="line.271"></a>
+<span class="sourceLineNo">272</span> try {<a name="line.272"></a>
+<span class="sourceLineNo">273</span> for (ServerName serverName : serverNames) {<a name="line.273"></a>
+<span class="sourceLineNo">274</span> Path logDir = new Path(this.rootDir,<a name="line.274"></a>
+<span class="sourceLineNo">275</span> AbstractFSWALProvider.getWALDirectoryName(serverName.toString()));<a name="line.275"></a>
+<span class="sourceLineNo">276</span> Path splitDir = logDir.suffix(AbstractFSWALProvider.SPLITTING_EXT);<a name="line.276"></a>
+<span class="sourceLineNo">277</span> // Rename the directory so a rogue RS doesn't create more WALs<a name="line.277"></a>
+<span class="sourceLineNo">278</span> if (fs.exists(logDir)) {<a name="line.278"></a>
+<span class="sourceLineNo">279</span> if (!this.fs.rename(logDir, splitDir)) {<a name="line.279"></a>
+<span class="sourceLineNo">280</span> throw new IOException("Failed fs.rename for log split: " + logDir);<a name="line.280"></a>
+<span class="sourceLineNo">281</span> }<a name="line.281"></a>
+<span class="sourceLineNo">282</span> logDir = splitDir;<a name="line.282"></a>
+<span class="sourceLineNo">283</span> LOG.debug("Renamed region directory: " + splitDir);<a name="line.283"></a>
+<span class="sourceLineNo">284</span> } else if (!fs.exists(splitDir)) {<a name="line.284"></a>
+<span class="sourceLineNo">285</span> LOG.info("Log dir for server " + serverName + " does not exist");<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> logDirs.add(splitDir);<a name="line.288"></a>
+<span class="sourceLineNo">289</span> }<a name="line.289"></a>
+<span class="sourceLineNo">290</span> } catch (IOException ioe) {<a name="line.290"></a>
+<span class="sourceLineNo">291</span> if (!checkFileSystem()) {<a name="line.291"></a>
+<span class="sourceLineNo">292</span> this.services.abort("Aborting due to filesystem unavailable", ioe);<a name="line.292"></a>
+<span class="sourceLineNo">293</span> throw ioe;<a name="line.293"></a>
+<span class="sourceLineNo">294</span> }<a name="line.294"></a>
+<span class="sourceLineNo">295</span> } finally {<a name="line.295"></a>
+<span class="sourceLineNo">296</span> if (needReleaseLock) {<a name="line.296"></a>
+<span class="sourceLineNo">297</span> this.splitLogLock.unlock();<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> return logDirs;<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 splitLog(final Set<ServerName> serverNames) throws IOException {<a name="line.303"></a>
+<span class="sourceLineNo">304</span> splitLog(serverNames, NON_META_FILTER);<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> * This method is the base split method that splits WAL files matching a filter. Callers should<a name="line.308"></a>
+<span class="sourceLineNo">309</span> * pass the appropriate filter for meta and non-meta WALs.<a name="line.309"></a>
+<span class="sourceLineNo">310</span> * @param serverNames logs belonging to these servers will be split; this will rename the log<a name="line.310"></a>
+<span class="sourceLineNo">311</span> * directory out from under a soft-failed server<a name="line.311"></a>
+<span class="sourceLineNo">312</span> */<a name="line.312"></a>
+<span class="sourceLineNo">313</span> public void splitLog(final Set<ServerName> serverNames, PathFilter filter) throws IOException {<a name="line.313"></a>
+<span class="sourceLineNo">314</span> long splitTime = 0, splitLogSize = 0;<a name="line.314"></a>
+<span class="sourceLineNo">315</span> List<Path> logDirs = getLogDirs(serverNames);<a name="line.315"></a>
+<span class="sourceLineNo">316</span><a name="line.316"></a>
+<span class="sourceLineNo">317</span> splitLogManager.handleDeadWorkers(serverNames);<a name="line.317"></a>
+<span class="sourceLineNo">318</span> splitTime = EnvironmentEdgeManager.currentTime();<a name="line.318"></a>
+<span class="sourceLineNo">319</span> splitLogSize = splitLogManager.splitLogDistributed(serverNames, logDirs, filter);<a name="line.319"></a>
+<span class="sourceLineNo">320</span> splitTime = EnvironmentEdgeManager.currentTime() - splitTime;<a name="line.320"></a>
+<span class="sourceLineNo">321</span><a name="line.321"></a>
+<span class="sourceLineNo">322</span> if (this.metricsMasterFilesystem != null) {<a name="line.322"></a>
+<span class="sourceLineNo">323</span> if (filter == META_FILTER) {<a name="line.323"></a>
+<span class="sourceLineNo">324</span> this.metricsMasterFilesystem.addMetaWALSplit(splitTime, splitLogSize);<a name="line.324"></a>
+<span class="sourceLineNo">325</span> } else {<a name="line.325"></a>
+<span class="sourceLineNo">326</span> this.metricsMasterFilesystem.addSplit(splitTime, splitLogSize);<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>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/src-html/org/apache/hadoop/hbase/master/RegionServerTracker.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/RegionServerTracker.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/RegionServerTracker.html
index cc0dba8..06b90f3 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/RegionServerTracker.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/RegionServerTracker.html
@@ -54,143 +54,145 @@
<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.RegionServerInfo;<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> * <p><a name="line.49"></a>
-<span class="sourceLineNo">050</span> * Tracks the online region servers via ZK.<a name="line.50"></a>
-<span class="sourceLineNo">051</span> * </p><a name="line.51"></a>
-<span class="sourceLineNo">052</span> * <p><a name="line.52"></a>
-<span class="sourceLineNo">053</span> * Handling of new RSs checking in is done via RPC. This class is only responsible for watching for<a name="line.53"></a>
-<span class="sourceLineNo">054</span> * expired nodes. It handles listening for changes in the RS node list. The only exception is when<a name="line.54"></a>
-<span class="sourceLineNo">055</span> * master restart, we will use the list fetched from zk to construct the initial set of live region<a name="line.55"></a>
-<span class="sourceLineNo">056</span> * servers.<a name="line.56"></a>
-<span class="sourceLineNo">057</span> * </p><a name="line.57"></a>
-<span class="sourceLineNo">058</span> * <p><a name="line.58"></a>
-<span class="sourceLineNo">059</span> * If an RS node gets deleted, this automatically handles calling of<a name="line.59"></a>
-<span class="sourceLineNo">060</span> * {@link ServerManager#expireServer(ServerName)}<a name="line.60"></a>
-<span class="sourceLineNo">061</span> * </p><a name="line.61"></a>
-<span class="sourceLineNo">062</span> */<a name="line.62"></a>
-<span class="sourceLineNo">063</span>@InterfaceAudience.Private<a name="line.63"></a>
-<span class="sourceLineNo">064</span>public class RegionServerTracker extends ZKListener {<a name="line.64"></a>
-<span class="sourceLineNo">065</span> private static final Logger LOG = LoggerFactory.getLogger(RegionServerTracker.class);<a name="line.65"></a>
-<span class="sourceLineNo">066</span> private final Set<ServerName> regionServers = new HashSet<>();<a name="line.66"></a>
-<span class="sourceLineNo">067</span> private final ServerManager serverManager;<a name="line.67"></a>
-<span class="sourceLineNo">068</span> private final MasterServices server;<a name="line.68"></a>
-<span class="sourceLineNo">069</span> // As we need to send request to zk when processing the nodeChildrenChanged event, we'd better<a name="line.69"></a>
-<span class="sourceLineNo">070</span> // move the operation to a single threaded thread pool in order to not block the zk event<a name="line.70"></a>
-<span class="sourceLineNo">071</span> // processing since all the zk listener across HMaster will be called in one thread sequentially.<a name="line.71"></a>
-<span class="sourceLineNo">072</span> private final ExecutorService executor;<a name="line.72"></a>
-<span class="sourceLineNo">073</span><a name="line.73"></a>
-<span class="sourceLineNo">074</span> public RegionServerTracker(ZKWatcher watcher, MasterServices server,<a name="line.74"></a>
-<span class="sourceLineNo">075</span> ServerManager serverManager) {<a name="line.75"></a>
-<span class="sourceLineNo">076</span> super(watcher);<a name="line.76"></a>
-<span class="sourceLineNo">077</span> this.server = server;<a name="line.77"></a>
-<span class="sourceLineNo">078</span> this.serverManager = serverManager;<a name="line.78"></a>
-<span class="sourceLineNo">079</span> executor = Executors.newSingleThreadExecutor(<a name="line.79"></a>
-<span class="sourceLineNo">080</span> new ThreadFactoryBuilder().setDaemon(true).setNameFormat("RegionServerTracker-%d").build());<a name="line.80"></a>
-<span class="sourceLineNo">081</span> }<a name="line.81"></a>
-<span class="sourceLineNo">082</span><a name="line.82"></a>
-<span class="sourceLineNo">083</span> private Pair<ServerName, RegionServerInfo> getServerInfo(String name)<a name="line.83"></a>
-<span class="sourceLineNo">084</span> throws KeeperException, IOException {<a name="line.84"></a>
-<span class="sourceLineNo">085</span> ServerName serverName = ServerName.parseServerName(name);<a name="line.85"></a>
-<span class="sourceLineNo">086</span> String nodePath = ZNodePaths.joinZNode(watcher.getZNodePaths().rsZNode, name);<a name="line.86"></a>
-<span class="sourceLineNo">087</span> byte[] data;<a name="line.87"></a>
-<span class="sourceLineNo">088</span> try {<a name="line.88"></a>
-<span class="sourceLineNo">089</span> data = ZKUtil.getData(watcher, nodePath);<a name="line.89"></a>
-<span class="sourceLineNo">090</span> } catch (InterruptedException e) {<a name="line.90"></a>
-<span class="sourceLineNo">091</span> throw (InterruptedIOException) new InterruptedIOException().initCause(e);<a name="line.91"></a>
-<span class="sourceLineNo">092</span> }<a name="line.92"></a>
-<span class="sourceLineNo">093</span> if (data == null) {<a name="line.93"></a>
-<span class="sourceLineNo">094</span> // we should receive a children changed event later and then we will expire it, so we still<a name="line.94"></a>
-<span class="sourceLineNo">095</span> // need to add it to the region server set.<a name="line.95"></a>
-<span class="sourceLineNo">096</span> LOG.warn("Server node {} does not exist, already dead?", name);<a name="line.96"></a>
-<span class="sourceLineNo">097</span> return Pair.newPair(serverName, null);<a name="line.97"></a>
-<span class="sourceLineNo">098</span> }<a name="line.98"></a>
-<span class="sourceLineNo">099</span> if (data.length == 0 || !ProtobufUtil.isPBMagicPrefix(data)) {<a name="line.99"></a>
-<span class="sourceLineNo">100</span> // this should not happen actually, unless we have bugs or someone has messed zk up.<a name="line.100"></a>
-<span class="sourceLineNo">101</span> LOG.warn("Invalid data for region server node {} on zookeeper, data length = {}", name,<a name="line.101"></a>
-<span class="sourceLineNo">102</span> data.length);<a name="line.102"></a>
-<span class="sourceLineNo">103</span> return Pair.newPair(serverName, null);<a name="line.103"></a>
-<span class="sourceLineNo">104</span> }<a name="line.104"></a>
-<span class="sourceLineNo">105</span> RegionServerInfo.Builder builder = RegionServerInfo.newBuilder();<a name="line.105"></a>
-<span class="sourceLineNo">106</span> int magicLen = ProtobufUtil.lengthOfPBMagic();<a name="line.106"></a>
-<span class="sourceLineNo">107</span> ProtobufUtil.mergeFrom(builder, data, magicLen, data.length - magicLen);<a name="line.107"></a>
-<span class="sourceLineNo">108</span> return Pair.newPair(serverName, builder.build());<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> /**<a name="line.111"></a>
-<span class="sourceLineNo">112</span> * <p><a name="line.112"></a>
-<span class="sourceLineNo">113</span> * Starts the tracking of online RegionServers.<a name="line.113"></a>
-<span class="sourceLineNo">114</span> * </p><a name="line.114"></a>
-<span class="sourceLineNo">115</span> * <p><a name="line.115"></a>
-<span class="sourceLineNo">116</span> * All RSs will be tracked after this method is called.<a name="line.116"></a>
-<span class="sourceLineNo">117</span> * </p><a name="line.117"></a>
+<span class="sourceLineNo">049</span> * Tracks the online region servers via ZK.<a name="line.49"></a>
+<span class="sourceLineNo">050</span> * <p/><a name="line.50"></a>
+<span class="sourceLineNo">051</span> * Handling of new RSs checking in is done via RPC. This class is only responsible for watching for<a name="line.51"></a>
+<span class="sourceLineNo">052</span> * expired nodes. It handles listening for changes in the RS node list. The only exception is when<a name="line.52"></a>
+<span class="sourceLineNo">053</span> * master restart, we will use the list fetched from zk to construct the initial set of live region<a name="line.53"></a>
+<span class="sourceLineNo">054</span> * servers.<a name="line.54"></a>
+<span class="sourceLineNo">055</span> * <p/><a name="line.55"></a>
+<span class="sourceLineNo">056</span> * If an RS node gets deleted, this automatically handles calling of<a name="line.56"></a>
+<span class="sourceLineNo">057</span> * {@link ServerManager#expireServer(ServerName)}<a name="line.57"></a>
+<span class="sourceLineNo">058</span> */<a name="line.58"></a>
+<span class="sourceLineNo">059</span>@InterfaceAudience.Private<a name="line.59"></a>
+<span class="sourceLineNo">060</span>public class RegionServerTracker extends ZKListener {<a name="line.60"></a>
+<span class="sourceLineNo">061</span> private static final Logger LOG = LoggerFactory.getLogger(RegionServerTracker.class);<a name="line.61"></a>
+<span class="sourceLineNo">062</span> private final Set<ServerName> regionServers = new HashSet<>();<a name="line.62"></a>
+<span class="sourceLineNo">063</span> private final ServerManager serverManager;<a name="line.63"></a>
+<span class="sourceLineNo">064</span> private final MasterServices server;<a name="line.64"></a>
+<span class="sourceLineNo">065</span> // As we need to send request to zk when processing the nodeChildrenChanged event, we'd better<a name="line.65"></a>
+<span class="sourceLineNo">066</span> // move the operation to a single threaded thread pool in order to not block the zk event<a name="line.66"></a>
+<span class="sourceLineNo">067</span> // processing since all the zk listener across HMaster will be called in one thread sequentially.<a name="line.67"></a>
+<span class="sourceLineNo">068</span> private final ExecutorService executor;<a name="line.68"></a>
+<span class="sourceLineNo">069</span><a name="line.69"></a>
+<span class="sourceLineNo">070</span> public RegionServerTracker(ZKWatcher watcher, MasterServices server,<a name="line.70"></a>
+<span class="sourceLineNo">071</span> ServerManager serverManager) {<a name="line.71"></a>
+<span class="sourceLineNo">072</span> super(watcher);<a name="line.72"></a>
+<span class="sourceLineNo">073</span> this.server = server;<a name="line.73"></a>
+<span class="sourceLineNo">074</span> this.serverManager = serverManager;<a name="line.74"></a>
+<span class="sourceLineNo">075</span> this.executor = Executors.newSingleThreadExecutor(<a name="line.75"></a>
+<span class="sourceLineNo">076</span> new ThreadFactoryBuilder().setDaemon(true).setNameFormat("RegionServerTracker-%d").build());<a name="line.76"></a>
+<span class="sourceLineNo">077</span> }<a name="line.77"></a>
+<span class="sourceLineNo">078</span><a name="line.78"></a>
+<span class="sourceLineNo">079</span> private Pair<ServerName, RegionServerInfo> getServerInfo(String name)<a name="line.79"></a>
+<span class="sourceLineNo">080</span> throws KeeperException, IOException {<a name="line.80"></a>
+<span class="sourceLineNo">081</span> ServerName serverName = ServerName.parseServerName(name);<a name="line.81"></a>
+<span class="sourceLineNo">082</span> String nodePath = ZNodePaths.joinZNode(watcher.getZNodePaths().rsZNode, name);<a name="line.82"></a>
+<span class="sourceLineNo">083</span> byte[] data;<a name="line.83"></a>
+<span class="sourceLineNo">084</span> try {<a name="line.84"></a>
+<span class="sourceLineNo">085</span> data = ZKUtil.getData(watcher, nodePath);<a name="line.85"></a>
+<span class="sourceLineNo">086</span> } catch (InterruptedException e) {<a name="line.86"></a>
+<span class="sourceLineNo">087</span> throw (InterruptedIOException) new InterruptedIOException().initCause(e);<a name="line.87"></a>
+<span class="sourceLineNo">088</span> }<a name="line.88"></a>
+<span class="sourceLineNo">089</span> if (data == null) {<a name="line.89"></a>
+<span class="sourceLineNo">090</span> // we should receive a children changed event later and then we will expire it, so we still<a name="line.90"></a>
+<span class="sourceLineNo">091</span> // need to add it to the region server set.<a name="line.91"></a>
+<span class="sourceLineNo">092</span> LOG.warn("Server node {} does not exist, already dead?", name);<a name="line.92"></a>
+<span class="sourceLineNo">093</span> return Pair.newPair(serverName, null);<a name="line.93"></a>
+<span class="sourceLineNo">094</span> }<a name="line.94"></a>
+<span class="sourceLineNo">095</span> if (data.length == 0 || !ProtobufUtil.isPBMagicPrefix(data)) {<a name="line.95"></a>
+<span class="sourceLineNo">096</span> // this should not happen actually, unless we have bugs or someone has messed zk up.<a name="line.96"></a>
+<span class="sourceLineNo">097</span> LOG.warn("Invalid data for region server node {} on zookeeper, data length = {}", name,<a name="line.97"></a>
+<span class="sourceLineNo">098</span> data.length);<a name="line.98"></a>
+<span class="sourceLineNo">099</span> return Pair.newPair(serverName, null);<a name="line.99"></a>
+<span class="sourceLineNo">100</span> }<a name="line.100"></a>
+<span class="sourceLineNo">101</span> RegionServerInfo.Builder builder = RegionServerInfo.newBuilder();<a name="line.101"></a>
+<span class="sourceLineNo">102</span> int magicLen = ProtobufUtil.lengthOfPBMagic();<a name="line.102"></a>
+<span class="sourceLineNo">103</span> ProtobufUtil.mergeFrom(builder, data, magicLen, data.length - magicLen);<a name="line.103"></a>
+<span class="sourceLineNo">104</span> return Pair.newPair(serverName, builder.build());<a name="line.104"></a>
+<span class="sourceLineNo">105</span> }<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> * Starts the tracking of online RegionServers. All RSes will be tracked after this method is<a name="line.108"></a>
+<span class="sourceLineNo">109</span> * called.<a name="line.109"></a>
+<span class="sourceLineNo">110</span> * <p/><a name="line.110"></a>
+<span class="sourceLineNo">111</span> * In this method, we will also construct the region server sets in {@link ServerManager}. If a<a name="line.111"></a>
+<span class="sourceLineNo">112</span> * region server is dead between the crash of the previous master instance and the start of the<a name="line.112"></a>
+<span class="sourceLineNo">113</span> * current master instance, we will schedule a SCP for it. This is done in<a name="line.113"></a>
+<span class="sourceLineNo">114</span> * {@link ServerManager#findOutDeadServersAndProcess(Set, Set)}, we call it here under the lock<a name="line.114"></a>
+<span class="sourceLineNo">115</span> * protection to prevent concurrency issues with server expiration operation.<a name="line.115"></a>
+<span class="sourceLineNo">116</span> * @param deadServersFromPE the region servers which already have SCP associated.<a name="line.116"></a>
+<span class="sourceLineNo">117</span> * @param liveServersFromWALDir the live region servers from wal directory.<a name="line.117"></a>
<span class="sourceLineNo">118</span> */<a name="line.118"></a>
-<span class="sourceLineNo">119</span> public void start() throws KeeperException, IOException {<a name="line.119"></a>
-<span class="sourceLineNo">120</span> watcher.registerListener(this);<a name="line.120"></a>
-<span class="sourceLineNo">121</span> synchronized (this) {<a name="line.121"></a>
-<span class="sourceLineNo">122</span> List<String> servers =<a name="line.122"></a>
-<span class="sourceLineNo">123</span> ZKUtil.listChildrenAndWatchForNewChildren(watcher, watcher.getZNodePaths().rsZNode);<a name="line.123"></a>
-<span class="sourceLineNo">124</span> for (String n : servers) {<a name="line.124"></a>
-<span class="sourceLineNo">125</span> Pair<ServerName, RegionServerInfo> pair = getServerInfo(n);<a name="line.125"></a>
-<span class="sourceLineNo">126</span> ServerName serverName = pair.getFirst();<a name="line.126"></a>
-<span class="sourceLineNo">127</span> RegionServerInfo info = pair.getSecond();<a name="line.127"></a>
-<span class="sourceLineNo">128</span> regionServers.add(serverName);<a name="line.128"></a>
-<span class="sourceLineNo">129</span> ServerMetrics serverMetrics = info != null<a name="line.129"></a>
-<span class="sourceLineNo">130</span> ? ServerMetricsBuilder.of(serverName,<a name="line.130"></a>
-<span class="sourceLineNo">131</span> VersionInfoUtil.getVersionNumber(info.getVersionInfo()))<a name="line.131"></a>
-<span class="sourceLineNo">132</span> : ServerMetricsBuilder.of(serverName);<a name="line.132"></a>
-<span class="sourceLineNo">133</span> serverManager.checkAndRecordNewServer(serverName, serverMetrics);<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> }<a name="line.136"></a>
-<span class="sourceLineNo">137</span><a name="line.137"></a>
-<span class="sourceLineNo">138</span> public void stop() {<a name="line.138"></a>
-<span class="sourceLineNo">139</span> executor.shutdownNow();<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> private synchronized void refresh() {<a name="line.142"></a>
-<span class="sourceLineNo">143</span> List<String> names;<a name="line.143"></a>
-<span class="sourceLineNo">144</span> try {<a name="line.144"></a>
-<span class="sourceLineNo">145</span> names = ZKUtil.listChildrenAndWatchForNewChildren(watcher, watcher.getZNodePaths().rsZNode);<a name="line.145"></a>
-<span class="sourceLineNo">146</span> } catch (KeeperException e) {<a name="line.146"></a>
-<span class="sourceLineNo">147</span> // here we need to abort as we failed to set watcher on the rs node which means that we can<a name="line.147"></a>
-<span class="sourceLineNo">148</span> // not track the node deleted evetnt any more.<a name="line.148"></a>
-<span class="sourceLineNo">149</span> server.abort("Unexpected zk exception getting RS nodes", e);<a name="line.149"></a>
-<span class="sourceLineNo">150</span> return;<a name="line.150"></a>
-<span class="sourceLineNo">151</span> }<a name="line.151"></a>
-<span class="sourceLineNo">152</span> Set<ServerName> servers =<a name="line.152"></a>
-<span class="sourceLineNo">153</span> names.stream().map(ServerName::parseServerName).collect(Collectors.toSet());<a name="line.153"></a>
-<span class="sourceLineNo">154</span> for (Iterator<ServerName> iter = regionServers.iterator(); iter.hasNext();) {<a name="line.154"></a>
-<span class="sourceLineNo">155</span> ServerName sn = iter.next();<a name="line.155"></a>
-<span class="sourceLineNo">156</span> if (!servers.contains(sn)) {<a name="line.156"></a>
-<span class="sourceLineNo">157</span> LOG.info("RegionServer ephemeral node deleted, processing expiration [{}]", sn);<a name="line.157"></a>
-<span class="sourceLineNo">158</span> serverManager.expireServer(sn);<a name="line.158"></a>
-<span class="sourceLineNo">159</span> iter.remove();<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> // here we do not need to parse the region server info as it is useless now, we only need the<a name="line.162"></a>
-<span class="sourceLineNo">163</span> // server name.<a name="line.163"></a>
-<span class="sourceLineNo">164</span> boolean newServerAdded = false;<a name="line.164"></a>
-<span class="sourceLineNo">165</span> for (ServerName sn : servers) {<a name="line.165"></a>
-<span class="sourceLineNo">166</span> if (regionServers.add(sn)) {<a name="line.166"></a>
-<span class="sourceLineNo">167</span> newServerAdded = true;<a name="line.167"></a>
-<span class="sourceLineNo">168</span> LOG.info("RegionServer ephemeral node created, adding [" + sn + "]");<a name="line.168"></a>
-<span class="sourceLineNo">169</span> }<a name="line.169"></a>
-<span class="sourceLineNo">170</span> }<a name="line.170"></a>
-<span class="sourceLineNo">171</span> if (newServerAdded && server.isInitialized()) {<a name="line.171"></a>
-<span class="sourceLineNo">172</span> // Only call the check to move servers if a RegionServer was added to the cluster; in this<a name="line.172"></a>
-<span class="sourceLineNo">173</span> // case it could be a server with a new version so it makes sense to run the check.<a name="line.173"></a>
-<span class="sourceLineNo">174</span> server.checkIfShouldMoveSystemRegionAsync();<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> @Override<a name="line.178"></a>
-<span class="sourceLineNo">179</span> public void nodeChildrenChanged(String path) {<a name="line.179"></a>
-<span class="sourceLineNo">180</span> if (path.equals(watcher.getZNodePaths().rsZNode) && !server.isAborted() &&<a name="line.180"></a>
-<span class="sourceLineNo">181</span> !server.isStopped()) {<a name="line.181"></a>
-<span class="sourceLineNo">182</span> executor.execute(this::refresh);<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">119</span> public void start(Set<ServerName> deadServersFromPE, Set<ServerName> liveServersFromWALDir)<a name="line.119"></a>
+<span class="sourceLineNo">120</span> throws KeeperException, IOException {<a name="line.120"></a>
+<span class="sourceLineNo">121</span> watcher.registerListener(this);<a name="line.121"></a>
+<span class="sourceLineNo">122</span> synchronized (this) {<a name="line.122"></a>
+<span class="sourceLineNo">123</span> List<String> servers =<a name="line.123"></a>
+<span class="sourceLineNo">124</span> ZKUtil.listChildrenAndWatchForNewChildren(watcher, watcher.getZNodePaths().rsZNode);<a name="line.124"></a>
+<span class="sourceLineNo">125</span> for (String n : servers) {<a name="line.125"></a>
+<span class="sourceLineNo">126</span> Pair<ServerName, RegionServerInfo> pair = getServerInfo(n);<a name="line.126"></a>
+<span class="sourceLineNo">127</span> ServerName serverName = pair.getFirst();<a name="line.127"></a>
+<span class="sourceLineNo">128</span> RegionServerInfo info = pair.getSecond();<a name="line.128"></a>
+<span class="sourceLineNo">129</span> regionServers.add(serverName);<a name="line.129"></a>
+<span class="sourceLineNo">130</span> ServerMetrics serverMetrics = info != null<a name="line.130"></a>
+<span class="sourceLineNo">131</span> ? ServerMetricsBuilder.of(serverName,<a name="line.131"></a>
+<span class="sourceLineNo">132</span> VersionInfoUtil.getVersionNumber(info.getVersionInfo()))<a name="line.132"></a>
+<span class="sourceLineNo">133</span> : ServerMetricsBuilder.of(serverName);<a name="line.133"></a>
+<span class="sourceLineNo">134</span> serverManager.checkAndRecordNewServer(serverName, serverMetrics);<a name="line.134"></a>
+<span class="sourceLineNo">135</span> }<a name="line.135"></a>
+<span class="sourceLineNo">136</span> serverManager.findOutDeadServersAndProcess(deadServersFromPE, liveServersFromWALDir);<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><a name="line.139"></a>
+<span class="sourceLineNo">140</span> public void stop() {<a name="line.140"></a>
+<span class="sourceLineNo">141</span> executor.shutdownNow();<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> private synchronized void refresh() {<a name="line.144"></a>
+<span class="sourceLineNo">145</span> List<String> names;<a name="line.145"></a>
+<span class="sourceLineNo">146</span> try {<a name="line.146"></a>
+<span class="sourceLineNo">147</span> names = ZKUtil.listChildrenAndWatchForNewChildren(watcher, watcher.getZNodePaths().rsZNode);<a name="line.147"></a>
+<span class="sourceLineNo">148</span> } catch (KeeperException e) {<a name="line.148"></a>
+<span class="sourceLineNo">149</span> // here we need to abort as we failed to set watcher on the rs node which means that we can<a name="line.149"></a>
+<span class="sourceLineNo">150</span> // not track the node deleted evetnt any more.<a name="line.150"></a>
+<span class="sourceLineNo">151</span> server.abort("Unexpected zk exception getting RS nodes", e);<a name="line.151"></a>
+<span class="sourceLineNo">152</span> return;<a name="line.152"></a>
+<span class="sourceLineNo">153</span> }<a name="line.153"></a>
+<span class="sourceLineNo">154</span> Set<ServerName> servers =<a name="line.154"></a>
+<span class="sourceLineNo">155</span> names.stream().map(ServerName::parseServerName).collect(Collectors.toSet());<a name="line.155"></a>
+<span class="sourceLineNo">156</span> for (Iterator<ServerName> iter = regionServers.iterator(); iter.hasNext();) {<a name="line.156"></a>
+<span class="sourceLineNo">157</span> ServerName sn = iter.next();<a name="line.157"></a>
+<span class="sourceLineNo">158</span> if (!servers.contains(sn)) {<a name="line.158"></a>
+<span class="sourceLineNo">159</span> LOG.info("RegionServer ephemeral node deleted, processing expiration [{}]", sn);<a name="line.159"></a>
+<span class="sourceLineNo">160</span> serverManager.expireServer(sn);<a name="line.160"></a>
+<span class="sourceLineNo">161</span> iter.remove();<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> // here we do not need to parse the region server info as it is useless now, we only need the<a name="line.164"></a>
+<span class="sourceLineNo">165</span> // server name.<a name="line.165"></a>
+<span class="sourceLineNo">166</span> boolean newServerAdded = false;<a name="line.166"></a>
+<span class="sourceLineNo">167</span> for (ServerName sn : servers) {<a name="line.167"></a>
+<span class="sourceLineNo">168</span> if (regionServers.add(sn)) {<a name="line.168"></a>
+<span class="sourceLineNo">169</span> newServerAdded = true;<a name="line.169"></a>
+<span class="sourceLineNo">170</span> LOG.info("RegionServer ephemeral node created, adding [" + sn + "]");<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> if (newServerAdded && server.isInitialized()) {<a name="line.173"></a>
+<span class="sourceLineNo">174</span> // Only call the check to move servers if a RegionServer was added to the cluster; in this<a name="line.174"></a>
+<span class="sourceLineNo">175</span> // case it could be a server with a new version so it makes sense to run the check.<a name="line.175"></a>
+<span class="sourceLineNo">176</span> server.checkIfShouldMoveSystemRegionAsync();<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> @Override<a name="line.180"></a>
+<span class="sourceLineNo">181</span> public void nodeChildrenChanged(String path) {<a name="line.181"></a>
+<span class="sourceLineNo">182</span> if (path.equals(watcher.getZNodePaths().rsZNode) && !server.isAborted() &&<a name="line.182"></a>
+<span class="sourceLineNo">183</span> !server.isStopped()) {<a name="line.183"></a>
+<span class="sourceLineNo">184</span> executor.execute(this::refresh);<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>
[47/51] [partial] hbase-site git commit: Published site at
9101fc246f86445006bfbcdfda5cc495016dc280.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/checkstyle-aggregate.html
----------------------------------------------------------------------
diff --git a/checkstyle-aggregate.html b/checkstyle-aggregate.html
index 20f2aa6..f28ddac 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="20180619" />
+ <meta name="Date-Revision-yyyymmdd" content="20180620" />
<meta http-equiv="Content-Language" content="en" />
<title>Apache HBase – Checkstyle Results</title>
<link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -281,10 +281,10 @@
<th><img src="images/icon_warning_sml.gif" alt="" /> Warnings</th>
<th><img src="images/icon_error_sml.gif" alt="" /> Errors</th></tr>
<tr class="b">
-<td>3640</td>
+<td>3641</td>
<td>0</td>
<td>0</td>
-<td>16189</td></tr></table></div>
+<td>16171</td></tr></table></div>
<div class="section">
<h2><a name="Files"></a>Files</h2>
<table border="0" class="table table-striped">
@@ -822,7 +822,7 @@
<td><a href="#org.apache.hadoop.hbase.TestMetaTableAccessor.java">org/apache/hadoop/hbase/TestMetaTableAccessor.java</a></td>
<td>0</td>
<td>0</td>
-<td>10</td></tr>
+<td>8</td></tr>
<tr class="b">
<td><a href="#org.apache.hadoop.hbase.TestMetaTableAccessorNoCluster.java">org/apache/hadoop/hbase/TestMetaTableAccessorNoCluster.java</a></td>
<td>0</td>
@@ -4759,622 +4759,612 @@
<td>0</td>
<td>1</td></tr>
<tr class="a">
-<td><a href="#org.apache.hadoop.hbase.master.MockNoopMasterServices.java">org/apache/hadoop/hbase/master/MockNoopMasterServices.java</a></td>
-<td>0</td>
-<td>0</td>
-<td>2</td></tr>
-<tr class="b">
<td><a href="#org.apache.hadoop.hbase.master.MockRegionServer.java">org/apache/hadoop/hbase/master/MockRegionServer.java</a></td>
<td>0</td>
<td>0</td>
<td>11</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.master.RackManager.java">org/apache/hadoop/hbase/master/RackManager.java</a></td>
<td>0</td>
<td>0</td>
<td>2</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.master.RegionPlacementMaintainer.java">org/apache/hadoop/hbase/master/RegionPlacementMaintainer.java</a></td>
<td>0</td>
<td>0</td>
<td>29</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.master.RegionState.java">org/apache/hadoop/hbase/master/RegionState.java</a></td>
<td>0</td>
<td>0</td>
<td>86</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.master.ServerListener.java">org/apache/hadoop/hbase/master/ServerListener.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.master.ServerManager.java">org/apache/hadoop/hbase/master/ServerManager.java</a></td>
<td>0</td>
<td>0</td>
-<td>22</td></tr>
-<tr class="b">
+<td>19</td></tr>
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.master.SnapshotOfRegionAssignmentFromMeta.java">org/apache/hadoop/hbase/master/SnapshotOfRegionAssignmentFromMeta.java</a></td>
<td>0</td>
<td>0</td>
<td>13</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.master.SnapshotSentinel.java">org/apache/hadoop/hbase/master/SnapshotSentinel.java</a></td>
<td>0</td>
<td>0</td>
<td>2</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.master.SplitLogManager.java">org/apache/hadoop/hbase/master/SplitLogManager.java</a></td>
<td>0</td>
<td>0</td>
<td>17</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.master.SplitOrMergeTracker.java">org/apache/hadoop/hbase/master/SplitOrMergeTracker.java</a></td>
<td>0</td>
<td>0</td>
<td>3</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.master.TableNamespaceManager.java">org/apache/hadoop/hbase/master/TableNamespaceManager.java</a></td>
<td>0</td>
<td>0</td>
<td>6</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.master.TableStateManager.java">org/apache/hadoop/hbase/master/TableStateManager.java</a></td>
<td>0</td>
<td>0</td>
<td>7</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.master.TestActiveMasterManager.java">org/apache/hadoop/hbase/master/TestActiveMasterManager.java</a></td>
<td>0</td>
<td>0</td>
<td>6</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.master.TestCatalogJanitor.java">org/apache/hadoop/hbase/master/TestCatalogJanitor.java</a></td>
<td>0</td>
<td>0</td>
<td>13</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.master.TestCatalogJanitorInMemoryStates.java">org/apache/hadoop/hbase/master/TestCatalogJanitorInMemoryStates.java</a></td>
<td>0</td>
<td>0</td>
<td>2</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.master.TestHMasterCommandLine.java">org/apache/hadoop/hbase/master/TestHMasterCommandLine.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.master.TestMaster.java">org/apache/hadoop/hbase/master/TestMaster.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.master.TestMasterFailoverBalancerPersistence.java">org/apache/hadoop/hbase/master/TestMasterFailoverBalancerPersistence.java</a></td>
<td>0</td>
<td>0</td>
<td>4</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.master.TestMasterFileSystem.java">org/apache/hadoop/hbase/master/TestMasterFileSystem.java</a></td>
<td>0</td>
<td>0</td>
<td>3</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.master.TestMasterFileSystemWithWALDir.java">org/apache/hadoop/hbase/master/TestMasterFileSystemWithWALDir.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.master.TestMasterMetrics.java">org/apache/hadoop/hbase/master/TestMasterMetrics.java</a></td>
<td>0</td>
<td>0</td>
<td>4</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.master.TestMasterMetricsWrapper.java">org/apache/hadoop/hbase/master/TestMasterMetricsWrapper.java</a></td>
<td>0</td>
<td>0</td>
<td>3</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.master.TestMasterNoCluster.java">org/apache/hadoop/hbase/master/TestMasterNoCluster.java</a></td>
<td>0</td>
<td>0</td>
<td>20</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.master.TestMasterOperationsForRegionReplicas.java">org/apache/hadoop/hbase/master/TestMasterOperationsForRegionReplicas.java</a></td>
<td>0</td>
<td>0</td>
<td>5</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.master.TestMasterStatusServlet.java">org/apache/hadoop/hbase/master/TestMasterStatusServlet.java</a></td>
<td>0</td>
<td>0</td>
<td>4</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.master.TestMasterTransitions.java">org/apache/hadoop/hbase/master/TestMasterTransitions.java</a></td>
<td>0</td>
<td>0</td>
<td>6</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.master.TestMirroringTableStateManager.java">org/apache/hadoop/hbase/master/TestMirroringTableStateManager.java</a></td>
<td>0</td>
<td>0</td>
<td>5</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.master.TestRegionPlacement.java">org/apache/hadoop/hbase/master/TestRegionPlacement.java</a></td>
<td>0</td>
<td>0</td>
<td>20</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.master.TestRegionPlacement2.java">org/apache/hadoop/hbase/master/TestRegionPlacement2.java</a></td>
<td>0</td>
<td>0</td>
<td>2</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.master.TestRollingRestart.java">org/apache/hadoop/hbase/master/TestRollingRestart.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.master.TestSplitLogManager.java">org/apache/hadoop/hbase/master/TestSplitLogManager.java</a></td>
<td>0</td>
<td>0</td>
<td>7</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.master.TestTableStateManager.java">org/apache/hadoop/hbase/master/TestTableStateManager.java</a></td>
<td>0</td>
<td>0</td>
<td>2</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.master.TestWarmupRegion.java">org/apache/hadoop/hbase/master/TestWarmupRegion.java</a></td>
<td>0</td>
<td>0</td>
<td>19</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.master.assignment.AssignProcedure.java">org/apache/hadoop/hbase/master/assignment/AssignProcedure.java</a></td>
<td>0</td>
<td>0</td>
<td>5</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.master.assignment.AssignmentManager.java">org/apache/hadoop/hbase/master/assignment/AssignmentManager.java</a></td>
<td>0</td>
<td>0</td>
-<td>32</td></tr>
-<tr class="a">
+<td>31</td></tr>
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.master.assignment.GCMergedRegionsProcedure.java">org/apache/hadoop/hbase/master/assignment/GCMergedRegionsProcedure.java</a></td>
<td>0</td>
<td>0</td>
<td>16</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.master.assignment.GCRegionProcedure.java">org/apache/hadoop/hbase/master/assignment/GCRegionProcedure.java</a></td>
<td>0</td>
<td>0</td>
<td>32</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.master.assignment.MergeTableRegionsProcedure.java">org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.java</a></td>
<td>0</td>
<td>0</td>
<td>5</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.master.assignment.MockMasterServices.java">org/apache/hadoop/hbase/master/assignment/MockMasterServices.java</a></td>
<td>0</td>
<td>0</td>
-<td>3</td></tr>
-<tr class="a">
+<td>2</td></tr>
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.master.assignment.MoveRegionProcedure.java">org/apache/hadoop/hbase/master/assignment/MoveRegionProcedure.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.master.assignment.RegionStateStore.java">org/apache/hadoop/hbase/master/assignment/RegionStateStore.java</a></td>
<td>0</td>
<td>0</td>
<td>5</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.master.assignment.RegionStates.java">org/apache/hadoop/hbase/master/assignment/RegionStates.java</a></td>
<td>0</td>
<td>0</td>
<td>26</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.master.assignment.RegionTransitionProcedure.java">org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.java</a></td>
<td>0</td>
<td>0</td>
<td>6</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.master.assignment.SplitTableRegionProcedure.java">org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.java</a></td>
<td>0</td>
<td>0</td>
<td>8</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.master.assignment.TestAssignmentManager.java">org/apache/hadoop/hbase/master/assignment/TestAssignmentManager.java</a></td>
<td>0</td>
<td>0</td>
<td>4</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.master.assignment.TestAssignmentOnRSCrash.java">org/apache/hadoop/hbase/master/assignment/TestAssignmentOnRSCrash.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.master.assignment.TestRegionStates.java">org/apache/hadoop/hbase/master/assignment/TestRegionStates.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.master.assignment.TestSplitTableRegionProcedure.java">org/apache/hadoop/hbase/master/assignment/TestSplitTableRegionProcedure.java</a></td>
<td>0</td>
<td>0</td>
<td>2</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.master.assignment.TestUnexpectedStateException.java">org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.master.assignment.UnassignProcedure.java">org/apache/hadoop/hbase/master/assignment/UnassignProcedure.java</a></td>
<td>0</td>
<td>0</td>
<td>4</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.master.assignment.Util.java">org/apache/hadoop/hbase/master/assignment/Util.java</a></td>
<td>0</td>
<td>0</td>
<td>3</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.master.balancer.BalancerChore.java">org/apache/hadoop/hbase/master/balancer/BalancerChore.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.master.balancer.BalancerTestBase.java">org/apache/hadoop/hbase/master/balancer/BalancerTestBase.java</a></td>
<td>0</td>
<td>0</td>
<td>75</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.master.balancer.BaseLoadBalancer.java">org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java</a></td>
<td>0</td>
<td>0</td>
<td>60</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.master.balancer.ClusterLoadState.java">org/apache/hadoop/hbase/master/balancer/ClusterLoadState.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.master.balancer.ClusterStatusChore.java">org/apache/hadoop/hbase/master/balancer/ClusterStatusChore.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.master.balancer.FavoredStochasticBalancer.java">org/apache/hadoop/hbase/master/balancer/FavoredStochasticBalancer.java</a></td>
<td>0</td>
<td>0</td>
<td>2</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.master.balancer.LoadBalancerFactory.java">org/apache/hadoop/hbase/master/balancer/LoadBalancerFactory.java</a></td>
<td>0</td>
<td>0</td>
<td>3</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.master.balancer.LoadBalancerPerformanceEvaluation.java">org/apache/hadoop/hbase/master/balancer/LoadBalancerPerformanceEvaluation.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.master.balancer.RegionInfoComparator.java">org/apache/hadoop/hbase/master/balancer/RegionInfoComparator.java</a></td>
<td>0</td>
<td>0</td>
<td>2</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.master.balancer.RegionLocationFinder.java">org/apache/hadoop/hbase/master/balancer/RegionLocationFinder.java</a></td>
<td>0</td>
<td>0</td>
<td>3</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.master.balancer.ServerAndLoad.java">org/apache/hadoop/hbase/master/balancer/ServerAndLoad.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.master.balancer.SimpleLoadBalancer.java">org/apache/hadoop/hbase/master/balancer/SimpleLoadBalancer.java</a></td>
<td>0</td>
<td>0</td>
<td>33</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.master.balancer.StochasticLoadBalancer.java">org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.java</a></td>
<td>0</td>
<td>0</td>
<td>32</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.master.balancer.TestBaseLoadBalancer.java">org/apache/hadoop/hbase/master/balancer/TestBaseLoadBalancer.java</a></td>
<td>0</td>
<td>0</td>
<td>16</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.master.balancer.TestDefaultLoadBalancer.java">org/apache/hadoop/hbase/master/balancer/TestDefaultLoadBalancer.java</a></td>
<td>0</td>
<td>0</td>
<td>48</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.master.balancer.TestFavoredNodeTableImport.java">org/apache/hadoop/hbase/master/balancer/TestFavoredNodeTableImport.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.master.balancer.TestFavoredStochasticBalancerPickers.java">org/apache/hadoop/hbase/master/balancer/TestFavoredStochasticBalancerPickers.java</a></td>
<td>0</td>
<td>0</td>
<td>2</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.master.balancer.TestRegionsOnMasterOptions.java">org/apache/hadoop/hbase/master/balancer/TestRegionsOnMasterOptions.java</a></td>
<td>0</td>
<td>0</td>
<td>13</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.master.balancer.TestServerAndLoad.java">org/apache/hadoop/hbase/master/balancer/TestServerAndLoad.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.master.balancer.TestStochasticLoadBalancer.java">org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancer.java</a></td>
<td>0</td>
<td>0</td>
<td>33</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.master.cleaner.BaseFileCleanerDelegate.java">org/apache/hadoop/hbase/master/cleaner/BaseFileCleanerDelegate.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.master.cleaner.BaseLogCleanerDelegate.java">org/apache/hadoop/hbase/master/cleaner/BaseLogCleanerDelegate.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.master.cleaner.CleanerChore.java">org/apache/hadoop/hbase/master/cleaner/CleanerChore.java</a></td>
<td>0</td>
<td>0</td>
<td>3</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.master.cleaner.FileCleanerDelegate.java">org/apache/hadoop/hbase/master/cleaner/FileCleanerDelegate.java</a></td>
<td>0</td>
<td>0</td>
<td>2</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.master.cleaner.HFileLinkCleaner.java">org/apache/hadoop/hbase/master/cleaner/HFileLinkCleaner.java</a></td>
<td>0</td>
<td>0</td>
<td>3</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.master.cleaner.TestCleanerChore.java">org/apache/hadoop/hbase/master/cleaner/TestCleanerChore.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.master.cleaner.TestHFileCleaner.java">org/apache/hadoop/hbase/master/cleaner/TestHFileCleaner.java</a></td>
<td>0</td>
<td>0</td>
<td>4</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.master.cleaner.TestHFileLinkCleaner.java">org/apache/hadoop/hbase/master/cleaner/TestHFileLinkCleaner.java</a></td>
<td>0</td>
<td>0</td>
<td>2</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.master.cleaner.TestSnapshotFromMaster.java">org/apache/hadoop/hbase/master/cleaner/TestSnapshotFromMaster.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.master.cleaner.TimeToLiveHFileCleaner.java">org/apache/hadoop/hbase/master/cleaner/TimeToLiveHFileCleaner.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.master.cleaner.TimeToLiveLogCleaner.java">org/apache/hadoop/hbase/master/cleaner/TimeToLiveLogCleaner.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.master.locking.LockManager.java">org/apache/hadoop/hbase/master/locking/LockManager.java</a></td>
<td>0</td>
<td>0</td>
<td>3</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.master.locking.LockProcedure.java">org/apache/hadoop/hbase/master/locking/LockProcedure.java</a></td>
<td>0</td>
<td>0</td>
<td>5</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.master.normalizer.EmptyNormalizationPlan.java">org/apache/hadoop/hbase/master/normalizer/EmptyNormalizationPlan.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.master.normalizer.NormalizationPlan.java">org/apache/hadoop/hbase/master/normalizer/NormalizationPlan.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.master.normalizer.RegionNormalizerChore.java">org/apache/hadoop/hbase/master/normalizer/RegionNormalizerChore.java</a></td>
<td>0</td>
<td>0</td>
<td>2</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.master.normalizer.RegionNormalizerFactory.java">org/apache/hadoop/hbase/master/normalizer/RegionNormalizerFactory.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.master.normalizer.TestSimpleRegionNormalizerOnCluster.java">org/apache/hadoop/hbase/master/normalizer/TestSimpleRegionNormalizerOnCluster.java</a></td>
<td>0</td>
<td>0</td>
<td>2</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.master.procedure.AbstractStateMachineNamespaceProcedure.java">org/apache/hadoop/hbase/master/procedure/AbstractStateMachineNamespaceProcedure.java</a></td>
<td>0</td>
<td>0</td>
<td>2</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.master.procedure.AbstractStateMachineRegionProcedure.java">org/apache/hadoop/hbase/master/procedure/AbstractStateMachineRegionProcedure.java</a></td>
<td>0</td>
<td>0</td>
<td>2</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.master.procedure.AbstractStateMachineTableProcedure.java">org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.java</a></td>
<td>0</td>
<td>0</td>
-<td>3</td></tr>
-<tr class="b">
+<td>1</td></tr>
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.master.procedure.CloneSnapshotProcedure.java">org/apache/hadoop/hbase/master/procedure/CloneSnapshotProcedure.java</a></td>
<td>0</td>
<td>0</td>
<td>9</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.master.procedure.CreateNamespaceProcedure.java">org/apache/hadoop/hbase/master/procedure/CreateNamespaceProcedure.java</a></td>
<td>0</td>
<td>0</td>
<td>31</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.master.procedure.CreateTableProcedure.java">org/apache/hadoop/hbase/master/procedure/CreateTableProcedure.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.master.procedure.DeleteNamespaceProcedure.java">org/apache/hadoop/hbase/master/procedure/DeleteNamespaceProcedure.java</a></td>
<td>0</td>
<td>0</td>
<td>34</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.master.procedure.DeleteTableProcedure.java">org/apache/hadoop/hbase/master/procedure/DeleteTableProcedure.java</a></td>
<td>0</td>
<td>0</td>
<td>2</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.master.procedure.DisableTableProcedure.java">org/apache/hadoop/hbase/master/procedure/DisableTableProcedure.java</a></td>
<td>0</td>
<td>0</td>
<td>11</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.master.procedure.EnableTableProcedure.java">org/apache/hadoop/hbase/master/procedure/EnableTableProcedure.java</a></td>
<td>0</td>
<td>0</td>
<td>72</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv.java">org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.master.procedure.MasterProcedureScheduler.java">org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.java</a></td>
<td>0</td>
<td>0</td>
<td>8</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.master.procedure.MasterProcedureSchedulerPerformanceEvaluation.java">org/apache/hadoop/hbase/master/procedure/MasterProcedureSchedulerPerformanceEvaluation.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.master.procedure.MasterProcedureTestingUtility.java">org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.java</a></td>
<td>0</td>
<td>0</td>
<td>4</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.master.procedure.MasterProcedureUtil.java">org/apache/hadoop/hbase/master/procedure/MasterProcedureUtil.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.master.procedure.ModifyNamespaceProcedure.java">org/apache/hadoop/hbase/master/procedure/ModifyNamespaceProcedure.java</a></td>
<td>0</td>
<td>0</td>
<td>21</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.master.procedure.ModifyTableProcedure.java">org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.java</a></td>
<td>0</td>
<td>0</td>
<td>47</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.master.procedure.ProcedureDescriber.java">org/apache/hadoop/hbase/master/procedure/ProcedureDescriber.java</a></td>
<td>0</td>
<td>0</td>
<td>3</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.master.procedure.ProcedurePrepareLatch.java">org/apache/hadoop/hbase/master/procedure/ProcedurePrepareLatch.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.master.procedure.ProcedureSyncWait.java">org/apache/hadoop/hbase/master/procedure/ProcedureSyncWait.java</a></td>
<td>0</td>
<td>0</td>
<td>47</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.master.procedure.RecoverMetaProcedure.java">org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.master.procedure.RestoreSnapshotProcedure.java">org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.java</a></td>
<td>0</td>
<td>0</td>
<td>5</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.master.procedure.ServerCrashProcedure.java">org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.java</a></td>
<td>0</td>
<td>0</td>
-<td>7</td></tr>
-<tr class="b">
+<td>4</td></tr>
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.master.procedure.TestCreateTableProcedure.java">org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedure.java</a></td>
<td>0</td>
<td>0</td>
<td>3</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.master.procedure.TestDeleteColumnFamilyProcedureFromClient.java">org/apache/hadoop/hbase/master/procedure/TestDeleteColumnFamilyProcedureFromClient.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.master.procedure.TestDeleteNamespaceProcedure.java">org/apache/hadoop/hbase/master/procedure/TestDeleteNamespaceProcedure.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.master.procedure.TestMasterObserverPostCalls.java">org/apache/hadoop/hbase/master/procedure/TestMasterObserverPostCalls.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.master.procedure.TestMasterProcedureEvents.java">org/apache/hadoop/hbase/master/procedure/TestMasterProcedureEvents.java</a></td>
<td>0</td>
<td>0</td>
-<td>3</td></tr>
-<tr class="a">
+<td>1</td></tr>
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.master.procedure.TestMasterProcedureScheduler.java">org/apache/hadoop/hbase/master/procedure/TestMasterProcedureScheduler.java</a></td>
<td>0</td>
<td>0</td>
<td>3</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.master.procedure.TestMasterProcedureSchedulerConcurrency.java">org/apache/hadoop/hbase/master/procedure/TestMasterProcedureSchedulerConcurrency.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.master.procedure.TestMasterProcedureWalLease.java">org/apache/hadoop/hbase/master/procedure/TestMasterProcedureWalLease.java</a></td>
<td>0</td>
<td>0</td>
<td>2</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.master.procedure.TestRecoverMetaProcedure.java">org/apache/hadoop/hbase/master/procedure/TestRecoverMetaProcedure.java</a></td>
<td>0</td>
<td>0</td>
<td>3</td></tr>
-<tr class="a">
-<td><a href="#org.apache.hadoop.hbase.master.procedure.TestSafemodeBringsDownMaster.java">org/apache/hadoop/hbase/master/procedure/TestSafemodeBringsDownMaster.java</a></td>
-<td>0</td>
-<td>0</td>
-<td>1</td></tr>
<tr class="b">
-<td><a href="#org.apache.hadoop.hbase.master.procedure.TestServerCrashProcedure.java">org/apache/hadoop/hbase/master/procedure/TestServerCrashProcedure.java</a></td>
+<td><a href="#org.apache.hadoop.hbase.master.procedure.TestSafemodeBringsDownMaster.java">org/apache/hadoop/hbase/master/procedure/TestSafemodeBringsDownMaster.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
@@ -5809,4181 +5799,4176 @@
<td>0</td>
<td>2</td></tr>
<tr class="a">
-<td><a href="#org.apache.hadoop.hbase.procedure2.TestProcedureExecutor.java">org/apache/hadoop/hbase/procedure2/TestProcedureExecutor.java</a></td>
-<td>0</td>
-<td>0</td>
-<td>1</td></tr>
-<tr class="b">
<td><a href="#org.apache.hadoop.hbase.procedure2.TestProcedureMetrics.java">org/apache/hadoop/hbase/procedure2/TestProcedureMetrics.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.procedure2.TestProcedureNonce.java">org/apache/hadoop/hbase/procedure2/TestProcedureNonce.java</a></td>
<td>0</td>
<td>0</td>
<td>4</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.procedure2.TestProcedureRecovery.java">org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.procedure2.TestProcedureReplayOrder.java">org/apache/hadoop/hbase/procedure2/TestProcedureReplayOrder.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.procedure2.TestProcedureSchedulerConcurrency.java">org/apache/hadoop/hbase/procedure2/TestProcedureSchedulerConcurrency.java</a></td>
<td>0</td>
<td>0</td>
<td>4</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.procedure2.TestProcedureSuspended.java">org/apache/hadoop/hbase/procedure2/TestProcedureSuspended.java</a></td>
<td>0</td>
<td>0</td>
<td>5</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.procedure2.TestProcedureToString.java">org/apache/hadoop/hbase/procedure2/TestProcedureToString.java</a></td>
<td>0</td>
<td>0</td>
<td>4</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.procedure2.TestStateMachineProcedure.java">org/apache/hadoop/hbase/procedure2/TestStateMachineProcedure.java</a></td>
<td>0</td>
<td>0</td>
<td>2</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.procedure2.TestYieldProcedures.java">org/apache/hadoop/hbase/procedure2/TestYieldProcedures.java</a></td>
<td>0</td>
<td>0</td>
<td>3</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.procedure2.store.ProcedureStore.java">org/apache/hadoop/hbase/procedure2/store/ProcedureStore.java</a></td>
<td>0</td>
<td>0</td>
<td>2</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.procedure2.store.ProcedureStoreBase.java">org/apache/hadoop/hbase/procedure2/store/ProcedureStoreBase.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.procedure2.store.ProcedureStoreTracker.java">org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.java</a></td>
<td>0</td>
<td>0</td>
<td>3</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.procedure2.store.TestProcedureStoreTracker.java">org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.procedure2.store.wal.ProcedureWALFile.java">org/apache/hadoop/hbase/procedure2/store/wal/ProcedureWALFile.java</a></td>
<td>0</td>
<td>0</td>
<td>4</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.procedure2.store.wal.ProcedureWALFormat.java">org/apache/hadoop/hbase/procedure2/store/wal/ProcedureWALFormat.java</a></td>
<td>0</td>
<td>0</td>
<td>2</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.procedure2.store.wal.ProcedureWALFormatReader.java">org/apache/hadoop/hbase/procedure2/store/wal/ProcedureWALFormatReader.java</a></td>
<td>0</td>
<td>0</td>
<td>10</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.procedure2.store.wal.ProcedureWALLoaderPerformanceEvaluation.java">org/apache/hadoop/hbase/procedure2/store/wal/ProcedureWALLoaderPerformanceEvaluation.java</a></td>
<td>0</td>
<td>0</td>
<td>7</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.procedure2.store.wal.ProcedureWALPerformanceEvaluation.java">org/apache/hadoop/hbase/procedure2/store/wal/ProcedureWALPerformanceEvaluation.java</a></td>
<td>0</td>
<td>0</td>
<td>4</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.procedure2.store.wal.ProcedureWALPrettyPrinter.java">org/apache/hadoop/hbase/procedure2/store/wal/ProcedureWALPrettyPrinter.java</a></td>
<td>0</td>
<td>0</td>
<td>2</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.procedure2.store.wal.TestStressWALProcedureStore.java">org/apache/hadoop/hbase/procedure2/store/wal/TestStressWALProcedureStore.java</a></td>
<td>0</td>
<td>0</td>
<td>3</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.procedure2.store.wal.TestWALProcedureStore.java">org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.java</a></td>
<td>0</td>
<td>0</td>
<td>12</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.procedure2.store.wal.WALProcedureStore.java">org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.java</a></td>
<td>0</td>
<td>0</td>
<td>10</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.procedure2.util.DelayedUtil.java">org/apache/hadoop/hbase/procedure2/util/DelayedUtil.java</a></td>
<td>0</td>
<td>0</td>
<td>4</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.procedure2.util.StringUtils.java">org/apache/hadoop/hbase/procedure2/util/StringUtils.java</a></td>
<td>0</td>
<td>0</td>
<td>4</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.protobuf.ProtobufMagic.java">org/apache/hadoop/hbase/protobuf/ProtobufMagic.java</a></td>
<td>0</td>
<td>0</td>
<td>3</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.protobuf.ProtobufMessageConverter.java">org/apache/hadoop/hbase/protobuf/ProtobufMessageConverter.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.protobuf.ProtobufUtil.java">org/apache/hadoop/hbase/protobuf/ProtobufUtil.java</a></td>
<td>0</td>
<td>0</td>
<td>115</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.protobuf.ReplicationProtbufUtil.java">org/apache/hadoop/hbase/protobuf/ReplicationProtbufUtil.java</a></td>
<td>0</td>
<td>0</td>
<td>7</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.protobuf.TestProtobufUtil.java">org/apache/hadoop/hbase/protobuf/TestProtobufUtil.java</a></td>
<td>0</td>
<td>0</td>
<td>6</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.protobuf.TestReplicationProtobuf.java">org/apache/hadoop/hbase/protobuf/TestReplicationProtobuf.java</a></td>
<td>0</td>
<td>0</td>
<td>2</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.quotas.ActivePolicyEnforcement.java">org/apache/hadoop/hbase/quotas/ActivePolicyEnforcement.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.quotas.AverageIntervalRateLimiter.java">org/apache/hadoop/hbase/quotas/AverageIntervalRateLimiter.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.quotas.DefaultOperationQuota.java">org/apache/hadoop/hbase/quotas/DefaultOperationQuota.java</a></td>
<td>0</td>
<td>0</td>
<td>4</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.quotas.FileSystemUtilizationChore.java">org/apache/hadoop/hbase/quotas/FileSystemUtilizationChore.java</a></td>
<td>0</td>
<td>0</td>
<td>4</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.quotas.FixedIntervalRateLimiter.java">org/apache/hadoop/hbase/quotas/FixedIntervalRateLimiter.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.quotas.GlobalQuotaSettings.java">org/apache/hadoop/hbase/quotas/GlobalQuotaSettings.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.quotas.GlobalQuotaSettingsImpl.java">org/apache/hadoop/hbase/quotas/GlobalQuotaSettingsImpl.java</a></td>
<td>0</td>
<td>0</td>
<td>3</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.quotas.MasterSpaceQuotaObserver.java">org/apache/hadoop/hbase/quotas/MasterSpaceQuotaObserver.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.quotas.NamespaceQuotaSnapshotStore.java">org/apache/hadoop/hbase/quotas/NamespaceQuotaSnapshotStore.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.quotas.NoopOperationQuota.java">org/apache/hadoop/hbase/quotas/NoopOperationQuota.java</a></td>
<td>0</td>
<td>0</td>
<td>2</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.quotas.NoopQuotaLimiter.java">org/apache/hadoop/hbase/quotas/NoopQuotaLimiter.java</a></td>
<td>0</td>
<td>0</td>
<td>3</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.quotas.OperationQuota.java">org/apache/hadoop/hbase/quotas/OperationQuota.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.quotas.QuotaCache.java">org/apache/hadoop/hbase/quotas/QuotaCache.java</a></td>
<td>0</td>
<td>0</td>
<td>6</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.quotas.QuotaLimiter.java">org/apache/hadoop/hbase/quotas/QuotaLimiter.java</a></td>
<td>0</td>
<td>0</td>
<td>2</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.quotas.QuotaLimiterFactory.java">org/apache/hadoop/hbase/quotas/QuotaLimiterFactory.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.quotas.QuotaObserverChore.java">org/apache/hadoop/hbase/quotas/QuotaObserverChore.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.quotas.QuotaRetriever.java">org/apache/hadoop/hbase/quotas/QuotaRetriever.java</a></td>
<td>0</td>
<td>0</td>
<td>4</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.quotas.QuotaSettings.java">org/apache/hadoop/hbase/quotas/QuotaSettings.java</a></td>
<td>0</td>
<td>0</td>
<td>6</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.quotas.QuotaSettingsFactory.java">org/apache/hadoop/hbase/quotas/QuotaSettingsFactory.java</a></td>
<td>0</td>
<td>0</td>
<td>3</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.quotas.QuotaState.java">org/apache/hadoop/hbase/quotas/QuotaState.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.quotas.QuotaTableUtil.java">org/apache/hadoop/hbase/quotas/QuotaTableUtil.java</a></td>
<td>0</td>
<td>0</td>
<td>6</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.quotas.QuotaUtil.java">org/apache/hadoop/hbase/quotas/QuotaUtil.java</a></td>
<td>0</td>
<td>0</td>
<td>8</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.quotas.RateLimiter.java">org/apache/hadoop/hbase/quotas/RateLimiter.java</a></td>
<td>0</td>
<td>0</td>
<td>18</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.quotas.RegionServerRpcQuotaManager.java">org/apache/hadoop/hbase/quotas/RegionServerRpcQuotaManager.java</a></td>
<td>0</td>
<td>0</td>
<td>2</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.quotas.RegionServerSpaceQuotaManager.java">org/apache/hadoop/hbase/quotas/RegionServerSpaceQuotaManager.java</a></td>
<td>0</td>
<td>0</td>
<td>4</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.quotas.SnapshotQuotaObserverChore.java">org/apache/hadoop/hbase/quotas/SnapshotQuotaObserverChore.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.quotas.SpaceLimitSettings.java">org/apache/hadoop/hbase/quotas/SpaceLimitSettings.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.quotas.SpaceQuotaRefresherChore.java">org/apache/hadoop/hbase/quotas/SpaceQuotaRefresherChore.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshot.java">org/apache/hadoop/hbase/quotas/SpaceQuotaSnapshot.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifier.java">org/apache/hadoop/hbase/quotas/SpaceQuotaSnapshotNotifier.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifierFactory.java">org/apache/hadoop/hbase/quotas/SpaceQuotaSnapshotNotifierFactory.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifierForTest.java">org/apache/hadoop/hbase/quotas/SpaceQuotaSnapshotNotifierForTest.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.quotas.SpaceViolationPolicyEnforcement.java">org/apache/hadoop/hbase/quotas/SpaceViolationPolicyEnforcement.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.quotas.SpaceViolationPolicyEnforcementFactory.java">org/apache/hadoop/hbase/quotas/SpaceViolationPolicyEnforcementFactory.java</a></td>
<td>0</td>
<td>0</td>
<td>2</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.quotas.TableQuotaSnapshotStore.java">org/apache/hadoop/hbase/quotas/TableQuotaSnapshotStore.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.quotas.TestFileSystemUtilizationChore.java">org/apache/hadoop/hbase/quotas/TestFileSystemUtilizationChore.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.quotas.TestMasterSpaceQuotaObserver.java">org/apache/hadoop/hbase/quotas/TestMasterSpaceQuotaObserver.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.quotas.TestNamespaceQuotaViolationStore.java">org/apache/hadoop/hbase/quotas/TestNamespaceQuotaViolationStore.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.quotas.TestQuotaFilter.java">org/apache/hadoop/hbase/quotas/TestQuotaFilter.java</a></td>
<td>0</td>
<td>0</td>
<td>3</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.quotas.TestQuotaObserverChoreWithMiniCluster.java">org/apache/hadoop/hbase/quotas/TestQuotaObserverChoreWithMiniCluster.java</a></td>
<td>0</td>
<td>0</td>
<td>6</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.quotas.TestQuotaSettingsFactory.java">org/apache/hadoop/hbase/quotas/TestQuotaSettingsFactory.java</a></td>
<td>0</td>
<td>0</td>
<td>7</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.quotas.TestQuotaStatusRPCs.java">org/apache/hadoop/hbase/quotas/TestQuotaStatusRPCs.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.quotas.TestQuotaThrottle.java">org/apache/hadoop/hbase/quotas/TestQuotaThrottle.java</a></td>
<td>0</td>
<td>0</td>
<td>2</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.quotas.TestRateLimiter.java">org/apache/hadoop/hbase/quotas/TestRateLimiter.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.quotas.TestSpaceQuotas.java">org/apache/hadoop/hbase/quotas/TestSpaceQuotas.java</a></td>
<td>0</td>
<td>0</td>
<td>3</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.quotas.TestTableQuotaViolationStore.java">org/apache/hadoop/hbase/quotas/TestTableQuotaViolationStore.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.quotas.TestTablesWithQuotas.java">org/apache/hadoop/hbase/quotas/TestTablesWithQuotas.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.quotas.ThrottleSettings.java">org/apache/hadoop/hbase/quotas/ThrottleSettings.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.quotas.TimeBasedLimiter.java">org/apache/hadoop/hbase/quotas/TimeBasedLimiter.java</a></td>
<td>0</td>
<td>0</td>
<td>7</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.quotas.UserQuotaState.java">org/apache/hadoop/hbase/quotas/UserQuotaState.java</a></td>
<td>0</td>
<td>0</td>
<td>4</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.quotas.policies.BaseViolationPolicyEnforcement.java">org/apache/hadoop/hbase/quotas/policies/BaseViolationPolicyEnforcement.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.quotas.policies.DefaultViolationPolicyEnforcement.java">org/apache/hadoop/hbase/quotas/policies/DefaultViolationPolicyEnforcement.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.quotas.policies.DisableTableViolationPolicyEnforcement.java">org/apache/hadoop/hbase/quotas/policies/DisableTableViolationPolicyEnforcement.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.quotas.policies.NoInsertsViolationPolicyEnforcement.java">org/apache/hadoop/hbase/quotas/policies/NoInsertsViolationPolicyEnforcement.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.quotas.policies.NoWritesCompactionsViolationPolicyEnforcement.java">org/apache/hadoop/hbase/quotas/policies/NoWritesCompactionsViolationPolicyEnforcement.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.quotas.policies.NoWritesViolationPolicyEnforcement.java">org/apache/hadoop/hbase/quotas/policies/NoWritesViolationPolicyEnforcement.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.quotas.policies.TestBulkLoadCheckingViolationPolicyEnforcement.java">org/apache/hadoop/hbase/quotas/policies/TestBulkLoadCheckingViolationPolicyEnforcement.java</a></td>
<td>0</td>
<td>0</td>
<td>4</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.AbstractMemStore.java">org/apache/hadoop/hbase/regionserver/AbstractMemStore.java</a></td>
<td>0</td>
<td>0</td>
<td>4</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.AbstractMultiFileWriter.java">org/apache/hadoop/hbase/regionserver/AbstractMultiFileWriter.java</a></td>
<td>0</td>
<td>0</td>
<td>2</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.AbstractTestDateTieredCompactionPolicy.java">org/apache/hadoop/hbase/regionserver/AbstractTestDateTieredCompactionPolicy.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.AnnotationReadingPriorityFunction.java">org/apache/hadoop/hbase/regionserver/AnnotationReadingPriorityFunction.java</a></td>
<td>0</td>
<td>0</td>
<td>16</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.BaseRowProcessor.java">org/apache/hadoop/hbase/regionserver/BaseRowProcessor.java</a></td>
<td>0</td>
<td>0</td>
<td>3</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.BusyRegionSplitPolicy.java">org/apache/hadoop/hbase/regionserver/BusyRegionSplitPolicy.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.ByteBufferChunkKeyValue.java">org/apache/hadoop/hbase/regionserver/ByteBufferChunkKeyValue.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.CSLMImmutableSegment.java">org/apache/hadoop/hbase/regionserver/CSLMImmutableSegment.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.CellArrayImmutableSegment.java">org/apache/hadoop/hbase/regionserver/CellArrayImmutableSegment.java</a></td>
<td>0</td>
<td>0</td>
<td>2</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.CellArrayMap.java">org/apache/hadoop/hbase/regionserver/CellArrayMap.java</a></td>
<td>0</td>
<td>0</td>
<td>3</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.CellChunkMap.java">org/apache/hadoop/hbase/regionserver/CellChunkMap.java</a></td>
<td>0</td>
<td>0</td>
<td>4</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.CellFlatMap.java">org/apache/hadoop/hbase/regionserver/CellFlatMap.java</a></td>
<td>0</td>
<td>0</td>
<td>11</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.CellSet.java">org/apache/hadoop/hbase/regionserver/CellSet.java</a></td>
<td>0</td>
<td>0</td>
<td>2</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.CellSink.java">org/apache/hadoop/hbase/regionserver/CellSink.java</a></td>
<td>0</td>
<td>0</td>
<td>2</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.ChangedReadersObserver.java">org/apache/hadoop/hbase/regionserver/ChangedReadersObserver.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.Chunk.java">org/apache/hadoop/hbase/regionserver/Chunk.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.ChunkCreator.java">org/apache/hadoop/hbase/regionserver/ChunkCreator.java</a></td>
<td>0</td>
<td>0</td>
<td>5</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.CompactSplit.java">org/apache/hadoop/hbase/regionserver/CompactSplit.java</a></td>
<td>0</td>
<td>0</td>
<td>9</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.CompactedHFilesDischargeHandler.java">org/apache/hadoop/hbase/regionserver/CompactedHFilesDischargeHandler.java</a></td>
<td>0</td>
<td>0</td>
<td>2</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.CompactedHFilesDischarger.java">org/apache/hadoop/hbase/regionserver/CompactedHFilesDischarger.java</a></td>
<td>0</td>
<td>0</td>
<td>2</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.CompactingMemStore.java">org/apache/hadoop/hbase/regionserver/CompactingMemStore.java</a></td>
<td>0</td>
<td>0</td>
<td>8</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.CompactionPipeline.java">org/apache/hadoop/hbase/regionserver/CompactionPipeline.java</a></td>
<td>0</td>
<td>0</td>
<td>4</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.CompactionTool.java">org/apache/hadoop/hbase/regionserver/CompactionTool.java</a></td>
<td>0</td>
<td>0</td>
<td>3</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.CompositeImmutableSegment.java">org/apache/hadoop/hbase/regionserver/CompositeImmutableSegment.java</a></td>
<td>0</td>
<td>0</td>
<td>2</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.ConstantSizeRegionSplitPolicy.java">org/apache/hadoop/hbase/regionserver/ConstantSizeRegionSplitPolicy.java</a></td>
<td>0</td>
<td>0</td>
<td>3</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.CreateRandomStoreFile.java">org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.java</a></td>
<td>0</td>
<td>0</td>
<td>4</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.DataBlockEncodingTool.java">org/apache/hadoop/hbase/regionserver/DataBlockEncodingTool.java</a></td>
<td>0</td>
<td>0</td>
<td>6</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.DateTieredStoreEngine.java">org/apache/hadoop/hbase/regionserver/DateTieredStoreEngine.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.DefaultHeapMemoryTuner.java">org/apache/hadoop/hbase/regionserver/DefaultHeapMemoryTuner.java</a></td>
<td>0</td>
<td>0</td>
<td>31</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.DefaultMemStore.java">org/apache/hadoop/hbase/regionserver/DefaultMemStore.java</a></td>
<td>0</td>
<td>0</td>
<td>2</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.DefaultStoreFlusher.java">org/apache/hadoop/hbase/regionserver/DefaultStoreFlusher.java</a></td>
<td>0</td>
<td>0</td>
<td>2</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.DelegatingKeyValueScanner.java">org/apache/hadoop/hbase/regionserver/DelegatingKeyValueScanner.java</a></td>
<td>0</td>
<td>0</td>
<td>3</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.DelimitedKeyPrefixRegionSplitPolicy.java">org/apache/hadoop/hbase/regionserver/DelimitedKeyPrefixRegionSplitPolicy.java</a></td>
<td>0</td>
<td>0</td>
<td>3</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.DisabledRegionSplitPolicy.java">org/apache/hadoop/hbase/regionserver/DisabledRegionSplitPolicy.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.FavoredNodesForRegion.java">org/apache/hadoop/hbase/regionserver/FavoredNodesForRegion.java</a></td>
<td>0</td>
<td>0</td>
<td>3</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.FifoRpcSchedulerFactory.java">org/apache/hadoop/hbase/regionserver/FifoRpcSchedulerFactory.java</a></td>
<td>0</td>
<td>0</td>
<td>2</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.FlushPolicyFactory.java">org/apache/hadoop/hbase/regionserver/FlushPolicyFactory.java</a></td>
<td>0</td>
<td>0</td>
<td>3</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.FlushRequestListener.java">org/apache/hadoop/hbase/regionserver/FlushRequestListener.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.FlushRequester.java">org/apache/hadoop/hbase/regionserver/FlushRequester.java</a></td>
<td>0</td>
<td>0</td>
<td>3</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.HMobStore.java">org/apache/hadoop/hbase/regionserver/HMobStore.java</a></td>
<td>0</td>
<td>0</td>
<td>8</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.HRegion.java">org/apache/hadoop/hbase/regionserver/HRegion.java</a></td>
<td>0</td>
<td>0</td>
<td>220</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.HRegionFileSystem.java">org/apache/hadoop/hbase/regionserver/HRegionFileSystem.java</a></td>
<td>0</td>
<td>0</td>
<td>47</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.HRegionServer.java">org/apache/hadoop/hbase/regionserver/HRegionServer.java</a></td>
<td>0</td>
<td>0</td>
<td>88</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.HRegionServerCommandLine.java">org/apache/hadoop/hbase/regionserver/HRegionServerCommandLine.java</a></td>
<td>0</td>
<td>0</td>
<td>2</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.HStore.java">org/apache/hadoop/hbase/regionserver/HStore.java</a></td>
<td>0</td>
<td>0</td>
<td>43</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.HStoreFile.java">org/apache/hadoop/hbase/regionserver/HStoreFile.java</a></td>
<td>0</td>
<td>0</td>
<td>6</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.HeapMemoryManager.java">org/apache/hadoop/hbase/regionserver/HeapMemoryManager.java</a></td>
<td>0</td>
<td>0</td>
<td>11</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.HeapMemoryTuner.java">org/apache/hadoop/hbase/regionserver/HeapMemoryTuner.java</a></td>
<td>0</td>
<td>0</td>
<td>2</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.ImmutableSegment.java">org/apache/hadoop/hbase/regionserver/ImmutableSegment.java</a></td>
<td>0</td>
<td>0</td>
<td>2</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.IncreasingToUpperBoundRegionSplitPolicy.java">org/apache/hadoop/hbase/regionserver/IncreasingToUpperBoundRegionSplitPolicy.java</a></td>
<td>0</td>
<td>0</td>
<td>3</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.InternalScan.java">org/apache/hadoop/hbase/regionserver/InternalScan.java</a></td>
<td>0</td>
<td>0</td>
<td>3</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.InternalScanner.java">org/apache/hadoop/hbase/regionserver/InternalScanner.java</a></td>
<td>0</td>
<td>0</td>
<td>2</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.KeyPrefixRegionSplitPolicy.java">org/apache/hadoop/hbase/regionserver/KeyPrefixRegionSplitPolicy.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.KeyValueHeap.java">org/apache/hadoop/hbase/regionserver/KeyValueHeap.java</a></td>
<td>0</td>
<td>0</td>
<td>11</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.KeyValueScanner.java">org/apache/hadoop/hbase/regionserver/KeyValueScanner.java</a></td>
<td>0</td>
<td>0</td>
<td>4</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.LeaseException.java">org/apache/hadoop/hbase/regionserver/LeaseException.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.Leases.java">org/apache/hadoop/hbase/regionserver/Leases.java</a></td>
<td>0</td>
<td>0</td>
<td>10</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.LogRoller.java">org/apache/hadoop/hbase/regionserver/LogRoller.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.MemStore.java">org/apache/hadoop/hbase/regionserver/MemStore.java</a></td>
<td>0</td>
<td>0</td>
<td>10</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.MemStoreCompactor.java">org/apache/hadoop/hbase/regionserver/MemStoreCompactor.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.MemStoreFlusher.java">org/apache/hadoop/hbase/regionserver/MemStoreFlusher.java</a></td>
<td>0</td>
<td>0</td>
<td>29</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.MemStoreLAB.java">org/apache/hadoop/hbase/regionserver/MemStoreLAB.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.MemStoreLABImpl.java">org/apache/hadoop/hbase/regionserver/MemStoreLABImpl.java</a></td>
<td>0</td>
<td>0</td>
<td>2</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.MemStoreMergerSegmentsIterator.java">org/apache/hadoop/hbase/regionserver/MemStoreMergerSegmentsIterator.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.MemStoreSegmentsIterator.java">org/apache/hadoop/hbase/regionserver/MemStoreSegmentsIterator.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.MemStoreSnapshot.java">org/apache/hadoop/hbase/regionserver/MemStoreSnapshot.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.MetricsRegion.java">org/apache/hadoop/hbase/regionserver/MetricsRegion.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.MetricsRegionServer.java">org/apache/hadoop/hbase/regionserver/MetricsRegionServer.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.MetricsRegionServerWrapperImpl.java">org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.MetricsRegionServerWrapperStub.java">org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperStub.java</a></td>
<td>0</td>
<td>0</td>
<td>2</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.MetricsTable.java">org/apache/hadoop/hbase/regionserver/MetricsTable.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.MetricsTableWrapperAggregateImpl.java">org/apache/hadoop/hbase/regionserver/MetricsTableWrapperAggregateImpl.java</a></td>
<td>0</td>
<td>0</td>
<td>20</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.MiniBatchOperationInProgress.java">org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.java</a></td>
<td>0</td>
<td>0</td>
<td>10</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.MobReferenceOnlyFilter.java">org/apache/hadoop/hbase/regionserver/MobReferenceOnlyFilter.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl.java">org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.java</a></td>
<td>0</td>
<td>0</td>
<td>4</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.MutableOnlineRegions.java">org/apache/hadoop/hbase/regionserver/MutableOnlineRegions.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.MutableSegment.java">org/apache/hadoop/hbase/regionserver/MutableSegment.java</a></td>
<td>0</td>
<td>0</td>
<td>3</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.NoTagByteBufferChunkKeyValue.java">org/apache/hadoop/hbase/regionserver/NoTagByteBufferChunkKeyValue.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.NonLazyKeyValueScanner.java">org/apache/hadoop/hbase/regionserver/NonLazyKeyValueScanner.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.NonReversedNonLazyKeyValueScanner.java">org/apache/hadoop/hbase/regionserver/NonReversedNonLazyKeyValueScanner.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.OOMERegionServer.java">org/apache/hadoop/hbase/regionserver/OOMERegionServer.java</a></td>
<td>0</td>
<td>0</td>
<td>2</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.OnlineRegions.java">org/apache/hadoop/hbase/regionserver/OnlineRegions.java</a></td>
<td>0</td>
<td>0</td>
<td>6</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.OperationStatus.java">org/apache/hadoop/hbase/regionserver/OperationStatus.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.RSDumpServlet.java">org/apache/hadoop/hbase/regionserver/RSDumpServlet.java</a></td>
<td>0</td>
<td>0</td>
<td>2</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.RSRpcServices.java">org/apache/hadoop/hbase/regionserver/RSRpcServices.java</a></td>
<td>0</td>
<td>0</td>
<td>66</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.RSStatusServlet.java">org/apache/hadoop/hbase/regionserver/RSStatusServlet.java</a></td>
<td>0</td>
<td>0</td>
<td>6</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.Region.java">org/apache/hadoop/hbase/regionserver/Region.java</a></td>
<td>0</td>
<td>0</td>
<td>25</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.RegionAsTable.java">org/apache/hadoop/hbase/regionserver/RegionAsTable.java</a></td>
<td>0</td>
<td>0</td>
<td>41</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost.java">org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.java</a></td>
<td>0</td>
<td>0</td>
<td>79</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.RegionScanner.java">org/apache/hadoop/hbase/regionserver/RegionScanner.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.RegionServerAccounting.java">org/apache/hadoop/hbase/regionserver/RegionServerAccounting.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.RegionServerCoprocessorHost.java">org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.java</a></td>
<td>0</td>
<td>0</td>
<td>7</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.RegionServerServices.java">org/apache/hadoop/hbase/regionserver/RegionServerServices.java</a></td>
<td>0</td>
<td>0</td>
<td>6</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.RegionServicesForStores.java">org/apache/hadoop/hbase/regionserver/RegionServicesForStores.java</a></td>
<td>0</td>
<td>0</td>
<td>6</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.RegionSplitPolicy.java">org/apache/hadoop/hbase/regionserver/RegionSplitPolicy.java</a></td>
<td>0</td>
<td>0</td>
<td>5</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.ReplicationSinkService.java">org/apache/hadoop/hbase/regionserver/ReplicationSinkService.java</a></td>
<td>0</td>
<td>0</td>
<td>2</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.ReversedKeyValueHeap.java">org/apache/hadoop/hbase/regionserver/ReversedKeyValueHeap.java</a></td>
<td>0</td>
<td>0</td>
<td>7</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.ReversedRegionScannerImpl.java">org/apache/hadoop/hbase/regionserver/ReversedRegionScannerImpl.java</a></td>
<td>0</td>
<td>0</td>
<td>4</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.ReversedStoreScanner.java">org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.java</a></td>
<td>0</td>
<td>0</td>
<td>2</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.RowProcessor.java">org/apache/hadoop/hbase/regionserver/RowProcessor.java</a></td>
<td>0</td>
<td>0</td>
<td>7</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.RpcSchedulerFactory.java">org/apache/hadoop/hbase/regionserver/RpcSchedulerFactory.java</a></td>
<td>0</td>
<td>0</td>
<td>2</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.ScanInfo.java">org/apache/hadoop/hbase/regionserver/ScanInfo.java</a></td>
<td>0</td>
<td>0</td>
<td>4</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.ScanOptions.java">org/apache/hadoop/hbase/regionserver/ScanOptions.java</a></td>
<td>0</td>
<td>0</td>
<td>3</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.ScannerContext.java">org/apache/hadoop/hbase/regionserver/ScannerContext.java</a></td>
<td>0</td>
<td>0</td>
<td>9</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.ScannerIdGenerator.java">org/apache/hadoop/hbase/regionserver/ScannerIdGenerator.java</a></td>
<td>0</td>
<td>0</td>
<td>7</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.SecureBulkLoadEndpointClient.java">org/apache/hadoop/hbase/regionserver/SecureBulkLoadEndpointClient.java</a></td>
<td>0</td>
<td>0</td>
<td>3</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.SecureBulkLoadManager.java">org/apache/hadoop/hbase/regionserver/SecureBulkLoadManager.java</a></td>
<td>0</td>
<td>0</td>
<td>3</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.Segment.java">org/apache/hadoop/hbase/regionserver/Segment.java</a></td>
<td>0</td>
<td>0</td>
<td>2</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.SegmentFactory.java">org/apache/hadoop/hbase/regionserver/SegmentFactory.java</a></td>
<td>0</td>
<td>0</td>
<td>10</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.SegmentScanner.java">org/apache/hadoop/hbase/regionserver/SegmentScanner.java</a></td>
<td>0</td>
<td>0</td>
<td>2</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.ServerNonceManager.java">org/apache/hadoop/hbase/regionserver/ServerNonceManager.java</a></td>
<td>0</td>
<td>0</td>
<td>8</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.ShipperListener.java">org/apache/hadoop/hbase/regionserver/ShipperListener.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.ShutdownHook.java">org/apache/hadoop/hbase/regionserver/ShutdownHook.java</a></td>
<td>0</td>
<td>0</td>
<td>7</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.SimpleRpcSchedulerFactory.java">org/apache/hadoop/hbase/regionserver/SimpleRpcSchedulerFactory.java</a></td>
<td>0</td>
<td>0</td>
<td>4</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.SplitLogWorker.java">org/apache/hadoop/hbase/regionserver/SplitLogWorker.java</a></td>
<td>0</td>
<td>0</td>
<td>2</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.SplitRequest.java">org/apache/hadoop/hbase/regionserver/SplitRequest.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.SteppingSplitPolicy.java">org/apache/hadoop/hbase/regionserver/SteppingSplitPolicy.java</a></td>
<td>0</td>
<td>0</td>
<td>3</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.Store.java">org/apache/hadoop/hbase/regionserver/Store.java</a></td>
<td>0</td>
<td>0</td>
<td>4</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.StoreFileComparators.java">org/apache/hadoop/hbase/regionserver/StoreFileComparators.java</a></td>
<td>0</td>
<td>0</td>
<td>2</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.StoreFileInfo.java">org/apache/hadoop/hbase/regionserver/StoreFileInfo.java</a></td>
<td>0</td>
<td>0</td>
<td>18</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.StoreFileManager.java">org/apache/hadoop/hbase/regionserver/StoreFileManager.java</a></td>
<td>0</td>
<td>0</td>
<td>2</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.StoreFileReader.java">org/apache/hadoop/hbase/regionserver/StoreFileReader.java</a></td>
<td>0</td>
<td>0</td>
<td>4</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.StoreFileScanner.java">org/apache/hadoop/hbase/regionserver/StoreFileScanner.java</a></td>
<td>0</td>
<td>0</td>
<td>12</td></tr>
-<tr class="b">
+<tr class="a">
<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>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.StoreFlushContext.java">org/apache/hadoop/hbase/regionserver/StoreFlushContext.java</a></td>
<td>0</td>
<td>0</td>
<td>3</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.StoreFlusher.java">org/apache/hadoop/hbase/regionserver/StoreFlusher.java</a></td>
<td>0</td>
<td>0</td>
<td>4</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.StoreScanner.java">org/apache/hadoop/hbase/regionserver/StoreScanner.java</a></td>
<td>0</td>
<td>0</td>
<td>23</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.StoreUtils.java">org/apache/hadoop/hbase/regionserver/StoreUtils.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.StorefileRefresherChore.java">org/apache/hadoop/hbase/regionserver/StorefileRefresherChore.java</a></td>
<td>0</td>
<td>0</td>
<td>3</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.StripeMultiFileWriter.java">org/apache/hadoop/hbase/regionserver/StripeMultiFileWriter.java</a></td>
<td>0</td>
<td>0</td>
<td>2</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.StripeStoreConfig.java">org/apache/hadoop/hbase/regionserver/StripeStoreConfig.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.StripeStoreEngine.java">org/apache/hadoop/hbase/regionserver/StripeStoreEngine.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.StripeStoreFileManager.java">org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.java</a></td>
<td>0</td>
<td>0</td>
<td>15</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.StripeStoreFlusher.java">org/apache/hadoop/hbase/regionserver/StripeStoreFlusher.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.TestAtomicOperation.java">org/apache/hadoop/hbase/regionserver/TestAtomicOperation.java</a></td>
<td>0</td>
<td>0</td>
<td>13</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.TestBlocksRead.java">org/apache/hadoop/hbase/regionserver/TestBlocksRead.java</a></td>
<td>0</td>
<td>0</td>
<td>16</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.TestBlocksScanned.java">org/apache/hadoop/hbase/regionserver/TestBlocksScanned.java</a></td>
<td>0</td>
<td>0</td>
<td>5</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.TestBulkLoad.java">org/apache/hadoop/hbase/regionserver/TestBulkLoad.java</a></td>
<td>0</td>
<td>0</td>
<td>4</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.TestCacheOnWriteInSchema.java">org/apache/hadoop/hbase/regionserver/TestCacheOnWriteInSchema.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.TestCellFlatSet.java">org/apache/hadoop/hbase/regionserver/TestCellFlatSet.java</a></td>
<td>0</td>
<td>0</td>
<td>6</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.TestCellSkipListSet.java">org/apache/hadoop/hbase/regionserver/TestCellSkipListSet.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.TestClearRegionBlockCache.java">org/apache/hadoop/hbase/regionserver/TestClearRegionBlockCache.java</a></td>
<td>0</td>
<td>0</td>
<td>2</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.TestColumnSeeking.java">org/apache/hadoop/hbase/regionserver/TestColumnSeeking.java</a></td>
<td>0</td>
<td>0</td>
<td>6</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.TestCompactSplitThread.java">org/apache/hadoop/hbase/regionserver/TestCompactSplitThread.java</a></td>
<td>0</td>
<td>0</td>
<td>2</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.TestCompactingMemStore.java">org/apache/hadoop/hbase/regionserver/TestCompactingMemStore.java</a></td>
<td>0</td>
<td>0</td>
<td>16</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.TestCompactingToCellFlatMapMemStore.java">org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.java</a></td>
<td>0</td>
<td>0</td>
<td>16</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.TestCompaction.java">org/apache/hadoop/hbase/regionserver/TestCompaction.java</a></td>
<td>0</td>
<td>0</td>
<td>4</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.TestCompactionState.java">org/apache/hadoop/hbase/regionserver/TestCompactionState.java</a></td>
<td>0</td>
<td>0</td>
<td>7</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.TestCompoundBloomFilter.java">org/apache/hadoop/hbase/regionserver/TestCompoundBloomFilter.java</a></td>
<td>0</td>
<td>0</td>
<td>16</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.TestDateTieredCompactionPolicy.java">org/apache/hadoop/hbase/regionserver/TestDateTieredCompactionPolicy.java</a></td>
<td>0</td>
<td>0</td>
<td>5</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.TestDateTieredCompactionPolicyOverflow.java">org/apache/hadoop/hbase/regionserver/TestDateTieredCompactionPolicyOverflow.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.TestDefaultMemStore.java">org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.java</a></td>
<td>0</td>
<td>0</td>
<td>17</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.TestDeleteMobTable.java">org/apache/hadoop/hbase/regionserver/TestDeleteMobTable.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.TestEndToEndSplitTransaction.java">org/apache/hadoop/hbase/regionserver/TestEndToEndSplitTransaction.java</a></td>
<td>0</td>
<td>0</td>
<td>4</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.TestFSErrorsExposed.java">org/apache/hadoop/hbase/regionserver/TestFSErrorsExposed.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.TestFailedAppendAndSync.java">org/apache/hadoop/hbase/regionserver/TestFailedAppendAndSync.java</a></td>
<td>0</td>
<td>0</td>
<td>10</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.TestGetClosestAtOrBefore.java">org/apache/hadoop/hbase/regionserver/TestGetClosestAtOrBefore.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.TestHMobStore.java">org/apache/hadoop/hbase/regionserver/TestHMobStore.java</a></td>
<td>0</td>
<td>0</td>
<td>12</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.TestHRegion.java">org/apache/hadoop/hbase/regionserver/TestHRegion.java</a></td>
<td>0</td>
<td>0</td>
<td>53</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.TestHRegionFileSystem.java">org/apache/hadoop/hbase/regionserver/TestHRegionFileSystem.java</a></td>
<td>0</td>
<td>0</td>
<td>5</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.TestHRegionInfo.java">org/apache/hadoop/hbase/regionserver/TestHRegionInfo.java</a></td>
<td>0</td>
<td>0</td>
<td>2</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.TestHRegionOnCluster.java">org/apache/hadoop/hbase/regionserver/TestHRegionOnCluster.java</a></td>
<td>0</td>
<td>0</td>
<td>2</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.TestHRegionReplayEvents.java">org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.java</a></td>
<td>0</td>
<td>0</td>
<td>16</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.TestHRegionServerBulkLoad.java">org/apache/hadoop/hbase/regionserver/TestHRegionServerBulkLoad.java</a></td>
<td>0</td>
<td>0</td>
<td>8</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.TestHRegionServerBulkLoadWithOldClient.java">org/apache/hadoop/hbase/regionserver/TestHRegionServerBulkLoadWithOldClient.java</a></td>
<td>0</td>
<td>0</td>
<td>5</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.TestHRegionServerBulkLoadWithOldSecureEndpoint.java">org/apache/hadoop/hbase/regionserver/TestHRegionServerBulkLoadWithOldSecureEndpoint.java</a></td>
<td>0</td>
<td>0</td>
<td>9</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.TestHStore.java">org/apache/hadoop/hbase/regionserver/TestHStore.java</a></td>
<td>0</td>
<td>0</td>
<td>41</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.TestHStoreFile.java">org/apache/hadoop/hbase/regionserver/TestHStoreFile.java</a></td>
<td>0</td>
<td>0</td>
<td>23</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.TestJoinedScanners.java">org/apache/hadoop/hbase/regionserver/TestJoinedScanners.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.TestKeepDeletes.java">org/apache/hadoop/hbase/regionserver/TestKeepDeletes.java</a></td>
<td>0</td>
<td>0</td>
<td>5</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.TestKeyValueHeap.java">org/apache/hadoop/hbase/regionserver/TestKeyValueHeap.java</a></td>
<td>0</td>
<td>0</td>
<td>4</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.TestKeyValueScanFixture.java">org/apache/hadoop/hbase/regionserver/TestKeyValueScanFixture.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.TestMajorCompaction.java">org/apache/hadoop/hbase/regionserver/TestMajorCompaction.java</a></td>
<td>0</td>
<td>0</td>
<td>6</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.TestMasterAddressTracker.java">org/apache/hadoop/hbase/regionserver/TestMasterAddressTracker.java</a></td>
<td>0</td>
<td>0</td>
<td>2</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.TestMemStoreLAB.java">org/apache/hadoop/hbase/regionserver/TestMemStoreLAB.java</a></td>
<td>0</td>
<td>0</td>
<td>2</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.TestMemstoreLABWithoutPool.java">org/apache/hadoop/hbase/regionserver/TestMemstoreLABWithoutPool.java</a></td>
<td>0</td>
<td>0</td>
<td>1</td></tr>
-<tr class="a">
+<tr class="b">
<td><a href="#org.apache.hadoop.hbase.regionserver.TestMetricsRegion.java">org/apache/hadoop/hbase/regionserver/TestMetricsRegion.java</a></td>
<td>0</td>
<td>0</td>
<td>3</td></tr>
-<tr class="b">
+<tr class="a">
<td><a href="#org.apache.hadoop.hbase.regionserver.TestMetricsRegionServer.java">org/apache/hadoop/hbase/regionserver/TestMet
<TRUNCATED>
[44/51] [partial] hbase-site git commit: Published site at
9101fc246f86445006bfbcdfda5cc495016dc280.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/MetaTableAccessor.ReplicationBarrierResult.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/MetaTableAccessor.ReplicationBarrierResult.html b/devapidocs/org/apache/hadoop/hbase/MetaTableAccessor.ReplicationBarrierResult.html
index 3d89242..8c5430c 100644
--- a/devapidocs/org/apache/hadoop/hbase/MetaTableAccessor.ReplicationBarrierResult.html
+++ b/devapidocs/org/apache/hadoop/hbase/MetaTableAccessor.ReplicationBarrierResult.html
@@ -113,7 +113,7 @@ var activeTableTab = "activeTableTab";
</dl>
<hr>
<br>
-<pre>public static final class <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.2012">MetaTableAccessor.ReplicationBarrierResult</a>
+<pre>public static final class <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.2020">MetaTableAccessor.ReplicationBarrierResult</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>
@@ -223,7 +223,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>barriers</h4>
-<pre>private final long[] <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.ReplicationBarrierResult.html#line.2013">barriers</a></pre>
+<pre>private final long[] <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.ReplicationBarrierResult.html#line.2021">barriers</a></pre>
</li>
</ul>
<a name="state">
@@ -232,7 +232,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockList">
<li class="blockList">
<h4>state</h4>
-<pre>private final <a href="../../../../org/apache/hadoop/hbase/master/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master">RegionState.State</a> <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.ReplicationBarrierResult.html#line.2014">state</a></pre>
+<pre>private final <a href="../../../../org/apache/hadoop/hbase/master/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master">RegionState.State</a> <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.ReplicationBarrierResult.html#line.2022">state</a></pre>
</li>
</ul>
<a name="parentRegionNames">
@@ -241,7 +241,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockListLast">
<li class="blockList">
<h4>parentRegionNames</h4>
-<pre>private final <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><byte[]> <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.ReplicationBarrierResult.html#line.2015">parentRegionNames</a></pre>
+<pre>private final <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><byte[]> <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.ReplicationBarrierResult.html#line.2023">parentRegionNames</a></pre>
</li>
</ul>
</li>
@@ -258,7 +258,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockListLast">
<li class="blockList">
<h4>ReplicationBarrierResult</h4>
-<pre>public <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.ReplicationBarrierResult.html#line.2017">ReplicationBarrierResult</a>(long[] barriers,
+<pre>public <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.ReplicationBarrierResult.html#line.2025">ReplicationBarrierResult</a>(long[] barriers,
<a href="../../../../org/apache/hadoop/hbase/master/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master">RegionState.State</a> state,
<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><byte[]> parentRegionNames)</pre>
</li>
@@ -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>getBarriers</h4>
-<pre>public long[] <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.ReplicationBarrierResult.html#line.2023">getBarriers</a>()</pre>
+<pre>public long[] <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.ReplicationBarrierResult.html#line.2031">getBarriers</a>()</pre>
</li>
</ul>
<a name="getState--">
@@ -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>getState</h4>
-<pre>public <a href="../../../../org/apache/hadoop/hbase/master/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master">RegionState.State</a> <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.ReplicationBarrierResult.html#line.2027">getState</a>()</pre>
+<pre>public <a href="../../../../org/apache/hadoop/hbase/master/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master">RegionState.State</a> <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.ReplicationBarrierResult.html#line.2035">getState</a>()</pre>
</li>
</ul>
<a name="getParentRegionNames--">
@@ -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>getParentRegionNames</h4>
-<pre>public <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><byte[]> <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.ReplicationBarrierResult.html#line.2031">getParentRegionNames</a>()</pre>
+<pre>public <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><byte[]> <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.ReplicationBarrierResult.html#line.2039">getParentRegionNames</a>()</pre>
</li>
</ul>
<a name="toString--">
@@ -304,7 +304,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
<ul class="blockListLast">
<li class="blockList">
<h4>toString</h4>
-<pre>public <a href="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/MetaTableAccessor.ReplicationBarrierResult.html#line.2036">toString</a>()</pre>
+<pre>public <a href="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/MetaTableAccessor.ReplicationBarrierResult.html#line.2044">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> in class <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>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/MetaTableAccessor.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/MetaTableAccessor.html b/devapidocs/org/apache/hadoop/hbase/MetaTableAccessor.html
index 9090907..7196891 100644
--- a/devapidocs/org/apache/hadoop/hbase/MetaTableAccessor.html
+++ b/devapidocs/org/apache/hadoop/hbase/MetaTableAccessor.html
@@ -2329,7 +2329,7 @@ public static <a href="../../../../org/apache/hadoop/hbase/client/TableStat
<ul class="blockList">
<li class="blockList">
<h4>deleteFromMetaTable</h4>
-<pre>private static void <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.1360">deleteFromMetaTable</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> connection,
+<pre>private static void <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.1368">deleteFromMetaTable</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> connection,
<a href="../../../../org/apache/hadoop/hbase/client/Delete.html" title="class in org.apache.hadoop.hbase.client">Delete</a> d)
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 the passed <code>d</code> from the <code>hbase:meta</code> table.</div>
@@ -2348,7 +2348,7 @@ public static <a href="../../../../org/apache/hadoop/hbase/client/TableStat
<ul class="blockList">
<li class="blockList">
<h4>deleteFromMetaTable</h4>
-<pre>private static void <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.1372">deleteFromMetaTable</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> connection,
+<pre>private static void <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.1380">deleteFromMetaTable</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> connection,
<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><<a href="../../../../org/apache/hadoop/hbase/client/Delete.html" title="class in org.apache.hadoop.hbase.client">Delete</a>> deletes)
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 the passed <code>deletes</code> from the <code>hbase:meta</code> table.</div>
@@ -2367,7 +2367,7 @@ public static <a href="../../../../org/apache/hadoop/hbase/client/TableStat
<ul class="blockList">
<li class="blockList">
<h4>removeRegionReplicasFromMeta</h4>
-<pre>public static void <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.1387">removeRegionReplicasFromMeta</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><byte[]> metaRows,
+<pre>public static void <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.1395">removeRegionReplicasFromMeta</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><byte[]> metaRows,
int replicaIndexToDeleteFrom,
int numReplicasToRemove,
<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> connection)
@@ -2390,7 +2390,7 @@ public static <a href="../../../../org/apache/hadoop/hbase/client/TableStat
<ul class="blockList">
<li class="blockList">
<h4>mutateMetaTable</h4>
-<pre>public static void <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.1412">mutateMetaTable</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> connection,
+<pre>public static void <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.1420">mutateMetaTable</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> connection,
<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><<a href="../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>> mutations)
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">Execute the passed <code>mutations</code> against <code>hbase:meta</code> table.</div>
@@ -2409,7 +2409,7 @@ public static <a href="../../../../org/apache/hadoop/hbase/client/TableStat
<ul class="blockList">
<li class="blockList">
<h4>addRegionStateToPut</h4>
-<pre>private static void <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.1428">addRegionStateToPut</a>(<a href="../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a> put,
+<pre>private static void <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.1436">addRegionStateToPut</a>(<a href="../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a> put,
<a href="../../../../org/apache/hadoop/hbase/master/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master">RegionState.State</a> state)
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>
@@ -2424,7 +2424,7 @@ public static <a href="../../../../org/apache/hadoop/hbase/client/TableStat
<ul class="blockList">
<li class="blockList">
<h4>addSplitsToParent</h4>
-<pre>public static void <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.1451">addSplitsToParent</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> connection,
+<pre>public static void <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.1459">addSplitsToParent</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> connection,
<a href="../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo,
<a href="../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> splitA,
<a href="../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> splitB)
@@ -2451,7 +2451,7 @@ public static <a href="../../../../org/apache/hadoop/hbase/client/TableStat
<ul class="blockList">
<li class="blockList">
<h4>addRegionToMeta</h4>
-<pre>public static void <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.1476">addRegionToMeta</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> connection,
+<pre>public static void <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.1484">addRegionToMeta</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> connection,
<a href="../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo)
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">Adds a (single) hbase:meta row for the specified new region and its daughters. Note that this
@@ -2474,7 +2474,7 @@ public static <a href="../../../../org/apache/hadoop/hbase/client/TableStat
<ul class="blockList">
<li class="blockList">
<h4>addRegionsToMeta</h4>
-<pre>public static void <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.1488">addRegionsToMeta</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> connection,
+<pre>public static void <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.1496">addRegionsToMeta</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> connection,
<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><<a href="../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>> regionInfos,
int regionReplication)
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>
@@ -2495,7 +2495,7 @@ public static <a href="../../../../org/apache/hadoop/hbase/client/TableStat
<ul class="blockList">
<li class="blockList">
<h4>addRegionsToMeta</h4>
-<pre>private static void <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.1503">addRegionsToMeta</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> connection,
+<pre>private static void <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.1511">addRegionsToMeta</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> connection,
<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><<a href="../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>> regionInfos,
int regionReplication,
long ts)
@@ -2519,7 +2519,7 @@ public static <a href="../../../../org/apache/hadoop/hbase/client/TableStat
<ul class="blockList">
<li class="blockList">
<h4>mergeRegions</h4>
-<pre>public static void <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.1536">mergeRegions</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> connection,
+<pre>public static void <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.1544">mergeRegions</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> connection,
<a href="../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> mergedRegion,
<a href="../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionA,
long regionAOpenSeqNum,
@@ -2552,7 +2552,7 @@ public static <a href="../../../../org/apache/hadoop/hbase/client/TableStat
<ul class="blockList">
<li class="blockList">
<h4>splitRegion</h4>
-<pre>public static void <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.1615">splitRegion</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> connection,
+<pre>public static void <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.1623">splitRegion</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> connection,
<a href="../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> parent,
long parentOpenSeqNum,
<a href="../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> splitA,
@@ -2583,7 +2583,7 @@ public static <a href="../../../../org/apache/hadoop/hbase/client/TableStat
<ul class="blockList">
<li class="blockList">
<h4>updateTableState</h4>
-<pre>private static void <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.1662">updateTableState</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> connection,
+<pre>private static void <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.1670">updateTableState</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> connection,
<a href="../../../../org/apache/hadoop/hbase/client/TableState.html" title="class in org.apache.hadoop.hbase.client">TableState</a> state)
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">Update state of the table in meta.</div>
@@ -2602,7 +2602,7 @@ public static <a href="../../../../org/apache/hadoop/hbase/client/TableStat
<ul class="blockList">
<li class="blockList">
<h4>makePutFromTableState</h4>
-<pre>public static <a href="../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a> <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.1672">makePutFromTableState</a>(<a href="../../../../org/apache/hadoop/hbase/client/TableState.html" title="class in org.apache.hadoop.hbase.client">TableState</a> state,
+<pre>public static <a href="../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a> <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.1680">makePutFromTableState</a>(<a href="../../../../org/apache/hadoop/hbase/client/TableState.html" title="class in org.apache.hadoop.hbase.client">TableState</a> state,
long ts)</pre>
<div class="block">Construct PUT for given state</div>
<dl>
@@ -2617,7 +2617,7 @@ public static <a href="../../../../org/apache/hadoop/hbase/client/TableStat
<ul class="blockList">
<li class="blockList">
<h4>deleteTableState</h4>
-<pre>public static void <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.1683">deleteTableState</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> connection,
+<pre>public static void <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.1691">deleteTableState</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> connection,
<a href="../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> table)
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">Remove state for table from meta</div>
@@ -2636,7 +2636,7 @@ public static <a href="../../../../org/apache/hadoop/hbase/client/TableStat
<ul class="blockList">
<li class="blockList">
<h4>multiMutate</h4>
-<pre>private static void <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.1692">multiMutate</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> connection,
+<pre>private static void <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.1700">multiMutate</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> connection,
<a href="../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client">Table</a> table,
byte[] row,
<a href="../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>... mutations)
@@ -2653,7 +2653,7 @@ public static <a href="../../../../org/apache/hadoop/hbase/client/TableStat
<ul class="blockList">
<li class="blockList">
<h4>multiMutate</h4>
-<pre>private static void <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.1700">multiMutate</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> connection,
+<pre>private static void <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.1708">multiMutate</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> connection,
<a href="../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client">Table</a> table,
byte[] row,
<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><<a href="../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>> mutations)
@@ -2671,7 +2671,7 @@ public static <a href="../../../../org/apache/hadoop/hbase/client/TableStat
<ul class="blockList">
<li class="blockList">
<h4>updateRegionLocation</h4>
-<pre>public static void <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.1768">updateRegionLocation</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> connection,
+<pre>public static void <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.1776">updateRegionLocation</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> connection,
<a href="../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo,
<a href="../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> sn,
long openSeqNum,
@@ -2700,7 +2700,7 @@ public static <a href="../../../../org/apache/hadoop/hbase/client/TableStat
<ul class="blockList">
<li class="blockList">
<h4>updateLocation</h4>
-<pre>private static void <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.1786">updateLocation</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> connection,
+<pre>private static void <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.1794">updateLocation</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> connection,
<a href="../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo,
<a href="../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> sn,
long openSeqNum,
@@ -2729,7 +2729,7 @@ public static <a href="../../../../org/apache/hadoop/hbase/client/TableStat
<ul class="blockList">
<li class="blockList">
<h4>deleteRegion</h4>
-<pre>public static void <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.1802">deleteRegion</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> connection,
+<pre>public static void <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.1810">deleteRegion</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> connection,
<a href="../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo)
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">Deletes the specified region from META.</div>
@@ -2748,7 +2748,7 @@ public static <a href="../../../../org/apache/hadoop/hbase/client/TableStat
<ul class="blockList">
<li class="blockList">
<h4>deleteRegions</h4>
-<pre>public static void <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.1815">deleteRegions</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> connection,
+<pre>public static void <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.1823">deleteRegions</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> connection,
<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><<a href="../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>> regionsInfo)
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">Deletes the specified regions from META.</div>
@@ -2767,7 +2767,7 @@ public static <a href="../../../../org/apache/hadoop/hbase/client/TableStat
<ul class="blockList">
<li class="blockList">
<h4>deleteRegions</h4>
-<pre>public static void <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.1824">deleteRegions</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> connection,
+<pre>public static void <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.1832">deleteRegions</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> connection,
<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><<a href="../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>> regionsInfo,
long ts)
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>
@@ -2787,7 +2787,7 @@ public static <a href="../../../../org/apache/hadoop/hbase/client/TableStat
<ul class="blockList">
<li class="blockList">
<h4>overwriteRegions</h4>
-<pre>public static void <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.1843">overwriteRegions</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> connection,
+<pre>public static void <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.1851">overwriteRegions</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> connection,
<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><<a href="../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>> regionInfos,
int regionReplication)
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>
@@ -2808,7 +2808,7 @@ public static <a href="../../../../org/apache/hadoop/hbase/client/TableStat
<ul class="blockList">
<li class="blockList">
<h4>deleteMergeQualifiers</h4>
-<pre>public static void <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.1864">deleteMergeQualifiers</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> connection,
+<pre>public static void <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.1872">deleteMergeQualifiers</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> connection,
<a href="../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> mergedRegion)
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">Deletes merge qualifiers for the specified merged region.</div>
@@ -2827,7 +2827,7 @@ public static <a href="../../../../org/apache/hadoop/hbase/client/TableStat
<ul class="blockList">
<li class="blockList">
<h4>addRegionInfo</h4>
-<pre>public static <a href="../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a> <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.1877">addRegionInfo</a>(<a href="../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a> p,
+<pre>public static <a href="../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a> <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.1885">addRegionInfo</a>(<a href="../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a> p,
<a href="../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> hri)
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>
@@ -2842,7 +2842,7 @@ public static <a href="../../../../org/apache/hadoop/hbase/client/TableStat
<ul class="blockList">
<li class="blockList">
<h4>addLocation</h4>
-<pre>public static <a href="../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a> <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.1890">addLocation</a>(<a href="../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a> p,
+<pre>public static <a href="../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a> <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.1898">addLocation</a>(<a href="../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a> p,
<a href="../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> sn,
long openSeqNum,
int replicaId)
@@ -2859,7 +2859,7 @@ public static <a href="../../../../org/apache/hadoop/hbase/client/TableStat
<ul class="blockList">
<li class="blockList">
<h4>writeRegionName</h4>
-<pre>private static void <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.1919">writeRegionName</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/ByteArrayOutputStream.html?is-external=true" title="class or interface in java.io">ByteArrayOutputStream</a> out,
+<pre>private static void <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.1927">writeRegionName</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/ByteArrayOutputStream.html?is-external=true" title="class or interface in java.io">ByteArrayOutputStream</a> out,
byte[] regionName)</pre>
</li>
</ul>
@@ -2869,7 +2869,7 @@ public static <a href="../../../../org/apache/hadoop/hbase/client/TableStat
<ul class="blockList">
<li class="blockList">
<h4>getParentsBytes</h4>
-<pre>public static byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.1929">getParentsBytes</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><<a href="../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>> parents)</pre>
+<pre>public static byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.1937">getParentsBytes</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><<a href="../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>> parents)</pre>
</li>
</ul>
<a name="parseParentsBytes-byte:A-">
@@ -2878,7 +2878,7 @@ public static <a href="../../../../org/apache/hadoop/hbase/client/TableStat
<ul class="blockList">
<li class="blockList">
<h4>parseParentsBytes</h4>
-<pre>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><byte[]> <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.1941">parseParentsBytes</a>(byte[] bytes)</pre>
+<pre>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><byte[]> <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.1949">parseParentsBytes</a>(byte[] bytes)</pre>
</li>
</ul>
<a name="addReplicationParent-org.apache.hadoop.hbase.client.Put-java.util.List-">
@@ -2887,7 +2887,7 @@ public static <a href="../../../../org/apache/hadoop/hbase/client/TableStat
<ul class="blockList">
<li class="blockList">
<h4>addReplicationParent</h4>
-<pre>private static void <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.1962">addReplicationParent</a>(<a href="../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a> put,
+<pre>private static void <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.1970">addReplicationParent</a>(<a href="../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a> put,
<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><<a href="../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>> parents)
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>
@@ -2902,7 +2902,7 @@ public static <a href="../../../../org/apache/hadoop/hbase/client/TableStat
<ul class="blockList">
<li class="blockList">
<h4>makePutForReplicationBarrier</h4>
-<pre>public static <a href="../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a> <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.1969">makePutForReplicationBarrier</a>(<a href="../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo,
+<pre>public static <a href="../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a> <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.1977">makePutForReplicationBarrier</a>(<a href="../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> regionInfo,
long openSeqNum,
long ts)
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>
@@ -2918,7 +2918,7 @@ public static <a href="../../../../org/apache/hadoop/hbase/client/TableStat
<ul class="blockList">
<li class="blockList">
<h4>addReplicationBarrier</h4>
-<pre>public static void <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.1976">addReplicationBarrier</a>(<a href="../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a> put,
+<pre>public static void <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.1984">addReplicationBarrier</a>(<a href="../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a> put,
long openSeqNum)
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>
@@ -2933,7 +2933,7 @@ public static <a href="../../../../org/apache/hadoop/hbase/client/TableStat
<ul class="blockList">
<li class="blockList">
<h4>addEmptyLocation</h4>
-<pre>private static <a href="../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a> <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.1987">addEmptyLocation</a>(<a href="../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a> p,
+<pre>private static <a href="../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a> <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.1995">addEmptyLocation</a>(<a href="../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a> p,
int replicaId)
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>
@@ -2948,7 +2948,7 @@ public static <a href="../../../../org/apache/hadoop/hbase/client/TableStat
<ul class="blockList">
<li class="blockList">
<h4>getReplicationBarrier</h4>
-<pre>private static long <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.2044">getReplicationBarrier</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> c)</pre>
+<pre>private static long <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.2052">getReplicationBarrier</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> c)</pre>
</li>
</ul>
<a name="getReplicationBarriers-org.apache.hadoop.hbase.client.Result-">
@@ -2957,7 +2957,7 @@ public static <a href="../../../../org/apache/hadoop/hbase/client/TableStat
<ul class="blockList">
<li class="blockList">
<h4>getReplicationBarriers</h4>
-<pre>public static long[] <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.2048">getReplicationBarriers</a>(<a href="../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a> result)</pre>
+<pre>public static long[] <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.2056">getReplicationBarriers</a>(<a href="../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a> result)</pre>
</li>
</ul>
<a name="getReplicationBarrierResult-org.apache.hadoop.hbase.client.Result-">
@@ -2966,7 +2966,7 @@ public static <a href="../../../../org/apache/hadoop/hbase/client/TableStat
<ul class="blockList">
<li class="blockList">
<h4>getReplicationBarrierResult</h4>
-<pre>private static <a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.ReplicationBarrierResult.html" title="class in org.apache.hadoop.hbase">MetaTableAccessor.ReplicationBarrierResult</a> <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.2053">getReplicationBarrierResult</a>(<a href="../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a> result)</pre>
+<pre>private static <a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.ReplicationBarrierResult.html" title="class in org.apache.hadoop.hbase">MetaTableAccessor.ReplicationBarrierResult</a> <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.2061">getReplicationBarrierResult</a>(<a href="../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a> result)</pre>
</li>
</ul>
<a name="getReplicationBarrierResult-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.TableName-byte:A-byte:A-">
@@ -2975,7 +2975,7 @@ public static <a href="../../../../org/apache/hadoop/hbase/client/TableStat
<ul class="blockList">
<li class="blockList">
<h4>getReplicationBarrierResult</h4>
-<pre>public static <a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.ReplicationBarrierResult.html" title="class in org.apache.hadoop.hbase">MetaTableAccessor.ReplicationBarrierResult</a> <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.2065">getReplicationBarrierResult</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> conn,
+<pre>public static <a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.ReplicationBarrierResult.html" title="class in org.apache.hadoop.hbase">MetaTableAccessor.ReplicationBarrierResult</a> <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.2073">getReplicationBarrierResult</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> conn,
<a href="../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> tableName,
byte[] row,
byte[] encodedRegionName)
@@ -2992,7 +2992,7 @@ public static <a href="../../../../org/apache/hadoop/hbase/client/TableStat
<ul class="blockList">
<li class="blockList">
<h4>getReplicationBarrier</h4>
-<pre>public static long[] <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.2093">getReplicationBarrier</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> conn,
+<pre>public static long[] <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.2101">getReplicationBarrier</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> conn,
byte[] regionName)
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>
@@ -3007,7 +3007,7 @@ public static <a href="../../../../org/apache/hadoop/hbase/client/TableStat
<ul class="blockList">
<li class="blockList">
<h4>getTableEncodedRegionNameAndLastBarrier</h4>
-<pre>public 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><<a href="../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</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>,<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>>> <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.2103">getTableEncodedRegionNameAndLastBarrier</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> conn,
+<pre>public 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><<a href="../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</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>,<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>>> <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.2111">getTableEncodedRegionNameAndLastBarrier</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> conn,
<a href="../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> tableName)
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>
@@ -3022,7 +3022,7 @@ public static <a href="../../../../org/apache/hadoop/hbase/client/TableStat
<ul class="blockList">
<li class="blockList">
<h4>getTableEncodedRegionNamesForSerialReplication</h4>
-<pre>public 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><<a href="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/MetaTableAccessor.html#line.2121">getTableEncodedRegionNamesForSerialReplication</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> conn,
+<pre>public 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><<a href="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/MetaTableAccessor.html#line.2129">getTableEncodedRegionNamesForSerialReplication</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> conn,
<a href="../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> tableName)
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>
@@ -3037,7 +3037,7 @@ public static <a href="../../../../org/apache/hadoop/hbase/client/TableStat
<ul class="blockList">
<li class="blockList">
<h4>debugLogMutations</h4>
-<pre>private static void <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.2133">debugLogMutations</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><? extends <a href="../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>> mutations)
+<pre>private static void <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.2141">debugLogMutations</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><? extends <a href="../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>> mutations)
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>
@@ -3051,7 +3051,7 @@ public static <a href="../../../../org/apache/hadoop/hbase/client/TableStat
<ul class="blockList">
<li class="blockList">
<h4>debugLogMutation</h4>
-<pre>private static void <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.2144">debugLogMutation</a>(<a href="../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a> p)
+<pre>private static void <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.2152">debugLogMutation</a>(<a href="../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a> p)
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>
@@ -3065,7 +3065,7 @@ public static <a href="../../../../org/apache/hadoop/hbase/client/TableStat
<ul class="blockListLast">
<li class="blockList">
<h4>addSequenceNum</h4>
-<pre>private static <a href="../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a> <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.2148">addSequenceNum</a>(<a href="../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a> p,
+<pre>private static <a href="../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a> <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.2156">addSequenceNum</a>(<a href="../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a> p,
long openSeqNum,
int replicaId)
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>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/ScheduledChore.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/ScheduledChore.html b/devapidocs/org/apache/hadoop/hbase/ScheduledChore.html
index 64114c5..b323f3e 100644
--- a/devapidocs/org/apache/hadoop/hbase/ScheduledChore.html
+++ b/devapidocs/org/apache/hadoop/hbase/ScheduledChore.html
@@ -113,7 +113,7 @@ var activeTableTab = "activeTableTab";
</dl>
<dl>
<dt>Direct Known Subclasses:</dt>
-<dd><a href="../../../../org/apache/hadoop/hbase/master/balancer/BalancerChore.html" title="class in org.apache.hadoop.hbase.master.balancer">BalancerChore</a>, <a href="../../../../org/apache/hadoop/hbase/master/CatalogJanitor.html" title="class in org.apache.hadoop.hbase.master">CatalogJanitor</a>, <a href="../../../../org/apache/hadoop/hbase/master/cleaner/CleanerChore.html" title="class in org.apache.hadoop.hbase.master.cleaner">CleanerChore</a>, <a href="../../../../org/apache/hadoop/hbase/master/balancer/ClusterStatusChore.html" title="class in org.apache.hadoop.hbase.master.balancer">ClusterStatusChore</a>, <a href="../../../../org/apache/hadoop/hbase/master/ClusterStatusPublisher.html" title="class in org.apache.hadoop.hbase.master">ClusterStatusPublisher</a>, <a href="../../../../org/apache/hadoop/hbase/regionserver/CompactedHFilesDischarger.html" title="class in org.apache.hadoop.hbase.regionserver">CompactedHFilesDischarger</a>, <a href="../../../../org/apache/hadoop/hbas
e/master/ExpiredMobFileCleanerChore.html" title="class in org.apache.hadoop.hbase.master">ExpiredMobFileCleanerChore</a>, <a href="../../../../org/apache/hadoop/hbase/quotas/FileSystemUtilizationChore.html" title="class in org.apache.hadoop.hbase.quotas">FileSystemUtilizationChore</a>, <a href="../../../../org/apache/hadoop/hbase/HealthCheckChore.html" title="class in org.apache.hadoop.hbase">HealthCheckChore</a>, <a href="../../../../org/apache/hadoop/hbase/regionserver/HeapMemoryManager.HeapMemoryTunerChore.html" title="class in org.apache.hadoop.hbase.regionserver">HeapMemoryManager.HeapMemoryTunerChore</a>, <a href="../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.CompactionChecker.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer.CompactionChecker</a>, <a href="../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionsCleaner.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer.MovedRegionsCleaner</a>,
<a href="../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.PeriodicMemStoreFlusher.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer.PeriodicMemStoreFlusher</a>, <a href="../../../../org/apache/hadoop/hbase/master/MobCompactionChore.html" title="class in org.apache.hadoop.hbase.master">MobCompactionChore</a>, <a href="../../../../org/apache/hadoop/hbase/quotas/QuotaCache.QuotaRefresherChore.html" title="class in org.apache.hadoop.hbase.quotas">QuotaCache.QuotaRefresherChore</a>, <a href="../../../../org/apache/hadoop/hbase/quotas/QuotaObserverChore.html" title="class in org.apache.hadoop.hbase.quotas">QuotaObserverChore</a>, <a href="../../../../org/apache/hadoop/hbase/master/normalizer/RegionNormalizerChore.html" title="class in org.apache.hadoop.hbase.master.normalizer">RegionNormalizerChore</a>, <a href="../../../../org/apache/hadoop/hbase/quotas/RegionSizeReportingChore.html" title="class in org.apache.hadoop.hbase.quotas">RegionSizeReporting
Chore</a>, <a href="../../../../org/apache/hadoop/hbase/master/cleaner/ReplicationBarrierCleaner.html" title="class in org.apache.hadoop.hbase.master.cleaner">ReplicationBarrierCleaner</a>, <a href="../../../../org/apache/hadoop/hbase/quotas/SnapshotQuotaObserverChore.html" title="class in org.apache.hadoop.hbase.quotas">SnapshotQuotaObserverChore</a>, <a href="../../../../org/apache/hadoop/hbase/quotas/SpaceQuotaRefresherChore.html" title="class in org.apache.hadoop.hbase.quotas">SpaceQuotaRefresherChore</a>, <a href="../../../../org/apache/hadoop/hbase/master/SplitLogManager.TimeoutMonitor.html" title="class in org.apache.hadoop.hbase.master">SplitLogManager.TimeoutMonitor</a>, <a href="../../../../org/apache/hadoop/hbase/regionserver/StorefileRefresherChore.html" title="class in org.apache.hadoop.hbase.regionserver">StorefileRefresherChore</a></dd>
+<dd><a href="../../../../org/apache/hadoop/hbase/master/balancer/BalancerChore.html" title="class in org.apache.hadoop.hbase.master.balancer">BalancerChore</a>, <a href="../../../../org/apache/hadoop/hbase/master/CatalogJanitor.html" title="class in org.apache.hadoop.hbase.master">CatalogJanitor</a>, <a href="../../../../org/apache/hadoop/hbase/master/cleaner/CleanerChore.html" title="class in org.apache.hadoop.hbase.master.cleaner">CleanerChore</a>, <a href="../../../../org/apache/hadoop/hbase/master/balancer/ClusterStatusChore.html" title="class in org.apache.hadoop.hbase.master.balancer">ClusterStatusChore</a>, <a href="../../../../org/apache/hadoop/hbase/master/ClusterStatusPublisher.html" title="class in org.apache.hadoop.hbase.master">ClusterStatusPublisher</a>, <a href="../../../../org/apache/hadoop/hbase/regionserver/CompactedHFilesDischarger.html" title="class in org.apache.hadoop.hbase.regionserver">CompactedHFilesDischarger</a>, <a href="../../../../org/apache/hadoop/hbas
e/master/ExpiredMobFileCleanerChore.html" title="class in org.apache.hadoop.hbase.master">ExpiredMobFileCleanerChore</a>, <a href="../../../../org/apache/hadoop/hbase/quotas/FileSystemUtilizationChore.html" title="class in org.apache.hadoop.hbase.quotas">FileSystemUtilizationChore</a>, <a href="../../../../org/apache/hadoop/hbase/HealthCheckChore.html" title="class in org.apache.hadoop.hbase">HealthCheckChore</a>, <a href="../../../../org/apache/hadoop/hbase/regionserver/HeapMemoryManager.HeapMemoryTunerChore.html" title="class in org.apache.hadoop.hbase.regionserver">HeapMemoryManager.HeapMemoryTunerChore</a>, <a href="../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.CompactionChecker.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer.CompactionChecker</a>, <a href="../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionsCleaner.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer.MovedRegionsCleaner</a>,
<a href="../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.PeriodicMemStoreFlusher.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer.PeriodicMemStoreFlusher</a>, <a href="../../../../org/apache/hadoop/hbase/master/MobCompactionChore.html" title="class in org.apache.hadoop.hbase.master">MobCompactionChore</a>, <a href="../../../../org/apache/hadoop/hbase/quotas/QuotaCache.QuotaRefresherChore.html" title="class in org.apache.hadoop.hbase.quotas">QuotaCache.QuotaRefresherChore</a>, <a href="../../../../org/apache/hadoop/hbase/quotas/QuotaObserverChore.html" title="class in org.apache.hadoop.hbase.quotas">QuotaObserverChore</a>, <a href="../../../../org/apache/hadoop/hbase/master/normalizer/RegionNormalizerChore.html" title="class in org.apache.hadoop.hbase.master.normalizer">RegionNormalizerChore</a>, <a href="../../../../org/apache/hadoop/hbase/quotas/RegionSizeReportingChore.html" title="class in org.apache.hadoop.hbase.quotas">RegionSizeReporting
Chore</a>, <a href="../../../../org/apache/hadoop/hbase/master/cleaner/ReplicationBarrierCleaner.html" title="class in org.apache.hadoop.hbase.master.cleaner">ReplicationBarrierCleaner</a>, <a href="../../../../org/apache/hadoop/hbase/master/ServerManager.FlushedSequenceIdFlusher.html" title="class in org.apache.hadoop.hbase.master">ServerManager.FlushedSequenceIdFlusher</a>, <a href="../../../../org/apache/hadoop/hbase/quotas/SnapshotQuotaObserverChore.html" title="class in org.apache.hadoop.hbase.quotas">SnapshotQuotaObserverChore</a>, <a href="../../../../org/apache/hadoop/hbase/quotas/SpaceQuotaRefresherChore.html" title="class in org.apache.hadoop.hbase.quotas">SpaceQuotaRefresherChore</a>, <a href="../../../../org/apache/hadoop/hbase/master/SplitLogManager.TimeoutMonitor.html" title="class in org.apache.hadoop.hbase.master">SplitLogManager.TimeoutMonitor</a>, <a href="../../../../org/apache/hadoop/hbase/regionserver/StorefileRefresherChore.html" title="class in org.apache.hado
op.hbase.regionserver">StorefileRefresherChore</a></dd>
</dl>
<hr>
<br>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/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 7a65b4f..d0d625a 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><E> (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><T>, 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.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/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/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.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/BackupRestoreConstants.BackupCommand.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupRestoreConstants.BackupCommand</span></a></li>
</ul>
</li>
</ul>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/class-use/PleaseHoldException.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/class-use/PleaseHoldException.html b/devapidocs/org/apache/hadoop/hbase/class-use/PleaseHoldException.html
index e88c728..71ece0c 100644
--- a/devapidocs/org/apache/hadoop/hbase/class-use/PleaseHoldException.html
+++ b/devapidocs/org/apache/hadoop/hbase/class-use/PleaseHoldException.html
@@ -126,8 +126,8 @@
<tbody>
<tr class="altColor">
<td class="colFirst"><code>private void</code></td>
-<td class="colLast"><span class="typeNameLabel">AssignmentManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#checkFailoverCleanupCompleted-org.apache.hadoop.hbase.client.RegionInfo-">checkFailoverCleanupCompleted</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> hri)</code>
-<div class="block">Used to check if the failover cleanup is done.</div>
+<td class="colLast"><span class="typeNameLabel">AssignmentManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#checkMetaLoaded-org.apache.hadoop.hbase.client.RegionInfo-">checkMetaLoaded</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a> hri)</code>
+<div class="block">Used to check if the meta loading is done.</div>
</td>
</tr>
<tr class="rowColor">
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/class-use/RegionStateListener.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/class-use/RegionStateListener.html b/devapidocs/org/apache/hadoop/hbase/class-use/RegionStateListener.html
index 5639737..cb882c3 100644
--- a/devapidocs/org/apache/hadoop/hbase/class-use/RegionStateListener.html
+++ b/devapidocs/org/apache/hadoop/hbase/class-use/RegionStateListener.html
@@ -83,10 +83,6 @@
</tr>
<tbody>
<tr class="altColor">
-<td class="colFirst"><a href="#org.apache.hadoop.hbase.master.assignment">org.apache.hadoop.hbase.master.assignment</a></td>
-<td class="colLast"> </td>
-</tr>
-<tr class="rowColor">
<td class="colFirst"><a href="#org.apache.hadoop.hbase.quotas">org.apache.hadoop.hbase.quotas</a></td>
<td class="colLast"> </td>
</tr>
@@ -95,37 +91,6 @@
</li>
<li class="blockList">
<ul class="blockList">
-<li class="blockList"><a name="org.apache.hadoop.hbase.master.assignment">
-<!-- -->
-</a>
-<h3>Uses of <a href="../../../../../org/apache/hadoop/hbase/RegionStateListener.html" title="interface in org.apache.hadoop.hbase">RegionStateListener</a> in <a href="../../../../../org/apache/hadoop/hbase/master/assignment/package-summary.html">org.apache.hadoop.hbase.master.assignment</a></h3>
-<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing fields, and an explanation">
-<caption><span>Fields in <a href="../../../../../org/apache/hadoop/hbase/master/assignment/package-summary.html">org.apache.hadoop.hbase.master.assignment</a> declared as <a href="../../../../../org/apache/hadoop/hbase/RegionStateListener.html" title="interface in org.apache.hadoop.hbase">RegionStateListener</a></span><span class="tabEnd"> </span></caption>
-<tr>
-<th class="colFirst" scope="col">Modifier and Type</th>
-<th class="colLast" scope="col">Field and Description</th>
-</tr>
-<tbody>
-<tr class="altColor">
-<td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/RegionStateListener.html" title="interface in org.apache.hadoop.hbase">RegionStateListener</a></code></td>
-<td class="colLast"><span class="typeNameLabel">AssignmentManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#regionStateListener">regionStateListener</a></span></code> </td>
-</tr>
-</tbody>
-</table>
-<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing methods, and an explanation">
-<caption><span>Methods in <a href="../../../../../org/apache/hadoop/hbase/master/assignment/package-summary.html">org.apache.hadoop.hbase.master.assignment</a> with parameters of type <a href="../../../../../org/apache/hadoop/hbase/RegionStateListener.html" title="interface in org.apache.hadoop.hbase">RegionStateListener</a></span><span class="tabEnd"> </span></caption>
-<tr>
-<th class="colFirst" scope="col">Modifier and Type</th>
-<th class="colLast" scope="col">Method and Description</th>
-</tr>
-<tbody>
-<tr class="altColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><span class="typeNameLabel">AssignmentManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#setRegionStateListener-org.apache.hadoop.hbase.RegionStateListener-">setRegionStateListener</a></span>(<a href="../../../../../org/apache/hadoop/hbase/RegionStateListener.html" title="interface in org.apache.hadoop.hbase">RegionStateListener</a> listener)</code> </td>
-</tr>
-</tbody>
-</table>
-</li>
<li class="blockList"><a name="org.apache.hadoop.hbase.quotas">
<!-- -->
</a>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/class-use/ScheduledChore.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/class-use/ScheduledChore.html b/devapidocs/org/apache/hadoop/hbase/class-use/ScheduledChore.html
index d977f28..ffa8deb 100644
--- a/devapidocs/org/apache/hadoop/hbase/class-use/ScheduledChore.html
+++ b/devapidocs/org/apache/hadoop/hbase/class-use/ScheduledChore.html
@@ -283,6 +283,10 @@
</tr>
<tr class="altColor">
<td class="colFirst"><code>private class </code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.FlushedSequenceIdFlusher.html" title="class in org.apache.hadoop.hbase.master">ServerManager.FlushedSequenceIdFlusher</a></span></code> </td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private class </code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/SplitLogManager.TimeoutMonitor.html" title="class in org.apache.hadoop.hbase.master">SplitLogManager.TimeoutMonitor</a></span></code>
<div class="block">Periodically checks all active tasks and resubmits the ones that have timed out</div>
</td>
[23/51] [partial] hbase-site git commit: Published site at
9101fc246f86445006bfbcdfda5cc495016dc280.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.CollectAllVisitor.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.CollectAllVisitor.html b/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.CollectAllVisitor.html
index fea2b5a..c7a6cc4 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.CollectAllVisitor.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.CollectAllVisitor.html
@@ -1354,816 +1354,824 @@
<span class="sourceLineNo">1346</span> */<a name="line.1346"></a>
<span class="sourceLineNo">1347</span> public static void putsToMetaTable(final Connection connection, final List<Put> ps)<a name="line.1347"></a>
<span class="sourceLineNo">1348</span> throws IOException {<a name="line.1348"></a>
-<span class="sourceLineNo">1349</span> try (Table t = getMetaHTable(connection)) {<a name="line.1349"></a>
-<span class="sourceLineNo">1350</span> debugLogMutations(ps);<a name="line.1350"></a>
-<span class="sourceLineNo">1351</span> t.put(ps);<a name="line.1351"></a>
-<span class="sourceLineNo">1352</span> }<a name="line.1352"></a>
-<span class="sourceLineNo">1353</span> }<a name="line.1353"></a>
-<span class="sourceLineNo">1354</span><a name="line.1354"></a>
-<span class="sourceLineNo">1355</span> /**<a name="line.1355"></a>
-<span class="sourceLineNo">1356</span> * Delete the passed <code>d</code> from the <code>hbase:meta</code> table.<a name="line.1356"></a>
-<span class="sourceLineNo">1357</span> * @param connection connection we're using<a name="line.1357"></a>
-<span class="sourceLineNo">1358</span> * @param d Delete to add to hbase:meta<a name="line.1358"></a>
-<span class="sourceLineNo">1359</span> */<a name="line.1359"></a>
-<span class="sourceLineNo">1360</span> private static void deleteFromMetaTable(final Connection connection, final Delete d)<a name="line.1360"></a>
-<span class="sourceLineNo">1361</span> throws IOException {<a name="line.1361"></a>
-<span class="sourceLineNo">1362</span> List<Delete> dels = new ArrayList<>(1);<a name="line.1362"></a>
-<span class="sourceLineNo">1363</span> dels.add(d);<a name="line.1363"></a>
-<span class="sourceLineNo">1364</span> deleteFromMetaTable(connection, dels);<a name="line.1364"></a>
-<span class="sourceLineNo">1365</span> }<a name="line.1365"></a>
-<span class="sourceLineNo">1366</span><a name="line.1366"></a>
-<span class="sourceLineNo">1367</span> /**<a name="line.1367"></a>
-<span class="sourceLineNo">1368</span> * Delete the passed <code>deletes</code> from the <code>hbase:meta</code> table.<a name="line.1368"></a>
-<span class="sourceLineNo">1369</span> * @param connection connection we're using<a name="line.1369"></a>
-<span class="sourceLineNo">1370</span> * @param deletes Deletes to add to hbase:meta This list should support #remove.<a name="line.1370"></a>
-<span class="sourceLineNo">1371</span> */<a name="line.1371"></a>
-<span class="sourceLineNo">1372</span> private static void deleteFromMetaTable(final Connection connection, final List<Delete> deletes)<a name="line.1372"></a>
-<span class="sourceLineNo">1373</span> throws IOException {<a name="line.1373"></a>
-<span class="sourceLineNo">1374</span> try (Table t = getMetaHTable(connection)) {<a name="line.1374"></a>
-<span class="sourceLineNo">1375</span> debugLogMutations(deletes);<a name="line.1375"></a>
-<span class="sourceLineNo">1376</span> t.delete(deletes);<a name="line.1376"></a>
-<span class="sourceLineNo">1377</span> }<a name="line.1377"></a>
-<span class="sourceLineNo">1378</span> }<a name="line.1378"></a>
-<span class="sourceLineNo">1379</span><a name="line.1379"></a>
-<span class="sourceLineNo">1380</span> /**<a name="line.1380"></a>
-<span class="sourceLineNo">1381</span> * Deletes some replica columns corresponding to replicas for the passed rows<a name="line.1381"></a>
-<span class="sourceLineNo">1382</span> * @param metaRows rows in hbase:meta<a name="line.1382"></a>
-<span class="sourceLineNo">1383</span> * @param replicaIndexToDeleteFrom the replica ID we would start deleting from<a name="line.1383"></a>
-<span class="sourceLineNo">1384</span> * @param numReplicasToRemove how many replicas to remove<a name="line.1384"></a>
-<span class="sourceLineNo">1385</span> * @param connection connection we're using to access meta table<a name="line.1385"></a>
-<span class="sourceLineNo">1386</span> */<a name="line.1386"></a>
-<span class="sourceLineNo">1387</span> public static void removeRegionReplicasFromMeta(Set<byte[]> metaRows,<a name="line.1387"></a>
-<span class="sourceLineNo">1388</span> int replicaIndexToDeleteFrom, int numReplicasToRemove, Connection connection)<a name="line.1388"></a>
-<span class="sourceLineNo">1389</span> throws IOException {<a name="line.1389"></a>
-<span class="sourceLineNo">1390</span> int absoluteIndex = replicaIndexToDeleteFrom + numReplicasToRemove;<a name="line.1390"></a>
-<span class="sourceLineNo">1391</span> for (byte[] row : metaRows) {<a name="line.1391"></a>
-<span class="sourceLineNo">1392</span> long now = EnvironmentEdgeManager.currentTime();<a name="line.1392"></a>
-<span class="sourceLineNo">1393</span> Delete deleteReplicaLocations = new Delete(row);<a name="line.1393"></a>
-<span class="sourceLineNo">1394</span> for (int i = replicaIndexToDeleteFrom; i < absoluteIndex; i++) {<a name="line.1394"></a>
-<span class="sourceLineNo">1395</span> deleteReplicaLocations.addColumns(getCatalogFamily(),<a name="line.1395"></a>
-<span class="sourceLineNo">1396</span> getServerColumn(i), now);<a name="line.1396"></a>
-<span class="sourceLineNo">1397</span> deleteReplicaLocations.addColumns(getCatalogFamily(),<a name="line.1397"></a>
-<span class="sourceLineNo">1398</span> getSeqNumColumn(i), now);<a name="line.1398"></a>
-<span class="sourceLineNo">1399</span> deleteReplicaLocations.addColumns(getCatalogFamily(),<a name="line.1399"></a>
-<span class="sourceLineNo">1400</span> getStartCodeColumn(i), now);<a name="line.1400"></a>
-<span class="sourceLineNo">1401</span> }<a name="line.1401"></a>
-<span class="sourceLineNo">1402</span> deleteFromMetaTable(connection, deleteReplicaLocations);<a name="line.1402"></a>
-<span class="sourceLineNo">1403</span> }<a name="line.1403"></a>
-<span class="sourceLineNo">1404</span> }<a name="line.1404"></a>
-<span class="sourceLineNo">1405</span><a name="line.1405"></a>
-<span class="sourceLineNo">1406</span> /**<a name="line.1406"></a>
-<span class="sourceLineNo">1407</span> * Execute the passed <code>mutations</code> against <code>hbase:meta</code> table.<a name="line.1407"></a>
-<span class="sourceLineNo">1408</span> * @param connection connection we're using<a name="line.1408"></a>
-<span class="sourceLineNo">1409</span> * @param mutations Puts and Deletes to execute on hbase:meta<a name="line.1409"></a>
-<span class="sourceLineNo">1410</span> * @throws IOException<a name="line.1410"></a>
-<span class="sourceLineNo">1411</span> */<a name="line.1411"></a>
-<span class="sourceLineNo">1412</span> public static void mutateMetaTable(final Connection connection,<a name="line.1412"></a>
-<span class="sourceLineNo">1413</span> final List<Mutation> mutations)<a name="line.1413"></a>
-<span class="sourceLineNo">1414</span> throws IOException {<a name="line.1414"></a>
-<span class="sourceLineNo">1415</span> Table t = getMetaHTable(connection);<a name="line.1415"></a>
-<span class="sourceLineNo">1416</span> try {<a name="line.1416"></a>
-<span class="sourceLineNo">1417</span> debugLogMutations(mutations);<a name="line.1417"></a>
-<span class="sourceLineNo">1418</span> t.batch(mutations, null);<a name="line.1418"></a>
-<span class="sourceLineNo">1419</span> } catch (InterruptedException e) {<a name="line.1419"></a>
-<span class="sourceLineNo">1420</span> InterruptedIOException ie = new InterruptedIOException(e.getMessage());<a name="line.1420"></a>
-<span class="sourceLineNo">1421</span> ie.initCause(e);<a name="line.1421"></a>
-<span class="sourceLineNo">1422</span> throw ie;<a name="line.1422"></a>
-<span class="sourceLineNo">1423</span> } finally {<a name="line.1423"></a>
-<span class="sourceLineNo">1424</span> t.close();<a name="line.1424"></a>
-<span class="sourceLineNo">1425</span> }<a name="line.1425"></a>
-<span class="sourceLineNo">1426</span> }<a name="line.1426"></a>
-<span class="sourceLineNo">1427</span><a name="line.1427"></a>
-<span class="sourceLineNo">1428</span> private static void addRegionStateToPut(Put put, RegionState.State state) throws IOException {<a name="line.1428"></a>
-<span class="sourceLineNo">1429</span> put.add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.1429"></a>
-<span class="sourceLineNo">1430</span> .setRow(put.getRow())<a name="line.1430"></a>
-<span class="sourceLineNo">1431</span> .setFamily(HConstants.CATALOG_FAMILY)<a name="line.1431"></a>
-<span class="sourceLineNo">1432</span> .setQualifier(getRegionStateColumn())<a name="line.1432"></a>
-<span class="sourceLineNo">1433</span> .setTimestamp(put.getTimestamp())<a name="line.1433"></a>
-<span class="sourceLineNo">1434</span> .setType(Cell.Type.Put)<a name="line.1434"></a>
-<span class="sourceLineNo">1435</span> .setValue(Bytes.toBytes(state.name()))<a name="line.1435"></a>
-<span class="sourceLineNo">1436</span> .build());<a name="line.1436"></a>
-<span class="sourceLineNo">1437</span> }<a name="line.1437"></a>
-<span class="sourceLineNo">1438</span><a name="line.1438"></a>
-<span class="sourceLineNo">1439</span> /**<a name="line.1439"></a>
-<span class="sourceLineNo">1440</span> * Adds daughter region infos to hbase:meta row for the specified region. Note that this does not<a name="line.1440"></a>
-<span class="sourceLineNo">1441</span> * add its daughter's as different rows, but adds information about the daughters in the same row<a name="line.1441"></a>
-<span class="sourceLineNo">1442</span> * as the parent. Use<a name="line.1442"></a>
-<span class="sourceLineNo">1443</span> * {@link #splitRegion(Connection, RegionInfo, long, RegionInfo, RegionInfo, ServerName, int)}<a name="line.1443"></a>
-<span class="sourceLineNo">1444</span> * if you want to do that.<a name="line.1444"></a>
-<span class="sourceLineNo">1445</span> * @param connection connection we're using<a name="line.1445"></a>
-<span class="sourceLineNo">1446</span> * @param regionInfo RegionInfo of parent region<a name="line.1446"></a>
-<span class="sourceLineNo">1447</span> * @param splitA first split daughter of the parent regionInfo<a name="line.1447"></a>
-<span class="sourceLineNo">1448</span> * @param splitB second split daughter of the parent regionInfo<a name="line.1448"></a>
-<span class="sourceLineNo">1449</span> * @throws IOException if problem connecting or updating meta<a name="line.1449"></a>
-<span class="sourceLineNo">1450</span> */<a name="line.1450"></a>
-<span class="sourceLineNo">1451</span> public static void addSplitsToParent(Connection connection, RegionInfo regionInfo,<a name="line.1451"></a>
-<span class="sourceLineNo">1452</span> RegionInfo splitA, RegionInfo splitB) throws IOException {<a name="line.1452"></a>
-<span class="sourceLineNo">1453</span> Table meta = getMetaHTable(connection);<a name="line.1453"></a>
-<span class="sourceLineNo">1454</span> try {<a name="line.1454"></a>
-<span class="sourceLineNo">1455</span> Put put = makePutFromRegionInfo(regionInfo, EnvironmentEdgeManager.currentTime());<a name="line.1455"></a>
-<span class="sourceLineNo">1456</span> addDaughtersToPut(put, splitA, splitB);<a name="line.1456"></a>
-<span class="sourceLineNo">1457</span> meta.put(put);<a name="line.1457"></a>
-<span class="sourceLineNo">1458</span> debugLogMutation(put);<a name="line.1458"></a>
-<span class="sourceLineNo">1459</span> LOG.debug("Added region {}", regionInfo.getRegionNameAsString());<a name="line.1459"></a>
-<span class="sourceLineNo">1460</span> } finally {<a name="line.1460"></a>
-<span class="sourceLineNo">1461</span> meta.close();<a name="line.1461"></a>
-<span class="sourceLineNo">1462</span> }<a name="line.1462"></a>
-<span class="sourceLineNo">1463</span> }<a name="line.1463"></a>
-<span class="sourceLineNo">1464</span><a name="line.1464"></a>
-<span class="sourceLineNo">1465</span> /**<a name="line.1465"></a>
-<span class="sourceLineNo">1466</span> * Adds a (single) hbase:meta row for the specified new region and its daughters. Note that this<a name="line.1466"></a>
-<span class="sourceLineNo">1467</span> * does not add its daughter's as different rows, but adds information about the daughters<a name="line.1467"></a>
-<span class="sourceLineNo">1468</span> * in the same row as the parent. Use<a name="line.1468"></a>
-<span class="sourceLineNo">1469</span> * {@link #splitRegion(Connection, RegionInfo, long, RegionInfo, RegionInfo, ServerName, int)}<a name="line.1469"></a>
-<span class="sourceLineNo">1470</span> * if you want to do that.<a name="line.1470"></a>
-<span class="sourceLineNo">1471</span> * @param connection connection we're using<a name="line.1471"></a>
-<span class="sourceLineNo">1472</span> * @param regionInfo region information<a name="line.1472"></a>
-<span class="sourceLineNo">1473</span> * @throws IOException if problem connecting or updating meta<a name="line.1473"></a>
-<span class="sourceLineNo">1474</span> */<a name="line.1474"></a>
-<span class="sourceLineNo">1475</span> @VisibleForTesting<a name="line.1475"></a>
-<span class="sourceLineNo">1476</span> public static void addRegionToMeta(Connection connection, RegionInfo regionInfo)<a name="line.1476"></a>
-<span class="sourceLineNo">1477</span> throws IOException {<a name="line.1477"></a>
-<span class="sourceLineNo">1478</span> addRegionsToMeta(connection, Collections.singletonList(regionInfo), 1);<a name="line.1478"></a>
-<span class="sourceLineNo">1479</span> }<a name="line.1479"></a>
-<span class="sourceLineNo">1480</span><a name="line.1480"></a>
-<span class="sourceLineNo">1481</span> /**<a name="line.1481"></a>
-<span class="sourceLineNo">1482</span> * Adds a hbase:meta row for each of the specified new regions. Initial state for new regions<a name="line.1482"></a>
-<span class="sourceLineNo">1483</span> * is CLOSED.<a name="line.1483"></a>
-<span class="sourceLineNo">1484</span> * @param connection connection we're using<a name="line.1484"></a>
-<span class="sourceLineNo">1485</span> * @param regionInfos region information list<a name="line.1485"></a>
-<span class="sourceLineNo">1486</span> * @throws IOException if problem connecting or updating meta<a name="line.1486"></a>
-<span class="sourceLineNo">1487</span> */<a name="line.1487"></a>
-<span class="sourceLineNo">1488</span> public static void addRegionsToMeta(Connection connection, List<RegionInfo> regionInfos,<a name="line.1488"></a>
-<span class="sourceLineNo">1489</span> int regionReplication) throws IOException {<a name="line.1489"></a>
-<span class="sourceLineNo">1490</span> addRegionsToMeta(connection, regionInfos, regionReplication,<a name="line.1490"></a>
-<span class="sourceLineNo">1491</span> EnvironmentEdgeManager.currentTime());<a name="line.1491"></a>
-<span class="sourceLineNo">1492</span> }<a name="line.1492"></a>
-<span class="sourceLineNo">1493</span><a name="line.1493"></a>
-<span class="sourceLineNo">1494</span> /**<a name="line.1494"></a>
-<span class="sourceLineNo">1495</span> * Adds a hbase:meta row for each of the specified new regions. Initial state for new regions<a name="line.1495"></a>
-<span class="sourceLineNo">1496</span> * is CLOSED.<a name="line.1496"></a>
-<span class="sourceLineNo">1497</span> * @param connection connection we're using<a name="line.1497"></a>
-<span class="sourceLineNo">1498</span> * @param regionInfos region information list<a name="line.1498"></a>
-<span class="sourceLineNo">1499</span> * @param regionReplication<a name="line.1499"></a>
-<span class="sourceLineNo">1500</span> * @param ts desired timestamp<a name="line.1500"></a>
-<span class="sourceLineNo">1501</span> * @throws IOException if problem connecting or updating meta<a name="line.1501"></a>
-<span class="sourceLineNo">1502</span> */<a name="line.1502"></a>
-<span class="sourceLineNo">1503</span> private static void addRegionsToMeta(Connection connection, List<RegionInfo> regionInfos,<a name="line.1503"></a>
-<span class="sourceLineNo">1504</span> int regionReplication, long ts) throws IOException {<a name="line.1504"></a>
-<span class="sourceLineNo">1505</span> List<Put> puts = new ArrayList<>();<a name="line.1505"></a>
-<span class="sourceLineNo">1506</span> for (RegionInfo regionInfo : regionInfos) {<a name="line.1506"></a>
-<span class="sourceLineNo">1507</span> if (RegionReplicaUtil.isDefaultReplica(regionInfo)) {<a name="line.1507"></a>
-<span class="sourceLineNo">1508</span> Put put = makePutFromRegionInfo(regionInfo, ts);<a name="line.1508"></a>
-<span class="sourceLineNo">1509</span> // New regions are added with initial state of CLOSED.<a name="line.1509"></a>
-<span class="sourceLineNo">1510</span> addRegionStateToPut(put, RegionState.State.CLOSED);<a name="line.1510"></a>
-<span class="sourceLineNo">1511</span> // Add empty locations for region replicas so that number of replicas can be cached<a name="line.1511"></a>
-<span class="sourceLineNo">1512</span> // whenever the primary region is looked up from meta<a name="line.1512"></a>
-<span class="sourceLineNo">1513</span> for (int i = 1; i < regionReplication; i++) {<a name="line.1513"></a>
-<span class="sourceLineNo">1514</span> addEmptyLocation(put, i);<a name="line.1514"></a>
-<span class="sourceLineNo">1515</span> }<a name="line.1515"></a>
-<span class="sourceLineNo">1516</span> puts.add(put);<a name="line.1516"></a>
-<span class="sourceLineNo">1517</span> }<a name="line.1517"></a>
-<span class="sourceLineNo">1518</span> }<a name="line.1518"></a>
-<span class="sourceLineNo">1519</span> putsToMetaTable(connection, puts);<a name="line.1519"></a>
-<span class="sourceLineNo">1520</span> LOG.info("Added {} regions to meta.", puts.size());<a name="line.1520"></a>
-<span class="sourceLineNo">1521</span> }<a name="line.1521"></a>
-<span class="sourceLineNo">1522</span><a name="line.1522"></a>
-<span class="sourceLineNo">1523</span> /**<a name="line.1523"></a>
-<span class="sourceLineNo">1524</span> * Merge the two regions into one in an atomic operation. Deletes the two merging regions in<a name="line.1524"></a>
-<span class="sourceLineNo">1525</span> * hbase:meta and adds the merged region with the information of two merging regions.<a name="line.1525"></a>
-<span class="sourceLineNo">1526</span> * @param connection connection we're using<a name="line.1526"></a>
-<span class="sourceLineNo">1527</span> * @param mergedRegion the merged region<a name="line.1527"></a>
-<span class="sourceLineNo">1528</span> * @param regionA merge parent region A<a name="line.1528"></a>
-<span class="sourceLineNo">1529</span> * @param regionAOpenSeqNum the next open sequence id for region A, used by serial replication. -1<a name="line.1529"></a>
-<span class="sourceLineNo">1530</span> * if not necessary.<a name="line.1530"></a>
-<span class="sourceLineNo">1531</span> * @param regionB merge parent region B<a name="line.1531"></a>
-<span class="sourceLineNo">1532</span> * @param regionBOpenSeqNum the next open sequence id for region B, used by serial replication. -1<a name="line.1532"></a>
-<span class="sourceLineNo">1533</span> * if not necessary.<a name="line.1533"></a>
-<span class="sourceLineNo">1534</span> * @param sn the location of the region<a name="line.1534"></a>
-<span class="sourceLineNo">1535</span> */<a name="line.1535"></a>
-<span class="sourceLineNo">1536</span> public static void mergeRegions(Connection connection, RegionInfo mergedRegion,<a name="line.1536"></a>
-<span class="sourceLineNo">1537</span> RegionInfo regionA, long regionAOpenSeqNum, RegionInfo regionB, long regionBOpenSeqNum,<a name="line.1537"></a>
-<span class="sourceLineNo">1538</span> ServerName sn, int regionReplication) throws IOException {<a name="line.1538"></a>
-<span class="sourceLineNo">1539</span> try (Table meta = getMetaHTable(connection)) {<a name="line.1539"></a>
-<span class="sourceLineNo">1540</span> long time = EnvironmentEdgeManager.currentTime();<a name="line.1540"></a>
-<span class="sourceLineNo">1541</span> List<Mutation> mutations = new ArrayList<>();<a name="line.1541"></a>
-<span class="sourceLineNo">1542</span><a name="line.1542"></a>
-<span class="sourceLineNo">1543</span> List<RegionInfo> replicationParents = new ArrayList<>(2);<a name="line.1543"></a>
-<span class="sourceLineNo">1544</span> // Deletes for merging regions<a name="line.1544"></a>
-<span class="sourceLineNo">1545</span> mutations.add(makeDeleteFromRegionInfo(regionA, time));<a name="line.1545"></a>
-<span class="sourceLineNo">1546</span> if (regionAOpenSeqNum > 0) {<a name="line.1546"></a>
-<span class="sourceLineNo">1547</span> mutations.add(makePutForReplicationBarrier(regionA, regionAOpenSeqNum, time));<a name="line.1547"></a>
-<span class="sourceLineNo">1548</span> replicationParents.add(regionA);<a name="line.1548"></a>
-<span class="sourceLineNo">1549</span> }<a name="line.1549"></a>
-<span class="sourceLineNo">1550</span> mutations.add(makeDeleteFromRegionInfo(regionB, time));<a name="line.1550"></a>
-<span class="sourceLineNo">1551</span> if (regionBOpenSeqNum > 0) {<a name="line.1551"></a>
-<span class="sourceLineNo">1552</span> mutations.add(makePutForReplicationBarrier(regionB, regionBOpenSeqNum, time));<a name="line.1552"></a>
-<span class="sourceLineNo">1553</span> replicationParents.add(regionB);<a name="line.1553"></a>
-<span class="sourceLineNo">1554</span> }<a name="line.1554"></a>
-<span class="sourceLineNo">1555</span><a name="line.1555"></a>
-<span class="sourceLineNo">1556</span> // Put for parent<a name="line.1556"></a>
-<span class="sourceLineNo">1557</span> Put putOfMerged = makePutFromRegionInfo(mergedRegion, time);<a name="line.1557"></a>
-<span class="sourceLineNo">1558</span> putOfMerged.add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.1558"></a>
-<span class="sourceLineNo">1559</span> .setRow(putOfMerged.getRow())<a name="line.1559"></a>
-<span class="sourceLineNo">1560</span> .setFamily(HConstants.CATALOG_FAMILY)<a name="line.1560"></a>
-<span class="sourceLineNo">1561</span> .setQualifier(HConstants.MERGEA_QUALIFIER)<a name="line.1561"></a>
-<span class="sourceLineNo">1562</span> .setTimestamp(putOfMerged.getTimestamp())<a name="line.1562"></a>
-<span class="sourceLineNo">1563</span> .setType(Type.Put)<a name="line.1563"></a>
-<span class="sourceLineNo">1564</span> .setValue(RegionInfo.toByteArray(regionA))<a name="line.1564"></a>
-<span class="sourceLineNo">1565</span> .build())<a name="line.1565"></a>
-<span class="sourceLineNo">1566</span> .add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.1566"></a>
+<span class="sourceLineNo">1349</span> if (ps.isEmpty()) {<a name="line.1349"></a>
+<span class="sourceLineNo">1350</span> return;<a name="line.1350"></a>
+<span class="sourceLineNo">1351</span> }<a name="line.1351"></a>
+<span class="sourceLineNo">1352</span> try (Table t = getMetaHTable(connection)) {<a name="line.1352"></a>
+<span class="sourceLineNo">1353</span> debugLogMutations(ps);<a name="line.1353"></a>
+<span class="sourceLineNo">1354</span> // the implementation for putting a single Put is much simpler so here we do a check first.<a name="line.1354"></a>
+<span class="sourceLineNo">1355</span> if (ps.size() == 1) {<a name="line.1355"></a>
+<span class="sourceLineNo">1356</span> t.put(ps.get(0));<a name="line.1356"></a>
+<span class="sourceLineNo">1357</span> } else {<a name="line.1357"></a>
+<span class="sourceLineNo">1358</span> t.put(ps);<a name="line.1358"></a>
+<span class="sourceLineNo">1359</span> }<a name="line.1359"></a>
+<span class="sourceLineNo">1360</span> }<a name="line.1360"></a>
+<span class="sourceLineNo">1361</span> }<a name="line.1361"></a>
+<span class="sourceLineNo">1362</span><a name="line.1362"></a>
+<span class="sourceLineNo">1363</span> /**<a name="line.1363"></a>
+<span class="sourceLineNo">1364</span> * Delete the passed <code>d</code> from the <code>hbase:meta</code> table.<a name="line.1364"></a>
+<span class="sourceLineNo">1365</span> * @param connection connection we're using<a name="line.1365"></a>
+<span class="sourceLineNo">1366</span> * @param d Delete to add to hbase:meta<a name="line.1366"></a>
+<span class="sourceLineNo">1367</span> */<a name="line.1367"></a>
+<span class="sourceLineNo">1368</span> private static void deleteFromMetaTable(final Connection connection, final Delete d)<a name="line.1368"></a>
+<span class="sourceLineNo">1369</span> throws IOException {<a name="line.1369"></a>
+<span class="sourceLineNo">1370</span> List<Delete> dels = new ArrayList<>(1);<a name="line.1370"></a>
+<span class="sourceLineNo">1371</span> dels.add(d);<a name="line.1371"></a>
+<span class="sourceLineNo">1372</span> deleteFromMetaTable(connection, dels);<a name="line.1372"></a>
+<span class="sourceLineNo">1373</span> }<a name="line.1373"></a>
+<span class="sourceLineNo">1374</span><a name="line.1374"></a>
+<span class="sourceLineNo">1375</span> /**<a name="line.1375"></a>
+<span class="sourceLineNo">1376</span> * Delete the passed <code>deletes</code> from the <code>hbase:meta</code> table.<a name="line.1376"></a>
+<span class="sourceLineNo">1377</span> * @param connection connection we're using<a name="line.1377"></a>
+<span class="sourceLineNo">1378</span> * @param deletes Deletes to add to hbase:meta This list should support #remove.<a name="line.1378"></a>
+<span class="sourceLineNo">1379</span> */<a name="line.1379"></a>
+<span class="sourceLineNo">1380</span> private static void deleteFromMetaTable(final Connection connection, final List<Delete> deletes)<a name="line.1380"></a>
+<span class="sourceLineNo">1381</span> throws IOException {<a name="line.1381"></a>
+<span class="sourceLineNo">1382</span> try (Table t = getMetaHTable(connection)) {<a name="line.1382"></a>
+<span class="sourceLineNo">1383</span> debugLogMutations(deletes);<a name="line.1383"></a>
+<span class="sourceLineNo">1384</span> t.delete(deletes);<a name="line.1384"></a>
+<span class="sourceLineNo">1385</span> }<a name="line.1385"></a>
+<span class="sourceLineNo">1386</span> }<a name="line.1386"></a>
+<span class="sourceLineNo">1387</span><a name="line.1387"></a>
+<span class="sourceLineNo">1388</span> /**<a name="line.1388"></a>
+<span class="sourceLineNo">1389</span> * Deletes some replica columns corresponding to replicas for the passed rows<a name="line.1389"></a>
+<span class="sourceLineNo">1390</span> * @param metaRows rows in hbase:meta<a name="line.1390"></a>
+<span class="sourceLineNo">1391</span> * @param replicaIndexToDeleteFrom the replica ID we would start deleting from<a name="line.1391"></a>
+<span class="sourceLineNo">1392</span> * @param numReplicasToRemove how many replicas to remove<a name="line.1392"></a>
+<span class="sourceLineNo">1393</span> * @param connection connection we're using to access meta table<a name="line.1393"></a>
+<span class="sourceLineNo">1394</span> */<a name="line.1394"></a>
+<span class="sourceLineNo">1395</span> public static void removeRegionReplicasFromMeta(Set<byte[]> metaRows,<a name="line.1395"></a>
+<span class="sourceLineNo">1396</span> int replicaIndexToDeleteFrom, int numReplicasToRemove, Connection connection)<a name="line.1396"></a>
+<span class="sourceLineNo">1397</span> throws IOException {<a name="line.1397"></a>
+<span class="sourceLineNo">1398</span> int absoluteIndex = replicaIndexToDeleteFrom + numReplicasToRemove;<a name="line.1398"></a>
+<span class="sourceLineNo">1399</span> for (byte[] row : metaRows) {<a name="line.1399"></a>
+<span class="sourceLineNo">1400</span> long now = EnvironmentEdgeManager.currentTime();<a name="line.1400"></a>
+<span class="sourceLineNo">1401</span> Delete deleteReplicaLocations = new Delete(row);<a name="line.1401"></a>
+<span class="sourceLineNo">1402</span> for (int i = replicaIndexToDeleteFrom; i < absoluteIndex; i++) {<a name="line.1402"></a>
+<span class="sourceLineNo">1403</span> deleteReplicaLocations.addColumns(getCatalogFamily(),<a name="line.1403"></a>
+<span class="sourceLineNo">1404</span> getServerColumn(i), now);<a name="line.1404"></a>
+<span class="sourceLineNo">1405</span> deleteReplicaLocations.addColumns(getCatalogFamily(),<a name="line.1405"></a>
+<span class="sourceLineNo">1406</span> getSeqNumColumn(i), now);<a name="line.1406"></a>
+<span class="sourceLineNo">1407</span> deleteReplicaLocations.addColumns(getCatalogFamily(),<a name="line.1407"></a>
+<span class="sourceLineNo">1408</span> getStartCodeColumn(i), now);<a name="line.1408"></a>
+<span class="sourceLineNo">1409</span> }<a name="line.1409"></a>
+<span class="sourceLineNo">1410</span> deleteFromMetaTable(connection, deleteReplicaLocations);<a name="line.1410"></a>
+<span class="sourceLineNo">1411</span> }<a name="line.1411"></a>
+<span class="sourceLineNo">1412</span> }<a name="line.1412"></a>
+<span class="sourceLineNo">1413</span><a name="line.1413"></a>
+<span class="sourceLineNo">1414</span> /**<a name="line.1414"></a>
+<span class="sourceLineNo">1415</span> * Execute the passed <code>mutations</code> against <code>hbase:meta</code> table.<a name="line.1415"></a>
+<span class="sourceLineNo">1416</span> * @param connection connection we're using<a name="line.1416"></a>
+<span class="sourceLineNo">1417</span> * @param mutations Puts and Deletes to execute on hbase:meta<a name="line.1417"></a>
+<span class="sourceLineNo">1418</span> * @throws IOException<a name="line.1418"></a>
+<span class="sourceLineNo">1419</span> */<a name="line.1419"></a>
+<span class="sourceLineNo">1420</span> public static void mutateMetaTable(final Connection connection,<a name="line.1420"></a>
+<span class="sourceLineNo">1421</span> final List<Mutation> mutations)<a name="line.1421"></a>
+<span class="sourceLineNo">1422</span> throws IOException {<a name="line.1422"></a>
+<span class="sourceLineNo">1423</span> Table t = getMetaHTable(connection);<a name="line.1423"></a>
+<span class="sourceLineNo">1424</span> try {<a name="line.1424"></a>
+<span class="sourceLineNo">1425</span> debugLogMutations(mutations);<a name="line.1425"></a>
+<span class="sourceLineNo">1426</span> t.batch(mutations, null);<a name="line.1426"></a>
+<span class="sourceLineNo">1427</span> } catch (InterruptedException e) {<a name="line.1427"></a>
+<span class="sourceLineNo">1428</span> InterruptedIOException ie = new InterruptedIOException(e.getMessage());<a name="line.1428"></a>
+<span class="sourceLineNo">1429</span> ie.initCause(e);<a name="line.1429"></a>
+<span class="sourceLineNo">1430</span> throw ie;<a name="line.1430"></a>
+<span class="sourceLineNo">1431</span> } finally {<a name="line.1431"></a>
+<span class="sourceLineNo">1432</span> t.close();<a name="line.1432"></a>
+<span class="sourceLineNo">1433</span> }<a name="line.1433"></a>
+<span class="sourceLineNo">1434</span> }<a name="line.1434"></a>
+<span class="sourceLineNo">1435</span><a name="line.1435"></a>
+<span class="sourceLineNo">1436</span> private static void addRegionStateToPut(Put put, RegionState.State state) throws IOException {<a name="line.1436"></a>
+<span class="sourceLineNo">1437</span> put.add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.1437"></a>
+<span class="sourceLineNo">1438</span> .setRow(put.getRow())<a name="line.1438"></a>
+<span class="sourceLineNo">1439</span> .setFamily(HConstants.CATALOG_FAMILY)<a name="line.1439"></a>
+<span class="sourceLineNo">1440</span> .setQualifier(getRegionStateColumn())<a name="line.1440"></a>
+<span class="sourceLineNo">1441</span> .setTimestamp(put.getTimestamp())<a name="line.1441"></a>
+<span class="sourceLineNo">1442</span> .setType(Cell.Type.Put)<a name="line.1442"></a>
+<span class="sourceLineNo">1443</span> .setValue(Bytes.toBytes(state.name()))<a name="line.1443"></a>
+<span class="sourceLineNo">1444</span> .build());<a name="line.1444"></a>
+<span class="sourceLineNo">1445</span> }<a name="line.1445"></a>
+<span class="sourceLineNo">1446</span><a name="line.1446"></a>
+<span class="sourceLineNo">1447</span> /**<a name="line.1447"></a>
+<span class="sourceLineNo">1448</span> * Adds daughter region infos to hbase:meta row for the specified region. Note that this does not<a name="line.1448"></a>
+<span class="sourceLineNo">1449</span> * add its daughter's as different rows, but adds information about the daughters in the same row<a name="line.1449"></a>
+<span class="sourceLineNo">1450</span> * as the parent. Use<a name="line.1450"></a>
+<span class="sourceLineNo">1451</span> * {@link #splitRegion(Connection, RegionInfo, long, RegionInfo, RegionInfo, ServerName, int)}<a name="line.1451"></a>
+<span class="sourceLineNo">1452</span> * if you want to do that.<a name="line.1452"></a>
+<span class="sourceLineNo">1453</span> * @param connection connection we're using<a name="line.1453"></a>
+<span class="sourceLineNo">1454</span> * @param regionInfo RegionInfo of parent region<a name="line.1454"></a>
+<span class="sourceLineNo">1455</span> * @param splitA first split daughter of the parent regionInfo<a name="line.1455"></a>
+<span class="sourceLineNo">1456</span> * @param splitB second split daughter of the parent regionInfo<a name="line.1456"></a>
+<span class="sourceLineNo">1457</span> * @throws IOException if problem connecting or updating meta<a name="line.1457"></a>
+<span class="sourceLineNo">1458</span> */<a name="line.1458"></a>
+<span class="sourceLineNo">1459</span> public static void addSplitsToParent(Connection connection, RegionInfo regionInfo,<a name="line.1459"></a>
+<span class="sourceLineNo">1460</span> RegionInfo splitA, RegionInfo splitB) throws IOException {<a name="line.1460"></a>
+<span class="sourceLineNo">1461</span> Table meta = getMetaHTable(connection);<a name="line.1461"></a>
+<span class="sourceLineNo">1462</span> try {<a name="line.1462"></a>
+<span class="sourceLineNo">1463</span> Put put = makePutFromRegionInfo(regionInfo, EnvironmentEdgeManager.currentTime());<a name="line.1463"></a>
+<span class="sourceLineNo">1464</span> addDaughtersToPut(put, splitA, splitB);<a name="line.1464"></a>
+<span class="sourceLineNo">1465</span> meta.put(put);<a name="line.1465"></a>
+<span class="sourceLineNo">1466</span> debugLogMutation(put);<a name="line.1466"></a>
+<span class="sourceLineNo">1467</span> LOG.debug("Added region {}", regionInfo.getRegionNameAsString());<a name="line.1467"></a>
+<span class="sourceLineNo">1468</span> } finally {<a name="line.1468"></a>
+<span class="sourceLineNo">1469</span> meta.close();<a name="line.1469"></a>
+<span class="sourceLineNo">1470</span> }<a name="line.1470"></a>
+<span class="sourceLineNo">1471</span> }<a name="line.1471"></a>
+<span class="sourceLineNo">1472</span><a name="line.1472"></a>
+<span class="sourceLineNo">1473</span> /**<a name="line.1473"></a>
+<span class="sourceLineNo">1474</span> * Adds a (single) hbase:meta row for the specified new region and its daughters. Note that this<a name="line.1474"></a>
+<span class="sourceLineNo">1475</span> * does not add its daughter's as different rows, but adds information about the daughters<a name="line.1475"></a>
+<span class="sourceLineNo">1476</span> * in the same row as the parent. Use<a name="line.1476"></a>
+<span class="sourceLineNo">1477</span> * {@link #splitRegion(Connection, RegionInfo, long, RegionInfo, RegionInfo, ServerName, int)}<a name="line.1477"></a>
+<span class="sourceLineNo">1478</span> * if you want to do that.<a name="line.1478"></a>
+<span class="sourceLineNo">1479</span> * @param connection connection we're using<a name="line.1479"></a>
+<span class="sourceLineNo">1480</span> * @param regionInfo region information<a name="line.1480"></a>
+<span class="sourceLineNo">1481</span> * @throws IOException if problem connecting or updating meta<a name="line.1481"></a>
+<span class="sourceLineNo">1482</span> */<a name="line.1482"></a>
+<span class="sourceLineNo">1483</span> @VisibleForTesting<a name="line.1483"></a>
+<span class="sourceLineNo">1484</span> public static void addRegionToMeta(Connection connection, RegionInfo regionInfo)<a name="line.1484"></a>
+<span class="sourceLineNo">1485</span> throws IOException {<a name="line.1485"></a>
+<span class="sourceLineNo">1486</span> addRegionsToMeta(connection, Collections.singletonList(regionInfo), 1);<a name="line.1486"></a>
+<span class="sourceLineNo">1487</span> }<a name="line.1487"></a>
+<span class="sourceLineNo">1488</span><a name="line.1488"></a>
+<span class="sourceLineNo">1489</span> /**<a name="line.1489"></a>
+<span class="sourceLineNo">1490</span> * Adds a hbase:meta row for each of the specified new regions. Initial state for new regions<a name="line.1490"></a>
+<span class="sourceLineNo">1491</span> * is CLOSED.<a name="line.1491"></a>
+<span class="sourceLineNo">1492</span> * @param connection connection we're using<a name="line.1492"></a>
+<span class="sourceLineNo">1493</span> * @param regionInfos region information list<a name="line.1493"></a>
+<span class="sourceLineNo">1494</span> * @throws IOException if problem connecting or updating meta<a name="line.1494"></a>
+<span class="sourceLineNo">1495</span> */<a name="line.1495"></a>
+<span class="sourceLineNo">1496</span> public static void addRegionsToMeta(Connection connection, List<RegionInfo> regionInfos,<a name="line.1496"></a>
+<span class="sourceLineNo">1497</span> int regionReplication) throws IOException {<a name="line.1497"></a>
+<span class="sourceLineNo">1498</span> addRegionsToMeta(connection, regionInfos, regionReplication,<a name="line.1498"></a>
+<span class="sourceLineNo">1499</span> EnvironmentEdgeManager.currentTime());<a name="line.1499"></a>
+<span class="sourceLineNo">1500</span> }<a name="line.1500"></a>
+<span class="sourceLineNo">1501</span><a name="line.1501"></a>
+<span class="sourceLineNo">1502</span> /**<a name="line.1502"></a>
+<span class="sourceLineNo">1503</span> * Adds a hbase:meta row for each of the specified new regions. Initial state for new regions<a name="line.1503"></a>
+<span class="sourceLineNo">1504</span> * is CLOSED.<a name="line.1504"></a>
+<span class="sourceLineNo">1505</span> * @param connection connection we're using<a name="line.1505"></a>
+<span class="sourceLineNo">1506</span> * @param regionInfos region information list<a name="line.1506"></a>
+<span class="sourceLineNo">1507</span> * @param regionReplication<a name="line.1507"></a>
+<span class="sourceLineNo">1508</span> * @param ts desired timestamp<a name="line.1508"></a>
+<span class="sourceLineNo">1509</span> * @throws IOException if problem connecting or updating meta<a name="line.1509"></a>
+<span class="sourceLineNo">1510</span> */<a name="line.1510"></a>
+<span class="sourceLineNo">1511</span> private static void addRegionsToMeta(Connection connection, List<RegionInfo> regionInfos,<a name="line.1511"></a>
+<span class="sourceLineNo">1512</span> int regionReplication, long ts) throws IOException {<a name="line.1512"></a>
+<span class="sourceLineNo">1513</span> List<Put> puts = new ArrayList<>();<a name="line.1513"></a>
+<span class="sourceLineNo">1514</span> for (RegionInfo regionInfo : regionInfos) {<a name="line.1514"></a>
+<span class="sourceLineNo">1515</span> if (RegionReplicaUtil.isDefaultReplica(regionInfo)) {<a name="line.1515"></a>
+<span class="sourceLineNo">1516</span> Put put = makePutFromRegionInfo(regionInfo, ts);<a name="line.1516"></a>
+<span class="sourceLineNo">1517</span> // New regions are added with initial state of CLOSED.<a name="line.1517"></a>
+<span class="sourceLineNo">1518</span> addRegionStateToPut(put, RegionState.State.CLOSED);<a name="line.1518"></a>
+<span class="sourceLineNo">1519</span> // Add empty locations for region replicas so that number of replicas can be cached<a name="line.1519"></a>
+<span class="sourceLineNo">1520</span> // whenever the primary region is looked up from meta<a name="line.1520"></a>
+<span class="sourceLineNo">1521</span> for (int i = 1; i < regionReplication; i++) {<a name="line.1521"></a>
+<span class="sourceLineNo">1522</span> addEmptyLocation(put, i);<a name="line.1522"></a>
+<span class="sourceLineNo">1523</span> }<a name="line.1523"></a>
+<span class="sourceLineNo">1524</span> puts.add(put);<a name="line.1524"></a>
+<span class="sourceLineNo">1525</span> }<a name="line.1525"></a>
+<span class="sourceLineNo">1526</span> }<a name="line.1526"></a>
+<span class="sourceLineNo">1527</span> putsToMetaTable(connection, puts);<a name="line.1527"></a>
+<span class="sourceLineNo">1528</span> LOG.info("Added {} regions to meta.", puts.size());<a name="line.1528"></a>
+<span class="sourceLineNo">1529</span> }<a name="line.1529"></a>
+<span class="sourceLineNo">1530</span><a name="line.1530"></a>
+<span class="sourceLineNo">1531</span> /**<a name="line.1531"></a>
+<span class="sourceLineNo">1532</span> * Merge the two regions into one in an atomic operation. Deletes the two merging regions in<a name="line.1532"></a>
+<span class="sourceLineNo">1533</span> * hbase:meta and adds the merged region with the information of two merging regions.<a name="line.1533"></a>
+<span class="sourceLineNo">1534</span> * @param connection connection we're using<a name="line.1534"></a>
+<span class="sourceLineNo">1535</span> * @param mergedRegion the merged region<a name="line.1535"></a>
+<span class="sourceLineNo">1536</span> * @param regionA merge parent region A<a name="line.1536"></a>
+<span class="sourceLineNo">1537</span> * @param regionAOpenSeqNum the next open sequence id for region A, used by serial replication. -1<a name="line.1537"></a>
+<span class="sourceLineNo">1538</span> * if not necessary.<a name="line.1538"></a>
+<span class="sourceLineNo">1539</span> * @param regionB merge parent region B<a name="line.1539"></a>
+<span class="sourceLineNo">1540</span> * @param regionBOpenSeqNum the next open sequence id for region B, used by serial replication. -1<a name="line.1540"></a>
+<span class="sourceLineNo">1541</span> * if not necessary.<a name="line.1541"></a>
+<span class="sourceLineNo">1542</span> * @param sn the location of the region<a name="line.1542"></a>
+<span class="sourceLineNo">1543</span> */<a name="line.1543"></a>
+<span class="sourceLineNo">1544</span> public static void mergeRegions(Connection connection, RegionInfo mergedRegion,<a name="line.1544"></a>
+<span class="sourceLineNo">1545</span> RegionInfo regionA, long regionAOpenSeqNum, RegionInfo regionB, long regionBOpenSeqNum,<a name="line.1545"></a>
+<span class="sourceLineNo">1546</span> ServerName sn, int regionReplication) throws IOException {<a name="line.1546"></a>
+<span class="sourceLineNo">1547</span> try (Table meta = getMetaHTable(connection)) {<a name="line.1547"></a>
+<span class="sourceLineNo">1548</span> long time = EnvironmentEdgeManager.currentTime();<a name="line.1548"></a>
+<span class="sourceLineNo">1549</span> List<Mutation> mutations = new ArrayList<>();<a name="line.1549"></a>
+<span class="sourceLineNo">1550</span><a name="line.1550"></a>
+<span class="sourceLineNo">1551</span> List<RegionInfo> replicationParents = new ArrayList<>(2);<a name="line.1551"></a>
+<span class="sourceLineNo">1552</span> // Deletes for merging regions<a name="line.1552"></a>
+<span class="sourceLineNo">1553</span> mutations.add(makeDeleteFromRegionInfo(regionA, time));<a name="line.1553"></a>
+<span class="sourceLineNo">1554</span> if (regionAOpenSeqNum > 0) {<a name="line.1554"></a>
+<span class="sourceLineNo">1555</span> mutations.add(makePutForReplicationBarrier(regionA, regionAOpenSeqNum, time));<a name="line.1555"></a>
+<span class="sourceLineNo">1556</span> replicationParents.add(regionA);<a name="line.1556"></a>
+<span class="sourceLineNo">1557</span> }<a name="line.1557"></a>
+<span class="sourceLineNo">1558</span> mutations.add(makeDeleteFromRegionInfo(regionB, time));<a name="line.1558"></a>
+<span class="sourceLineNo">1559</span> if (regionBOpenSeqNum > 0) {<a name="line.1559"></a>
+<span class="sourceLineNo">1560</span> mutations.add(makePutForReplicationBarrier(regionB, regionBOpenSeqNum, time));<a name="line.1560"></a>
+<span class="sourceLineNo">1561</span> replicationParents.add(regionB);<a name="line.1561"></a>
+<span class="sourceLineNo">1562</span> }<a name="line.1562"></a>
+<span class="sourceLineNo">1563</span><a name="line.1563"></a>
+<span class="sourceLineNo">1564</span> // Put for parent<a name="line.1564"></a>
+<span class="sourceLineNo">1565</span> Put putOfMerged = makePutFromRegionInfo(mergedRegion, time);<a name="line.1565"></a>
+<span class="sourceLineNo">1566</span> putOfMerged.add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.1566"></a>
<span class="sourceLineNo">1567</span> .setRow(putOfMerged.getRow())<a name="line.1567"></a>
<span class="sourceLineNo">1568</span> .setFamily(HConstants.CATALOG_FAMILY)<a name="line.1568"></a>
-<span class="sourceLineNo">1569</span> .setQualifier(HConstants.MERGEB_QUALIFIER)<a name="line.1569"></a>
+<span class="sourceLineNo">1569</span> .setQualifier(HConstants.MERGEA_QUALIFIER)<a name="line.1569"></a>
<span class="sourceLineNo">1570</span> .setTimestamp(putOfMerged.getTimestamp())<a name="line.1570"></a>
<span class="sourceLineNo">1571</span> .setType(Type.Put)<a name="line.1571"></a>
-<span class="sourceLineNo">1572</span> .setValue(RegionInfo.toByteArray(regionB))<a name="line.1572"></a>
-<span class="sourceLineNo">1573</span> .build());<a name="line.1573"></a>
-<span class="sourceLineNo">1574</span> // Set initial state to CLOSED<a name="line.1574"></a>
-<span class="sourceLineNo">1575</span> // NOTE: If initial state is not set to CLOSED then merged region gets added with the<a name="line.1575"></a>
-<span class="sourceLineNo">1576</span> // default OFFLINE state. If Master gets restarted after this step, start up sequence of<a name="line.1576"></a>
-<span class="sourceLineNo">1577</span> // master tries to assign this offline region. This is followed by re-assignments of the<a name="line.1577"></a>
-<span class="sourceLineNo">1578</span> // merged region from resumed {@link MergeTableRegionsProcedure}<a name="line.1578"></a>
-<span class="sourceLineNo">1579</span> addRegionStateToPut(putOfMerged, RegionState.State.CLOSED);<a name="line.1579"></a>
-<span class="sourceLineNo">1580</span> mutations.add(putOfMerged);<a name="line.1580"></a>
-<span class="sourceLineNo">1581</span> // The merged is a new region, openSeqNum = 1 is fine. ServerName may be null<a name="line.1581"></a>
-<span class="sourceLineNo">1582</span> // if crash after merge happened but before we got to here.. means in-memory<a name="line.1582"></a>
-<span class="sourceLineNo">1583</span> // locations of offlined merged, now-closed, regions is lost. Should be ok. We<a name="line.1583"></a>
-<span class="sourceLineNo">1584</span> // assign the merged region later.<a name="line.1584"></a>
-<span class="sourceLineNo">1585</span> if (sn != null) {<a name="line.1585"></a>
-<span class="sourceLineNo">1586</span> addLocation(putOfMerged, sn, 1, mergedRegion.getReplicaId());<a name="line.1586"></a>
-<span class="sourceLineNo">1587</span> }<a name="line.1587"></a>
-<span class="sourceLineNo">1588</span><a name="line.1588"></a>
-<span class="sourceLineNo">1589</span> // Add empty locations for region replicas of the merged region so that number of replicas can<a name="line.1589"></a>
-<span class="sourceLineNo">1590</span> // be cached whenever the primary region is looked up from meta<a name="line.1590"></a>
-<span class="sourceLineNo">1591</span> for (int i = 1; i < regionReplication; i++) {<a name="line.1591"></a>
-<span class="sourceLineNo">1592</span> addEmptyLocation(putOfMerged, i);<a name="line.1592"></a>
-<span class="sourceLineNo">1593</span> }<a name="line.1593"></a>
-<span class="sourceLineNo">1594</span> // add parent reference for serial replication<a name="line.1594"></a>
-<span class="sourceLineNo">1595</span> if (!replicationParents.isEmpty()) {<a name="line.1595"></a>
-<span class="sourceLineNo">1596</span> addReplicationParent(putOfMerged, replicationParents);<a name="line.1596"></a>
-<span class="sourceLineNo">1597</span> }<a name="line.1597"></a>
-<span class="sourceLineNo">1598</span> byte[] tableRow = Bytes.toBytes(mergedRegion.getRegionNameAsString() + HConstants.DELIMITER);<a name="line.1598"></a>
-<span class="sourceLineNo">1599</span> multiMutate(connection, meta, tableRow, mutations);<a name="line.1599"></a>
-<span class="sourceLineNo">1600</span> }<a name="line.1600"></a>
-<span class="sourceLineNo">1601</span> }<a name="line.1601"></a>
-<span class="sourceLineNo">1602</span><a name="line.1602"></a>
-<span class="sourceLineNo">1603</span> /**<a name="line.1603"></a>
-<span class="sourceLineNo">1604</span> * Splits the region into two in an atomic operation. Offlines the parent region with the<a name="line.1604"></a>
-<span class="sourceLineNo">1605</span> * information that it is split into two, and also adds the daughter regions. Does not add the<a name="line.1605"></a>
-<span class="sourceLineNo">1606</span> * location information to the daughter regions since they are not open yet.<a name="line.1606"></a>
-<span class="sourceLineNo">1607</span> * @param connection connection we're using<a name="line.1607"></a>
-<span class="sourceLineNo">1608</span> * @param parent the parent region which is split<a name="line.1608"></a>
-<span class="sourceLineNo">1609</span> * @param parentOpenSeqNum the next open sequence id for parent region, used by serial<a name="line.1609"></a>
-<span class="sourceLineNo">1610</span> * replication. -1 if not necessary.<a name="line.1610"></a>
-<span class="sourceLineNo">1611</span> * @param splitA Split daughter region A<a name="line.1611"></a>
-<span class="sourceLineNo">1612</span> * @param splitB Split daughter region B<a name="line.1612"></a>
-<span class="sourceLineNo">1613</span> * @param sn the location of the region<a name="line.1613"></a>
-<span class="sourceLineNo">1614</span> */<a name="line.1614"></a>
-<span class="sourceLineNo">1615</span> public static void splitRegion(Connection connection, RegionInfo parent, long parentOpenSeqNum,<a name="line.1615"></a>
-<span class="sourceLineNo">1616</span> RegionInfo splitA, RegionInfo splitB, ServerName sn, int regionReplication)<a name="line.1616"></a>
-<span class="sourceLineNo">1617</span> throws IOException {<a name="line.1617"></a>
-<span class="sourceLineNo">1618</span> try (Table meta = getMetaHTable(connection)) {<a name="line.1618"></a>
-<span class="sourceLineNo">1619</span> long time = EnvironmentEdgeManager.currentTime();<a name="line.1619"></a>
-<span class="sourceLineNo">1620</span> // Put for parent<a name="line.1620"></a>
-<span class="sourceLineNo">1621</span> Put putParent = makePutFromRegionInfo(RegionInfoBuilder.newBuilder(parent)<a name="line.1621"></a>
-<span class="sourceLineNo">1622</span> .setOffline(true)<a name="line.1622"></a>
-<span class="sourceLineNo">1623</span> .setSplit(true).build(), time);<a name="line.1623"></a>
-<span class="sourceLineNo">1624</span> addDaughtersToPut(putParent, splitA, splitB);<a name="line.1624"></a>
-<span class="sourceLineNo">1625</span><a name="line.1625"></a>
-<span class="sourceLineNo">1626</span> // Puts for daughters<a name="line.1626"></a>
-<span class="sourceLineNo">1627</span> Put putA = makePutFromRegionInfo(splitA, time);<a name="line.1627"></a>
-<span class="sourceLineNo">1628</span> Put putB = makePutFromRegionInfo(splitB, time);<a name="line.1628"></a>
-<span class="sourceLineNo">1629</span> if (parentOpenSeqNum > 0) {<a name="line.1629"></a>
-<span class="sourceLineNo">1630</span> addReplicationBarrier(putParent, parentOpenSeqNum);<a name="line.1630"></a>
-<span class="sourceLineNo">1631</span> addReplicationParent(putA, Collections.singletonList(parent));<a name="line.1631"></a>
-<span class="sourceLineNo">1632</span> addReplicationParent(putB, Collections.singletonList(parent));<a name="line.1632"></a>
-<span class="sourceLineNo">1633</span> }<a name="line.1633"></a>
-<span class="sourceLineNo">1634</span> // Set initial state to CLOSED<a name="line.1634"></a>
-<span class="sourceLineNo">1635</span> // NOTE: If initial state is not set to CLOSED then daughter regions get added with the<a name="line.1635"></a>
-<span class="sourceLineNo">1636</span> // default OFFLINE state. If Master gets restarted after this step, start up sequence of<a name="line.1636"></a>
-<span class="sourceLineNo">1637</span> // master tries to assign these offline regions. This is followed by re-assignments of the<a name="line.1637"></a>
-<span class="sourceLineNo">1638</span> // daughter regions from resumed {@link SplitTableRegionProcedure}<a name="line.1638"></a>
-<span class="sourceLineNo">1639</span> addRegionStateToPut(putA, RegionState.State.CLOSED);<a name="line.1639"></a>
-<span class="sourceLineNo">1640</span> addRegionStateToPut(putB, RegionState.State.CLOSED);<a name="line.1640"></a>
-<span class="sourceLineNo">1641</span><a name="line.1641"></a>
-<span class="sourceLineNo">1642</span> addSequenceNum(putA, 1, splitA.getReplicaId()); // new regions, openSeqNum = 1 is fine.<a name="line.1642"></a>
-<span class="sourceLineNo">1643</span> addSequenceNum(putB, 1, splitB.getReplicaId());<a name="line.1643"></a>
-<span class="sourceLineNo">1644</span><a name="line.1644"></a>
-<span class="sourceLineNo">1645</span> // Add empty locations for region replicas of daughters so that number of replicas can be<a name="line.1645"></a>
-<span class="sourceLineNo">1646</span> // cached whenever the primary region is looked up from meta<a name="line.1646"></a>
-<span class="sourceLineNo">1647</span> for (int i = 1; i < regionReplication; i++) {<a name="line.1647"></a>
-<span class="sourceLineNo">1648</span> addEmptyLocation(putA, i);<a name="line.1648"></a>
-<span class="sourceLineNo">1649</span> addEmptyLocation(putB, i);<a name="line.1649"></a>
-<span class="sourceLineNo">1650</span> }<a name="line.1650"></a>
-<span class="sourceLineNo">1651</span><a name="line.1651"></a>
-<span class="sourceLineNo">1652</span> byte[] tableRow = Bytes.toBytes(parent.getRegionNameAsString() + HConstants.DELIMITER);<a name="line.1652"></a>
-<span class="sourceLineNo">1653</span> multiMutate(connection, meta, tableRow, putParent, putA, putB);<a name="line.1653"></a>
-<span class="sourceLineNo">1654</span> }<a name="line.1654"></a>
-<span class="sourceLineNo">1655</span> }<a name="line.1655"></a>
-<span class="sourceLineNo">1656</span><a name="line.1656"></a>
-<span class="sourceLineNo">1657</span> /**<a name="line.1657"></a>
-<span class="sourceLineNo">1658</span> * Update state of the table in meta.<a name="line.1658"></a>
-<span class="sourceLineNo">1659</span> * @param connection what we use for update<a name="line.1659"></a>
-<span class="sourceLineNo">1660</span> * @param state new state<a name="line.1660"></a>
-<span class="sourceLineNo">1661</span> */<a name="line.1661"></a>
-<span class="sourceLineNo">1662</span> private static void updateTableState(Connection connection, TableState state) throws IOException {<a name="line.1662"></a>
-<span class="sourceLineNo">1663</span> Put put = makePutFromTableState(state, EnvironmentEdgeManager.currentTime());<a name="line.1663"></a>
-<span class="sourceLineNo">1664</span> putToMetaTable(connection, put);<a name="line.1664"></a>
-<span class="sourceLineNo">1665</span> LOG.info("Updated {} in hbase:meta", state);<a name="line.1665"></a>
-<span class="sourceLineNo">1666</span> }<a name="line.1666"></a>
-<span class="sourceLineNo">1667</span><a name="line.1667"></a>
-<span class="sourceLineNo">1668</span> /**<a name="line.1668"></a>
-<span class="sourceLineNo">1669</span> * Construct PUT for given state<a name="line.1669"></a>
-<span class="sourceLineNo">1670</span> * @param state new state<a name="line.1670"></a>
-<span class="sourceLineNo">1671</span> */<a name="line.1671"></a>
-<span class="sourceLineNo">1672</span> public static Put makePutFromTableState(TableState state, long ts) {<a name="line.1672"></a>
-<span class="sourceLineNo">1673</span> Put put = new Put(state.getTableName().getName(), ts);<a name="line.1673"></a>
-<span class="sourceLineNo">1674</span> put.addColumn(getTableFamily(), getTableStateColumn(), state.convert().toByteArray());<a name="line.1674"></a>
-<span class="sourceLineNo">1675</span> return put;<a name="line.1675"></a>
-<span class="sourceLineNo">1676</span> }<a name="line.1676"></a>
-<span class="sourceLineNo">1677</span><a name="line.1677"></a>
-<span class="sourceLineNo">1678</span> /**<a name="line.1678"></a>
-<span class="sourceLineNo">1679</span> * Remove state for table from meta<a name="line.1679"></a>
-<span class="sourceLineNo">1680</span> * @param connection to use for deletion<a name="line.1680"></a>
-<span class="sourceLineNo">1681</span> * @param table to delete state for<a name="line.1681"></a>
-<span class="sourceLineNo">1682</span> */<a name="line.1682"></a>
-<span class="sourceLineNo">1683</span> public static void deleteTableState(Connection connection, TableName table)<a name="line.1683"></a>
-<span class="sourceLineNo">1684</span> throws IOException {<a name="line.1684"></a>
-<span class="sourceLineNo">1685</span> long time = EnvironmentEdgeManager.currentTime();<a name="line.1685"></a>
-<span class="sourceLineNo">1686</span> Delete delete = new Delete(table.getName());<a name="line.1686"></a>
-<span class="sourceLineNo">1687</span> delete.addColumns(getTableFamily(), getTableStateColumn(), time);<a name="line.1687"></a>
-<span class="sourceLineNo">1688</span> deleteFromMetaTable(connection, delete);<a name="line.1688"></a>
-<span class="sourceLineNo">1689</span> LOG.info("Deleted table " + table + " state from META");<a name="line.1689"></a>
-<span class="sourceLineNo">1690</span> }<a name="line.1690"></a>
-<span class="sourceLineNo">1691</span><a name="line.1691"></a>
-<span class="sourceLineNo">1692</span> private static void multiMutate(Connection connection, Table table, byte[] row,<a name="line.1692"></a>
-<span class="sourceLineNo">1693</span> Mutation... mutations) throws IOException {<a name="line.1693"></a>
-<span class="sourceLineNo">1694</span> multiMutate(connection, table, row, Arrays.asList(mutations));<a name="line.1694"></a>
-<span class="sourceLineNo">1695</span> }<a name="line.1695"></a>
-<span class="sourceLineNo">1696</span><a name="line.1696"></a>
-<span class="sourceLineNo">1697</span> /**<a name="line.1697"></a>
-<span class="sourceLineNo">1698</span> * Performs an atomic multi-mutate operation against the given table.<a name="line.1698"></a>
-<span class="sourceLineNo">1699</span> */<a name="line.1699"></a>
-<span class="sourceLineNo">1700</span> private static void multiMutate(Connection connection, final Table table, byte[] row,<a name="line.1700"></a>
-<span class="sourceLineNo">1701</span> final List<Mutation> mutations) throws IOException {<a name="line.1701"></a>
-<span class="sourceLineNo">1702</span> debugLogMutations(mutations);<a name="line.1702"></a>
-<span class="sourceLineNo">1703</span> // TODO: Need rollback!!!!<a name="line.1703"></a>
-<span class="sourceLineNo">1704</span> // TODO: Need Retry!!!<a name="line.1704"></a>
-<span class="sourceLineNo">1705</span> // TODO: What for a timeout? Default write timeout? GET FROM HTABLE?<a name="line.1705"></a>
-<span class="sourceLineNo">1706</span> // TODO: Review when we come through with ProcedureV2.<a name="line.1706"></a>
-<span class="sourceLineNo">1707</span> RegionServerCallable<MutateRowsResponse,<a name="line.1707"></a>
-<span class="sourceLineNo">1708</span> MultiRowMutationProtos.MultiRowMutationService.BlockingInterface> callable =<a name="line.1708"></a>
-<span class="sourceLineNo">1709</span> new RegionServerCallable<MutateRowsResponse,<a name="line.1709"></a>
-<span class="sourceLineNo">1710</span> MultiRowMutationProtos.MultiRowMutationService.BlockingInterface>(<a name="line.1710"></a>
-<span class="sourceLineNo">1711</span> connection, table.getName(), row, null/*RpcController not used in this CPEP!*/) {<a name="line.1711"></a>
-<span class="sourceLineNo">1712</span> @Override<a name="line.1712"></a>
-<span class="sourceLineNo">1713</span> protected MutateRowsResponse rpcCall() throws Exception {<a name="line.1713"></a>
-<span class="sourceLineNo">1714</span> final MutateRowsRequest.Builder builder = MutateRowsRequest.newBuilder();<a name="line.1714"></a>
-<span class="sourceLineNo">1715</span> for (Mutation mutation : mutations) {<a name="line.1715"></a>
-<span class="sourceLineNo">1716</span> if (mutation instanceof Put) {<a name="line.1716"></a>
-<span class="sourceLineNo">1717</span> builder.addMutationRequest(ProtobufUtil.toMutation(<a name="line.1717"></a>
-<span class="sourceLineNo">1718</span> ClientProtos.MutationProto.MutationType.PUT, mutation));<a name="line.1718"></a>
-<span class="sourceLineNo">1719</span> } else if (mutation instanceof Delete) {<a name="line.1719"></a>
-<span class="sourceLineNo">1720</span> builder.addMutationRequest(ProtobufUtil.toMutation(<a name="line.1720"></a>
-<span class="sourceLineNo">1721</span> ClientProtos.MutationProto.MutationType.DELETE, mutation));<a name="line.1721"></a>
-<span class="sourceLineNo">1722</span> } else {<a name="line.1722"></a>
-<span class="sourceLineNo">1723</span> throw new DoNotRetryIOException("multi in MetaEditor doesn't support "<a name="line.1723"></a>
-<span class="sourceLineNo">1724</span> + mutation.getClass().getName());<a name="line.1724"></a>
-<span class="sourceLineNo">1725</span> }<a name="line.1725"></a>
-<span class="sourceLineNo">1726</span> }<a name="line.1726"></a>
-<span class="sourceLineNo">1727</span> // The call to #prepare that ran before this invocation will have populated HRegionLocation.<a name="line.1727"></a>
-<span class="sourceLineNo">1728</span> HRegionLocation hrl = getLocation();<a name="line.1728"></a>
-<span class="sourceLineNo">1729</span> RegionSpecifier region = ProtobufUtil.buildRegionSpecifier(<a name="line.1729"></a>
-<span class="sourceLineNo">1730</span> RegionSpecifierType.REGION_NAME, hrl.getRegion().getRegionName());<a name="line.1730"></a>
-<span class="sourceLineNo">1731</span> builder.setRegion(region);<a name="line.1731"></a>
-<span class="sourceLineNo">1732</span> // The rpcController here is awkward. The Coprocessor Endpoint wants an instance of a<a name="line.1732"></a>
-<span class="sourceLineNo">1733</span> // com.google.protobuf but we are going over an rpc that is all shaded protobuf so it<a name="line.1733"></a>
-<span class="sourceLineNo">1734</span> // wants a org.apache.h.h.shaded.com.google.protobuf.RpcController. Set up a factory<a name="line.1734"></a>
-<span class="sourceLineNo">1735</span> // that makes com.google.protobuf.RpcController and then copy into it configs.<a name="line.1735"></a>
-<span class="sourceLineNo">1736</span> return getStub().mutateRows(null, builder.build());<a name="line.1736"></a>
-<span class="sourceLineNo">1737</span> }<a name="line.1737"></a>
-<span class="sourceLineNo">1738</span><a name="line.1738"></a>
-<span class="sourceLineNo">1739</span> @Override<a name="line.1739"></a>
-<span class="sourceLineNo">1740</span> // Called on the end of the super.prepare call. Set the stub.<a name="line.1740"></a>
-<span class="sourceLineNo">1741</span> protected void setStubByServiceName(ServerName serviceName/*Ignored*/) throws IOException {<a name="line.1741"></a>
-<span class="sourceLineNo">1742</span> CoprocessorRpcChannel channel = table.coprocessorService(getRow());<a name="line.1742"></a>
-<span class="sourceLineNo">1743</span> setStub(MultiRowMutationProtos.MultiRowMutationService.newBlockingStub(channel));<a name="line.1743"></a>
-<span class="sourceLineNo">1744</span> }<a name="line.1744"></a>
-<span class="sourceLineNo">1745</span> };<a name="line.1745"></a>
-<span class="sourceLineNo">1746</span> int writeTimeout = connection.getConfiguration().getInt(HConstants.HBASE_RPC_WRITE_TIMEOUT_KEY,<a name="line.1746"></a>
-<span class="sourceLineNo">1747</span> connection.getConfiguration().getInt(HConstants.HBASE_RPC_TIMEOUT_KEY,<a name="line.1747"></a>
-<span class="sourceLineNo">1748</span> HConstants.DEFAULT_HBASE_RPC_TIMEOUT));<a name="line.1748"></a>
-<span class="sourceLineNo">1749</span> // The region location should be cached in connection. Call prepare so this callable picks<a name="line.1749"></a>
-<span class="sourceLineNo">1750</span> // up the region location (see super.prepare method).<a name="line.1750"></a>
-<span class="sourceLineNo">1751</span> callable.prepare(false);<a name="line.1751"></a>
-<span class="sourceLineNo">1752</span> callable.call(writeTimeout);<a name="line.1752"></a>
-<span class="sourceLineNo">1753</span> }<a name="line.1753"></a>
-<span class="sourceLineNo">1754</span><a name="line.1754"></a>
-<span class="sourceLineNo">1755</span> /**<a name="line.1755"></a>
-<span class="sourceLineNo">1756</span> * Updates the location of the specified region in hbase:meta to be the specified server hostname<a name="line.1756"></a>
-<span class="sourceLineNo">1757</span> * and startcode.<a name="line.1757"></a>
-<span class="sourceLineNo">1758</span> * <p><a name="line.1758"></a>
-<span class="sourceLineNo">1759</span> * Uses passed catalog tracker to get a connection to the server hosting hbase:meta and makes<a name="line.1759"></a>
-<span class="sourceLineNo">1760</span> * edits to that region.<a name="line.1760"></a>
-<span class="sourceLineNo">1761</span> * @param connection connection we're using<a name="line.1761"></a>
-<span class="sourceLineNo">1762</span> * @param regionInfo region to update location of<a name="line.1762"></a>
-<span class="sourceLineNo">1763</span> * @param openSeqNum the latest sequence number obtained when the region was open<a name="line.1763"></a>
-<span class="sourceLineNo">1764</span> * @param sn Server name<a name="line.1764"></a>
-<span class="sourceLineNo">1765</span> * @param masterSystemTime wall clock time from master if passed in the open region RPC<a name="line.1765"></a>
-<span class="sourceLineNo">1766</span> */<a name="line.1766"></a>
-<span class="sourceLineNo">1767</span> @VisibleForTesting<a name="line.1767"></a>
-<span class="sourceLineNo">1768</span> public static void updateRegionLocation(Connection connection, RegionInfo regionInfo,<a name="line.1768"></a>
-<span class="sourceLineNo">1769</span> ServerName sn, long openSeqNum, long masterSystemTime) throws IOException {<a name="line.1769"></a>
-<span class="sourceLineNo">1770</span> updateLocation(connection, regionInfo, sn, openSeqNum, masterSystemTime);<a name="line.1770"></a>
-<span class="sourceLineNo">1771</span> }<a name="line.1771"></a>
-<span class="sourceLineNo">1772</span><a name="line.1772"></a>
-<span class="sourceLineNo">1773</span> /**<a name="line.1773"></a>
-<span class="sourceLineNo">1774</span> * Updates the location of the specified region to be the specified server.<a name="line.1774"></a>
-<span class="sourceLineNo">1775</span> * <p><a name="line.1775"></a>
-<span class="sourceLineNo">1776</span> * Connects to the specified server which should be hosting the specified catalog region name to<a name="line.1776"></a>
-<span class="sourceLineNo">1777</span> * perform the edit.<a name="line.1777"></a>
-<span class="sourceLineNo">1778</span> * @param connection connection we're using<a name="line.1778"></a>
-<span class="sourceLineNo">1779</span> * @param regionInfo region to update location of<a name="line.1779"></a>
-<span class="sourceLineNo">1780</span> * @param sn Server name<a name="line.1780"></a>
-<span class="sourceLineNo">1781</span> * @param openSeqNum the latest sequence number obtained when the region was open<a name="line.1781"></a>
-<span class="sourceLineNo">1782</span> * @param masterSystemTime wall clock time from master if passed in the open region RPC<a name="line.1782"></a>
-<span class="sourceLineNo">1783</span> * @throws IOException In particular could throw {@link java.net.ConnectException} if the server<a name="line.1783"></a>
-<span class="sourceLineNo">1784</span> * is down on other end.<a name="line.1784"></a>
-<span class="sourceLineNo">1785</span> */<a name="line.1785"></a>
-<span class="sourceLineNo">1786</span> private static void updateLocation(Connection connection, RegionInfo regionInfo, ServerName sn,<a name="line.1786"></a>
-<span class="sourceLineNo">1787</span> long openSeqNum, long masterSystemTime) throws IOException {<a name="line.1787"></a>
-<span class="sourceLineNo">1788</span> // region replicas are kept in the primary region's row<a name="line.1788"></a>
-<span class="sourceLineNo">1789</span> Put put = new Put(getMetaKeyForRegion(regionInfo), masterSystemTime);<a name="line.1789"></a>
-<span class="sourceLineNo">1790</span> addRegionInfo(put, regionInfo);<a name="line.1790"></a>
-<span class="sourceLineNo">1791</span> addLocation(put, sn, openSeqNum, regionInfo.getReplicaId());<a name="line.1791"></a>
-<span class="sourceLineNo">1792</span> putToMetaTable(connection, put);<a name="line.1792"></a>
-<span class="sourceLineNo">1793</span> LOG.info("Updated row {} with server=", regionInfo.getRegionNameAsString(), sn);<a name="line.1793"></a>
-<span class="sourceLineNo">1794</span> }<a name="line.1794"></a>
-<span class="sourceLineNo">1795</span><a name="line.1795"></a>
-<span class="sourceLineNo">1796</span> /**<a name="line.1796"></a>
-<span class="sourceLineNo">1797</span> * Deletes the specified region from META.<a name="line.1797"></a>
-<span class="sourceLineNo">1798</span> * @param connection connection we're using<a name="line.1798"></a>
-<span class="sourceLineNo">1799</span> * @param regionInfo region to be deleted from META<a name="line.1799"></a>
-<span class="sourceLineNo">1800</span> * @throws IOException<a name="line.1800"></a>
-<span class="sourceLineNo">1801</span> */<a name="line.1801"></a>
-<span class="sourceLineNo">1802</span> public static void deleteRegion(Connection connection, RegionInfo regionInfo) throws IOException {<a name="line.1802"></a>
-<span class="sourceLineNo">1803</span> long time = EnvironmentEdgeManager.currentTime();<a name="line.1803"></a>
-<span class="sourceLineNo">1804</span> Delete delete = new Delete(regionInfo.getRegionName());<a name="line.1804"></a>
-<span class="sourceLineNo">1805</span> delete.addFamily(getCatalogFamily(), time);<a name="line.1805"></a>
-<span class="sourceLineNo">1806</span> deleteFromMetaTable(connection, delete);<a name="line.1806"></a>
-<span class="sourceLineNo">1807</span> LOG.info("Deleted " + regionInfo.getRegionNameAsString());<a name="line.1807"></a>
-<span class="sourceLineNo">1808</span> }<a name="line.1808"></a>
-<span class="sourceLineNo">1809</span><a name="line.1809"></a>
-<span class="sourceLineNo">1810</span> /**<a name="line.1810"></a>
-<span class="sourceLineNo">1811</span> * Deletes the specified regions from META.<a name="line.1811"></a>
-<span class="sourceLineNo">1812</span> * @param connection connection we're using<a name="line.1812"></a>
-<span class="sourceLineNo">1813</span> * @param regionsInfo list of regions to be deleted from META<a name="line.1813"></a>
-<span class="sourceLineNo">1814</span> */<a name="line.1814"></a>
-<span class="sourceLineNo">1815</span> public static void deleteRegions(Connection connection, List<RegionInfo> regionsInfo)<a name="line.1815"></a>
-<span class="sourceLineNo">1816</span> throws IOException {<a name="line.1816"></a>
-<span class="sourceLineNo">1817</span> deleteRegions(connection, regionsInfo, EnvironmentEdgeManager.currentTime());<a name="line.1817"></a>
-<span class="sourceLineNo">1818</span> }<a name="line.1818"></a>
-<span class="sourceLineNo">1819</span> /**<a name="line.1819"></a>
-<span class="sourceLineNo">1820</span> * Deletes the specified regions from META.<a name="line.1820"></a>
-<span class="sourceLineNo">1821</span> * @param connection connection we're using<a name="line.1821"></a>
-<span class="sourceLineNo">1822</span> * @param regionsInfo list of regions to be deleted from META<a name="line.1822"></a>
-<span class="sourceLineNo">1823</span> */<a name="line.1823"></a>
-<span class="sourceLineNo">1824</span> public static void deleteRegions(Connection connection, List<RegionInfo> regionsInfo, long ts)<a name="line.1824"></a>
-<span class="sourceLineNo">1825</span> throws IOException {<a name="line.1825"></a>
-<span class="sourceLineNo">1826</span> List<Delete> deletes = new ArrayList<>(regionsInfo.size());<a name="line.1826"></a>
-<span class="sourceLineNo">1827</span> for (RegionInfo hri : regionsInfo) {<a name="line.1827"></a>
-<span class="sourceLineNo">1828</span> Delete e = new Delete(hri.getRegionName());<a name="line.1828"></a>
-<span class="sourceLineNo">1829</span> e.addFamily(getCatalogFamily(), ts);<a name="line.1829"></a>
-<span class="sourceLineNo">1830</span> deletes.add(e);<a name="line.1830"></a>
-<span class="sourceLineNo">1831</span> }<a name="line.1831"></a>
-<span class="sourceLineNo">1832</span> deleteFromMetaTable(connection, deletes);<a name="line.1832"></a>
-<span class="sourceLineNo">1833</span> LOG.info("Deleted {} regions from META", regionsInfo.size());<a name="line.1833"></a>
-<span class="sourceLineNo">1834</span> LOG.debug("Deleted regions: {}", regionsInfo);<a name="line.1834"></a>
-<span class="sourceLineNo">1835</span> }<a name="line.1835"></a>
-<span class="sourceLineNo">1836</span><a name="line.1836"></a>
-<span class="sourceLineNo">1837</span> /**<a name="line.1837"></a>
-<span class="sourceLineNo">1838</span> * Overwrites the specified regions from hbase:meta. Deletes old rows for the given regions and<a name="line.1838"></a>
-<span class="sourceLineNo">1839</span> * adds new ones. Regions added back have state CLOSED.<a name="line.1839"></a>
-<span class="sourceLineNo">1840</span> * @param connection connection we're using<a name="line.1840"></a>
-<span class="sourceLineNo">1841</span> * @param regionInfos list of regions to be added to META<a name="line.1841"></a>
-<span class="sourceLineNo">1842</span> */<a name="line.1842"></a>
-<span class="sourceLineNo">1843</span> public static void overwriteRegions(Connection connection,<a name="line.1843"></a>
-<span class="sourceLineNo">1844</span> List<RegionInfo> regionInfos, int regionReplication) throws IOException {<a name="line.1844"></a>
-<span class="sourceLineNo">1845</span> // use master time for delete marker and the Put<a name="line.1845"></a>
-<span class="sourceLineNo">1846</span> long now = EnvironmentEdgeManager.currentTime();<a name="line.1846"></a>
-<span class="sourceLineNo">1847</span> deleteRegions(connection, regionInfos, now);<a name="line.1847"></a>
-<span class="sourceLineNo">1848</span> // Why sleep? This is the easiest way to ensure that the previous deletes does not<a name="line.1848"></a>
-<span class="sourceLineNo">1849</span> // eclipse the following puts, that might happen in the same ts from the server.<a name="line.1849"></a>
-<span class="sourceLineNo">1850</span> // See HBASE-9906, and HBASE-9879. Once either HBASE-9879, HBASE-8770 is fixed,<a name="line.1850"></a>
-<span class="sourceLineNo">1851</span> // or HBASE-9905 is fixed and meta uses seqIds, we do not need the sleep.<a name="line.1851"></a>
-<span class="sourceLineNo">1852</span> //<a name="line.1852"></a>
-<span class="sourceLineNo">1853</span> // HBASE-13875 uses master timestamp for the mutations. The 20ms sleep is not needed<a name="line.1853"></a>
-<span class="sourceLineNo">1854</span> addRegionsToMeta(connection, regionInfos, regionReplication, now + 1);<a name="line.1854"></a>
-<span class="sourceLineNo">1855</span> LOG.info("Overwritten " + regionInfos.size() + " regions to Meta");<a name="line.1855"></a>
-<span class="sourceLineNo">1856</span> LOG.debug("Overwritten regions: {} ", regionInfos);<a name="line.1856"></a>
-<span class="sourceLineNo">1857</span> }<a name="line.1857"></a>
-<span class="sourceLineNo">1858</span><a name="line.1858"></a>
-<span class="sourceLineNo">1859</span> /**<a name="line.1859"></a>
-<span class="sourceLineNo">1860</span> * Deletes merge qualifiers for the specified merged region.<a name="line.1860"></a>
-<span class="sourceLineNo">1861</span> * @param connection connection we're using<a name="line.1861"></a>
-<span class="sourceLineNo">1862</span> * @param mergedRegion the merged region<a name="line.1862"></a>
-<span class="sourceLineNo">1863</span> */<a name="line.1863"></a>
-<span class="sourceLineNo">1864</span> public static void deleteMergeQualifiers(Connection connection, final RegionInfo mergedRegion)<a name="line.1864"></a>
-<span class="sourceLineNo">1865</span> throws IOException {<a name="line.1865"></a>
-<span class="sourceLineNo">1866</span> long time = EnvironmentEdgeManager.currentTime();<a name="line.1866"></a>
-<span class="sourceLineNo">1867</span> Delete delete = new Delete(mergedRegion.getRegionName());<a name="line.1867"></a>
-<span class="sourceLineNo">1868</span> delete.addColumns(getCatalogFamily(), HConstants.MERGEA_QUALIFIER, time);<a name="line.1868"></a>
-<span class="sourceLineNo">1869</span> delete.addColumns(getCatalogFamily(), HConstants.MERGEB_QUALIFIER, time);<a name="line.1869"></a>
-<span class="sourceLineNo">1870</span> deleteFromMetaTable(connection, delete);<a name="line.1870"></a>
-<span class="sourceLineNo">1871</span> LOG.info("Deleted references in merged region "<a name="line.1871"></a>
-<span class="sourceLineNo">1872</span> + mergedRegion.getRegionNameAsString() + ", qualifier="<a name="line.1872"></a>
-<span class="sourceLineNo">1873</span> + Bytes.toStringBinary(HConstants.MERGEA_QUALIFIER) + " and qualifier="<a name="line.1873"></a>
-<span class="sourceLineNo">1874</span> + Bytes.toStringBinary(HConstants.MERGEB_QUALIFIER));<a name="line.1874"></a>
-<span class="sourceLineNo">1875</span> }<a name="line.1875"></a>
-<span class="sourceLineNo">1876</span><a name="line.1876"></a>
-<span class="sourceLineNo">1877</span> public static Put addRegionInfo(final Put p, final RegionInfo hri)<a name="line.1877"></a>
-<span class="sourceLineNo">1878</span> throws IOException {<a name="line.1878"></a>
-<span class="sourceLineNo">1879</span> p.add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.1879"></a>
-<span class="sourceLineNo">1880</span> .setRow(p.getRow())<a name="line.1880"></a>
-<span class="sourceLineNo">1881</span> .setFamily(getCatalogFamily())<a name="line.1881"></a>
-<span class="sourceLineNo">1882</span> .setQualifier(HConstants.REGIONINFO_QUALIFIER)<a name="line.1882"></a>
-<span class="sourceLineNo">1883</span> .setTimestamp(p.getTimestamp())<a name="line.1883"></a>
-<span class="sourceLineNo">1884</span> .setType(Type.Put)<a name="line.1884"></a>
-<span class="sourceLineNo">1885</span> .setValue(RegionInfo.toByteArray(hri))<a name="line.1885"></a>
-<span class="sourceLineNo">1886</span> .build());<a name="line.1886"></a>
-<span class="sourceLineNo">1887</span> return p;<a name="line.1887"></a>
-<span class="sourceLineNo">1888</span> }<a name="line.1888"></a>
-<span class="sourceLineNo">1889</span><a name="line.1889"></a>
-<span class="sourceLineNo">1890</span> public static Put addLocation(Put p, ServerName sn, long openSeqNum, int replicaId)<a name="line.1890"></a>
-<span class="sourceLineNo">1891</span> throws IOException {<a name="line.1891"></a>
-<span class="sourceLineNo">1892</span> CellBuilder builder = CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY);<a name="line.1892"></a>
-<span class="sourceLineNo">1893</span> return p.add(builder.clear()<a name="line.1893"></a>
-<span class="sourceLineNo">1894</span> .setRow(p.getRow())<a name="line.1894"></a>
-<span class="sourceLineNo">1895</span> .setFamily(getCatalogFamily())<a name="line.1895"></a>
-<span class="sourceLineNo">1896</span> .setQualifier(getServerColumn(replicaId))<a name="line.1896"></a>
-<span class="sourceLineNo">1897</span> .setTimestamp(p.getTimestamp())<a name="line.1897"></a>
-<span class="sourceLineNo">1898</span> .setType(Cell.Type.Put)<a name="line.1898"></a>
-<span class="sourceLineNo">1899</span> .setValue(Bytes.toBytes(sn.getAddress().toString()))<a name="line.1899"></a>
-<span class="sourceLineNo">1900</span> .build())<a name="line.1900"></a>
-<span class="sourceLineNo">1901</span> .add(builder.clear()<a name="line.1901"></a>
+<span class="sourceLineNo">1572</span> .setValue(RegionInfo.toByteArray(regionA))<a name="line.1572"></a>
+<span class="sourceLineNo">1573</span> .build())<a name="line.1573"></a>
+<span class="sourceLineNo">1574</span> .add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.1574"></a>
+<span class="sourceLineNo">1575</span> .setRow(putOfMerged.getRow())<a name="line.1575"></a>
+<span class="sourceLineNo">1576</span> .setFamily(HConstants.CATALOG_FAMILY)<a name="line.1576"></a>
+<span class="sourceLineNo">1577</span> .setQualifier(HConstants.MERGEB_QUALIFIER)<a name="line.1577"></a>
+<span class="sourceLineNo">1578</span> .setTimestamp(putOfMerged.getTimestamp())<a name="line.1578"></a>
+<span class="sourceLineNo">1579</span> .setType(Type.Put)<a name="line.1579"></a>
+<span class="sourceLineNo">1580</span> .setValue(RegionInfo.toByteArray(regionB))<a name="line.1580"></a>
+<span class="sourceLineNo">1581</span> .build());<a name="line.1581"></a>
+<span class="sourceLineNo">1582</span> // Set initial state to CLOSED<a name="line.1582"></a>
+<span class="sourceLineNo">1583</span> // NOTE: If initial state is not set to CLOSED then merged region gets added with the<a name="line.1583"></a>
+<span class="sourceLineNo">1584</span> // default OFFLINE state. If Master gets restarted after this step, start up sequence of<a name="line.1584"></a>
+<span class="sourceLineNo">1585</span> // master tries to assign this offline region. This is followed by re-assignments of the<a name="line.1585"></a>
+<span class="sourceLineNo">1586</span> // merged region from resumed {@link MergeTableRegionsProcedure}<a name="line.1586"></a>
+<span class="sourceLineNo">1587</span> addRegionStateToPut(putOfMerged, RegionState.State.CLOSED);<a name="line.1587"></a>
+<span class="sourceLineNo">1588</span> mutations.add(putOfMerged);<a name="line.1588"></a>
+<span class="sourceLineNo">1589</span> // The merged is a new region, openSeqNum = 1 is fine. ServerName may be null<a name="line.1589"></a>
+<span class="sourceLineNo">1590</span> // if crash after merge happened but before we got to here.. means in-memory<a name="line.1590"></a>
+<span class="sourceLineNo">1591</span> // locations of offlined merged, now-closed, regions is lost. Should be ok. We<a name="line.1591"></a>
+<span class="sourceLineNo">1592</span> // assign the merged region later.<a name="line.1592"></a>
+<span class="sourceLineNo">1593</span> if (sn != null) {<a name="line.1593"></a>
+<span class="sourceLineNo">1594</span> addLocation(putOfMerged, sn, 1, mergedRegion.getReplicaId());<a name="line.1594"></a>
+<span class="sourceLineNo">1595</span> }<a name="line.1595"></a>
+<span class="sourceLineNo">1596</span><a name="line.1596"></a>
+<span class="sourceLineNo">1597</span> // Add empty locations for region replicas of the merged region so that number of replicas can<a name="line.1597"></a>
+<span class="sourceLineNo">1598</span> // be cached whenever the primary region is looked up from meta<a name="line.1598"></a>
+<span class="sourceLineNo">1599</span> for (int i = 1; i < regionReplication; i++) {<a name="line.1599"></a>
+<span class="sourceLineNo">1600</span> addEmptyLocation(putOfMerged, i);<a name="line.1600"></a>
+<span class="sourceLineNo">1601</span> }<a name="line.1601"></a>
+<span class="sourceLineNo">1602</span> // add parent reference for serial replication<a name="line.1602"></a>
+<span class="sourceLineNo">1603</span> if (!replicationParents.isEmpty()) {<a name="line.1603"></a>
+<span class="sourceLineNo">1604</span> addReplicationParent(putOfMerged, replicationParents);<a name="line.1604"></a>
+<span class="sourceLineNo">1605</span> }<a name="line.1605"></a>
+<span class="sourceLineNo">1606</span> byte[] tableRow = Bytes.toBytes(mergedRegion.getRegionNameAsString() + HConstants.DELIMITER);<a name="line.1606"></a>
+<span class="sourceLineNo">1607</span> multiMutate(connection, meta, tableRow, mutations);<a name="line.1607"></a>
+<span class="sourceLineNo">1608</span> }<a name="line.1608"></a>
+<span class="sourceLineNo">1609</span> }<a name="line.1609"></a>
+<span class="sourceLineNo">1610</span><a name="line.1610"></a>
+<span class="sourceLineNo">1611</span> /**<a name="line.1611"></a>
+<span class="sourceLineNo">1612</span> * Splits the region into two in an atomic operation. Offlines the parent region with the<a name="line.1612"></a>
+<span class="sourceLineNo">1613</span> * information that it is split into two, and also adds the daughter regions. Does not add the<a name="line.1613"></a>
+<span class="sourceLineNo">1614</span> * location information to the daughter regions since they are not open yet.<a name="line.1614"></a>
+<span class="sourceLineNo">1615</span> * @param connection connection we're using<a name="line.1615"></a>
+<span class="sourceLineNo">1616</span> * @param parent the parent region which is split<a name="line.1616"></a>
+<span class="sourceLineNo">1617</span> * @param parentOpenSeqNum the next open sequence id for parent region, used by serial<a name="line.1617"></a>
+<span class="sourceLineNo">1618</span> * replication. -1 if not necessary.<a name="line.1618"></a>
+<span class="so
<TRUNCATED>
[19/51] [partial] hbase-site git commit: Published site at
9101fc246f86445006bfbcdfda5cc495016dc280.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.ReplicationBarrierResult.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.ReplicationBarrierResult.html b/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.ReplicationBarrierResult.html
index fea2b5a..c7a6cc4 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.ReplicationBarrierResult.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.ReplicationBarrierResult.html
@@ -1354,816 +1354,824 @@
<span class="sourceLineNo">1346</span> */<a name="line.1346"></a>
<span class="sourceLineNo">1347</span> public static void putsToMetaTable(final Connection connection, final List<Put> ps)<a name="line.1347"></a>
<span class="sourceLineNo">1348</span> throws IOException {<a name="line.1348"></a>
-<span class="sourceLineNo">1349</span> try (Table t = getMetaHTable(connection)) {<a name="line.1349"></a>
-<span class="sourceLineNo">1350</span> debugLogMutations(ps);<a name="line.1350"></a>
-<span class="sourceLineNo">1351</span> t.put(ps);<a name="line.1351"></a>
-<span class="sourceLineNo">1352</span> }<a name="line.1352"></a>
-<span class="sourceLineNo">1353</span> }<a name="line.1353"></a>
-<span class="sourceLineNo">1354</span><a name="line.1354"></a>
-<span class="sourceLineNo">1355</span> /**<a name="line.1355"></a>
-<span class="sourceLineNo">1356</span> * Delete the passed <code>d</code> from the <code>hbase:meta</code> table.<a name="line.1356"></a>
-<span class="sourceLineNo">1357</span> * @param connection connection we're using<a name="line.1357"></a>
-<span class="sourceLineNo">1358</span> * @param d Delete to add to hbase:meta<a name="line.1358"></a>
-<span class="sourceLineNo">1359</span> */<a name="line.1359"></a>
-<span class="sourceLineNo">1360</span> private static void deleteFromMetaTable(final Connection connection, final Delete d)<a name="line.1360"></a>
-<span class="sourceLineNo">1361</span> throws IOException {<a name="line.1361"></a>
-<span class="sourceLineNo">1362</span> List<Delete> dels = new ArrayList<>(1);<a name="line.1362"></a>
-<span class="sourceLineNo">1363</span> dels.add(d);<a name="line.1363"></a>
-<span class="sourceLineNo">1364</span> deleteFromMetaTable(connection, dels);<a name="line.1364"></a>
-<span class="sourceLineNo">1365</span> }<a name="line.1365"></a>
-<span class="sourceLineNo">1366</span><a name="line.1366"></a>
-<span class="sourceLineNo">1367</span> /**<a name="line.1367"></a>
-<span class="sourceLineNo">1368</span> * Delete the passed <code>deletes</code> from the <code>hbase:meta</code> table.<a name="line.1368"></a>
-<span class="sourceLineNo">1369</span> * @param connection connection we're using<a name="line.1369"></a>
-<span class="sourceLineNo">1370</span> * @param deletes Deletes to add to hbase:meta This list should support #remove.<a name="line.1370"></a>
-<span class="sourceLineNo">1371</span> */<a name="line.1371"></a>
-<span class="sourceLineNo">1372</span> private static void deleteFromMetaTable(final Connection connection, final List<Delete> deletes)<a name="line.1372"></a>
-<span class="sourceLineNo">1373</span> throws IOException {<a name="line.1373"></a>
-<span class="sourceLineNo">1374</span> try (Table t = getMetaHTable(connection)) {<a name="line.1374"></a>
-<span class="sourceLineNo">1375</span> debugLogMutations(deletes);<a name="line.1375"></a>
-<span class="sourceLineNo">1376</span> t.delete(deletes);<a name="line.1376"></a>
-<span class="sourceLineNo">1377</span> }<a name="line.1377"></a>
-<span class="sourceLineNo">1378</span> }<a name="line.1378"></a>
-<span class="sourceLineNo">1379</span><a name="line.1379"></a>
-<span class="sourceLineNo">1380</span> /**<a name="line.1380"></a>
-<span class="sourceLineNo">1381</span> * Deletes some replica columns corresponding to replicas for the passed rows<a name="line.1381"></a>
-<span class="sourceLineNo">1382</span> * @param metaRows rows in hbase:meta<a name="line.1382"></a>
-<span class="sourceLineNo">1383</span> * @param replicaIndexToDeleteFrom the replica ID we would start deleting from<a name="line.1383"></a>
-<span class="sourceLineNo">1384</span> * @param numReplicasToRemove how many replicas to remove<a name="line.1384"></a>
-<span class="sourceLineNo">1385</span> * @param connection connection we're using to access meta table<a name="line.1385"></a>
-<span class="sourceLineNo">1386</span> */<a name="line.1386"></a>
-<span class="sourceLineNo">1387</span> public static void removeRegionReplicasFromMeta(Set<byte[]> metaRows,<a name="line.1387"></a>
-<span class="sourceLineNo">1388</span> int replicaIndexToDeleteFrom, int numReplicasToRemove, Connection connection)<a name="line.1388"></a>
-<span class="sourceLineNo">1389</span> throws IOException {<a name="line.1389"></a>
-<span class="sourceLineNo">1390</span> int absoluteIndex = replicaIndexToDeleteFrom + numReplicasToRemove;<a name="line.1390"></a>
-<span class="sourceLineNo">1391</span> for (byte[] row : metaRows) {<a name="line.1391"></a>
-<span class="sourceLineNo">1392</span> long now = EnvironmentEdgeManager.currentTime();<a name="line.1392"></a>
-<span class="sourceLineNo">1393</span> Delete deleteReplicaLocations = new Delete(row);<a name="line.1393"></a>
-<span class="sourceLineNo">1394</span> for (int i = replicaIndexToDeleteFrom; i < absoluteIndex; i++) {<a name="line.1394"></a>
-<span class="sourceLineNo">1395</span> deleteReplicaLocations.addColumns(getCatalogFamily(),<a name="line.1395"></a>
-<span class="sourceLineNo">1396</span> getServerColumn(i), now);<a name="line.1396"></a>
-<span class="sourceLineNo">1397</span> deleteReplicaLocations.addColumns(getCatalogFamily(),<a name="line.1397"></a>
-<span class="sourceLineNo">1398</span> getSeqNumColumn(i), now);<a name="line.1398"></a>
-<span class="sourceLineNo">1399</span> deleteReplicaLocations.addColumns(getCatalogFamily(),<a name="line.1399"></a>
-<span class="sourceLineNo">1400</span> getStartCodeColumn(i), now);<a name="line.1400"></a>
-<span class="sourceLineNo">1401</span> }<a name="line.1401"></a>
-<span class="sourceLineNo">1402</span> deleteFromMetaTable(connection, deleteReplicaLocations);<a name="line.1402"></a>
-<span class="sourceLineNo">1403</span> }<a name="line.1403"></a>
-<span class="sourceLineNo">1404</span> }<a name="line.1404"></a>
-<span class="sourceLineNo">1405</span><a name="line.1405"></a>
-<span class="sourceLineNo">1406</span> /**<a name="line.1406"></a>
-<span class="sourceLineNo">1407</span> * Execute the passed <code>mutations</code> against <code>hbase:meta</code> table.<a name="line.1407"></a>
-<span class="sourceLineNo">1408</span> * @param connection connection we're using<a name="line.1408"></a>
-<span class="sourceLineNo">1409</span> * @param mutations Puts and Deletes to execute on hbase:meta<a name="line.1409"></a>
-<span class="sourceLineNo">1410</span> * @throws IOException<a name="line.1410"></a>
-<span class="sourceLineNo">1411</span> */<a name="line.1411"></a>
-<span class="sourceLineNo">1412</span> public static void mutateMetaTable(final Connection connection,<a name="line.1412"></a>
-<span class="sourceLineNo">1413</span> final List<Mutation> mutations)<a name="line.1413"></a>
-<span class="sourceLineNo">1414</span> throws IOException {<a name="line.1414"></a>
-<span class="sourceLineNo">1415</span> Table t = getMetaHTable(connection);<a name="line.1415"></a>
-<span class="sourceLineNo">1416</span> try {<a name="line.1416"></a>
-<span class="sourceLineNo">1417</span> debugLogMutations(mutations);<a name="line.1417"></a>
-<span class="sourceLineNo">1418</span> t.batch(mutations, null);<a name="line.1418"></a>
-<span class="sourceLineNo">1419</span> } catch (InterruptedException e) {<a name="line.1419"></a>
-<span class="sourceLineNo">1420</span> InterruptedIOException ie = new InterruptedIOException(e.getMessage());<a name="line.1420"></a>
-<span class="sourceLineNo">1421</span> ie.initCause(e);<a name="line.1421"></a>
-<span class="sourceLineNo">1422</span> throw ie;<a name="line.1422"></a>
-<span class="sourceLineNo">1423</span> } finally {<a name="line.1423"></a>
-<span class="sourceLineNo">1424</span> t.close();<a name="line.1424"></a>
-<span class="sourceLineNo">1425</span> }<a name="line.1425"></a>
-<span class="sourceLineNo">1426</span> }<a name="line.1426"></a>
-<span class="sourceLineNo">1427</span><a name="line.1427"></a>
-<span class="sourceLineNo">1428</span> private static void addRegionStateToPut(Put put, RegionState.State state) throws IOException {<a name="line.1428"></a>
-<span class="sourceLineNo">1429</span> put.add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.1429"></a>
-<span class="sourceLineNo">1430</span> .setRow(put.getRow())<a name="line.1430"></a>
-<span class="sourceLineNo">1431</span> .setFamily(HConstants.CATALOG_FAMILY)<a name="line.1431"></a>
-<span class="sourceLineNo">1432</span> .setQualifier(getRegionStateColumn())<a name="line.1432"></a>
-<span class="sourceLineNo">1433</span> .setTimestamp(put.getTimestamp())<a name="line.1433"></a>
-<span class="sourceLineNo">1434</span> .setType(Cell.Type.Put)<a name="line.1434"></a>
-<span class="sourceLineNo">1435</span> .setValue(Bytes.toBytes(state.name()))<a name="line.1435"></a>
-<span class="sourceLineNo">1436</span> .build());<a name="line.1436"></a>
-<span class="sourceLineNo">1437</span> }<a name="line.1437"></a>
-<span class="sourceLineNo">1438</span><a name="line.1438"></a>
-<span class="sourceLineNo">1439</span> /**<a name="line.1439"></a>
-<span class="sourceLineNo">1440</span> * Adds daughter region infos to hbase:meta row for the specified region. Note that this does not<a name="line.1440"></a>
-<span class="sourceLineNo">1441</span> * add its daughter's as different rows, but adds information about the daughters in the same row<a name="line.1441"></a>
-<span class="sourceLineNo">1442</span> * as the parent. Use<a name="line.1442"></a>
-<span class="sourceLineNo">1443</span> * {@link #splitRegion(Connection, RegionInfo, long, RegionInfo, RegionInfo, ServerName, int)}<a name="line.1443"></a>
-<span class="sourceLineNo">1444</span> * if you want to do that.<a name="line.1444"></a>
-<span class="sourceLineNo">1445</span> * @param connection connection we're using<a name="line.1445"></a>
-<span class="sourceLineNo">1446</span> * @param regionInfo RegionInfo of parent region<a name="line.1446"></a>
-<span class="sourceLineNo">1447</span> * @param splitA first split daughter of the parent regionInfo<a name="line.1447"></a>
-<span class="sourceLineNo">1448</span> * @param splitB second split daughter of the parent regionInfo<a name="line.1448"></a>
-<span class="sourceLineNo">1449</span> * @throws IOException if problem connecting or updating meta<a name="line.1449"></a>
-<span class="sourceLineNo">1450</span> */<a name="line.1450"></a>
-<span class="sourceLineNo">1451</span> public static void addSplitsToParent(Connection connection, RegionInfo regionInfo,<a name="line.1451"></a>
-<span class="sourceLineNo">1452</span> RegionInfo splitA, RegionInfo splitB) throws IOException {<a name="line.1452"></a>
-<span class="sourceLineNo">1453</span> Table meta = getMetaHTable(connection);<a name="line.1453"></a>
-<span class="sourceLineNo">1454</span> try {<a name="line.1454"></a>
-<span class="sourceLineNo">1455</span> Put put = makePutFromRegionInfo(regionInfo, EnvironmentEdgeManager.currentTime());<a name="line.1455"></a>
-<span class="sourceLineNo">1456</span> addDaughtersToPut(put, splitA, splitB);<a name="line.1456"></a>
-<span class="sourceLineNo">1457</span> meta.put(put);<a name="line.1457"></a>
-<span class="sourceLineNo">1458</span> debugLogMutation(put);<a name="line.1458"></a>
-<span class="sourceLineNo">1459</span> LOG.debug("Added region {}", regionInfo.getRegionNameAsString());<a name="line.1459"></a>
-<span class="sourceLineNo">1460</span> } finally {<a name="line.1460"></a>
-<span class="sourceLineNo">1461</span> meta.close();<a name="line.1461"></a>
-<span class="sourceLineNo">1462</span> }<a name="line.1462"></a>
-<span class="sourceLineNo">1463</span> }<a name="line.1463"></a>
-<span class="sourceLineNo">1464</span><a name="line.1464"></a>
-<span class="sourceLineNo">1465</span> /**<a name="line.1465"></a>
-<span class="sourceLineNo">1466</span> * Adds a (single) hbase:meta row for the specified new region and its daughters. Note that this<a name="line.1466"></a>
-<span class="sourceLineNo">1467</span> * does not add its daughter's as different rows, but adds information about the daughters<a name="line.1467"></a>
-<span class="sourceLineNo">1468</span> * in the same row as the parent. Use<a name="line.1468"></a>
-<span class="sourceLineNo">1469</span> * {@link #splitRegion(Connection, RegionInfo, long, RegionInfo, RegionInfo, ServerName, int)}<a name="line.1469"></a>
-<span class="sourceLineNo">1470</span> * if you want to do that.<a name="line.1470"></a>
-<span class="sourceLineNo">1471</span> * @param connection connection we're using<a name="line.1471"></a>
-<span class="sourceLineNo">1472</span> * @param regionInfo region information<a name="line.1472"></a>
-<span class="sourceLineNo">1473</span> * @throws IOException if problem connecting or updating meta<a name="line.1473"></a>
-<span class="sourceLineNo">1474</span> */<a name="line.1474"></a>
-<span class="sourceLineNo">1475</span> @VisibleForTesting<a name="line.1475"></a>
-<span class="sourceLineNo">1476</span> public static void addRegionToMeta(Connection connection, RegionInfo regionInfo)<a name="line.1476"></a>
-<span class="sourceLineNo">1477</span> throws IOException {<a name="line.1477"></a>
-<span class="sourceLineNo">1478</span> addRegionsToMeta(connection, Collections.singletonList(regionInfo), 1);<a name="line.1478"></a>
-<span class="sourceLineNo">1479</span> }<a name="line.1479"></a>
-<span class="sourceLineNo">1480</span><a name="line.1480"></a>
-<span class="sourceLineNo">1481</span> /**<a name="line.1481"></a>
-<span class="sourceLineNo">1482</span> * Adds a hbase:meta row for each of the specified new regions. Initial state for new regions<a name="line.1482"></a>
-<span class="sourceLineNo">1483</span> * is CLOSED.<a name="line.1483"></a>
-<span class="sourceLineNo">1484</span> * @param connection connection we're using<a name="line.1484"></a>
-<span class="sourceLineNo">1485</span> * @param regionInfos region information list<a name="line.1485"></a>
-<span class="sourceLineNo">1486</span> * @throws IOException if problem connecting or updating meta<a name="line.1486"></a>
-<span class="sourceLineNo">1487</span> */<a name="line.1487"></a>
-<span class="sourceLineNo">1488</span> public static void addRegionsToMeta(Connection connection, List<RegionInfo> regionInfos,<a name="line.1488"></a>
-<span class="sourceLineNo">1489</span> int regionReplication) throws IOException {<a name="line.1489"></a>
-<span class="sourceLineNo">1490</span> addRegionsToMeta(connection, regionInfos, regionReplication,<a name="line.1490"></a>
-<span class="sourceLineNo">1491</span> EnvironmentEdgeManager.currentTime());<a name="line.1491"></a>
-<span class="sourceLineNo">1492</span> }<a name="line.1492"></a>
-<span class="sourceLineNo">1493</span><a name="line.1493"></a>
-<span class="sourceLineNo">1494</span> /**<a name="line.1494"></a>
-<span class="sourceLineNo">1495</span> * Adds a hbase:meta row for each of the specified new regions. Initial state for new regions<a name="line.1495"></a>
-<span class="sourceLineNo">1496</span> * is CLOSED.<a name="line.1496"></a>
-<span class="sourceLineNo">1497</span> * @param connection connection we're using<a name="line.1497"></a>
-<span class="sourceLineNo">1498</span> * @param regionInfos region information list<a name="line.1498"></a>
-<span class="sourceLineNo">1499</span> * @param regionReplication<a name="line.1499"></a>
-<span class="sourceLineNo">1500</span> * @param ts desired timestamp<a name="line.1500"></a>
-<span class="sourceLineNo">1501</span> * @throws IOException if problem connecting or updating meta<a name="line.1501"></a>
-<span class="sourceLineNo">1502</span> */<a name="line.1502"></a>
-<span class="sourceLineNo">1503</span> private static void addRegionsToMeta(Connection connection, List<RegionInfo> regionInfos,<a name="line.1503"></a>
-<span class="sourceLineNo">1504</span> int regionReplication, long ts) throws IOException {<a name="line.1504"></a>
-<span class="sourceLineNo">1505</span> List<Put> puts = new ArrayList<>();<a name="line.1505"></a>
-<span class="sourceLineNo">1506</span> for (RegionInfo regionInfo : regionInfos) {<a name="line.1506"></a>
-<span class="sourceLineNo">1507</span> if (RegionReplicaUtil.isDefaultReplica(regionInfo)) {<a name="line.1507"></a>
-<span class="sourceLineNo">1508</span> Put put = makePutFromRegionInfo(regionInfo, ts);<a name="line.1508"></a>
-<span class="sourceLineNo">1509</span> // New regions are added with initial state of CLOSED.<a name="line.1509"></a>
-<span class="sourceLineNo">1510</span> addRegionStateToPut(put, RegionState.State.CLOSED);<a name="line.1510"></a>
-<span class="sourceLineNo">1511</span> // Add empty locations for region replicas so that number of replicas can be cached<a name="line.1511"></a>
-<span class="sourceLineNo">1512</span> // whenever the primary region is looked up from meta<a name="line.1512"></a>
-<span class="sourceLineNo">1513</span> for (int i = 1; i < regionReplication; i++) {<a name="line.1513"></a>
-<span class="sourceLineNo">1514</span> addEmptyLocation(put, i);<a name="line.1514"></a>
-<span class="sourceLineNo">1515</span> }<a name="line.1515"></a>
-<span class="sourceLineNo">1516</span> puts.add(put);<a name="line.1516"></a>
-<span class="sourceLineNo">1517</span> }<a name="line.1517"></a>
-<span class="sourceLineNo">1518</span> }<a name="line.1518"></a>
-<span class="sourceLineNo">1519</span> putsToMetaTable(connection, puts);<a name="line.1519"></a>
-<span class="sourceLineNo">1520</span> LOG.info("Added {} regions to meta.", puts.size());<a name="line.1520"></a>
-<span class="sourceLineNo">1521</span> }<a name="line.1521"></a>
-<span class="sourceLineNo">1522</span><a name="line.1522"></a>
-<span class="sourceLineNo">1523</span> /**<a name="line.1523"></a>
-<span class="sourceLineNo">1524</span> * Merge the two regions into one in an atomic operation. Deletes the two merging regions in<a name="line.1524"></a>
-<span class="sourceLineNo">1525</span> * hbase:meta and adds the merged region with the information of two merging regions.<a name="line.1525"></a>
-<span class="sourceLineNo">1526</span> * @param connection connection we're using<a name="line.1526"></a>
-<span class="sourceLineNo">1527</span> * @param mergedRegion the merged region<a name="line.1527"></a>
-<span class="sourceLineNo">1528</span> * @param regionA merge parent region A<a name="line.1528"></a>
-<span class="sourceLineNo">1529</span> * @param regionAOpenSeqNum the next open sequence id for region A, used by serial replication. -1<a name="line.1529"></a>
-<span class="sourceLineNo">1530</span> * if not necessary.<a name="line.1530"></a>
-<span class="sourceLineNo">1531</span> * @param regionB merge parent region B<a name="line.1531"></a>
-<span class="sourceLineNo">1532</span> * @param regionBOpenSeqNum the next open sequence id for region B, used by serial replication. -1<a name="line.1532"></a>
-<span class="sourceLineNo">1533</span> * if not necessary.<a name="line.1533"></a>
-<span class="sourceLineNo">1534</span> * @param sn the location of the region<a name="line.1534"></a>
-<span class="sourceLineNo">1535</span> */<a name="line.1535"></a>
-<span class="sourceLineNo">1536</span> public static void mergeRegions(Connection connection, RegionInfo mergedRegion,<a name="line.1536"></a>
-<span class="sourceLineNo">1537</span> RegionInfo regionA, long regionAOpenSeqNum, RegionInfo regionB, long regionBOpenSeqNum,<a name="line.1537"></a>
-<span class="sourceLineNo">1538</span> ServerName sn, int regionReplication) throws IOException {<a name="line.1538"></a>
-<span class="sourceLineNo">1539</span> try (Table meta = getMetaHTable(connection)) {<a name="line.1539"></a>
-<span class="sourceLineNo">1540</span> long time = EnvironmentEdgeManager.currentTime();<a name="line.1540"></a>
-<span class="sourceLineNo">1541</span> List<Mutation> mutations = new ArrayList<>();<a name="line.1541"></a>
-<span class="sourceLineNo">1542</span><a name="line.1542"></a>
-<span class="sourceLineNo">1543</span> List<RegionInfo> replicationParents = new ArrayList<>(2);<a name="line.1543"></a>
-<span class="sourceLineNo">1544</span> // Deletes for merging regions<a name="line.1544"></a>
-<span class="sourceLineNo">1545</span> mutations.add(makeDeleteFromRegionInfo(regionA, time));<a name="line.1545"></a>
-<span class="sourceLineNo">1546</span> if (regionAOpenSeqNum > 0) {<a name="line.1546"></a>
-<span class="sourceLineNo">1547</span> mutations.add(makePutForReplicationBarrier(regionA, regionAOpenSeqNum, time));<a name="line.1547"></a>
-<span class="sourceLineNo">1548</span> replicationParents.add(regionA);<a name="line.1548"></a>
-<span class="sourceLineNo">1549</span> }<a name="line.1549"></a>
-<span class="sourceLineNo">1550</span> mutations.add(makeDeleteFromRegionInfo(regionB, time));<a name="line.1550"></a>
-<span class="sourceLineNo">1551</span> if (regionBOpenSeqNum > 0) {<a name="line.1551"></a>
-<span class="sourceLineNo">1552</span> mutations.add(makePutForReplicationBarrier(regionB, regionBOpenSeqNum, time));<a name="line.1552"></a>
-<span class="sourceLineNo">1553</span> replicationParents.add(regionB);<a name="line.1553"></a>
-<span class="sourceLineNo">1554</span> }<a name="line.1554"></a>
-<span class="sourceLineNo">1555</span><a name="line.1555"></a>
-<span class="sourceLineNo">1556</span> // Put for parent<a name="line.1556"></a>
-<span class="sourceLineNo">1557</span> Put putOfMerged = makePutFromRegionInfo(mergedRegion, time);<a name="line.1557"></a>
-<span class="sourceLineNo">1558</span> putOfMerged.add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.1558"></a>
-<span class="sourceLineNo">1559</span> .setRow(putOfMerged.getRow())<a name="line.1559"></a>
-<span class="sourceLineNo">1560</span> .setFamily(HConstants.CATALOG_FAMILY)<a name="line.1560"></a>
-<span class="sourceLineNo">1561</span> .setQualifier(HConstants.MERGEA_QUALIFIER)<a name="line.1561"></a>
-<span class="sourceLineNo">1562</span> .setTimestamp(putOfMerged.getTimestamp())<a name="line.1562"></a>
-<span class="sourceLineNo">1563</span> .setType(Type.Put)<a name="line.1563"></a>
-<span class="sourceLineNo">1564</span> .setValue(RegionInfo.toByteArray(regionA))<a name="line.1564"></a>
-<span class="sourceLineNo">1565</span> .build())<a name="line.1565"></a>
-<span class="sourceLineNo">1566</span> .add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.1566"></a>
+<span class="sourceLineNo">1349</span> if (ps.isEmpty()) {<a name="line.1349"></a>
+<span class="sourceLineNo">1350</span> return;<a name="line.1350"></a>
+<span class="sourceLineNo">1351</span> }<a name="line.1351"></a>
+<span class="sourceLineNo">1352</span> try (Table t = getMetaHTable(connection)) {<a name="line.1352"></a>
+<span class="sourceLineNo">1353</span> debugLogMutations(ps);<a name="line.1353"></a>
+<span class="sourceLineNo">1354</span> // the implementation for putting a single Put is much simpler so here we do a check first.<a name="line.1354"></a>
+<span class="sourceLineNo">1355</span> if (ps.size() == 1) {<a name="line.1355"></a>
+<span class="sourceLineNo">1356</span> t.put(ps.get(0));<a name="line.1356"></a>
+<span class="sourceLineNo">1357</span> } else {<a name="line.1357"></a>
+<span class="sourceLineNo">1358</span> t.put(ps);<a name="line.1358"></a>
+<span class="sourceLineNo">1359</span> }<a name="line.1359"></a>
+<span class="sourceLineNo">1360</span> }<a name="line.1360"></a>
+<span class="sourceLineNo">1361</span> }<a name="line.1361"></a>
+<span class="sourceLineNo">1362</span><a name="line.1362"></a>
+<span class="sourceLineNo">1363</span> /**<a name="line.1363"></a>
+<span class="sourceLineNo">1364</span> * Delete the passed <code>d</code> from the <code>hbase:meta</code> table.<a name="line.1364"></a>
+<span class="sourceLineNo">1365</span> * @param connection connection we're using<a name="line.1365"></a>
+<span class="sourceLineNo">1366</span> * @param d Delete to add to hbase:meta<a name="line.1366"></a>
+<span class="sourceLineNo">1367</span> */<a name="line.1367"></a>
+<span class="sourceLineNo">1368</span> private static void deleteFromMetaTable(final Connection connection, final Delete d)<a name="line.1368"></a>
+<span class="sourceLineNo">1369</span> throws IOException {<a name="line.1369"></a>
+<span class="sourceLineNo">1370</span> List<Delete> dels = new ArrayList<>(1);<a name="line.1370"></a>
+<span class="sourceLineNo">1371</span> dels.add(d);<a name="line.1371"></a>
+<span class="sourceLineNo">1372</span> deleteFromMetaTable(connection, dels);<a name="line.1372"></a>
+<span class="sourceLineNo">1373</span> }<a name="line.1373"></a>
+<span class="sourceLineNo">1374</span><a name="line.1374"></a>
+<span class="sourceLineNo">1375</span> /**<a name="line.1375"></a>
+<span class="sourceLineNo">1376</span> * Delete the passed <code>deletes</code> from the <code>hbase:meta</code> table.<a name="line.1376"></a>
+<span class="sourceLineNo">1377</span> * @param connection connection we're using<a name="line.1377"></a>
+<span class="sourceLineNo">1378</span> * @param deletes Deletes to add to hbase:meta This list should support #remove.<a name="line.1378"></a>
+<span class="sourceLineNo">1379</span> */<a name="line.1379"></a>
+<span class="sourceLineNo">1380</span> private static void deleteFromMetaTable(final Connection connection, final List<Delete> deletes)<a name="line.1380"></a>
+<span class="sourceLineNo">1381</span> throws IOException {<a name="line.1381"></a>
+<span class="sourceLineNo">1382</span> try (Table t = getMetaHTable(connection)) {<a name="line.1382"></a>
+<span class="sourceLineNo">1383</span> debugLogMutations(deletes);<a name="line.1383"></a>
+<span class="sourceLineNo">1384</span> t.delete(deletes);<a name="line.1384"></a>
+<span class="sourceLineNo">1385</span> }<a name="line.1385"></a>
+<span class="sourceLineNo">1386</span> }<a name="line.1386"></a>
+<span class="sourceLineNo">1387</span><a name="line.1387"></a>
+<span class="sourceLineNo">1388</span> /**<a name="line.1388"></a>
+<span class="sourceLineNo">1389</span> * Deletes some replica columns corresponding to replicas for the passed rows<a name="line.1389"></a>
+<span class="sourceLineNo">1390</span> * @param metaRows rows in hbase:meta<a name="line.1390"></a>
+<span class="sourceLineNo">1391</span> * @param replicaIndexToDeleteFrom the replica ID we would start deleting from<a name="line.1391"></a>
+<span class="sourceLineNo">1392</span> * @param numReplicasToRemove how many replicas to remove<a name="line.1392"></a>
+<span class="sourceLineNo">1393</span> * @param connection connection we're using to access meta table<a name="line.1393"></a>
+<span class="sourceLineNo">1394</span> */<a name="line.1394"></a>
+<span class="sourceLineNo">1395</span> public static void removeRegionReplicasFromMeta(Set<byte[]> metaRows,<a name="line.1395"></a>
+<span class="sourceLineNo">1396</span> int replicaIndexToDeleteFrom, int numReplicasToRemove, Connection connection)<a name="line.1396"></a>
+<span class="sourceLineNo">1397</span> throws IOException {<a name="line.1397"></a>
+<span class="sourceLineNo">1398</span> int absoluteIndex = replicaIndexToDeleteFrom + numReplicasToRemove;<a name="line.1398"></a>
+<span class="sourceLineNo">1399</span> for (byte[] row : metaRows) {<a name="line.1399"></a>
+<span class="sourceLineNo">1400</span> long now = EnvironmentEdgeManager.currentTime();<a name="line.1400"></a>
+<span class="sourceLineNo">1401</span> Delete deleteReplicaLocations = new Delete(row);<a name="line.1401"></a>
+<span class="sourceLineNo">1402</span> for (int i = replicaIndexToDeleteFrom; i < absoluteIndex; i++) {<a name="line.1402"></a>
+<span class="sourceLineNo">1403</span> deleteReplicaLocations.addColumns(getCatalogFamily(),<a name="line.1403"></a>
+<span class="sourceLineNo">1404</span> getServerColumn(i), now);<a name="line.1404"></a>
+<span class="sourceLineNo">1405</span> deleteReplicaLocations.addColumns(getCatalogFamily(),<a name="line.1405"></a>
+<span class="sourceLineNo">1406</span> getSeqNumColumn(i), now);<a name="line.1406"></a>
+<span class="sourceLineNo">1407</span> deleteReplicaLocations.addColumns(getCatalogFamily(),<a name="line.1407"></a>
+<span class="sourceLineNo">1408</span> getStartCodeColumn(i), now);<a name="line.1408"></a>
+<span class="sourceLineNo">1409</span> }<a name="line.1409"></a>
+<span class="sourceLineNo">1410</span> deleteFromMetaTable(connection, deleteReplicaLocations);<a name="line.1410"></a>
+<span class="sourceLineNo">1411</span> }<a name="line.1411"></a>
+<span class="sourceLineNo">1412</span> }<a name="line.1412"></a>
+<span class="sourceLineNo">1413</span><a name="line.1413"></a>
+<span class="sourceLineNo">1414</span> /**<a name="line.1414"></a>
+<span class="sourceLineNo">1415</span> * Execute the passed <code>mutations</code> against <code>hbase:meta</code> table.<a name="line.1415"></a>
+<span class="sourceLineNo">1416</span> * @param connection connection we're using<a name="line.1416"></a>
+<span class="sourceLineNo">1417</span> * @param mutations Puts and Deletes to execute on hbase:meta<a name="line.1417"></a>
+<span class="sourceLineNo">1418</span> * @throws IOException<a name="line.1418"></a>
+<span class="sourceLineNo">1419</span> */<a name="line.1419"></a>
+<span class="sourceLineNo">1420</span> public static void mutateMetaTable(final Connection connection,<a name="line.1420"></a>
+<span class="sourceLineNo">1421</span> final List<Mutation> mutations)<a name="line.1421"></a>
+<span class="sourceLineNo">1422</span> throws IOException {<a name="line.1422"></a>
+<span class="sourceLineNo">1423</span> Table t = getMetaHTable(connection);<a name="line.1423"></a>
+<span class="sourceLineNo">1424</span> try {<a name="line.1424"></a>
+<span class="sourceLineNo">1425</span> debugLogMutations(mutations);<a name="line.1425"></a>
+<span class="sourceLineNo">1426</span> t.batch(mutations, null);<a name="line.1426"></a>
+<span class="sourceLineNo">1427</span> } catch (InterruptedException e) {<a name="line.1427"></a>
+<span class="sourceLineNo">1428</span> InterruptedIOException ie = new InterruptedIOException(e.getMessage());<a name="line.1428"></a>
+<span class="sourceLineNo">1429</span> ie.initCause(e);<a name="line.1429"></a>
+<span class="sourceLineNo">1430</span> throw ie;<a name="line.1430"></a>
+<span class="sourceLineNo">1431</span> } finally {<a name="line.1431"></a>
+<span class="sourceLineNo">1432</span> t.close();<a name="line.1432"></a>
+<span class="sourceLineNo">1433</span> }<a name="line.1433"></a>
+<span class="sourceLineNo">1434</span> }<a name="line.1434"></a>
+<span class="sourceLineNo">1435</span><a name="line.1435"></a>
+<span class="sourceLineNo">1436</span> private static void addRegionStateToPut(Put put, RegionState.State state) throws IOException {<a name="line.1436"></a>
+<span class="sourceLineNo">1437</span> put.add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.1437"></a>
+<span class="sourceLineNo">1438</span> .setRow(put.getRow())<a name="line.1438"></a>
+<span class="sourceLineNo">1439</span> .setFamily(HConstants.CATALOG_FAMILY)<a name="line.1439"></a>
+<span class="sourceLineNo">1440</span> .setQualifier(getRegionStateColumn())<a name="line.1440"></a>
+<span class="sourceLineNo">1441</span> .setTimestamp(put.getTimestamp())<a name="line.1441"></a>
+<span class="sourceLineNo">1442</span> .setType(Cell.Type.Put)<a name="line.1442"></a>
+<span class="sourceLineNo">1443</span> .setValue(Bytes.toBytes(state.name()))<a name="line.1443"></a>
+<span class="sourceLineNo">1444</span> .build());<a name="line.1444"></a>
+<span class="sourceLineNo">1445</span> }<a name="line.1445"></a>
+<span class="sourceLineNo">1446</span><a name="line.1446"></a>
+<span class="sourceLineNo">1447</span> /**<a name="line.1447"></a>
+<span class="sourceLineNo">1448</span> * Adds daughter region infos to hbase:meta row for the specified region. Note that this does not<a name="line.1448"></a>
+<span class="sourceLineNo">1449</span> * add its daughter's as different rows, but adds information about the daughters in the same row<a name="line.1449"></a>
+<span class="sourceLineNo">1450</span> * as the parent. Use<a name="line.1450"></a>
+<span class="sourceLineNo">1451</span> * {@link #splitRegion(Connection, RegionInfo, long, RegionInfo, RegionInfo, ServerName, int)}<a name="line.1451"></a>
+<span class="sourceLineNo">1452</span> * if you want to do that.<a name="line.1452"></a>
+<span class="sourceLineNo">1453</span> * @param connection connection we're using<a name="line.1453"></a>
+<span class="sourceLineNo">1454</span> * @param regionInfo RegionInfo of parent region<a name="line.1454"></a>
+<span class="sourceLineNo">1455</span> * @param splitA first split daughter of the parent regionInfo<a name="line.1455"></a>
+<span class="sourceLineNo">1456</span> * @param splitB second split daughter of the parent regionInfo<a name="line.1456"></a>
+<span class="sourceLineNo">1457</span> * @throws IOException if problem connecting or updating meta<a name="line.1457"></a>
+<span class="sourceLineNo">1458</span> */<a name="line.1458"></a>
+<span class="sourceLineNo">1459</span> public static void addSplitsToParent(Connection connection, RegionInfo regionInfo,<a name="line.1459"></a>
+<span class="sourceLineNo">1460</span> RegionInfo splitA, RegionInfo splitB) throws IOException {<a name="line.1460"></a>
+<span class="sourceLineNo">1461</span> Table meta = getMetaHTable(connection);<a name="line.1461"></a>
+<span class="sourceLineNo">1462</span> try {<a name="line.1462"></a>
+<span class="sourceLineNo">1463</span> Put put = makePutFromRegionInfo(regionInfo, EnvironmentEdgeManager.currentTime());<a name="line.1463"></a>
+<span class="sourceLineNo">1464</span> addDaughtersToPut(put, splitA, splitB);<a name="line.1464"></a>
+<span class="sourceLineNo">1465</span> meta.put(put);<a name="line.1465"></a>
+<span class="sourceLineNo">1466</span> debugLogMutation(put);<a name="line.1466"></a>
+<span class="sourceLineNo">1467</span> LOG.debug("Added region {}", regionInfo.getRegionNameAsString());<a name="line.1467"></a>
+<span class="sourceLineNo">1468</span> } finally {<a name="line.1468"></a>
+<span class="sourceLineNo">1469</span> meta.close();<a name="line.1469"></a>
+<span class="sourceLineNo">1470</span> }<a name="line.1470"></a>
+<span class="sourceLineNo">1471</span> }<a name="line.1471"></a>
+<span class="sourceLineNo">1472</span><a name="line.1472"></a>
+<span class="sourceLineNo">1473</span> /**<a name="line.1473"></a>
+<span class="sourceLineNo">1474</span> * Adds a (single) hbase:meta row for the specified new region and its daughters. Note that this<a name="line.1474"></a>
+<span class="sourceLineNo">1475</span> * does not add its daughter's as different rows, but adds information about the daughters<a name="line.1475"></a>
+<span class="sourceLineNo">1476</span> * in the same row as the parent. Use<a name="line.1476"></a>
+<span class="sourceLineNo">1477</span> * {@link #splitRegion(Connection, RegionInfo, long, RegionInfo, RegionInfo, ServerName, int)}<a name="line.1477"></a>
+<span class="sourceLineNo">1478</span> * if you want to do that.<a name="line.1478"></a>
+<span class="sourceLineNo">1479</span> * @param connection connection we're using<a name="line.1479"></a>
+<span class="sourceLineNo">1480</span> * @param regionInfo region information<a name="line.1480"></a>
+<span class="sourceLineNo">1481</span> * @throws IOException if problem connecting or updating meta<a name="line.1481"></a>
+<span class="sourceLineNo">1482</span> */<a name="line.1482"></a>
+<span class="sourceLineNo">1483</span> @VisibleForTesting<a name="line.1483"></a>
+<span class="sourceLineNo">1484</span> public static void addRegionToMeta(Connection connection, RegionInfo regionInfo)<a name="line.1484"></a>
+<span class="sourceLineNo">1485</span> throws IOException {<a name="line.1485"></a>
+<span class="sourceLineNo">1486</span> addRegionsToMeta(connection, Collections.singletonList(regionInfo), 1);<a name="line.1486"></a>
+<span class="sourceLineNo">1487</span> }<a name="line.1487"></a>
+<span class="sourceLineNo">1488</span><a name="line.1488"></a>
+<span class="sourceLineNo">1489</span> /**<a name="line.1489"></a>
+<span class="sourceLineNo">1490</span> * Adds a hbase:meta row for each of the specified new regions. Initial state for new regions<a name="line.1490"></a>
+<span class="sourceLineNo">1491</span> * is CLOSED.<a name="line.1491"></a>
+<span class="sourceLineNo">1492</span> * @param connection connection we're using<a name="line.1492"></a>
+<span class="sourceLineNo">1493</span> * @param regionInfos region information list<a name="line.1493"></a>
+<span class="sourceLineNo">1494</span> * @throws IOException if problem connecting or updating meta<a name="line.1494"></a>
+<span class="sourceLineNo">1495</span> */<a name="line.1495"></a>
+<span class="sourceLineNo">1496</span> public static void addRegionsToMeta(Connection connection, List<RegionInfo> regionInfos,<a name="line.1496"></a>
+<span class="sourceLineNo">1497</span> int regionReplication) throws IOException {<a name="line.1497"></a>
+<span class="sourceLineNo">1498</span> addRegionsToMeta(connection, regionInfos, regionReplication,<a name="line.1498"></a>
+<span class="sourceLineNo">1499</span> EnvironmentEdgeManager.currentTime());<a name="line.1499"></a>
+<span class="sourceLineNo">1500</span> }<a name="line.1500"></a>
+<span class="sourceLineNo">1501</span><a name="line.1501"></a>
+<span class="sourceLineNo">1502</span> /**<a name="line.1502"></a>
+<span class="sourceLineNo">1503</span> * Adds a hbase:meta row for each of the specified new regions. Initial state for new regions<a name="line.1503"></a>
+<span class="sourceLineNo">1504</span> * is CLOSED.<a name="line.1504"></a>
+<span class="sourceLineNo">1505</span> * @param connection connection we're using<a name="line.1505"></a>
+<span class="sourceLineNo">1506</span> * @param regionInfos region information list<a name="line.1506"></a>
+<span class="sourceLineNo">1507</span> * @param regionReplication<a name="line.1507"></a>
+<span class="sourceLineNo">1508</span> * @param ts desired timestamp<a name="line.1508"></a>
+<span class="sourceLineNo">1509</span> * @throws IOException if problem connecting or updating meta<a name="line.1509"></a>
+<span class="sourceLineNo">1510</span> */<a name="line.1510"></a>
+<span class="sourceLineNo">1511</span> private static void addRegionsToMeta(Connection connection, List<RegionInfo> regionInfos,<a name="line.1511"></a>
+<span class="sourceLineNo">1512</span> int regionReplication, long ts) throws IOException {<a name="line.1512"></a>
+<span class="sourceLineNo">1513</span> List<Put> puts = new ArrayList<>();<a name="line.1513"></a>
+<span class="sourceLineNo">1514</span> for (RegionInfo regionInfo : regionInfos) {<a name="line.1514"></a>
+<span class="sourceLineNo">1515</span> if (RegionReplicaUtil.isDefaultReplica(regionInfo)) {<a name="line.1515"></a>
+<span class="sourceLineNo">1516</span> Put put = makePutFromRegionInfo(regionInfo, ts);<a name="line.1516"></a>
+<span class="sourceLineNo">1517</span> // New regions are added with initial state of CLOSED.<a name="line.1517"></a>
+<span class="sourceLineNo">1518</span> addRegionStateToPut(put, RegionState.State.CLOSED);<a name="line.1518"></a>
+<span class="sourceLineNo">1519</span> // Add empty locations for region replicas so that number of replicas can be cached<a name="line.1519"></a>
+<span class="sourceLineNo">1520</span> // whenever the primary region is looked up from meta<a name="line.1520"></a>
+<span class="sourceLineNo">1521</span> for (int i = 1; i < regionReplication; i++) {<a name="line.1521"></a>
+<span class="sourceLineNo">1522</span> addEmptyLocation(put, i);<a name="line.1522"></a>
+<span class="sourceLineNo">1523</span> }<a name="line.1523"></a>
+<span class="sourceLineNo">1524</span> puts.add(put);<a name="line.1524"></a>
+<span class="sourceLineNo">1525</span> }<a name="line.1525"></a>
+<span class="sourceLineNo">1526</span> }<a name="line.1526"></a>
+<span class="sourceLineNo">1527</span> putsToMetaTable(connection, puts);<a name="line.1527"></a>
+<span class="sourceLineNo">1528</span> LOG.info("Added {} regions to meta.", puts.size());<a name="line.1528"></a>
+<span class="sourceLineNo">1529</span> }<a name="line.1529"></a>
+<span class="sourceLineNo">1530</span><a name="line.1530"></a>
+<span class="sourceLineNo">1531</span> /**<a name="line.1531"></a>
+<span class="sourceLineNo">1532</span> * Merge the two regions into one in an atomic operation. Deletes the two merging regions in<a name="line.1532"></a>
+<span class="sourceLineNo">1533</span> * hbase:meta and adds the merged region with the information of two merging regions.<a name="line.1533"></a>
+<span class="sourceLineNo">1534</span> * @param connection connection we're using<a name="line.1534"></a>
+<span class="sourceLineNo">1535</span> * @param mergedRegion the merged region<a name="line.1535"></a>
+<span class="sourceLineNo">1536</span> * @param regionA merge parent region A<a name="line.1536"></a>
+<span class="sourceLineNo">1537</span> * @param regionAOpenSeqNum the next open sequence id for region A, used by serial replication. -1<a name="line.1537"></a>
+<span class="sourceLineNo">1538</span> * if not necessary.<a name="line.1538"></a>
+<span class="sourceLineNo">1539</span> * @param regionB merge parent region B<a name="line.1539"></a>
+<span class="sourceLineNo">1540</span> * @param regionBOpenSeqNum the next open sequence id for region B, used by serial replication. -1<a name="line.1540"></a>
+<span class="sourceLineNo">1541</span> * if not necessary.<a name="line.1541"></a>
+<span class="sourceLineNo">1542</span> * @param sn the location of the region<a name="line.1542"></a>
+<span class="sourceLineNo">1543</span> */<a name="line.1543"></a>
+<span class="sourceLineNo">1544</span> public static void mergeRegions(Connection connection, RegionInfo mergedRegion,<a name="line.1544"></a>
+<span class="sourceLineNo">1545</span> RegionInfo regionA, long regionAOpenSeqNum, RegionInfo regionB, long regionBOpenSeqNum,<a name="line.1545"></a>
+<span class="sourceLineNo">1546</span> ServerName sn, int regionReplication) throws IOException {<a name="line.1546"></a>
+<span class="sourceLineNo">1547</span> try (Table meta = getMetaHTable(connection)) {<a name="line.1547"></a>
+<span class="sourceLineNo">1548</span> long time = EnvironmentEdgeManager.currentTime();<a name="line.1548"></a>
+<span class="sourceLineNo">1549</span> List<Mutation> mutations = new ArrayList<>();<a name="line.1549"></a>
+<span class="sourceLineNo">1550</span><a name="line.1550"></a>
+<span class="sourceLineNo">1551</span> List<RegionInfo> replicationParents = new ArrayList<>(2);<a name="line.1551"></a>
+<span class="sourceLineNo">1552</span> // Deletes for merging regions<a name="line.1552"></a>
+<span class="sourceLineNo">1553</span> mutations.add(makeDeleteFromRegionInfo(regionA, time));<a name="line.1553"></a>
+<span class="sourceLineNo">1554</span> if (regionAOpenSeqNum > 0) {<a name="line.1554"></a>
+<span class="sourceLineNo">1555</span> mutations.add(makePutForReplicationBarrier(regionA, regionAOpenSeqNum, time));<a name="line.1555"></a>
+<span class="sourceLineNo">1556</span> replicationParents.add(regionA);<a name="line.1556"></a>
+<span class="sourceLineNo">1557</span> }<a name="line.1557"></a>
+<span class="sourceLineNo">1558</span> mutations.add(makeDeleteFromRegionInfo(regionB, time));<a name="line.1558"></a>
+<span class="sourceLineNo">1559</span> if (regionBOpenSeqNum > 0) {<a name="line.1559"></a>
+<span class="sourceLineNo">1560</span> mutations.add(makePutForReplicationBarrier(regionB, regionBOpenSeqNum, time));<a name="line.1560"></a>
+<span class="sourceLineNo">1561</span> replicationParents.add(regionB);<a name="line.1561"></a>
+<span class="sourceLineNo">1562</span> }<a name="line.1562"></a>
+<span class="sourceLineNo">1563</span><a name="line.1563"></a>
+<span class="sourceLineNo">1564</span> // Put for parent<a name="line.1564"></a>
+<span class="sourceLineNo">1565</span> Put putOfMerged = makePutFromRegionInfo(mergedRegion, time);<a name="line.1565"></a>
+<span class="sourceLineNo">1566</span> putOfMerged.add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.1566"></a>
<span class="sourceLineNo">1567</span> .setRow(putOfMerged.getRow())<a name="line.1567"></a>
<span class="sourceLineNo">1568</span> .setFamily(HConstants.CATALOG_FAMILY)<a name="line.1568"></a>
-<span class="sourceLineNo">1569</span> .setQualifier(HConstants.MERGEB_QUALIFIER)<a name="line.1569"></a>
+<span class="sourceLineNo">1569</span> .setQualifier(HConstants.MERGEA_QUALIFIER)<a name="line.1569"></a>
<span class="sourceLineNo">1570</span> .setTimestamp(putOfMerged.getTimestamp())<a name="line.1570"></a>
<span class="sourceLineNo">1571</span> .setType(Type.Put)<a name="line.1571"></a>
-<span class="sourceLineNo">1572</span> .setValue(RegionInfo.toByteArray(regionB))<a name="line.1572"></a>
-<span class="sourceLineNo">1573</span> .build());<a name="line.1573"></a>
-<span class="sourceLineNo">1574</span> // Set initial state to CLOSED<a name="line.1574"></a>
-<span class="sourceLineNo">1575</span> // NOTE: If initial state is not set to CLOSED then merged region gets added with the<a name="line.1575"></a>
-<span class="sourceLineNo">1576</span> // default OFFLINE state. If Master gets restarted after this step, start up sequence of<a name="line.1576"></a>
-<span class="sourceLineNo">1577</span> // master tries to assign this offline region. This is followed by re-assignments of the<a name="line.1577"></a>
-<span class="sourceLineNo">1578</span> // merged region from resumed {@link MergeTableRegionsProcedure}<a name="line.1578"></a>
-<span class="sourceLineNo">1579</span> addRegionStateToPut(putOfMerged, RegionState.State.CLOSED);<a name="line.1579"></a>
-<span class="sourceLineNo">1580</span> mutations.add(putOfMerged);<a name="line.1580"></a>
-<span class="sourceLineNo">1581</span> // The merged is a new region, openSeqNum = 1 is fine. ServerName may be null<a name="line.1581"></a>
-<span class="sourceLineNo">1582</span> // if crash after merge happened but before we got to here.. means in-memory<a name="line.1582"></a>
-<span class="sourceLineNo">1583</span> // locations of offlined merged, now-closed, regions is lost. Should be ok. We<a name="line.1583"></a>
-<span class="sourceLineNo">1584</span> // assign the merged region later.<a name="line.1584"></a>
-<span class="sourceLineNo">1585</span> if (sn != null) {<a name="line.1585"></a>
-<span class="sourceLineNo">1586</span> addLocation(putOfMerged, sn, 1, mergedRegion.getReplicaId());<a name="line.1586"></a>
-<span class="sourceLineNo">1587</span> }<a name="line.1587"></a>
-<span class="sourceLineNo">1588</span><a name="line.1588"></a>
-<span class="sourceLineNo">1589</span> // Add empty locations for region replicas of the merged region so that number of replicas can<a name="line.1589"></a>
-<span class="sourceLineNo">1590</span> // be cached whenever the primary region is looked up from meta<a name="line.1590"></a>
-<span class="sourceLineNo">1591</span> for (int i = 1; i < regionReplication; i++) {<a name="line.1591"></a>
-<span class="sourceLineNo">1592</span> addEmptyLocation(putOfMerged, i);<a name="line.1592"></a>
-<span class="sourceLineNo">1593</span> }<a name="line.1593"></a>
-<span class="sourceLineNo">1594</span> // add parent reference for serial replication<a name="line.1594"></a>
-<span class="sourceLineNo">1595</span> if (!replicationParents.isEmpty()) {<a name="line.1595"></a>
-<span class="sourceLineNo">1596</span> addReplicationParent(putOfMerged, replicationParents);<a name="line.1596"></a>
-<span class="sourceLineNo">1597</span> }<a name="line.1597"></a>
-<span class="sourceLineNo">1598</span> byte[] tableRow = Bytes.toBytes(mergedRegion.getRegionNameAsString() + HConstants.DELIMITER);<a name="line.1598"></a>
-<span class="sourceLineNo">1599</span> multiMutate(connection, meta, tableRow, mutations);<a name="line.1599"></a>
-<span class="sourceLineNo">1600</span> }<a name="line.1600"></a>
-<span class="sourceLineNo">1601</span> }<a name="line.1601"></a>
-<span class="sourceLineNo">1602</span><a name="line.1602"></a>
-<span class="sourceLineNo">1603</span> /**<a name="line.1603"></a>
-<span class="sourceLineNo">1604</span> * Splits the region into two in an atomic operation. Offlines the parent region with the<a name="line.1604"></a>
-<span class="sourceLineNo">1605</span> * information that it is split into two, and also adds the daughter regions. Does not add the<a name="line.1605"></a>
-<span class="sourceLineNo">1606</span> * location information to the daughter regions since they are not open yet.<a name="line.1606"></a>
-<span class="sourceLineNo">1607</span> * @param connection connection we're using<a name="line.1607"></a>
-<span class="sourceLineNo">1608</span> * @param parent the parent region which is split<a name="line.1608"></a>
-<span class="sourceLineNo">1609</span> * @param parentOpenSeqNum the next open sequence id for parent region, used by serial<a name="line.1609"></a>
-<span class="sourceLineNo">1610</span> * replication. -1 if not necessary.<a name="line.1610"></a>
-<span class="sourceLineNo">1611</span> * @param splitA Split daughter region A<a name="line.1611"></a>
-<span class="sourceLineNo">1612</span> * @param splitB Split daughter region B<a name="line.1612"></a>
-<span class="sourceLineNo">1613</span> * @param sn the location of the region<a name="line.1613"></a>
-<span class="sourceLineNo">1614</span> */<a name="line.1614"></a>
-<span class="sourceLineNo">1615</span> public static void splitRegion(Connection connection, RegionInfo parent, long parentOpenSeqNum,<a name="line.1615"></a>
-<span class="sourceLineNo">1616</span> RegionInfo splitA, RegionInfo splitB, ServerName sn, int regionReplication)<a name="line.1616"></a>
-<span class="sourceLineNo">1617</span> throws IOException {<a name="line.1617"></a>
-<span class="sourceLineNo">1618</span> try (Table meta = getMetaHTable(connection)) {<a name="line.1618"></a>
-<span class="sourceLineNo">1619</span> long time = EnvironmentEdgeManager.currentTime();<a name="line.1619"></a>
-<span class="sourceLineNo">1620</span> // Put for parent<a name="line.1620"></a>
-<span class="sourceLineNo">1621</span> Put putParent = makePutFromRegionInfo(RegionInfoBuilder.newBuilder(parent)<a name="line.1621"></a>
-<span class="sourceLineNo">1622</span> .setOffline(true)<a name="line.1622"></a>
-<span class="sourceLineNo">1623</span> .setSplit(true).build(), time);<a name="line.1623"></a>
-<span class="sourceLineNo">1624</span> addDaughtersToPut(putParent, splitA, splitB);<a name="line.1624"></a>
-<span class="sourceLineNo">1625</span><a name="line.1625"></a>
-<span class="sourceLineNo">1626</span> // Puts for daughters<a name="line.1626"></a>
-<span class="sourceLineNo">1627</span> Put putA = makePutFromRegionInfo(splitA, time);<a name="line.1627"></a>
-<span class="sourceLineNo">1628</span> Put putB = makePutFromRegionInfo(splitB, time);<a name="line.1628"></a>
-<span class="sourceLineNo">1629</span> if (parentOpenSeqNum > 0) {<a name="line.1629"></a>
-<span class="sourceLineNo">1630</span> addReplicationBarrier(putParent, parentOpenSeqNum);<a name="line.1630"></a>
-<span class="sourceLineNo">1631</span> addReplicationParent(putA, Collections.singletonList(parent));<a name="line.1631"></a>
-<span class="sourceLineNo">1632</span> addReplicationParent(putB, Collections.singletonList(parent));<a name="line.1632"></a>
-<span class="sourceLineNo">1633</span> }<a name="line.1633"></a>
-<span class="sourceLineNo">1634</span> // Set initial state to CLOSED<a name="line.1634"></a>
-<span class="sourceLineNo">1635</span> // NOTE: If initial state is not set to CLOSED then daughter regions get added with the<a name="line.1635"></a>
-<span class="sourceLineNo">1636</span> // default OFFLINE state. If Master gets restarted after this step, start up sequence of<a name="line.1636"></a>
-<span class="sourceLineNo">1637</span> // master tries to assign these offline regions. This is followed by re-assignments of the<a name="line.1637"></a>
-<span class="sourceLineNo">1638</span> // daughter regions from resumed {@link SplitTableRegionProcedure}<a name="line.1638"></a>
-<span class="sourceLineNo">1639</span> addRegionStateToPut(putA, RegionState.State.CLOSED);<a name="line.1639"></a>
-<span class="sourceLineNo">1640</span> addRegionStateToPut(putB, RegionState.State.CLOSED);<a name="line.1640"></a>
-<span class="sourceLineNo">1641</span><a name="line.1641"></a>
-<span class="sourceLineNo">1642</span> addSequenceNum(putA, 1, splitA.getReplicaId()); // new regions, openSeqNum = 1 is fine.<a name="line.1642"></a>
-<span class="sourceLineNo">1643</span> addSequenceNum(putB, 1, splitB.getReplicaId());<a name="line.1643"></a>
-<span class="sourceLineNo">1644</span><a name="line.1644"></a>
-<span class="sourceLineNo">1645</span> // Add empty locations for region replicas of daughters so that number of replicas can be<a name="line.1645"></a>
-<span class="sourceLineNo">1646</span> // cached whenever the primary region is looked up from meta<a name="line.1646"></a>
-<span class="sourceLineNo">1647</span> for (int i = 1; i < regionReplication; i++) {<a name="line.1647"></a>
-<span class="sourceLineNo">1648</span> addEmptyLocation(putA, i);<a name="line.1648"></a>
-<span class="sourceLineNo">1649</span> addEmptyLocation(putB, i);<a name="line.1649"></a>
-<span class="sourceLineNo">1650</span> }<a name="line.1650"></a>
-<span class="sourceLineNo">1651</span><a name="line.1651"></a>
-<span class="sourceLineNo">1652</span> byte[] tableRow = Bytes.toBytes(parent.getRegionNameAsString() + HConstants.DELIMITER);<a name="line.1652"></a>
-<span class="sourceLineNo">1653</span> multiMutate(connection, meta, tableRow, putParent, putA, putB);<a name="line.1653"></a>
-<span class="sourceLineNo">1654</span> }<a name="line.1654"></a>
-<span class="sourceLineNo">1655</span> }<a name="line.1655"></a>
-<span class="sourceLineNo">1656</span><a name="line.1656"></a>
-<span class="sourceLineNo">1657</span> /**<a name="line.1657"></a>
-<span class="sourceLineNo">1658</span> * Update state of the table in meta.<a name="line.1658"></a>
-<span class="sourceLineNo">1659</span> * @param connection what we use for update<a name="line.1659"></a>
-<span class="sourceLineNo">1660</span> * @param state new state<a name="line.1660"></a>
-<span class="sourceLineNo">1661</span> */<a name="line.1661"></a>
-<span class="sourceLineNo">1662</span> private static void updateTableState(Connection connection, TableState state) throws IOException {<a name="line.1662"></a>
-<span class="sourceLineNo">1663</span> Put put = makePutFromTableState(state, EnvironmentEdgeManager.currentTime());<a name="line.1663"></a>
-<span class="sourceLineNo">1664</span> putToMetaTable(connection, put);<a name="line.1664"></a>
-<span class="sourceLineNo">1665</span> LOG.info("Updated {} in hbase:meta", state);<a name="line.1665"></a>
-<span class="sourceLineNo">1666</span> }<a name="line.1666"></a>
-<span class="sourceLineNo">1667</span><a name="line.1667"></a>
-<span class="sourceLineNo">1668</span> /**<a name="line.1668"></a>
-<span class="sourceLineNo">1669</span> * Construct PUT for given state<a name="line.1669"></a>
-<span class="sourceLineNo">1670</span> * @param state new state<a name="line.1670"></a>
-<span class="sourceLineNo">1671</span> */<a name="line.1671"></a>
-<span class="sourceLineNo">1672</span> public static Put makePutFromTableState(TableState state, long ts) {<a name="line.1672"></a>
-<span class="sourceLineNo">1673</span> Put put = new Put(state.getTableName().getName(), ts);<a name="line.1673"></a>
-<span class="sourceLineNo">1674</span> put.addColumn(getTableFamily(), getTableStateColumn(), state.convert().toByteArray());<a name="line.1674"></a>
-<span class="sourceLineNo">1675</span> return put;<a name="line.1675"></a>
-<span class="sourceLineNo">1676</span> }<a name="line.1676"></a>
-<span class="sourceLineNo">1677</span><a name="line.1677"></a>
-<span class="sourceLineNo">1678</span> /**<a name="line.1678"></a>
-<span class="sourceLineNo">1679</span> * Remove state for table from meta<a name="line.1679"></a>
-<span class="sourceLineNo">1680</span> * @param connection to use for deletion<a name="line.1680"></a>
-<span class="sourceLineNo">1681</span> * @param table to delete state for<a name="line.1681"></a>
-<span class="sourceLineNo">1682</span> */<a name="line.1682"></a>
-<span class="sourceLineNo">1683</span> public static void deleteTableState(Connection connection, TableName table)<a name="line.1683"></a>
-<span class="sourceLineNo">1684</span> throws IOException {<a name="line.1684"></a>
-<span class="sourceLineNo">1685</span> long time = EnvironmentEdgeManager.currentTime();<a name="line.1685"></a>
-<span class="sourceLineNo">1686</span> Delete delete = new Delete(table.getName());<a name="line.1686"></a>
-<span class="sourceLineNo">1687</span> delete.addColumns(getTableFamily(), getTableStateColumn(), time);<a name="line.1687"></a>
-<span class="sourceLineNo">1688</span> deleteFromMetaTable(connection, delete);<a name="line.1688"></a>
-<span class="sourceLineNo">1689</span> LOG.info("Deleted table " + table + " state from META");<a name="line.1689"></a>
-<span class="sourceLineNo">1690</span> }<a name="line.1690"></a>
-<span class="sourceLineNo">1691</span><a name="line.1691"></a>
-<span class="sourceLineNo">1692</span> private static void multiMutate(Connection connection, Table table, byte[] row,<a name="line.1692"></a>
-<span class="sourceLineNo">1693</span> Mutation... mutations) throws IOException {<a name="line.1693"></a>
-<span class="sourceLineNo">1694</span> multiMutate(connection, table, row, Arrays.asList(mutations));<a name="line.1694"></a>
-<span class="sourceLineNo">1695</span> }<a name="line.1695"></a>
-<span class="sourceLineNo">1696</span><a name="line.1696"></a>
-<span class="sourceLineNo">1697</span> /**<a name="line.1697"></a>
-<span class="sourceLineNo">1698</span> * Performs an atomic multi-mutate operation against the given table.<a name="line.1698"></a>
-<span class="sourceLineNo">1699</span> */<a name="line.1699"></a>
-<span class="sourceLineNo">1700</span> private static void multiMutate(Connection connection, final Table table, byte[] row,<a name="line.1700"></a>
-<span class="sourceLineNo">1701</span> final List<Mutation> mutations) throws IOException {<a name="line.1701"></a>
-<span class="sourceLineNo">1702</span> debugLogMutations(mutations);<a name="line.1702"></a>
-<span class="sourceLineNo">1703</span> // TODO: Need rollback!!!!<a name="line.1703"></a>
-<span class="sourceLineNo">1704</span> // TODO: Need Retry!!!<a name="line.1704"></a>
-<span class="sourceLineNo">1705</span> // TODO: What for a timeout? Default write timeout? GET FROM HTABLE?<a name="line.1705"></a>
-<span class="sourceLineNo">1706</span> // TODO: Review when we come through with ProcedureV2.<a name="line.1706"></a>
-<span class="sourceLineNo">1707</span> RegionServerCallable<MutateRowsResponse,<a name="line.1707"></a>
-<span class="sourceLineNo">1708</span> MultiRowMutationProtos.MultiRowMutationService.BlockingInterface> callable =<a name="line.1708"></a>
-<span class="sourceLineNo">1709</span> new RegionServerCallable<MutateRowsResponse,<a name="line.1709"></a>
-<span class="sourceLineNo">1710</span> MultiRowMutationProtos.MultiRowMutationService.BlockingInterface>(<a name="line.1710"></a>
-<span class="sourceLineNo">1711</span> connection, table.getName(), row, null/*RpcController not used in this CPEP!*/) {<a name="line.1711"></a>
-<span class="sourceLineNo">1712</span> @Override<a name="line.1712"></a>
-<span class="sourceLineNo">1713</span> protected MutateRowsResponse rpcCall() throws Exception {<a name="line.1713"></a>
-<span class="sourceLineNo">1714</span> final MutateRowsRequest.Builder builder = MutateRowsRequest.newBuilder();<a name="line.1714"></a>
-<span class="sourceLineNo">1715</span> for (Mutation mutation : mutations) {<a name="line.1715"></a>
-<span class="sourceLineNo">1716</span> if (mutation instanceof Put) {<a name="line.1716"></a>
-<span class="sourceLineNo">1717</span> builder.addMutationRequest(ProtobufUtil.toMutation(<a name="line.1717"></a>
-<span class="sourceLineNo">1718</span> ClientProtos.MutationProto.MutationType.PUT, mutation));<a name="line.1718"></a>
-<span class="sourceLineNo">1719</span> } else if (mutation instanceof Delete) {<a name="line.1719"></a>
-<span class="sourceLineNo">1720</span> builder.addMutationRequest(ProtobufUtil.toMutation(<a name="line.1720"></a>
-<span class="sourceLineNo">1721</span> ClientProtos.MutationProto.MutationType.DELETE, mutation));<a name="line.1721"></a>
-<span class="sourceLineNo">1722</span> } else {<a name="line.1722"></a>
-<span class="sourceLineNo">1723</span> throw new DoNotRetryIOException("multi in MetaEditor doesn't support "<a name="line.1723"></a>
-<span class="sourceLineNo">1724</span> + mutation.getClass().getName());<a name="line.1724"></a>
-<span class="sourceLineNo">1725</span> }<a name="line.1725"></a>
-<span class="sourceLineNo">1726</span> }<a name="line.1726"></a>
-<span class="sourceLineNo">1727</span> // The call to #prepare that ran before this invocation will have populated HRegionLocation.<a name="line.1727"></a>
-<span class="sourceLineNo">1728</span> HRegionLocation hrl = getLocation();<a name="line.1728"></a>
-<span class="sourceLineNo">1729</span> RegionSpecifier region = ProtobufUtil.buildRegionSpecifier(<a name="line.1729"></a>
-<span class="sourceLineNo">1730</span> RegionSpecifierType.REGION_NAME, hrl.getRegion().getRegionName());<a name="line.1730"></a>
-<span class="sourceLineNo">1731</span> builder.setRegion(region);<a name="line.1731"></a>
-<span class="sourceLineNo">1732</span> // The rpcController here is awkward. The Coprocessor Endpoint wants an instance of a<a name="line.1732"></a>
-<span class="sourceLineNo">1733</span> // com.google.protobuf but we are going over an rpc that is all shaded protobuf so it<a name="line.1733"></a>
-<span class="sourceLineNo">1734</span> // wants a org.apache.h.h.shaded.com.google.protobuf.RpcController. Set up a factory<a name="line.1734"></a>
-<span class="sourceLineNo">1735</span> // that makes com.google.protobuf.RpcController and then copy into it configs.<a name="line.1735"></a>
-<span class="sourceLineNo">1736</span> return getStub().mutateRows(null, builder.build());<a name="line.1736"></a>
-<span class="sourceLineNo">1737</span> }<a name="line.1737"></a>
-<span class="sourceLineNo">1738</span><a name="line.1738"></a>
-<span class="sourceLineNo">1739</span> @Override<a name="line.1739"></a>
-<span class="sourceLineNo">1740</span> // Called on the end of the super.prepare call. Set the stub.<a name="line.1740"></a>
-<span class="sourceLineNo">1741</span> protected void setStubByServiceName(ServerName serviceName/*Ignored*/) throws IOException {<a name="line.1741"></a>
-<span class="sourceLineNo">1742</span> CoprocessorRpcChannel channel = table.coprocessorService(getRow());<a name="line.1742"></a>
-<span class="sourceLineNo">1743</span> setStub(MultiRowMutationProtos.MultiRowMutationService.newBlockingStub(channel));<a name="line.1743"></a>
-<span class="sourceLineNo">1744</span> }<a name="line.1744"></a>
-<span class="sourceLineNo">1745</span> };<a name="line.1745"></a>
-<span class="sourceLineNo">1746</span> int writeTimeout = connection.getConfiguration().getInt(HConstants.HBASE_RPC_WRITE_TIMEOUT_KEY,<a name="line.1746"></a>
-<span class="sourceLineNo">1747</span> connection.getConfiguration().getInt(HConstants.HBASE_RPC_TIMEOUT_KEY,<a name="line.1747"></a>
-<span class="sourceLineNo">1748</span> HConstants.DEFAULT_HBASE_RPC_TIMEOUT));<a name="line.1748"></a>
-<span class="sourceLineNo">1749</span> // The region location should be cached in connection. Call prepare so this callable picks<a name="line.1749"></a>
-<span class="sourceLineNo">1750</span> // up the region location (see super.prepare method).<a name="line.1750"></a>
-<span class="sourceLineNo">1751</span> callable.prepare(false);<a name="line.1751"></a>
-<span class="sourceLineNo">1752</span> callable.call(writeTimeout);<a name="line.1752"></a>
-<span class="sourceLineNo">1753</span> }<a name="line.1753"></a>
-<span class="sourceLineNo">1754</span><a name="line.1754"></a>
-<span class="sourceLineNo">1755</span> /**<a name="line.1755"></a>
-<span class="sourceLineNo">1756</span> * Updates the location of the specified region in hbase:meta to be the specified server hostname<a name="line.1756"></a>
-<span class="sourceLineNo">1757</span> * and startcode.<a name="line.1757"></a>
-<span class="sourceLineNo">1758</span> * <p><a name="line.1758"></a>
-<span class="sourceLineNo">1759</span> * Uses passed catalog tracker to get a connection to the server hosting hbase:meta and makes<a name="line.1759"></a>
-<span class="sourceLineNo">1760</span> * edits to that region.<a name="line.1760"></a>
-<span class="sourceLineNo">1761</span> * @param connection connection we're using<a name="line.1761"></a>
-<span class="sourceLineNo">1762</span> * @param regionInfo region to update location of<a name="line.1762"></a>
-<span class="sourceLineNo">1763</span> * @param openSeqNum the latest sequence number obtained when the region was open<a name="line.1763"></a>
-<span class="sourceLineNo">1764</span> * @param sn Server name<a name="line.1764"></a>
-<span class="sourceLineNo">1765</span> * @param masterSystemTime wall clock time from master if passed in the open region RPC<a name="line.1765"></a>
-<span class="sourceLineNo">1766</span> */<a name="line.1766"></a>
-<span class="sourceLineNo">1767</span> @VisibleForTesting<a name="line.1767"></a>
-<span class="sourceLineNo">1768</span> public static void updateRegionLocation(Connection connection, RegionInfo regionInfo,<a name="line.1768"></a>
-<span class="sourceLineNo">1769</span> ServerName sn, long openSeqNum, long masterSystemTime) throws IOException {<a name="line.1769"></a>
-<span class="sourceLineNo">1770</span> updateLocation(connection, regionInfo, sn, openSeqNum, masterSystemTime);<a name="line.1770"></a>
-<span class="sourceLineNo">1771</span> }<a name="line.1771"></a>
-<span class="sourceLineNo">1772</span><a name="line.1772"></a>
-<span class="sourceLineNo">1773</span> /**<a name="line.1773"></a>
-<span class="sourceLineNo">1774</span> * Updates the location of the specified region to be the specified server.<a name="line.1774"></a>
-<span class="sourceLineNo">1775</span> * <p><a name="line.1775"></a>
-<span class="sourceLineNo">1776</span> * Connects to the specified server which should be hosting the specified catalog region name to<a name="line.1776"></a>
-<span class="sourceLineNo">1777</span> * perform the edit.<a name="line.1777"></a>
-<span class="sourceLineNo">1778</span> * @param connection connection we're using<a name="line.1778"></a>
-<span class="sourceLineNo">1779</span> * @param regionInfo region to update location of<a name="line.1779"></a>
-<span class="sourceLineNo">1780</span> * @param sn Server name<a name="line.1780"></a>
-<span class="sourceLineNo">1781</span> * @param openSeqNum the latest sequence number obtained when the region was open<a name="line.1781"></a>
-<span class="sourceLineNo">1782</span> * @param masterSystemTime wall clock time from master if passed in the open region RPC<a name="line.1782"></a>
-<span class="sourceLineNo">1783</span> * @throws IOException In particular could throw {@link java.net.ConnectException} if the server<a name="line.1783"></a>
-<span class="sourceLineNo">1784</span> * is down on other end.<a name="line.1784"></a>
-<span class="sourceLineNo">1785</span> */<a name="line.1785"></a>
-<span class="sourceLineNo">1786</span> private static void updateLocation(Connection connection, RegionInfo regionInfo, ServerName sn,<a name="line.1786"></a>
-<span class="sourceLineNo">1787</span> long openSeqNum, long masterSystemTime) throws IOException {<a name="line.1787"></a>
-<span class="sourceLineNo">1788</span> // region replicas are kept in the primary region's row<a name="line.1788"></a>
-<span class="sourceLineNo">1789</span> Put put = new Put(getMetaKeyForRegion(regionInfo), masterSystemTime);<a name="line.1789"></a>
-<span class="sourceLineNo">1790</span> addRegionInfo(put, regionInfo);<a name="line.1790"></a>
-<span class="sourceLineNo">1791</span> addLocation(put, sn, openSeqNum, regionInfo.getReplicaId());<a name="line.1791"></a>
-<span class="sourceLineNo">1792</span> putToMetaTable(connection, put);<a name="line.1792"></a>
-<span class="sourceLineNo">1793</span> LOG.info("Updated row {} with server=", regionInfo.getRegionNameAsString(), sn);<a name="line.1793"></a>
-<span class="sourceLineNo">1794</span> }<a name="line.1794"></a>
-<span class="sourceLineNo">1795</span><a name="line.1795"></a>
-<span class="sourceLineNo">1796</span> /**<a name="line.1796"></a>
-<span class="sourceLineNo">1797</span> * Deletes the specified region from META.<a name="line.1797"></a>
-<span class="sourceLineNo">1798</span> * @param connection connection we're using<a name="line.1798"></a>
-<span class="sourceLineNo">1799</span> * @param regionInfo region to be deleted from META<a name="line.1799"></a>
-<span class="sourceLineNo">1800</span> * @throws IOException<a name="line.1800"></a>
-<span class="sourceLineNo">1801</span> */<a name="line.1801"></a>
-<span class="sourceLineNo">1802</span> public static void deleteRegion(Connection connection, RegionInfo regionInfo) throws IOException {<a name="line.1802"></a>
-<span class="sourceLineNo">1803</span> long time = EnvironmentEdgeManager.currentTime();<a name="line.1803"></a>
-<span class="sourceLineNo">1804</span> Delete delete = new Delete(regionInfo.getRegionName());<a name="line.1804"></a>
-<span class="sourceLineNo">1805</span> delete.addFamily(getCatalogFamily(), time);<a name="line.1805"></a>
-<span class="sourceLineNo">1806</span> deleteFromMetaTable(connection, delete);<a name="line.1806"></a>
-<span class="sourceLineNo">1807</span> LOG.info("Deleted " + regionInfo.getRegionNameAsString());<a name="line.1807"></a>
-<span class="sourceLineNo">1808</span> }<a name="line.1808"></a>
-<span class="sourceLineNo">1809</span><a name="line.1809"></a>
-<span class="sourceLineNo">1810</span> /**<a name="line.1810"></a>
-<span class="sourceLineNo">1811</span> * Deletes the specified regions from META.<a name="line.1811"></a>
-<span class="sourceLineNo">1812</span> * @param connection connection we're using<a name="line.1812"></a>
-<span class="sourceLineNo">1813</span> * @param regionsInfo list of regions to be deleted from META<a name="line.1813"></a>
-<span class="sourceLineNo">1814</span> */<a name="line.1814"></a>
-<span class="sourceLineNo">1815</span> public static void deleteRegions(Connection connection, List<RegionInfo> regionsInfo)<a name="line.1815"></a>
-<span class="sourceLineNo">1816</span> throws IOException {<a name="line.1816"></a>
-<span class="sourceLineNo">1817</span> deleteRegions(connection, regionsInfo, EnvironmentEdgeManager.currentTime());<a name="line.1817"></a>
-<span class="sourceLineNo">1818</span> }<a name="line.1818"></a>
-<span class="sourceLineNo">1819</span> /**<a name="line.1819"></a>
-<span class="sourceLineNo">1820</span> * Deletes the specified regions from META.<a name="line.1820"></a>
-<span class="sourceLineNo">1821</span> * @param connection connection we're using<a name="line.1821"></a>
-<span class="sourceLineNo">1822</span> * @param regionsInfo list of regions to be deleted from META<a name="line.1822"></a>
-<span class="sourceLineNo">1823</span> */<a name="line.1823"></a>
-<span class="sourceLineNo">1824</span> public static void deleteRegions(Connection connection, List<RegionInfo> regionsInfo, long ts)<a name="line.1824"></a>
-<span class="sourceLineNo">1825</span> throws IOException {<a name="line.1825"></a>
-<span class="sourceLineNo">1826</span> List<Delete> deletes = new ArrayList<>(regionsInfo.size());<a name="line.1826"></a>
-<span class="sourceLineNo">1827</span> for (RegionInfo hri : regionsInfo) {<a name="line.1827"></a>
-<span class="sourceLineNo">1828</span> Delete e = new Delete(hri.getRegionName());<a name="line.1828"></a>
-<span class="sourceLineNo">1829</span> e.addFamily(getCatalogFamily(), ts);<a name="line.1829"></a>
-<span class="sourceLineNo">1830</span> deletes.add(e);<a name="line.1830"></a>
-<span class="sourceLineNo">1831</span> }<a name="line.1831"></a>
-<span class="sourceLineNo">1832</span> deleteFromMetaTable(connection, deletes);<a name="line.1832"></a>
-<span class="sourceLineNo">1833</span> LOG.info("Deleted {} regions from META", regionsInfo.size());<a name="line.1833"></a>
-<span class="sourceLineNo">1834</span> LOG.debug("Deleted regions: {}", regionsInfo);<a name="line.1834"></a>
-<span class="sourceLineNo">1835</span> }<a name="line.1835"></a>
-<span class="sourceLineNo">1836</span><a name="line.1836"></a>
-<span class="sourceLineNo">1837</span> /**<a name="line.1837"></a>
-<span class="sourceLineNo">1838</span> * Overwrites the specified regions from hbase:meta. Deletes old rows for the given regions and<a name="line.1838"></a>
-<span class="sourceLineNo">1839</span> * adds new ones. Regions added back have state CLOSED.<a name="line.1839"></a>
-<span class="sourceLineNo">1840</span> * @param connection connection we're using<a name="line.1840"></a>
-<span class="sourceLineNo">1841</span> * @param regionInfos list of regions to be added to META<a name="line.1841"></a>
-<span class="sourceLineNo">1842</span> */<a name="line.1842"></a>
-<span class="sourceLineNo">1843</span> public static void overwriteRegions(Connection connection,<a name="line.1843"></a>
-<span class="sourceLineNo">1844</span> List<RegionInfo> regionInfos, int regionReplication) throws IOException {<a name="line.1844"></a>
-<span class="sourceLineNo">1845</span> // use master time for delete marker and the Put<a name="line.1845"></a>
-<span class="sourceLineNo">1846</span> long now = EnvironmentEdgeManager.currentTime();<a name="line.1846"></a>
-<span class="sourceLineNo">1847</span> deleteRegions(connection, regionInfos, now);<a name="line.1847"></a>
-<span class="sourceLineNo">1848</span> // Why sleep? This is the easiest way to ensure that the previous deletes does not<a name="line.1848"></a>
-<span class="sourceLineNo">1849</span> // eclipse the following puts, that might happen in the same ts from the server.<a name="line.1849"></a>
-<span class="sourceLineNo">1850</span> // See HBASE-9906, and HBASE-9879. Once either HBASE-9879, HBASE-8770 is fixed,<a name="line.1850"></a>
-<span class="sourceLineNo">1851</span> // or HBASE-9905 is fixed and meta uses seqIds, we do not need the sleep.<a name="line.1851"></a>
-<span class="sourceLineNo">1852</span> //<a name="line.1852"></a>
-<span class="sourceLineNo">1853</span> // HBASE-13875 uses master timestamp for the mutations. The 20ms sleep is not needed<a name="line.1853"></a>
-<span class="sourceLineNo">1854</span> addRegionsToMeta(connection, regionInfos, regionReplication, now + 1);<a name="line.1854"></a>
-<span class="sourceLineNo">1855</span> LOG.info("Overwritten " + regionInfos.size() + " regions to Meta");<a name="line.1855"></a>
-<span class="sourceLineNo">1856</span> LOG.debug("Overwritten regions: {} ", regionInfos);<a name="line.1856"></a>
-<span class="sourceLineNo">1857</span> }<a name="line.1857"></a>
-<span class="sourceLineNo">1858</span><a name="line.1858"></a>
-<span class="sourceLineNo">1859</span> /**<a name="line.1859"></a>
-<span class="sourceLineNo">1860</span> * Deletes merge qualifiers for the specified merged region.<a name="line.1860"></a>
-<span class="sourceLineNo">1861</span> * @param connection connection we're using<a name="line.1861"></a>
-<span class="sourceLineNo">1862</span> * @param mergedRegion the merged region<a name="line.1862"></a>
-<span class="sourceLineNo">1863</span> */<a name="line.1863"></a>
-<span class="sourceLineNo">1864</span> public static void deleteMergeQualifiers(Connection connection, final RegionInfo mergedRegion)<a name="line.1864"></a>
-<span class="sourceLineNo">1865</span> throws IOException {<a name="line.1865"></a>
-<span class="sourceLineNo">1866</span> long time = EnvironmentEdgeManager.currentTime();<a name="line.1866"></a>
-<span class="sourceLineNo">1867</span> Delete delete = new Delete(mergedRegion.getRegionName());<a name="line.1867"></a>
-<span class="sourceLineNo">1868</span> delete.addColumns(getCatalogFamily(), HConstants.MERGEA_QUALIFIER, time);<a name="line.1868"></a>
-<span class="sourceLineNo">1869</span> delete.addColumns(getCatalogFamily(), HConstants.MERGEB_QUALIFIER, time);<a name="line.1869"></a>
-<span class="sourceLineNo">1870</span> deleteFromMetaTable(connection, delete);<a name="line.1870"></a>
-<span class="sourceLineNo">1871</span> LOG.info("Deleted references in merged region "<a name="line.1871"></a>
-<span class="sourceLineNo">1872</span> + mergedRegion.getRegionNameAsString() + ", qualifier="<a name="line.1872"></a>
-<span class="sourceLineNo">1873</span> + Bytes.toStringBinary(HConstants.MERGEA_QUALIFIER) + " and qualifier="<a name="line.1873"></a>
-<span class="sourceLineNo">1874</span> + Bytes.toStringBinary(HConstants.MERGEB_QUALIFIER));<a name="line.1874"></a>
-<span class="sourceLineNo">1875</span> }<a name="line.1875"></a>
-<span class="sourceLineNo">1876</span><a name="line.1876"></a>
-<span class="sourceLineNo">1877</span> public static Put addRegionInfo(final Put p, final RegionInfo hri)<a name="line.1877"></a>
-<span class="sourceLineNo">1878</span> throws IOException {<a name="line.1878"></a>
-<span class="sourceLineNo">1879</span> p.add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.1879"></a>
-<span class="sourceLineNo">1880</span> .setRow(p.getRow())<a name="line.1880"></a>
-<span class="sourceLineNo">1881</span> .setFamily(getCatalogFamily())<a name="line.1881"></a>
-<span class="sourceLineNo">1882</span> .setQualifier(HConstants.REGIONINFO_QUALIFIER)<a name="line.1882"></a>
-<span class="sourceLineNo">1883</span> .setTimestamp(p.getTimestamp())<a name="line.1883"></a>
-<span class="sourceLineNo">1884</span> .setType(Type.Put)<a name="line.1884"></a>
-<span class="sourceLineNo">1885</span> .setValue(RegionInfo.toByteArray(hri))<a name="line.1885"></a>
-<span class="sourceLineNo">1886</span> .build());<a name="line.1886"></a>
-<span class="sourceLineNo">1887</span> return p;<a name="line.1887"></a>
-<span class="sourceLineNo">1888</span> }<a name="line.1888"></a>
-<span class="sourceLineNo">1889</span><a name="line.1889"></a>
-<span class="sourceLineNo">1890</span> public static Put addLocation(Put p, ServerName sn, long openSeqNum, int replicaId)<a name="line.1890"></a>
-<span class="sourceLineNo">1891</span> throws IOException {<a name="line.1891"></a>
-<span class="sourceLineNo">1892</span> CellBuilder builder = CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY);<a name="line.1892"></a>
-<span class="sourceLineNo">1893</span> return p.add(builder.clear()<a name="line.1893"></a>
-<span class="sourceLineNo">1894</span> .setRow(p.getRow())<a name="line.1894"></a>
-<span class="sourceLineNo">1895</span> .setFamily(getCatalogFamily())<a name="line.1895"></a>
-<span class="sourceLineNo">1896</span> .setQualifier(getServerColumn(replicaId))<a name="line.1896"></a>
-<span class="sourceLineNo">1897</span> .setTimestamp(p.getTimestamp())<a name="line.1897"></a>
-<span class="sourceLineNo">1898</span> .setType(Cell.Type.Put)<a name="line.1898"></a>
-<span class="sourceLineNo">1899</span> .setValue(Bytes.toBytes(sn.getAddress().toString()))<a name="line.1899"></a>
-<span class="sourceLineNo">1900</span> .build())<a name="line.1900"></a>
-<span class="sourceLineNo">1901</span> .add(builder.clear()<a name="line.1901"></a>
+<span class="sourceLineNo">1572</span> .setValue(RegionInfo.toByteArray(regionA))<a name="line.1572"></a>
+<span class="sourceLineNo">1573</span> .build())<a name="line.1573"></a>
+<span class="sourceLineNo">1574</span> .add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.1574"></a>
+<span class="sourceLineNo">1575</span> .setRow(putOfMerged.getRow())<a name="line.1575"></a>
+<span class="sourceLineNo">1576</span> .setFamily(HConstants.CATALOG_FAMILY)<a name="line.1576"></a>
+<span class="sourceLineNo">1577</span> .setQualifier(HConstants.MERGEB_QUALIFIER)<a name="line.1577"></a>
+<span class="sourceLineNo">1578</span> .setTimestamp(putOfMerged.getTimestamp())<a name="line.1578"></a>
+<span class="sourceLineNo">1579</span> .setType(Type.Put)<a name="line.1579"></a>
+<span class="sourceLineNo">1580</span> .setValue(RegionInfo.toByteArray(regionB))<a name="line.1580"></a>
+<span class="sourceLineNo">1581</span> .build());<a name="line.1581"></a>
+<span class="sourceLineNo">1582</span> // Set initial state to CLOSED<a name="line.1582"></a>
+<span class="sourceLineNo">1583</span> // NOTE: If initial state is not set to CLOSED then merged region gets added with the<a name="line.1583"></a>
+<span class="sourceLineNo">1584</span> // default OFFLINE state. If Master gets restarted after this step, start up sequence of<a name="line.1584"></a>
+<span class="sourceLineNo">1585</span> // master tries to assign this offline region. This is followed by re-assignments of the<a name="line.1585"></a>
+<span class="sourceLineNo">1586</span> // merged region from resumed {@link MergeTableRegionsProcedure}<a name="line.1586"></a>
+<span class="sourceLineNo">1587</span> addRegionStateToPut(putOfMerged, RegionState.State.CLOSED);<a name="line.1587"></a>
+<span class="sourceLineNo">1588</span> mutations.add(putOfMerged);<a name="line.1588"></a>
+<span class="sourceLineNo">1589</span> // The merged is a new region, openSeqNum = 1 is fine. ServerName may be null<a name="line.1589"></a>
+<span class="sourceLineNo">1590</span> // if crash after merge happened but before we got to here.. means in-memory<a name="line.1590"></a>
+<span class="sourceLineNo">1591</span> // locations of offlined merged, now-closed, regions is lost. Should be ok. We<a name="line.1591"></a>
+<span class="sourceLineNo">1592</span> // assign the merged region later.<a name="line.1592"></a>
+<span class="sourceLineNo">1593</span> if (sn != null) {<a name="line.1593"></a>
+<span class="sourceLineNo">1594</span> addLocation(putOfMerged, sn, 1, mergedRegion.getReplicaId());<a name="line.1594"></a>
+<span class="sourceLineNo">1595</span> }<a name="line.1595"></a>
+<span class="sourceLineNo">1596</span><a name="line.1596"></a>
+<span class="sourceLineNo">1597</span> // Add empty locations for region replicas of the merged region so that number of replicas can<a name="line.1597"></a>
+<span class="sourceLineNo">1598</span> // be cached whenever the primary region is looked up from meta<a name="line.1598"></a>
+<span class="sourceLineNo">1599</span> for (int i = 1; i < regionReplication; i++) {<a name="line.1599"></a>
+<span class="sourceLineNo">1600</span> addEmptyLocation(putOfMerged, i);<a name="line.1600"></a>
+<span class="sourceLineNo">1601</span> }<a name="line.1601"></a>
+<span class="sourceLineNo">1602</span> // add parent reference for serial replication<a name="line.1602"></a>
+<span class="sourceLineNo">1603</span> if (!replicationParents.isEmpty()) {<a name="line.1603"></a>
+<span class="sourceLineNo">1604</span> addReplicationParent(putOfMerged, replicationParents);<a name="line.1604"></a>
+<span class="sourceLineNo">1605</span> }<a name="line.1605"></a>
+<span class="sourceLineNo">1606</span> byte[] tableRow = Bytes.toBytes(mergedRegion.getRegionNameAsString() + HConstants.DELIMITER);<a name="line.1606"></a>
+<span class="sourceLineNo">1607</span> multiMutate(connection, meta, tableRow, mutations);<a name="line.1607"></a>
+<span class="sourceLineNo">1608</span> }<a name="line.1608"></a>
+<span class="sourceLineNo">1609</span> }<a name="line.1609"></a>
+<span class="sourceLineNo">1610</span><a name="line.1610"></a>
+<span class="sourceLineNo">1611</span> /**<a name="line.1611"></a>
+<span class="sourceLineNo">1612</span> * Splits the region into two in an atomic operation. Offlines the parent region with the<a name="line.1612"></a>
+<span class="sourceLineNo">1613</span> * information that it is split into two, and also adds the daughter regions. Does not add the<a name="line.1613"></a>
+<span class="sourceLineNo">1614</span> * location information to the daughter regions since they are not open yet.<a name="line.1614"></a>
+<span class="sourceLineNo">1615</span> * @param connection connection we're using<a name="line.1615"></a>
+<span class="sourceLineNo">1616</span> * @param parent the parent region which is split<a name="line.1616"></a>
+<span class="sourceLineNo">1617</span> * @param parentOpenSeqNum the next open sequence id for parent region, used by serial<a name="line.1617"></a>
+<span class="sourceLineNo">1618</span> * replication. -1 if not necessary.<a nam
<TRUNCATED>
[12/51] [partial] hbase-site git commit: Published site at
9101fc246f86445006bfbcdfda5cc495016dc280.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/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 eb16038..74bacd8 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
@@ -6,7 +6,7 @@
</head>
<body>
<div class="sourceContainer">
-<pre><span class="sourceLineNo">001</span>/*<a name="line.1"></a>
+<pre><span class="sourceLineNo">001</span>/**<a name="line.1"></a>
<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
<span class="sourceLineNo">003</span> * or more contributor license agreements. See the NOTICE file<a name="line.3"></a>
<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
@@ -48,692 +48,692 @@
<span class="sourceLineNo">040</span>import java.util.Map;<a name="line.40"></a>
<span class="sourceLineNo">041</span>import java.util.Map.Entry;<a name="line.41"></a>
<span class="sourceLineNo">042</span>import java.util.Objects;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import java.util.Set;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import java.util.concurrent.ExecutionException;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import java.util.concurrent.Future;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import java.util.concurrent.TimeUnit;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import java.util.concurrent.TimeoutException;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import java.util.concurrent.atomic.AtomicInteger;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import java.util.concurrent.atomic.AtomicReference;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import java.util.function.Function;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import java.util.regex.Pattern;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import java.util.stream.Collectors;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import javax.servlet.ServletException;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import javax.servlet.http.HttpServlet;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import javax.servlet.http.HttpServletRequest;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import javax.servlet.http.HttpServletResponse;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.commons.lang3.StringUtils;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.conf.Configuration;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.fs.Path;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.ClusterId;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.ClusterMetrics;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.ClusterMetrics.Option;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.ClusterMetricsBuilder;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.HBaseIOException;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.HBaseInterfaceAudience;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.HConstants;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.InvalidFamilyOperationException;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.MasterNotRunningException;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.MetaTableAccessor;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.PleaseHoldException;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.ReplicationPeerNotFoundException;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.ScheduledChore;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.ServerName;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.TableDescriptors;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.TableName;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.TableNotDisabledException;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.TableNotFoundException;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.UnknownRegionException;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.client.MasterSwitchType;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.client.Result;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.client.TableState;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.client.VersionInfoUtil;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.coprocessor.CoprocessorHost;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.exceptions.MergeRegionException;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.executor.ExecutorType;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.favored.FavoredNodesManager;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.favored.FavoredNodesPromoter;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.http.InfoServer;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcUtils;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.ipc.ServerNotRunningYetException;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.log.HBaseMarkers;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.master.MasterRpcServices.BalanceSwitchMode;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.master.assignment.AssignmentManager;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.master.assignment.MergeTableRegionsProcedure;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.master.assignment.RegionStates;<a name="line.104"></a>
-<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.master.assignment.RegionStates.RegionStateNode;<a name="line.105"></a>
-<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.master.balancer.BalancerChore;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.master.balancer.BaseLoadBalancer;<a name="line.107"></a>
-<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.master.balancer.ClusterStatusChore;<a name="line.108"></a>
-<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.master.balancer.LoadBalancerFactory;<a name="line.109"></a>
-<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.master.cleaner.CleanerChore;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.master.cleaner.HFileCleaner;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.master.cleaner.LogCleaner;<a name="line.112"></a>
-<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.master.cleaner.ReplicationBarrierCleaner;<a name="line.113"></a>
-<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.master.locking.LockManager;<a name="line.114"></a>
-<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.master.normalizer.NormalizationPlan;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.master.normalizer.NormalizationPlan.PlanType;<a name="line.116"></a>
-<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizer;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizerChore;<a name="line.118"></a>
-<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizerFactory;<a name="line.119"></a>
-<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.master.procedure.CreateTableProcedure;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.master.procedure.DeleteNamespaceProcedure;<a name="line.121"></a>
-<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.master.procedure.DeleteTableProcedure;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.master.procedure.DisableTableProcedure;<a name="line.123"></a>
-<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.master.procedure.EnableTableProcedure;<a name="line.124"></a>
-<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureConstants;<a name="line.125"></a>
-<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv;<a name="line.126"></a>
-<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureScheduler;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureUtil;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.master.procedure.ModifyTableProcedure;<a name="line.129"></a>
-<span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.master.procedure.ProcedurePrepareLatch;<a name="line.130"></a>
-<span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.master.procedure.RecoverMetaProcedure;<a name="line.131"></a>
-<span class="sourceLineNo">132</span>import org.apache.hadoop.hbase.master.procedure.TruncateTableProcedure;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>import org.apache.hadoop.hbase.master.replication.AddPeerProcedure;<a name="line.133"></a>
-<span class="sourceLineNo">134</span>import org.apache.hadoop.hbase.master.replication.DisablePeerProcedure;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>import org.apache.hadoop.hbase.master.replication.EnablePeerProcedure;<a name="line.135"></a>
-<span class="sourceLineNo">136</span>import org.apache.hadoop.hbase.master.replication.ModifyPeerProcedure;<a name="line.136"></a>
-<span class="sourceLineNo">137</span>import org.apache.hadoop.hbase.master.replication.RemovePeerProcedure;<a name="line.137"></a>
-<span class="sourceLineNo">138</span>import org.apache.hadoop.hbase.master.replication.ReplicationPeerManager;<a name="line.138"></a>
-<span class="sourceLineNo">139</span>import org.apache.hadoop.hbase.master.replication.UpdatePeerConfigProcedure;<a name="line.139"></a>
-<span class="sourceLineNo">140</span>import org.apache.hadoop.hbase.master.snapshot.SnapshotManager;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.master.zksyncer.MasterAddressSyncer;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.master.zksyncer.MetaLocationSyncer;<a name="line.142"></a>
-<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.mob.MobConstants;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.monitoring.MemoryBoundedLogMessageBuffer;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.146"></a>
-<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.procedure.MasterProcedureManagerHost;<a name="line.147"></a>
-<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.procedure.flush.MasterFlushTableProcedureManager;<a name="line.148"></a>
-<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.procedure2.LockedResource;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.procedure2.Procedure;<a name="line.150"></a>
-<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.procedure2.ProcedureEvent;<a name="line.151"></a>
-<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.procedure2.ProcedureExecutor;<a name="line.152"></a>
-<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureDispatcher.RemoteProcedure;<a name="line.153"></a>
-<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureException;<a name="line.154"></a>
-<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.procedure2.store.wal.WALProcedureStore;<a name="line.155"></a>
-<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.quotas.MasterQuotaManager;<a name="line.156"></a>
-<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.quotas.MasterSpaceQuotaObserver;<a name="line.157"></a>
-<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.quotas.QuotaObserverChore;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.159"></a>
-<span class="sourceLineNo">160</span>import org.apache.hadoop.hbase.quotas.SnapshotQuotaObserverChore;<a name="line.160"></a>
-<span class="sourceLineNo">161</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifier;<a name="line.161"></a>
-<span class="sourceLineNo">162</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifierFactory;<a name="line.162"></a>
-<span class="sourceLineNo">163</span>import org.apache.hadoop.hbase.regionserver.DefaultStoreEngine;<a name="line.163"></a>
-<span class="sourceLineNo">164</span>import org.apache.hadoop.hbase.regionserver.HRegionServer;<a name="line.164"></a>
-<span class="sourceLineNo">165</span>import org.apache.hadoop.hbase.regionserver.HStore;<a name="line.165"></a>
-<span class="sourceLineNo">166</span>import org.apache.hadoop.hbase.regionserver.RSRpcServices;<a name="line.166"></a>
-<span class="sourceLineNo">167</span>import org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost;<a name="line.167"></a>
-<span class="sourceLineNo">168</span>import org.apache.hadoop.hbase.regionserver.RegionSplitPolicy;<a name="line.168"></a>
-<span class="sourceLineNo">169</span>import org.apache.hadoop.hbase.regionserver.compactions.ExploringCompactionPolicy;<a name="line.169"></a>
-<span class="sourceLineNo">170</span>import org.apache.hadoop.hbase.regionserver.compactions.FIFOCompactionPolicy;<a name="line.170"></a>
-<span class="sourceLineNo">171</span>import org.apache.hadoop.hbase.replication.ReplicationException;<a name="line.171"></a>
-<span class="sourceLineNo">172</span>import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;<a name="line.172"></a>
-<span class="sourceLineNo">173</span>import org.apache.hadoop.hbase.replication.ReplicationPeerDescription;<a name="line.173"></a>
-<span class="sourceLineNo">174</span>import org.apache.hadoop.hbase.replication.ReplicationUtils;<a name="line.174"></a>
-<span class="sourceLineNo">175</span>import org.apache.hadoop.hbase.replication.master.ReplicationHFileCleaner;<a name="line.175"></a>
-<span class="sourceLineNo">176</span>import org.apache.hadoop.hbase.replication.master.ReplicationLogCleaner;<a name="line.176"></a>
-<span class="sourceLineNo">177</span>import org.apache.hadoop.hbase.replication.master.ReplicationPeerConfigUpgrader;<a name="line.177"></a>
-<span class="sourceLineNo">178</span>import org.apache.hadoop.hbase.security.AccessDeniedException;<a name="line.178"></a>
-<span class="sourceLineNo">179</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.179"></a>
-<span class="sourceLineNo">180</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.180"></a>
-<span class="sourceLineNo">181</span>import org.apache.hadoop.hbase.util.Addressing;<a name="line.181"></a>
-<span class="sourceLineNo">182</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.182"></a>
-<span class="sourceLineNo">183</span>import org.apache.hadoop.hbase.util.CompressionTest;<a name="line.183"></a>
-<span class="sourceLineNo">184</span>import org.apache.hadoop.hbase.util.EncryptionTest;<a name="line.184"></a>
-<span class="sourceLineNo">185</span>import org.apache.hadoop.hbase.util.HFileArchiveUtil;<a name="line.185"></a>
-<span class="sourceLineNo">186</span>import org.apache.hadoop.hbase.util.HasThread;<a name="line.186"></a>
-<span class="sourceLineNo">187</span>import org.apache.hadoop.hbase.util.IdLock;<a name="line.187"></a>
-<span class="sourceLineNo">188</span>import org.apache.hadoop.hbase.util.ModifyRegionUtils;<a name="line.188"></a>
-<span class="sourceLineNo">189</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.189"></a>
-<span class="sourceLineNo">190</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.190"></a>
-<span class="sourceLineNo">191</span>import org.apache.hadoop.hbase.util.VersionInfo;<a name="line.191"></a>
-<span class="sourceLineNo">192</span>import org.apache.hadoop.hbase.zookeeper.LoadBalancerTracker;<a name="line.192"></a>
-<span class="sourceLineNo">193</span>import org.apache.hadoop.hbase.zookeeper.MasterAddressTracker;<a name="line.193"></a>
-<span class="sourceLineNo">194</span>import org.apache.hadoop.hbase.zookeeper.MasterMaintenanceModeTracker;<a name="line.194"></a>
-<span class="sourceLineNo">195</span>import org.apache.hadoop.hbase.zookeeper.RegionNormalizerTracker;<a name="line.195"></a>
-<span class="sourceLineNo">196</span>import org.apache.hadoop.hbase.zookeeper.ZKClusterId;<a name="line.196"></a>
-<span class="sourceLineNo">197</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.197"></a>
-<span class="sourceLineNo">198</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.198"></a>
-<span class="sourceLineNo">199</span>import org.apache.hadoop.hbase.zookeeper.ZNodePaths;<a name="line.199"></a>
-<span class="sourceLineNo">200</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.200"></a>
-<span class="sourceLineNo">201</span>import org.apache.zookeeper.KeeperException;<a name="line.201"></a>
-<span class="sourceLineNo">202</span>import org.eclipse.jetty.server.Server;<a name="line.202"></a>
-<span class="sourceLineNo">203</span>import org.eclipse.jetty.server.ServerConnector;<a name="line.203"></a>
-<span class="sourceLineNo">204</span>import org.eclipse.jetty.servlet.ServletHolder;<a name="line.204"></a>
-<span class="sourceLineNo">205</span>import org.eclipse.jetty.webapp.WebAppContext;<a name="line.205"></a>
-<span class="sourceLineNo">206</span>import org.slf4j.Logger;<a name="line.206"></a>
-<span class="sourceLineNo">207</span>import org.slf4j.LoggerFactory;<a name="line.207"></a>
-<span class="sourceLineNo">208</span><a name="line.208"></a>
-<span class="sourceLineNo">209</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.209"></a>
-<span class="sourceLineNo">210</span>import org.apache.hbase.thirdparty.com.google.common.collect.Lists;<a name="line.210"></a>
-<span class="sourceLineNo">211</span>import org.apache.hbase.thirdparty.com.google.common.collect.Maps;<a name="line.211"></a>
-<span class="sourceLineNo">212</span><a name="line.212"></a>
-<span class="sourceLineNo">213</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.213"></a>
-<span class="sourceLineNo">214</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoResponse.CompactionState;<a name="line.214"></a>
-<span class="sourceLineNo">215</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.Quotas;<a name="line.215"></a>
-<span class="sourceLineNo">216</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.SpaceViolationPolicy;<a name="line.216"></a>
-<span class="sourceLineNo">217</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;<a name="line.217"></a>
-<span class="sourceLineNo">218</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos;<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">221</span> * HMaster is the "master server" for HBase. An HBase cluster has one active<a name="line.221"></a>
-<span class="sourceLineNo">222</span> * master. If many masters are started, all compete. Whichever wins goes on to<a name="line.222"></a>
-<span class="sourceLineNo">223</span> * run the cluster. All others park themselves in their constructor until<a name="line.223"></a>
-<span class="sourceLineNo">224</span> * master or cluster shutdown or until the active master loses its lease in<a name="line.224"></a>
-<span class="sourceLineNo">225</span> * zookeeper. Thereafter, all running master jostle to take over master role.<a name="line.225"></a>
-<span class="sourceLineNo">226</span> *<a name="line.226"></a>
-<span class="sourceLineNo">227</span> * <p>The Master can be asked shutdown the cluster. See {@link #shutdown()}. In<a name="line.227"></a>
-<span class="sourceLineNo">228</span> * this case it will tell all regionservers to go down and then wait on them<a name="line.228"></a>
-<span class="sourceLineNo">229</span> * all reporting in that they are down. This master will then shut itself down.<a name="line.229"></a>
-<span class="sourceLineNo">230</span> *<a name="line.230"></a>
-<span class="sourceLineNo">231</span> * <p>You can also shutdown just this master. Call {@link #stopMaster()}.<a name="line.231"></a>
-<span class="sourceLineNo">232</span> *<a name="line.232"></a>
-<span class="sourceLineNo">233</span> * @see org.apache.zookeeper.Watcher<a name="line.233"></a>
-<span class="sourceLineNo">234</span> */<a name="line.234"></a>
-<span class="sourceLineNo">235</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS)<a name="line.235"></a>
-<span class="sourceLineNo">236</span>@SuppressWarnings("deprecation")<a name="line.236"></a>
-<span class="sourceLineNo">237</span>public class HMaster extends HRegionServer implements MasterServices {<a name="line.237"></a>
-<span class="sourceLineNo">238</span> private static Logger LOG = LoggerFactory.getLogger(HMaster.class.getName());<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> * Protection against zombie master. Started once Master accepts active responsibility and<a name="line.241"></a>
-<span class="sourceLineNo">242</span> * starts taking over responsibilities. Allows a finite time window before giving up ownership.<a name="line.242"></a>
-<span class="sourceLineNo">243</span> */<a name="line.243"></a>
-<span class="sourceLineNo">244</span> private static class InitializationMonitor extends HasThread {<a name="line.244"></a>
-<span class="sourceLineNo">245</span> /** The amount of time in milliseconds to sleep before checking initialization status. */<a name="line.245"></a>
-<span class="sourceLineNo">246</span> public static final String TIMEOUT_KEY = "hbase.master.initializationmonitor.timeout";<a name="line.246"></a>
-<span class="sourceLineNo">247</span> public static final long TIMEOUT_DEFAULT = TimeUnit.MILLISECONDS.convert(15, TimeUnit.MINUTES);<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> * When timeout expired and initialization has not complete, call {@link System#exit(int)} when<a name="line.250"></a>
-<span class="sourceLineNo">251</span> * true, do nothing otherwise.<a name="line.251"></a>
-<span class="sourceLineNo">252</span> */<a name="line.252"></a>
-<span class="sourceLineNo">253</span> public static final String HALT_KEY = "hbase.master.initializationmonitor.haltontimeout";<a name="line.253"></a>
-<span class="sourceLineNo">254</span> public static final boolean HALT_DEFAULT = false;<a name="line.254"></a>
-<span class="sourceLineNo">255</span><a name="line.255"></a>
-<span class="sourceLineNo">256</span> private final HMaster master;<a name="line.256"></a>
-<span class="sourceLineNo">257</span> private final long timeout;<a name="line.257"></a>
-<span class="sourceLineNo">258</span> private final boolean haltOnTimeout;<a name="line.258"></a>
-<span class="sourceLineNo">259</span><a name="line.259"></a>
-<span class="sourceLineNo">260</span> /** Creates a Thread that monitors the {@link #isInitialized()} state. */<a name="line.260"></a>
-<span class="sourceLineNo">261</span> InitializationMonitor(HMaster master) {<a name="line.261"></a>
-<span class="sourceLineNo">262</span> super("MasterInitializationMonitor");<a name="line.262"></a>
-<span class="sourceLineNo">263</span> this.master = master;<a name="line.263"></a>
-<span class="sourceLineNo">264</span> this.timeout = master.getConfiguration().getLong(TIMEOUT_KEY, TIMEOUT_DEFAULT);<a name="line.264"></a>
-<span class="sourceLineNo">265</span> this.haltOnTimeout = master.getConfiguration().getBoolean(HALT_KEY, HALT_DEFAULT);<a name="line.265"></a>
-<span class="sourceLineNo">266</span> this.setDaemon(true);<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> @Override<a name="line.269"></a>
-<span class="sourceLineNo">270</span> public void run() {<a name="line.270"></a>
-<span class="sourceLineNo">271</span> try {<a name="line.271"></a>
-<span class="sourceLineNo">272</span> while (!master.isStopped() && master.isActiveMaster()) {<a name="line.272"></a>
-<span class="sourceLineNo">273</span> Thread.sleep(timeout);<a name="line.273"></a>
-<span class="sourceLineNo">274</span> if (master.isInitialized()) {<a name="line.274"></a>
-<span class="sourceLineNo">275</span> LOG.debug("Initialization completed within allotted tolerance. Monitor exiting.");<a name="line.275"></a>
-<span class="sourceLineNo">276</span> } else {<a name="line.276"></a>
-<span class="sourceLineNo">277</span> LOG.error("Master failed to complete initialization after " + timeout + "ms. Please"<a name="line.277"></a>
-<span class="sourceLineNo">278</span> + " consider submitting a bug report including a thread dump of this process.");<a name="line.278"></a>
-<span class="sourceLineNo">279</span> if (haltOnTimeout) {<a name="line.279"></a>
-<span class="sourceLineNo">280</span> LOG.error("Zombie Master exiting. Thread dump to stdout");<a name="line.280"></a>
-<span class="sourceLineNo">281</span> Threads.printThreadInfo(System.out, "Zombie HMaster");<a name="line.281"></a>
-<span class="sourceLineNo">282</span> System.exit(-1);<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> } catch (InterruptedException ie) {<a name="line.286"></a>
-<span class="sourceLineNo">287</span> LOG.trace("InitMonitor thread interrupted. Existing.");<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> }<a name="line.290"></a>
-<span class="sourceLineNo">291</span><a name="line.291"></a>
-<span class="sourceLineNo">292</span> // MASTER is name of the webapp and the attribute name used stuffing this<a name="line.292"></a>
-<span class="sourceLineNo">293</span> //instance into web context.<a name="line.293"></a>
-<span class="sourceLineNo">294</span> public static final String MASTER = "master";<a name="line.294"></a>
-<span class="sourceLineNo">295</span><a name="line.295"></a>
-<span class="sourceLineNo">296</span> // Manager and zk listener for master election<a name="line.296"></a>
-<span class="sourceLineNo">297</span> private final ActiveMasterManager activeMasterManager;<a name="line.297"></a>
-<span class="sourceLineNo">298</span> // Region server tracker<a name="line.298"></a>
-<span class="sourceLineNo">299</span> private RegionServerTracker regionServerTracker;<a name="line.299"></a>
-<span class="sourceLineNo">300</span> // Draining region server tracker<a name="line.300"></a>
-<span class="sourceLineNo">301</span> private DrainingServerTracker drainingServerTracker;<a name="line.301"></a>
-<span class="sourceLineNo">302</span> // Tracker for load balancer state<a name="line.302"></a>
-<span class="sourceLineNo">303</span> LoadBalancerTracker loadBalancerTracker;<a name="line.303"></a>
-<span class="sourceLineNo">304</span> // Tracker for meta location, if any client ZK quorum specified<a name="line.304"></a>
-<span class="sourceLineNo">305</span> MetaLocationSyncer metaLocationSyncer;<a name="line.305"></a>
-<span class="sourceLineNo">306</span> // Tracker for active master location, if any client ZK quorum specified<a name="line.306"></a>
-<span class="sourceLineNo">307</span> MasterAddressSyncer masterAddressSyncer;<a name="line.307"></a>
-<span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span> // Tracker for split and merge state<a name="line.309"></a>
-<span class="sourceLineNo">310</span> private SplitOrMergeTracker splitOrMergeTracker;<a name="line.310"></a>
+<span class="sourceLineNo">043</span>import java.util.Optional;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import java.util.Set;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import java.util.concurrent.ExecutionException;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import java.util.concurrent.Future;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import java.util.concurrent.TimeUnit;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import java.util.concurrent.TimeoutException;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import java.util.concurrent.atomic.AtomicInteger;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import java.util.concurrent.atomic.AtomicReference;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import java.util.function.Function;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import java.util.regex.Pattern;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import java.util.stream.Collectors;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import javax.servlet.ServletException;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import javax.servlet.http.HttpServlet;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import javax.servlet.http.HttpServletRequest;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import javax.servlet.http.HttpServletResponse;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.commons.lang3.StringUtils;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.conf.Configuration;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.fs.Path;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.ClusterId;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.ClusterMetrics;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.ClusterMetrics.Option;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.ClusterMetricsBuilder;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.HBaseIOException;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.HBaseInterfaceAudience;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.HConstants;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.InvalidFamilyOperationException;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.MasterNotRunningException;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.MetaTableAccessor;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.PleaseHoldException;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.ReplicationPeerNotFoundException;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.ScheduledChore;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.ServerName;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.TableDescriptors;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.TableName;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.TableNotDisabledException;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.TableNotFoundException;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.UnknownRegionException;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.client.MasterSwitchType;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.client.RegionInfoBuilder;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.client.Result;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.client.TableState;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.client.VersionInfoUtil;<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.AssignmentManager;<a name="line.104"></a>
+<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.master.assignment.MergeTableRegionsProcedure;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.master.assignment.RegionStates;<a name="line.106"></a>
+<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.master.assignment.RegionStates.RegionStateNode;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.master.balancer.BalancerChore;<a name="line.108"></a>
+<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.master.balancer.BaseLoadBalancer;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.master.balancer.ClusterStatusChore;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.master.balancer.LoadBalancerFactory;<a name="line.111"></a>
+<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.master.cleaner.CleanerChore;<a name="line.112"></a>
+<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.master.cleaner.HFileCleaner;<a name="line.113"></a>
+<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.master.cleaner.LogCleaner;<a name="line.114"></a>
+<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.master.cleaner.ReplicationBarrierCleaner;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.master.locking.LockManager;<a name="line.116"></a>
+<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.master.normalizer.NormalizationPlan;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.master.normalizer.NormalizationPlan.PlanType;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizer;<a name="line.119"></a>
+<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizerChore;<a name="line.120"></a>
+<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizerFactory;<a name="line.121"></a>
+<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.master.procedure.CreateTableProcedure;<a name="line.122"></a>
+<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.master.procedure.DeleteNamespaceProcedure;<a name="line.123"></a>
+<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.master.procedure.DeleteTableProcedure;<a name="line.124"></a>
+<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.master.procedure.DisableTableProcedure;<a name="line.125"></a>
+<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.master.procedure.EnableTableProcedure;<a name="line.126"></a>
+<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.master.procedure.InitMetaProcedure;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureConstants;<a name="line.128"></a>
+<span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv;<a name="line.129"></a>
+<span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureScheduler;<a name="line.130"></a>
+<span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureUtil;<a name="line.131"></a>
+<span class="sourceLineNo">132</span>import org.apache.hadoop.hbase.master.procedure.ModifyTableProcedure;<a name="line.132"></a>
+<span class="sourceLineNo">133</span>import org.apache.hadoop.hbase.master.procedure.ProcedurePrepareLatch;<a name="line.133"></a>
+<span class="sourceLineNo">134</span>import org.apache.hadoop.hbase.master.procedure.ServerCrashProcedure;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>import org.apache.hadoop.hbase.master.procedure.TruncateTableProcedure;<a name="line.135"></a>
+<span class="sourceLineNo">136</span>import org.apache.hadoop.hbase.master.replication.AddPeerProcedure;<a name="line.136"></a>
+<span class="sourceLineNo">137</span>import org.apache.hadoop.hbase.master.replication.DisablePeerProcedure;<a name="line.137"></a>
+<span class="sourceLineNo">138</span>import org.apache.hadoop.hbase.master.replication.EnablePeerProcedure;<a name="line.138"></a>
+<span class="sourceLineNo">139</span>import org.apache.hadoop.hbase.master.replication.ModifyPeerProcedure;<a name="line.139"></a>
+<span class="sourceLineNo">140</span>import org.apache.hadoop.hbase.master.replication.RemovePeerProcedure;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.master.replication.ReplicationPeerManager;<a name="line.141"></a>
+<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.master.replication.UpdatePeerConfigProcedure;<a name="line.142"></a>
+<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.master.snapshot.SnapshotManager;<a name="line.143"></a>
+<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.master.zksyncer.MasterAddressSyncer;<a name="line.144"></a>
+<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.master.zksyncer.MetaLocationSyncer;<a name="line.145"></a>
+<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.mob.MobConstants;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.monitoring.MemoryBoundedLogMessageBuffer;<a name="line.147"></a>
+<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.148"></a>
+<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.procedure.MasterProcedureManagerHost;<a name="line.150"></a>
+<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.procedure.flush.MasterFlushTableProcedureManager;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.procedure2.LockedResource;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.procedure2.Procedure;<a name="line.153"></a>
+<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.procedure2.ProcedureEvent;<a name="line.154"></a>
+<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.procedure2.ProcedureExecutor;<a name="line.155"></a>
+<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureDispatcher.RemoteProcedure;<a name="line.156"></a>
+<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureException;<a name="line.157"></a>
+<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.procedure2.store.wal.WALProcedureStore;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.quotas.MasterQuotaManager;<a name="line.159"></a>
+<span class="sourceLineNo">160</span>import org.apache.hadoop.hbase.quotas.MasterSpaceQuotaObserver;<a name="line.160"></a>
+<span class="sourceLineNo">161</span>import org.apache.hadoop.hbase.quotas.QuotaObserverChore;<a name="line.161"></a>
+<span class="sourceLineNo">162</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.162"></a>
+<span class="sourceLineNo">163</span>import org.apache.hadoop.hbase.quotas.SnapshotQuotaObserverChore;<a name="line.163"></a>
+<span class="sourceLineNo">164</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifier;<a name="line.164"></a>
+<span class="sourceLineNo">165</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifierFactory;<a name="line.165"></a>
+<span class="sourceLineNo">166</span>import org.apache.hadoop.hbase.regionserver.DefaultStoreEngine;<a name="line.166"></a>
+<span class="sourceLineNo">167</span>import org.apache.hadoop.hbase.regionserver.HRegionServer;<a name="line.167"></a>
+<span class="sourceLineNo">168</span>import org.apache.hadoop.hbase.regionserver.HStore;<a name="line.168"></a>
+<span class="sourceLineNo">169</span>import org.apache.hadoop.hbase.regionserver.RSRpcServices;<a name="line.169"></a>
+<span class="sourceLineNo">170</span>import org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost;<a name="line.170"></a>
+<span class="sourceLineNo">171</span>import org.apache.hadoop.hbase.regionserver.RegionSplitPolicy;<a name="line.171"></a>
+<span class="sourceLineNo">172</span>import org.apache.hadoop.hbase.regionserver.compactions.ExploringCompactionPolicy;<a name="line.172"></a>
+<span class="sourceLineNo">173</span>import org.apache.hadoop.hbase.regionserver.compactions.FIFOCompactionPolicy;<a name="line.173"></a>
+<span class="sourceLineNo">174</span>import org.apache.hadoop.hbase.replication.ReplicationException;<a name="line.174"></a>
+<span class="sourceLineNo">175</span>import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;<a name="line.175"></a>
+<span class="sourceLineNo">176</span>import org.apache.hadoop.hbase.replication.ReplicationPeerDescription;<a name="line.176"></a>
+<span class="sourceLineNo">177</span>import org.apache.hadoop.hbase.replication.ReplicationUtils;<a name="line.177"></a>
+<span class="sourceLineNo">178</span>import org.apache.hadoop.hbase.replication.master.ReplicationHFileCleaner;<a name="line.178"></a>
+<span class="sourceLineNo">179</span>import org.apache.hadoop.hbase.replication.master.ReplicationLogCleaner;<a name="line.179"></a>
+<span class="sourceLineNo">180</span>import org.apache.hadoop.hbase.replication.master.ReplicationPeerConfigUpgrader;<a name="line.180"></a>
+<span class="sourceLineNo">181</span>import org.apache.hadoop.hbase.security.AccessDeniedException;<a name="line.181"></a>
+<span class="sourceLineNo">182</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.182"></a>
+<span class="sourceLineNo">183</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.183"></a>
+<span class="sourceLineNo">184</span>import org.apache.hadoop.hbase.util.Addressing;<a name="line.184"></a>
+<span class="sourceLineNo">185</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.185"></a>
+<span class="sourceLineNo">186</span>import org.apache.hadoop.hbase.util.CompressionTest;<a name="line.186"></a>
+<span class="sourceLineNo">187</span>import org.apache.hadoop.hbase.util.EncryptionTest;<a name="line.187"></a>
+<span class="sourceLineNo">188</span>import org.apache.hadoop.hbase.util.HFileArchiveUtil;<a name="line.188"></a>
+<span class="sourceLineNo">189</span>import org.apache.hadoop.hbase.util.HasThread;<a name="line.189"></a>
+<span class="sourceLineNo">190</span>import org.apache.hadoop.hbase.util.IdLock;<a name="line.190"></a>
+<span class="sourceLineNo">191</span>import org.apache.hadoop.hbase.util.ModifyRegionUtils;<a name="line.191"></a>
+<span class="sourceLineNo">192</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.192"></a>
+<span class="sourceLineNo">193</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.193"></a>
+<span class="sourceLineNo">194</span>import org.apache.hadoop.hbase.util.VersionInfo;<a name="line.194"></a>
+<span class="sourceLineNo">195</span>import org.apache.hadoop.hbase.zookeeper.LoadBalancerTracker;<a name="line.195"></a>
+<span class="sourceLineNo">196</span>import org.apache.hadoop.hbase.zookeeper.MasterAddressTracker;<a name="line.196"></a>
+<span class="sourceLineNo">197</span>import org.apache.hadoop.hbase.zookeeper.MasterMaintenanceModeTracker;<a name="line.197"></a>
+<span class="sourceLineNo">198</span>import org.apache.hadoop.hbase.zookeeper.RegionNormalizerTracker;<a name="line.198"></a>
+<span class="sourceLineNo">199</span>import org.apache.hadoop.hbase.zookeeper.ZKClusterId;<a name="line.199"></a>
+<span class="sourceLineNo">200</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.200"></a>
+<span class="sourceLineNo">201</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.201"></a>
+<span class="sourceLineNo">202</span>import org.apache.hadoop.hbase.zookeeper.ZNodePaths;<a name="line.202"></a>
+<span class="sourceLineNo">203</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.203"></a>
+<span class="sourceLineNo">204</span>import org.apache.zookeeper.KeeperException;<a name="line.204"></a>
+<span class="sourceLineNo">205</span>import org.eclipse.jetty.server.Server;<a name="line.205"></a>
+<span class="sourceLineNo">206</span>import org.eclipse.jetty.server.ServerConnector;<a name="line.206"></a>
+<span class="sourceLineNo">207</span>import org.eclipse.jetty.servlet.ServletHolder;<a name="line.207"></a>
+<span class="sourceLineNo">208</span>import org.eclipse.jetty.webapp.WebAppContext;<a name="line.208"></a>
+<span class="sourceLineNo">209</span>import org.slf4j.Logger;<a name="line.209"></a>
+<span class="sourceLineNo">210</span>import org.slf4j.LoggerFactory;<a name="line.210"></a>
+<span class="sourceLineNo">211</span><a name="line.211"></a>
+<span class="sourceLineNo">212</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.212"></a>
+<span class="sourceLineNo">213</span>import org.apache.hbase.thirdparty.com.google.common.collect.Lists;<a name="line.213"></a>
+<span class="sourceLineNo">214</span>import org.apache.hbase.thirdparty.com.google.common.collect.Maps;<a name="line.214"></a>
+<span class="sourceLineNo">215</span><a name="line.215"></a>
+<span class="sourceLineNo">216</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.216"></a>
+<span class="sourceLineNo">217</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoResponse.CompactionState;<a name="line.217"></a>
+<span class="sourceLineNo">218</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.Quotas;<a name="line.218"></a>
+<span class="sourceLineNo">219</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.SpaceViolationPolicy;<a name="line.219"></a>
+<span class="sourceLineNo">220</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;<a name="line.220"></a>
+<span class="sourceLineNo">221</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos;<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> * HMaster is the "master server" for HBase. An HBase cluster has one active<a name="line.224"></a>
+<span class="sourceLineNo">225</span> * master. If many masters are started, all compete. Whichever wins goes on to<a name="line.225"></a>
+<span class="sourceLineNo">226</span> * run the cluster. All others park themselves in their constructor until<a name="line.226"></a>
+<span class="sourceLineNo">227</span> * master or cluster shutdown or until the active master loses its lease in<a name="line.227"></a>
+<span class="sourceLineNo">228</span> * zookeeper. Thereafter, all running master jostle to take over master role.<a name="line.228"></a>
+<span class="sourceLineNo">229</span> *<a name="line.229"></a>
+<span class="sourceLineNo">230</span> * <p>The Master can be asked shutdown the cluster. See {@link #shutdown()}. In<a name="line.230"></a>
+<span class="sourceLineNo">231</span> * this case it will tell all regionservers to go down and then wait on them<a name="line.231"></a>
+<span class="sourceLineNo">232</span> * all reporting in that they are down. This master will then shut itself down.<a name="line.232"></a>
+<span class="sourceLineNo">233</span> *<a name="line.233"></a>
+<span class="sourceLineNo">234</span> * <p>You can also shutdown just this master. Call {@link #stopMaster()}.<a name="line.234"></a>
+<span class="sourceLineNo">235</span> *<a name="line.235"></a>
+<span class="sourceLineNo">236</span> * @see org.apache.zookeeper.Watcher<a name="line.236"></a>
+<span class="sourceLineNo">237</span> */<a name="line.237"></a>
+<span class="sourceLineNo">238</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS)<a name="line.238"></a>
+<span class="sourceLineNo">239</span>@SuppressWarnings("deprecation")<a name="line.239"></a>
+<span class="sourceLineNo">240</span>public class HMaster extends HRegionServer implements MasterServices {<a name="line.240"></a>
+<span class="sourceLineNo">241</span> private static Logger LOG = LoggerFactory.getLogger(HMaster.class);<a name="line.241"></a>
+<span class="sourceLineNo">242</span><a name="line.242"></a>
+<span class="sourceLineNo">243</span> /**<a name="line.243"></a>
+<span class="sourceLineNo">244</span> * Protection against zombie master. Started once Master accepts active responsibility and<a name="line.244"></a>
+<span class="sourceLineNo">245</span> * starts taking over responsibilities. Allows a finite time window before giving up ownership.<a name="line.245"></a>
+<span class="sourceLineNo">246</span> */<a name="line.246"></a>
+<span class="sourceLineNo">247</span> private static class InitializationMonitor extends HasThread {<a name="line.247"></a>
+<span class="sourceLineNo">248</span> /** The amount of time in milliseconds to sleep before checking initialization status. */<a name="line.248"></a>
+<span class="sourceLineNo">249</span> public static final String TIMEOUT_KEY = "hbase.master.initializationmonitor.timeout";<a name="line.249"></a>
+<span class="sourceLineNo">250</span> public static final long TIMEOUT_DEFAULT = TimeUnit.MILLISECONDS.convert(15, TimeUnit.MINUTES);<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> * When timeout expired and initialization has not complete, call {@link System#exit(int)} when<a name="line.253"></a>
+<span class="sourceLineNo">254</span> * true, do nothing otherwise.<a name="line.254"></a>
+<span class="sourceLineNo">255</span> */<a name="line.255"></a>
+<span class="sourceLineNo">256</span> public static final String HALT_KEY = "hbase.master.initializationmonitor.haltontimeout";<a name="line.256"></a>
+<span class="sourceLineNo">257</span> public static final boolean HALT_DEFAULT = false;<a name="line.257"></a>
+<span class="sourceLineNo">258</span><a name="line.258"></a>
+<span class="sourceLineNo">259</span> private final HMaster master;<a name="line.259"></a>
+<span class="sourceLineNo">260</span> private final long timeout;<a name="line.260"></a>
+<span class="sourceLineNo">261</span> private final boolean haltOnTimeout;<a name="line.261"></a>
+<span class="sourceLineNo">262</span><a name="line.262"></a>
+<span class="sourceLineNo">263</span> /** Creates a Thread that monitors the {@link #isInitialized()} state. */<a name="line.263"></a>
+<span class="sourceLineNo">264</span> InitializationMonitor(HMaster master) {<a name="line.264"></a>
+<span class="sourceLineNo">265</span> super("MasterInitializationMonitor");<a name="line.265"></a>
+<span class="sourceLineNo">266</span> this.master = master;<a name="line.266"></a>
+<span class="sourceLineNo">267</span> this.timeout = master.getConfiguration().getLong(TIMEOUT_KEY, TIMEOUT_DEFAULT);<a name="line.267"></a>
+<span class="sourceLineNo">268</span> this.haltOnTimeout = master.getConfiguration().getBoolean(HALT_KEY, HALT_DEFAULT);<a name="line.268"></a>
+<span class="sourceLineNo">269</span> this.setDaemon(true);<a name="line.269"></a>
+<span class="sourceLineNo">270</span> }<a name="line.270"></a>
+<span class="sourceLineNo">271</span><a name="line.271"></a>
+<span class="sourceLineNo">272</span> @Override<a name="line.272"></a>
+<span class="sourceLineNo">273</span> public void run() {<a name="line.273"></a>
+<span class="sourceLineNo">274</span> try {<a name="line.274"></a>
+<span class="sourceLineNo">275</span> while (!master.isStopped() && master.isActiveMaster()) {<a name="line.275"></a>
+<span class="sourceLineNo">276</span> Thread.sleep(timeout);<a name="line.276"></a>
+<span class="sourceLineNo">277</span> if (master.isInitialized()) {<a name="line.277"></a>
+<span class="sourceLineNo">278</span> LOG.debug("Initialization completed within allotted tolerance. Monitor exiting.");<a name="line.278"></a>
+<span class="sourceLineNo">279</span> } else {<a name="line.279"></a>
+<span class="sourceLineNo">280</span> LOG.error("Master failed to complete initialization after " + timeout + "ms. Please"<a name="line.280"></a>
+<span class="sourceLineNo">281</span> + " consider submitting a bug report including a thread dump of this process.");<a name="line.281"></a>
+<span class="sourceLineNo">282</span> if (haltOnTimeout) {<a name="line.282"></a>
+<span class="sourceLineNo">283</span> LOG.error("Zombie Master exiting. Thread dump to stdout");<a name="line.283"></a>
+<span class="sourceLineNo">284</span> Threads.printThreadInfo(System.out, "Zombie HMaster");<a name="line.284"></a>
+<span class="sourceLineNo">285</span> System.exit(-1);<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> } catch (InterruptedException ie) {<a name="line.289"></a>
+<span class="sourceLineNo">290</span> LOG.trace("InitMonitor thread interrupted. Existing.");<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> }<a name="line.293"></a>
+<span class="sourceLineNo">294</span><a name="line.294"></a>
+<span class="sourceLineNo">295</span> // MASTER is name of the webapp and the attribute name used stuffing this<a name="line.295"></a>
+<span class="sourceLineNo">296</span> //instance into web context.<a name="line.296"></a>
+<span class="sourceLineNo">297</span> public static final String MASTER = "master";<a name="line.297"></a>
+<span class="sourceLineNo">298</span><a name="line.298"></a>
+<span class="sourceLineNo">299</span> // Manager and zk listener for master election<a name="line.299"></a>
+<span class="sourceLineNo">300</span> private final ActiveMasterManager activeMasterManager;<a name="line.300"></a>
+<span class="sourceLineNo">301</span> // Region server tracker<a name="line.301"></a>
+<span class="sourceLineNo">302</span> private RegionServerTracker regionServerTracker;<a name="line.302"></a>
+<span class="sourceLineNo">303</span> // Draining region server tracker<a name="line.303"></a>
+<span class="sourceLineNo">304</span> private DrainingServerTracker drainingServerTracker;<a name="line.304"></a>
+<span class="sourceLineNo">305</span> // Tracker for load balancer state<a name="line.305"></a>
+<span class="sourceLineNo">306</span> LoadBalancerTracker loadBalancerTracker;<a name="line.306"></a>
+<span class="sourceLineNo">307</span> // Tracker for meta location, if any client ZK quorum specified<a name="line.307"></a>
+<span class="sourceLineNo">308</span> MetaLocationSyncer metaLocationSyncer;<a name="line.308"></a>
+<span class="sourceLineNo">309</span> // Tracker for active master location, if any client ZK quorum specified<a name="line.309"></a>
+<span class="sourceLineNo">310</span> MasterAddressSyncer masterAddressSyncer;<a name="line.310"></a>
<span class="sourceLineNo">311</span><a name="line.311"></a>
-<span class="sourceLineNo">312</span> // Tracker for region normalizer state<a name="line.312"></a>
-<span class="sourceLineNo">313</span> private RegionNormalizerTracker regionNormalizerTracker;<a name="line.313"></a>
+<span class="sourceLineNo">312</span> // Tracker for split and merge state<a name="line.312"></a>
+<span class="sourceLineNo">313</span> private SplitOrMergeTracker splitOrMergeTracker;<a name="line.313"></a>
<span class="sourceLineNo">314</span><a name="line.314"></a>
-<span class="sourceLineNo">315</span> //Tracker for master maintenance mode setting<a name="line.315"></a>
-<span class="sourceLineNo">316</span> private MasterMaintenanceModeTracker maintenanceModeTracker;<a name="line.316"></a>
+<span class="sourceLineNo">315</span> // Tracker for region normalizer state<a name="line.315"></a>
+<span class="sourceLineNo">316</span> private RegionNormalizerTracker regionNormalizerTracker;<a name="line.316"></a>
<span class="sourceLineNo">317</span><a name="line.317"></a>
-<span class="sourceLineNo">318</span> private ClusterSchemaService clusterSchemaService;<a name="line.318"></a>
-<span class="sourceLineNo">319</span><a name="line.319"></a>
-<span class="sourceLineNo">320</span> public static final String HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS =<a name="line.320"></a>
-<span class="sourceLineNo">321</span> "hbase.master.wait.on.service.seconds";<a name="line.321"></a>
-<span class="sourceLineNo">322</span> public static final int DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS = 5 * 60;<a name="line.322"></a>
-<span class="sourceLineNo">323</span><a name="line.323"></a>
-<span class="sourceLineNo">324</span> // Metrics for the HMaster<a name="line.324"></a>
-<span class="sourceLineNo">325</span> final MetricsMaster metricsMaster;<a name="line.325"></a>
-<span class="sourceLineNo">326</span> // file system manager for the master FS operations<a name="line.326"></a>
-<span class="sourceLineNo">327</span> private MasterFileSystem fileSystemManager;<a name="line.327"></a>
-<span class="sourceLineNo">328</span> private MasterWalManager walManager;<a name="line.328"></a>
-<span class="sourceLineNo">329</span><a name="line.329"></a>
-<span class="sourceLineNo">330</span> // server manager to deal with region server info<a name="line.330"></a>
-<span class="sourceLineNo">331</span> private volatile ServerManager serverManager;<a name="line.331"></a>
+<span class="sourceLineNo">318</span> //Tracker for master maintenance mode setting<a name="line.318"></a>
+<span class="sourceLineNo">319</span> private MasterMaintenanceModeTracker maintenanceModeTracker;<a name="line.319"></a>
+<span class="sourceLineNo">320</span><a name="line.320"></a>
+<span class="sourceLineNo">321</span> private ClusterSchemaService clusterSchemaService;<a name="line.321"></a>
+<span class="sourceLineNo">322</span><a name="line.322"></a>
+<span class="sourceLineNo">323</span> public static final String HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS =<a name="line.323"></a>
+<span class="sourceLineNo">324</span> "hbase.master.wait.on.service.seconds";<a name="line.324"></a>
+<span class="sourceLineNo">325</span> public static final int DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS = 5 * 60;<a name="line.325"></a>
+<span class="sourceLineNo">326</span><a name="line.326"></a>
+<span class="sourceLineNo">327</span> // Metrics for the HMaster<a name="line.327"></a>
+<span class="sourceLineNo">328</span> final MetricsMaster metricsMaster;<a name="line.328"></a>
+<span class="sourceLineNo">329</span> // file system manager for the master FS operations<a name="line.329"></a>
+<span class="sourceLineNo">330</span> private MasterFileSystem fileSystemManager;<a name="line.330"></a>
+<span class="sourceLineNo">331</span> private MasterWalManager walManager;<a name="line.331"></a>
<span class="sourceLineNo">332</span><a name="line.332"></a>
-<span class="sourceLineNo">333</span> // manager of assignment nodes in zookeeper<a name="line.333"></a>
-<span class="sourceLineNo">334</span> private AssignmentManager assignmentManager;<a name="line.334"></a>
+<span class="sourceLineNo">333</span> // server manager to deal with region server info<a name="line.333"></a>
+<span class="sourceLineNo">334</span> private volatile ServerManager serverManager;<a name="line.334"></a>
<span class="sourceLineNo">335</span><a name="line.335"></a>
-<span class="sourceLineNo">336</span> // manager of replication<a name="line.336"></a>
-<span class="sourceLineNo">337</span> private ReplicationPeerManager replicationPeerManager;<a name="line.337"></a>
+<span class="sourceLineNo">336</span> // manager of assignment nodes in zookeeper<a name="line.336"></a>
+<span class="sourceLineNo">337</span> private AssignmentManager assignmentManager;<a name="line.337"></a>
<span class="sourceLineNo">338</span><a name="line.338"></a>
-<span class="sourceLineNo">339</span> // buffer for "fatal error" notices from region servers<a name="line.339"></a>
-<span class="sourceLineNo">340</span> // in the cluster. This is only used for assisting<a name="line.340"></a>
-<span class="sourceLineNo">341</span> // operations/debugging.<a name="line.341"></a>
-<span class="sourceLineNo">342</span> MemoryBoundedLogMessageBuffer rsFatals;<a name="line.342"></a>
-<span class="sourceLineNo">343</span><a name="line.343"></a>
-<span class="sourceLineNo">344</span> // flag set after we become the active master (used for testing)<a name="line.344"></a>
-<span class="sourceLineNo">345</span> private volatile boolean activeMaster = false;<a name="line.345"></a>
+<span class="sourceLineNo">339</span> // manager of replication<a name="line.339"></a>
+<span class="sourceLineNo">340</span> private ReplicationPeerManager replicationPeerManager;<a name="line.340"></a>
+<span class="sourceLineNo">341</span><a name="line.341"></a>
+<span class="sourceLineNo">342</span> // buffer for "fatal error" notices from region servers<a name="line.342"></a>
+<span class="sourceLineNo">343</span> // in the cluster. This is only used for assisting<a name="line.343"></a>
+<span class="sourceLineNo">344</span> // operations/debugging.<a name="line.344"></a>
+<span class="sourceLineNo">345</span> MemoryBoundedLogMessageBuffer rsFatals;<a name="line.345"></a>
<span class="sourceLineNo">346</span><a name="line.346"></a>
-<span class="sourceLineNo">347</span> // flag set after we complete initialization once active<a name="line.347"></a>
-<span class="sourceLineNo">348</span> private final ProcedureEvent<?> initialized = new ProcedureEvent<>("master initialized");<a name="line.348"></a>
+<span class="sourceLineNo">347</span> // flag set after we become the active master (used for testing)<a name="line.347"></a>
+<span class="sourceLineNo">348</span> private volatile boolean activeMaster = false;<a name="line.348"></a>
<span class="sourceLineNo">349</span><a name="line.349"></a>
-<span class="sourceLineNo">350</span> // flag set after master services are started,<a name="line.350"></a>
-<span class="sourceLineNo">351</span> // initialization may have not completed yet.<a name="line.351"></a>
-<span class="sourceLineNo">352</span> volatile boolean serviceStarted = false;<a name="line.352"></a>
-<span class="sourceLineNo">353</span><a name="line.353"></a>
-<span class="sourceLineNo">354</span> // flag set after we complete assignMeta.<a name="line.354"></a>
-<span class="sourceLineNo">355</span> private final ProcedureEvent<?> serverCrashProcessingEnabled =<a name="line.355"></a>
-<span class="sourceLineNo">356</span> new ProcedureEvent<>("server crash processing");<a name="line.356"></a>
-<span class="sourceLineNo">357</span><a name="line.357"></a>
-<span class="sourceLineNo">358</span> // Maximum time we should run balancer for<a name="line.358"></a>
-<span class="sourceLineNo">359</span> private final int maxBlancingTime;<a name="line.359"></a>
-<span class="sourceLineNo">360</span> // Maximum percent of regions in transition when balancing<a name="line.360"></a>
-<span class="sourceLineNo">361</span> private final double maxRitPercent;<a name="line.361"></a>
-<span class="sourceLineNo">362</span><a name="line.362"></a>
-<span class="sourceLineNo">363</span> private final LockManager lockManager = new LockManager(this);<a name="line.363"></a>
-<span class="sourceLineNo">364</span><a name="line.364"></a>
-<span class="sourceLineNo">365</span> private LoadBalancer balancer;<a name="line.365"></a>
-<span class="sourceLineNo">366</span> private RegionNormalizer normalizer;<a name="line.366"></a>
-<span class="sourceLineNo">367</span> private BalancerChore balancerChore;<a name="line.367"></a>
-<span class="sourceLineNo">368</span> private RegionNormalizerChore normalizerChore;<a name="line.368"></a>
-<span class="sourceLineNo">369</span> private ClusterStatusChore clusterStatusChore;<a name="line.369"></a>
-<span class="sourceLineNo">370</span> private ClusterStatusPublisher clusterStatusPublisherChore = null;<a name="line.370"></a>
-<span class="sourceLineNo">371</span><a name="line.371"></a>
-<span class="sourceLineNo">372</span> CatalogJanitor catalogJanitorChore;<a name="line.372"></a>
-<span class="sourceLineNo">373</span> private LogCleaner logCleaner;<a name="line.373"></a>
-<span class="sourceLineNo">374</span> private HFileCleaner hfileCleaner;<a name="line.374"></a>
-<span class="sourceLineNo">375</span> private ReplicationBarrierCleaner replicationBarrierCleaner;<a name="line.375"></a>
-<span class="sourceLineNo">376</span> private ExpiredMobFileCleanerChore expiredMobFileCleanerChore;<a name="line.376"></a>
-<span class="sourceLineNo">377</span> private MobCompactionChore mobCompactChore;<a name="line.377"></a>
-<span class="sourceLineNo">378</span> private MasterMobCompactionThread mobCompactThread;<a name="line.378"></a>
-<span class="sourceLineNo">379</span> // used to synchronize the mobCompactionStates<a name="line.379"></a>
-<span class="sourceLineNo">380</span> private final IdLock mobCompactionLock = new IdLock();<a name="line.380"></a>
-<span class="sourceLineNo">381</span> // save the information of mob compactions in tables.<a name="line.381"></a>
-<span class="sourceLineNo">382</span> // the key is table name, the value is the number of compactions in that table.<a name="line.382"></a>
-<span class="sourceLineNo">383</span> private Map<TableName, AtomicInteger> mobCompactionStates = Maps.newConcurrentMap();<a name="line.383"></a>
-<span class="sourceLineNo">384</span><a name="line.384"></a>
-<span class="sourceLineNo">385</span> MasterCoprocessorHost cpHost;<a name="line.385"></a>
-<span class="sourceLineNo">386</span><a name="line.386"></a>
-<span class="sourceLineNo">387</span> private final boolean preLoadTableDescriptors;<a name="line.387"></a>
-<span class="sourceLineNo">388</span><a name="line.388"></a>
-<span class="sourceLineNo">389</span> // Time stamps for when a hmaster became active<a name="line.389"></a>
-<span class="sourceLineNo">390</span> private long masterActiveTime;<a name="line.390"></a>
-<span class="sourceLineNo">391</span><a name="line.391"></a>
-<span class="sourceLineNo">392</span> // Time stamp for when HMaster finishes becoming Active Master<a name="line.392"></a>
-<span class="sourceLineNo">393</span> private long masterFinishedInitializationTime;<a name="line.393"></a>
-<span class="sourceLineNo">394</span><a name="line.394"></a>
-<span class="sourceLineNo">395</span> //should we check the compression codec type at master side, default true, HBASE-6370<a name="line.395"></a>
-<span class="sourceLineNo">396</span> private final boolean masterCheckCompression;<a name="line.396"></a>
-<span class="sourceLineNo">397</span><a name="line.397"></a>
-<span class="sourceLineNo">398</span> //should we check encryption settings at master side, default true<a name="line.398"></a>
-<span class="sourceLineNo">399</span> private final boolean masterCheckEncryption;<a name="line.399"></a>
-<span class="sourceLineNo">400</span><a name="line.400"></a>
-<span class="sourceLineNo">401</span> Map<String, Service> coprocessorServiceHandlers = Maps.newHashMap();<a name="line.401"></a>
-<span class="sourceLineNo">402</span><a name="line.402"></a>
-<span class="sourceLineNo">403</span> // monitor for snapshot of hbase tables<a name="line.403"></a>
-<span class="sourceLineNo">404</span> SnapshotManager snapshotManager;<a name="line.404"></a>
-<span class="sourceLineNo">405</span> // monitor for distributed procedures<a name="line.405"></a>
-<span class="sourceLineNo">406</span> private MasterProcedureManagerHost mpmHost;<a name="line.406"></a>
-<span class="sourceLineNo">407</span><a name="line.407"></a>
-<span class="sourceLineNo">408</span> // it is assigned after 'initialized' guard set to true, so should be volatile<a name="line.408"></a>
-<span class="sourceLineNo">409</span> private volatile MasterQuotaManager quotaManager;<a name="line.409"></a>
-<span class="sourceLineNo">410</span> private SpaceQuotaSnapshotNotifier spaceQuotaSnapshotNotifier;<a name="line.410"></a>
-<span class="sourceLineNo">411</span> private QuotaObserverChore quotaObserverChore;<a name="line.411"></a>
-<span class="sourceLineNo">412</span> private SnapshotQuotaObserverChore snapshotQuotaChore;<a name="line.412"></a>
-<span class="sourceLineNo">413</span><a name="line.413"></a>
-<span class="sourceLineNo">414</span> private ProcedureExecutor<MasterProcedureEnv> procedureExecutor;<a name="line.414"></a>
-<span class="sourceLineNo">415</span> private WALProcedureStore procedureStore;<a name="line.415"></a>
-<span class="sourceLineNo">416</span><a name="line.416"></a>
-<span class="sourceLineNo">417</span> // handle table states<a name="line.417"></a>
-<span class="sourceLineNo">418</span> private TableStateManager tableStateManager;<a name="line.418"></a>
-<span class="sourceLineNo">419</span><a name="line.419"></a>
-<span class="sourceLineNo">420</span> private long splitPlanCount;<a name="line.420"></a>
-<span class="sourceLineNo">421</span> private long mergePlanCount;<a name="line.421"></a>
-<span class="sourceLineNo">422</span><a name="line.422"></a>
-<span class="sourceLineNo">423</span> /* Handle favored nodes information */<a name="line.423"></a>
-<span class="sourceLineNo">424</span> private FavoredNodesManager favoredNodesManager;<a name="line.424"></a>
-<span class="sourceLineNo">425</span><a name="line.425"></a>
-<span class="sourceLineNo">426</span> /** jetty server for master to redirect requests to regionserver infoServer */<a name="line.426"></a>
-<span class="sourceLineNo">427</span> private Server masterJettyServer;<a name="line.427"></a>
-<span class="sourceLineNo">428</span><a name="line.428"></a>
-<span class="sourceLineNo">429</span> public static class RedirectServlet extends HttpServlet {<a name="line.429"></a>
-<span class="sourceLineNo">430</span> private static final long serialVersionUID = 2894774810058302473L;<a name="line.430"></a>
-<span class="sourceLineNo">431</span> private final int regionServerInfoPort;<a name="line.431"></a>
-<span class="sourceLineNo">432</span> private final String regionServerHostname;<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> * @param infoServer that we're trying to send all requests to<a name="line.435"></a>
-<span class="sourceLineNo">436</span> * @param hostname may be null. if given, will be used for redirects instead of host from client.<a name="line.436"></a>
-<span class="sourceLineNo">437</span> */<a name="line.437"></a>
-<span class="sourceLineNo">438</span> public RedirectServlet(InfoServer infoServer, String hostname) {<a name="line.438"></a>
-<span class="sourceLineNo">439</span> regionServerInfoPort = infoServer.getPort();<a name="line.439"></a>
-<span class="sourceLineNo">440</span> regionServerHostname = hostname;<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> @Override<a name="line.443"></a>
-<span class="sourceLineNo">444</span> public void doGet(HttpServletRequest request,<a name="line.444"></a>
-<span class="sourceLineNo">445</span> HttpServletResponse response) throws ServletException, IOException {<a name="line.445"></a>
-<span class="sourceLineNo">446</span> String redirectHost = regionServerHostname;<a name="line.446"></a>
-<span class="sourceLineNo">447</span> if(redirectHost == null) {<a name="line.447"></a>
-<span class="sourceLineNo">448</span> redirectHost = request.getServerName();<a name="line.448"></a>
-<span class="sourceLineNo">449</span> if(!Addressing.isLocalAddress(InetAddress.getByName(redirectHost))) {<a name="line.449"></a>
-<span class="sourceLineNo">450</span> LOG.warn("Couldn't resolve '" + redirectHost + "' as an address local to this node and '" +<a name="line.450"></a>
-<span class="sourceLineNo">451</span> MASTER_HOSTNAME_KEY + "' is not set; client will get a HTTP 400 response. If " +<a name="line.451"></a>
-<span class="sourceLineNo">452</span> "your HBase deployment relies on client accessible names that the region server process " +<a name="line.452"></a>
-<span class="sourceLineNo">453</span> "can't resolve locally, then you should set the previously mentioned configuration variable " +<a name="line.453"></a>
-<span class="sourceLineNo">454</span> "to an appropriate hostname.");<a name="line.454"></a>
-<span class="sourceLineNo">455</span> // no sending client provided input back to the client, so the goal host is just in the logs.<a name="line.455"></a>
-<span class="sourceLineNo">456</span> response.sendError(400, "Request was to a host that I can't resolve for any of the network interfaces on " +<a name="line.456"></a>
-<span class="sourceLineNo">457</span> "this node. If this is due to an intermediary such as an HTTP load balancer or other proxy, your HBase " +<a name="line.457"></a>
-<span class="sourceLineNo">458</span> "administrator can set '" + MASTER_HOSTNAME_KEY + "' to point to the correct hostname.");<a name="line.458"></a>
-<span class="sourceLineNo">459</span> return;<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> // TODO this scheme should come from looking at the scheme registered in the infoserver's http server for the<a name="line.462"></a>
-<span class="sourceLineNo">463</span> // host and port we're using, but it's buried way too deep to do that ATM.<a name="line.463"></a>
-<span class="sourceLineNo">464</span> String redirectUrl = request.getScheme() + "://"<a name="line.464"></a>
-<span class="sourceLineNo">465</span> + redirectHost + ":" + regionServerInfoPort<a name="line.465"></a>
-<span class="sourceLineNo">466</span> + request.getRequestURI();<a name="line.466"></a>
-<span class="sourceLineNo">467</span> response.sendRedirect(redirectUrl);<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><a name="line.470"></a>
-<span class="sourceLineNo">471</span> /**<a name="line.471"></a>
-<span class="sourceLineNo">472</span> * Initializes the HMaster. The steps are as follows:<a name="line.472"></a>
-<span class="sourceLineNo">473</span> * <p><a name="line.473"></a>
-<span class="sourceLineNo">474</span> * <ol><a name="line.474"></a>
-<span class="sourceLineNo">475</span> * <li>Initialize the local HRegionServer<a name="line.475"></a>
-<span class="sourceLineNo">476</span> * <li>Start the ActiveMasterManager.<a name="line.476"></a>
-<span class="sourceLineNo">477</span> * </ol><a name="line.477"></a>
-<span class="sourceLineNo">478</span> * <p><a name="line.478"></a>
-<span class="sourceLineNo">479</span> * Remaining steps of initialization occur in<a name="line.479"></a>
-<span class="sourceLineNo">480</span> * #finishActiveMasterInitialization(MonitoredTask) after<a name="line.480"></a>
-<span class="sourceLineNo">481</span> * the master becomes the active one.<a name="line.481"></a>
-<span class="sourceLineNo">482</span> */<a name="line.482"></a>
-<span class="sourceLineNo">483</span> public HMaster(final Configuration conf)<a name="line.483"></a>
-<span class="sourceLineNo">484</span> throws IOException, KeeperException {<a name="line.484"></a>
-<span class="sourceLineNo">485</span> super(conf);<a name="line.485"></a>
-<span class="sourceLineNo">486</span> TraceUtil.initTracer(conf);<a name="line.486"></a>
-<span class="sourceLineNo">487</span> try {<a name="line.487"></a>
-<span class="sourceLineNo">488</span> this.rsFatals = new MemoryBoundedLogMessageBuffer(<a name="line.488"></a>
-<span class="sourceLineNo">489</span> conf.getLong("hbase.master.buffer.for.rs.fatals", 1 * 1024 * 1024));<a name="line.489"></a>
-<span class="sourceLineNo">490</span> LOG.info("hbase.rootdir=" + getRootDir() +<a name="line.490"></a>
-<span class="sourceLineNo">491</span> ", hbase.cluster.distributed=" + this.conf.getBoolean(HConstants.CLUSTER_DISTRIBUTED, false));<a name="line.491"></a>
-<span class="sourceLineNo">492</span><a name="line.492"></a>
-<span class="sourceLineNo">493</span> // Disable usage of meta replicas in the master<a name="line.493"></a>
-<span class="sourceLineNo">494</span> this.conf.setBoolean(HConstants.USE_META_REPLICAS, false);<a name="line.494"></a>
-<span class="sourceLineNo">495</span><a name="line.495"></a>
-<span class="sourceLineNo">496</span> decorateMasterConfiguration(this.conf);<a name="line.496"></a>
-<span class="sourceLineNo">497</span><a name="line.497"></a>
-<span class="sourceLineNo">498</span> // Hack! Maps DFSClient => Master for logs. HDFS made this<a name="line.498"></a>
-<span class="sourceLineNo">499</span> // config param for task trackers, but we can piggyback off of it.<a name="line.499"></a>
-<span class="sourceLineNo">500</span> if (this.conf.get("mapreduce.task.attempt.id") == null) {<a name="line.500"></a>
-<span class="sourceLineNo">501</span> this.conf.set("mapreduce.task.attempt.id", "hb_m_" + this.serverName.toString());<a name="line.501"></a>
-<span class="sourceLineNo">502</span> }<a name="line.502"></a>
-<span class="sourceLineNo">503</span><a name="line.503"></a>
-<span class="sourceLineNo">504</span> // should we check the compression codec type at master side, default true, HBASE-6370<a name="line.504"></a>
-<span class="sourceLineNo">505</span> this.masterCheckCompression = conf.getBoolean("hbase.master.check.compression", true);<a name="line.505"></a>
-<span class="sourceLineNo">506</span><a name="line.506"></a>
-<span class="sourceLineNo">507</span> // should we check encryption settings at master side, default true<a name="line.507"></a>
-<span class="sourceLineNo">508</span> this.masterCheckEncryption = conf.getBoolean("hbase.master.check.encryption", true);<a name="line.508"></a>
-<span class="sourceLineNo">509</span><a name="line.509"></a>
-<span class="sourceLineNo">510</span> this.metricsMaster = new MetricsMaster(new MetricsMasterWrapperImpl(this));<a name="line.510"></a>
-<span class="sourceLineNo">511</span><a name="line.511"></a>
-<span class="sourceLineNo">512</span> // preload table descriptor at startup<a name="line.512"></a>
-<span class="sourceLineNo">513</span> this.preLoadTableDescriptors = conf.getBoolean("hbase.master.preload.tabledescriptors", true);<a name="line.513"></a>
-<span class="sourceLineNo">514</span><a name="line.514"></a>
-<span class="sourceLineNo">515</span> this.maxBlancingTime = getMaxBalancingTime();<a name="line.515"></a>
-<span class="sourceLineNo">516</span> this.maxRitPercent = conf.getDouble(HConstants.HBASE_MASTER_BALANCER_MAX_RIT_PERCENT,<a name="line.516"></a>
-<span class="sourceLineNo">517</span> HConstants.DEFAULT_HBASE_MASTER_BALANCER_MAX_RIT_PERCENT);<a name="line.517"></a>
-<span class="sourceLineNo">518</span><a name="line.518"></a>
-<span class="sourceLineNo">519</span> // Do we publish the status?<a name="line.519"></a>
-<span class="sourceLineNo">520</span><a name="line.520"></a>
-<span class="sourceLineNo">521</span> boolean shouldPublish = conf.getBoolean(HConstants.STATUS_PUBLISHED,<a name="line.521"></a>
-<span class="sourceLineNo">522</span> HConstants.STATUS_PUBLISHED_DEFAULT);<a name="line.522"></a>
-<span class="sourceLineNo">523</span> Class<? extends ClusterStatusPublisher.Publisher> publisherClass =<a name="line.523"></a>
-<span class="sourceLineNo">524</span> conf.getClass(ClusterStatusPublisher.STATUS_PUBLISHER_CLASS,<a name="line.524"></a>
-<span class="sourceLineNo">525</span> ClusterStatusPublisher.DEFAULT_STATUS_PUBLISHER_CLASS,<a name="line.525"></a>
-<span class="sourceLineNo">526</span> ClusterStatusPublisher.Publisher.class);<a name="line.526"></a>
-<span class="sourceLineNo">527</span><a name="line.527"></a>
-<span class="sourceLineNo">528</span> if (shouldPublish) {<a name="line.528"></a>
-<span class="sourceLineNo">529</span> if (publisherClass == null) {<a name="line.529"></a>
-<span class="sourceLineNo">530</span> LOG.warn(HConstants.STATUS_PUBLISHED + " is true, but " +<a name="line.530"></a>
-<span class="sourceLineNo">531</span> ClusterStatusPublisher.DEFAULT_STATUS_PUBLISHER_CLASS +<a name="line.531"></a>
-<span class="sourceLineNo">532</span> " is not set - not publishing status");<a name="line.532"></a>
-<span class="sourceLineNo">533</span> } else {<a name="line.533"></a>
-<span class="sourceLineNo">534</span> clusterStatusPublisherChore = new ClusterStatusPublisher(this, conf, publisherClass);<a name="line.534"></a>
-<span class="sou
<TRUNCATED>
[18/51] [partial] hbase-site git commit: Published site at
9101fc246f86445006bfbcdfda5cc495016dc280.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.TableVisitorBase.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.TableVisitorBase.html b/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.TableVisitorBase.html
index fea2b5a..c7a6cc4 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.TableVisitorBase.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.TableVisitorBase.html
@@ -1354,816 +1354,824 @@
<span class="sourceLineNo">1346</span> */<a name="line.1346"></a>
<span class="sourceLineNo">1347</span> public static void putsToMetaTable(final Connection connection, final List<Put> ps)<a name="line.1347"></a>
<span class="sourceLineNo">1348</span> throws IOException {<a name="line.1348"></a>
-<span class="sourceLineNo">1349</span> try (Table t = getMetaHTable(connection)) {<a name="line.1349"></a>
-<span class="sourceLineNo">1350</span> debugLogMutations(ps);<a name="line.1350"></a>
-<span class="sourceLineNo">1351</span> t.put(ps);<a name="line.1351"></a>
-<span class="sourceLineNo">1352</span> }<a name="line.1352"></a>
-<span class="sourceLineNo">1353</span> }<a name="line.1353"></a>
-<span class="sourceLineNo">1354</span><a name="line.1354"></a>
-<span class="sourceLineNo">1355</span> /**<a name="line.1355"></a>
-<span class="sourceLineNo">1356</span> * Delete the passed <code>d</code> from the <code>hbase:meta</code> table.<a name="line.1356"></a>
-<span class="sourceLineNo">1357</span> * @param connection connection we're using<a name="line.1357"></a>
-<span class="sourceLineNo">1358</span> * @param d Delete to add to hbase:meta<a name="line.1358"></a>
-<span class="sourceLineNo">1359</span> */<a name="line.1359"></a>
-<span class="sourceLineNo">1360</span> private static void deleteFromMetaTable(final Connection connection, final Delete d)<a name="line.1360"></a>
-<span class="sourceLineNo">1361</span> throws IOException {<a name="line.1361"></a>
-<span class="sourceLineNo">1362</span> List<Delete> dels = new ArrayList<>(1);<a name="line.1362"></a>
-<span class="sourceLineNo">1363</span> dels.add(d);<a name="line.1363"></a>
-<span class="sourceLineNo">1364</span> deleteFromMetaTable(connection, dels);<a name="line.1364"></a>
-<span class="sourceLineNo">1365</span> }<a name="line.1365"></a>
-<span class="sourceLineNo">1366</span><a name="line.1366"></a>
-<span class="sourceLineNo">1367</span> /**<a name="line.1367"></a>
-<span class="sourceLineNo">1368</span> * Delete the passed <code>deletes</code> from the <code>hbase:meta</code> table.<a name="line.1368"></a>
-<span class="sourceLineNo">1369</span> * @param connection connection we're using<a name="line.1369"></a>
-<span class="sourceLineNo">1370</span> * @param deletes Deletes to add to hbase:meta This list should support #remove.<a name="line.1370"></a>
-<span class="sourceLineNo">1371</span> */<a name="line.1371"></a>
-<span class="sourceLineNo">1372</span> private static void deleteFromMetaTable(final Connection connection, final List<Delete> deletes)<a name="line.1372"></a>
-<span class="sourceLineNo">1373</span> throws IOException {<a name="line.1373"></a>
-<span class="sourceLineNo">1374</span> try (Table t = getMetaHTable(connection)) {<a name="line.1374"></a>
-<span class="sourceLineNo">1375</span> debugLogMutations(deletes);<a name="line.1375"></a>
-<span class="sourceLineNo">1376</span> t.delete(deletes);<a name="line.1376"></a>
-<span class="sourceLineNo">1377</span> }<a name="line.1377"></a>
-<span class="sourceLineNo">1378</span> }<a name="line.1378"></a>
-<span class="sourceLineNo">1379</span><a name="line.1379"></a>
-<span class="sourceLineNo">1380</span> /**<a name="line.1380"></a>
-<span class="sourceLineNo">1381</span> * Deletes some replica columns corresponding to replicas for the passed rows<a name="line.1381"></a>
-<span class="sourceLineNo">1382</span> * @param metaRows rows in hbase:meta<a name="line.1382"></a>
-<span class="sourceLineNo">1383</span> * @param replicaIndexToDeleteFrom the replica ID we would start deleting from<a name="line.1383"></a>
-<span class="sourceLineNo">1384</span> * @param numReplicasToRemove how many replicas to remove<a name="line.1384"></a>
-<span class="sourceLineNo">1385</span> * @param connection connection we're using to access meta table<a name="line.1385"></a>
-<span class="sourceLineNo">1386</span> */<a name="line.1386"></a>
-<span class="sourceLineNo">1387</span> public static void removeRegionReplicasFromMeta(Set<byte[]> metaRows,<a name="line.1387"></a>
-<span class="sourceLineNo">1388</span> int replicaIndexToDeleteFrom, int numReplicasToRemove, Connection connection)<a name="line.1388"></a>
-<span class="sourceLineNo">1389</span> throws IOException {<a name="line.1389"></a>
-<span class="sourceLineNo">1390</span> int absoluteIndex = replicaIndexToDeleteFrom + numReplicasToRemove;<a name="line.1390"></a>
-<span class="sourceLineNo">1391</span> for (byte[] row : metaRows) {<a name="line.1391"></a>
-<span class="sourceLineNo">1392</span> long now = EnvironmentEdgeManager.currentTime();<a name="line.1392"></a>
-<span class="sourceLineNo">1393</span> Delete deleteReplicaLocations = new Delete(row);<a name="line.1393"></a>
-<span class="sourceLineNo">1394</span> for (int i = replicaIndexToDeleteFrom; i < absoluteIndex; i++) {<a name="line.1394"></a>
-<span class="sourceLineNo">1395</span> deleteReplicaLocations.addColumns(getCatalogFamily(),<a name="line.1395"></a>
-<span class="sourceLineNo">1396</span> getServerColumn(i), now);<a name="line.1396"></a>
-<span class="sourceLineNo">1397</span> deleteReplicaLocations.addColumns(getCatalogFamily(),<a name="line.1397"></a>
-<span class="sourceLineNo">1398</span> getSeqNumColumn(i), now);<a name="line.1398"></a>
-<span class="sourceLineNo">1399</span> deleteReplicaLocations.addColumns(getCatalogFamily(),<a name="line.1399"></a>
-<span class="sourceLineNo">1400</span> getStartCodeColumn(i), now);<a name="line.1400"></a>
-<span class="sourceLineNo">1401</span> }<a name="line.1401"></a>
-<span class="sourceLineNo">1402</span> deleteFromMetaTable(connection, deleteReplicaLocations);<a name="line.1402"></a>
-<span class="sourceLineNo">1403</span> }<a name="line.1403"></a>
-<span class="sourceLineNo">1404</span> }<a name="line.1404"></a>
-<span class="sourceLineNo">1405</span><a name="line.1405"></a>
-<span class="sourceLineNo">1406</span> /**<a name="line.1406"></a>
-<span class="sourceLineNo">1407</span> * Execute the passed <code>mutations</code> against <code>hbase:meta</code> table.<a name="line.1407"></a>
-<span class="sourceLineNo">1408</span> * @param connection connection we're using<a name="line.1408"></a>
-<span class="sourceLineNo">1409</span> * @param mutations Puts and Deletes to execute on hbase:meta<a name="line.1409"></a>
-<span class="sourceLineNo">1410</span> * @throws IOException<a name="line.1410"></a>
-<span class="sourceLineNo">1411</span> */<a name="line.1411"></a>
-<span class="sourceLineNo">1412</span> public static void mutateMetaTable(final Connection connection,<a name="line.1412"></a>
-<span class="sourceLineNo">1413</span> final List<Mutation> mutations)<a name="line.1413"></a>
-<span class="sourceLineNo">1414</span> throws IOException {<a name="line.1414"></a>
-<span class="sourceLineNo">1415</span> Table t = getMetaHTable(connection);<a name="line.1415"></a>
-<span class="sourceLineNo">1416</span> try {<a name="line.1416"></a>
-<span class="sourceLineNo">1417</span> debugLogMutations(mutations);<a name="line.1417"></a>
-<span class="sourceLineNo">1418</span> t.batch(mutations, null);<a name="line.1418"></a>
-<span class="sourceLineNo">1419</span> } catch (InterruptedException e) {<a name="line.1419"></a>
-<span class="sourceLineNo">1420</span> InterruptedIOException ie = new InterruptedIOException(e.getMessage());<a name="line.1420"></a>
-<span class="sourceLineNo">1421</span> ie.initCause(e);<a name="line.1421"></a>
-<span class="sourceLineNo">1422</span> throw ie;<a name="line.1422"></a>
-<span class="sourceLineNo">1423</span> } finally {<a name="line.1423"></a>
-<span class="sourceLineNo">1424</span> t.close();<a name="line.1424"></a>
-<span class="sourceLineNo">1425</span> }<a name="line.1425"></a>
-<span class="sourceLineNo">1426</span> }<a name="line.1426"></a>
-<span class="sourceLineNo">1427</span><a name="line.1427"></a>
-<span class="sourceLineNo">1428</span> private static void addRegionStateToPut(Put put, RegionState.State state) throws IOException {<a name="line.1428"></a>
-<span class="sourceLineNo">1429</span> put.add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.1429"></a>
-<span class="sourceLineNo">1430</span> .setRow(put.getRow())<a name="line.1430"></a>
-<span class="sourceLineNo">1431</span> .setFamily(HConstants.CATALOG_FAMILY)<a name="line.1431"></a>
-<span class="sourceLineNo">1432</span> .setQualifier(getRegionStateColumn())<a name="line.1432"></a>
-<span class="sourceLineNo">1433</span> .setTimestamp(put.getTimestamp())<a name="line.1433"></a>
-<span class="sourceLineNo">1434</span> .setType(Cell.Type.Put)<a name="line.1434"></a>
-<span class="sourceLineNo">1435</span> .setValue(Bytes.toBytes(state.name()))<a name="line.1435"></a>
-<span class="sourceLineNo">1436</span> .build());<a name="line.1436"></a>
-<span class="sourceLineNo">1437</span> }<a name="line.1437"></a>
-<span class="sourceLineNo">1438</span><a name="line.1438"></a>
-<span class="sourceLineNo">1439</span> /**<a name="line.1439"></a>
-<span class="sourceLineNo">1440</span> * Adds daughter region infos to hbase:meta row for the specified region. Note that this does not<a name="line.1440"></a>
-<span class="sourceLineNo">1441</span> * add its daughter's as different rows, but adds information about the daughters in the same row<a name="line.1441"></a>
-<span class="sourceLineNo">1442</span> * as the parent. Use<a name="line.1442"></a>
-<span class="sourceLineNo">1443</span> * {@link #splitRegion(Connection, RegionInfo, long, RegionInfo, RegionInfo, ServerName, int)}<a name="line.1443"></a>
-<span class="sourceLineNo">1444</span> * if you want to do that.<a name="line.1444"></a>
-<span class="sourceLineNo">1445</span> * @param connection connection we're using<a name="line.1445"></a>
-<span class="sourceLineNo">1446</span> * @param regionInfo RegionInfo of parent region<a name="line.1446"></a>
-<span class="sourceLineNo">1447</span> * @param splitA first split daughter of the parent regionInfo<a name="line.1447"></a>
-<span class="sourceLineNo">1448</span> * @param splitB second split daughter of the parent regionInfo<a name="line.1448"></a>
-<span class="sourceLineNo">1449</span> * @throws IOException if problem connecting or updating meta<a name="line.1449"></a>
-<span class="sourceLineNo">1450</span> */<a name="line.1450"></a>
-<span class="sourceLineNo">1451</span> public static void addSplitsToParent(Connection connection, RegionInfo regionInfo,<a name="line.1451"></a>
-<span class="sourceLineNo">1452</span> RegionInfo splitA, RegionInfo splitB) throws IOException {<a name="line.1452"></a>
-<span class="sourceLineNo">1453</span> Table meta = getMetaHTable(connection);<a name="line.1453"></a>
-<span class="sourceLineNo">1454</span> try {<a name="line.1454"></a>
-<span class="sourceLineNo">1455</span> Put put = makePutFromRegionInfo(regionInfo, EnvironmentEdgeManager.currentTime());<a name="line.1455"></a>
-<span class="sourceLineNo">1456</span> addDaughtersToPut(put, splitA, splitB);<a name="line.1456"></a>
-<span class="sourceLineNo">1457</span> meta.put(put);<a name="line.1457"></a>
-<span class="sourceLineNo">1458</span> debugLogMutation(put);<a name="line.1458"></a>
-<span class="sourceLineNo">1459</span> LOG.debug("Added region {}", regionInfo.getRegionNameAsString());<a name="line.1459"></a>
-<span class="sourceLineNo">1460</span> } finally {<a name="line.1460"></a>
-<span class="sourceLineNo">1461</span> meta.close();<a name="line.1461"></a>
-<span class="sourceLineNo">1462</span> }<a name="line.1462"></a>
-<span class="sourceLineNo">1463</span> }<a name="line.1463"></a>
-<span class="sourceLineNo">1464</span><a name="line.1464"></a>
-<span class="sourceLineNo">1465</span> /**<a name="line.1465"></a>
-<span class="sourceLineNo">1466</span> * Adds a (single) hbase:meta row for the specified new region and its daughters. Note that this<a name="line.1466"></a>
-<span class="sourceLineNo">1467</span> * does not add its daughter's as different rows, but adds information about the daughters<a name="line.1467"></a>
-<span class="sourceLineNo">1468</span> * in the same row as the parent. Use<a name="line.1468"></a>
-<span class="sourceLineNo">1469</span> * {@link #splitRegion(Connection, RegionInfo, long, RegionInfo, RegionInfo, ServerName, int)}<a name="line.1469"></a>
-<span class="sourceLineNo">1470</span> * if you want to do that.<a name="line.1470"></a>
-<span class="sourceLineNo">1471</span> * @param connection connection we're using<a name="line.1471"></a>
-<span class="sourceLineNo">1472</span> * @param regionInfo region information<a name="line.1472"></a>
-<span class="sourceLineNo">1473</span> * @throws IOException if problem connecting or updating meta<a name="line.1473"></a>
-<span class="sourceLineNo">1474</span> */<a name="line.1474"></a>
-<span class="sourceLineNo">1475</span> @VisibleForTesting<a name="line.1475"></a>
-<span class="sourceLineNo">1476</span> public static void addRegionToMeta(Connection connection, RegionInfo regionInfo)<a name="line.1476"></a>
-<span class="sourceLineNo">1477</span> throws IOException {<a name="line.1477"></a>
-<span class="sourceLineNo">1478</span> addRegionsToMeta(connection, Collections.singletonList(regionInfo), 1);<a name="line.1478"></a>
-<span class="sourceLineNo">1479</span> }<a name="line.1479"></a>
-<span class="sourceLineNo">1480</span><a name="line.1480"></a>
-<span class="sourceLineNo">1481</span> /**<a name="line.1481"></a>
-<span class="sourceLineNo">1482</span> * Adds a hbase:meta row for each of the specified new regions. Initial state for new regions<a name="line.1482"></a>
-<span class="sourceLineNo">1483</span> * is CLOSED.<a name="line.1483"></a>
-<span class="sourceLineNo">1484</span> * @param connection connection we're using<a name="line.1484"></a>
-<span class="sourceLineNo">1485</span> * @param regionInfos region information list<a name="line.1485"></a>
-<span class="sourceLineNo">1486</span> * @throws IOException if problem connecting or updating meta<a name="line.1486"></a>
-<span class="sourceLineNo">1487</span> */<a name="line.1487"></a>
-<span class="sourceLineNo">1488</span> public static void addRegionsToMeta(Connection connection, List<RegionInfo> regionInfos,<a name="line.1488"></a>
-<span class="sourceLineNo">1489</span> int regionReplication) throws IOException {<a name="line.1489"></a>
-<span class="sourceLineNo">1490</span> addRegionsToMeta(connection, regionInfos, regionReplication,<a name="line.1490"></a>
-<span class="sourceLineNo">1491</span> EnvironmentEdgeManager.currentTime());<a name="line.1491"></a>
-<span class="sourceLineNo">1492</span> }<a name="line.1492"></a>
-<span class="sourceLineNo">1493</span><a name="line.1493"></a>
-<span class="sourceLineNo">1494</span> /**<a name="line.1494"></a>
-<span class="sourceLineNo">1495</span> * Adds a hbase:meta row for each of the specified new regions. Initial state for new regions<a name="line.1495"></a>
-<span class="sourceLineNo">1496</span> * is CLOSED.<a name="line.1496"></a>
-<span class="sourceLineNo">1497</span> * @param connection connection we're using<a name="line.1497"></a>
-<span class="sourceLineNo">1498</span> * @param regionInfos region information list<a name="line.1498"></a>
-<span class="sourceLineNo">1499</span> * @param regionReplication<a name="line.1499"></a>
-<span class="sourceLineNo">1500</span> * @param ts desired timestamp<a name="line.1500"></a>
-<span class="sourceLineNo">1501</span> * @throws IOException if problem connecting or updating meta<a name="line.1501"></a>
-<span class="sourceLineNo">1502</span> */<a name="line.1502"></a>
-<span class="sourceLineNo">1503</span> private static void addRegionsToMeta(Connection connection, List<RegionInfo> regionInfos,<a name="line.1503"></a>
-<span class="sourceLineNo">1504</span> int regionReplication, long ts) throws IOException {<a name="line.1504"></a>
-<span class="sourceLineNo">1505</span> List<Put> puts = new ArrayList<>();<a name="line.1505"></a>
-<span class="sourceLineNo">1506</span> for (RegionInfo regionInfo : regionInfos) {<a name="line.1506"></a>
-<span class="sourceLineNo">1507</span> if (RegionReplicaUtil.isDefaultReplica(regionInfo)) {<a name="line.1507"></a>
-<span class="sourceLineNo">1508</span> Put put = makePutFromRegionInfo(regionInfo, ts);<a name="line.1508"></a>
-<span class="sourceLineNo">1509</span> // New regions are added with initial state of CLOSED.<a name="line.1509"></a>
-<span class="sourceLineNo">1510</span> addRegionStateToPut(put, RegionState.State.CLOSED);<a name="line.1510"></a>
-<span class="sourceLineNo">1511</span> // Add empty locations for region replicas so that number of replicas can be cached<a name="line.1511"></a>
-<span class="sourceLineNo">1512</span> // whenever the primary region is looked up from meta<a name="line.1512"></a>
-<span class="sourceLineNo">1513</span> for (int i = 1; i < regionReplication; i++) {<a name="line.1513"></a>
-<span class="sourceLineNo">1514</span> addEmptyLocation(put, i);<a name="line.1514"></a>
-<span class="sourceLineNo">1515</span> }<a name="line.1515"></a>
-<span class="sourceLineNo">1516</span> puts.add(put);<a name="line.1516"></a>
-<span class="sourceLineNo">1517</span> }<a name="line.1517"></a>
-<span class="sourceLineNo">1518</span> }<a name="line.1518"></a>
-<span class="sourceLineNo">1519</span> putsToMetaTable(connection, puts);<a name="line.1519"></a>
-<span class="sourceLineNo">1520</span> LOG.info("Added {} regions to meta.", puts.size());<a name="line.1520"></a>
-<span class="sourceLineNo">1521</span> }<a name="line.1521"></a>
-<span class="sourceLineNo">1522</span><a name="line.1522"></a>
-<span class="sourceLineNo">1523</span> /**<a name="line.1523"></a>
-<span class="sourceLineNo">1524</span> * Merge the two regions into one in an atomic operation. Deletes the two merging regions in<a name="line.1524"></a>
-<span class="sourceLineNo">1525</span> * hbase:meta and adds the merged region with the information of two merging regions.<a name="line.1525"></a>
-<span class="sourceLineNo">1526</span> * @param connection connection we're using<a name="line.1526"></a>
-<span class="sourceLineNo">1527</span> * @param mergedRegion the merged region<a name="line.1527"></a>
-<span class="sourceLineNo">1528</span> * @param regionA merge parent region A<a name="line.1528"></a>
-<span class="sourceLineNo">1529</span> * @param regionAOpenSeqNum the next open sequence id for region A, used by serial replication. -1<a name="line.1529"></a>
-<span class="sourceLineNo">1530</span> * if not necessary.<a name="line.1530"></a>
-<span class="sourceLineNo">1531</span> * @param regionB merge parent region B<a name="line.1531"></a>
-<span class="sourceLineNo">1532</span> * @param regionBOpenSeqNum the next open sequence id for region B, used by serial replication. -1<a name="line.1532"></a>
-<span class="sourceLineNo">1533</span> * if not necessary.<a name="line.1533"></a>
-<span class="sourceLineNo">1534</span> * @param sn the location of the region<a name="line.1534"></a>
-<span class="sourceLineNo">1535</span> */<a name="line.1535"></a>
-<span class="sourceLineNo">1536</span> public static void mergeRegions(Connection connection, RegionInfo mergedRegion,<a name="line.1536"></a>
-<span class="sourceLineNo">1537</span> RegionInfo regionA, long regionAOpenSeqNum, RegionInfo regionB, long regionBOpenSeqNum,<a name="line.1537"></a>
-<span class="sourceLineNo">1538</span> ServerName sn, int regionReplication) throws IOException {<a name="line.1538"></a>
-<span class="sourceLineNo">1539</span> try (Table meta = getMetaHTable(connection)) {<a name="line.1539"></a>
-<span class="sourceLineNo">1540</span> long time = EnvironmentEdgeManager.currentTime();<a name="line.1540"></a>
-<span class="sourceLineNo">1541</span> List<Mutation> mutations = new ArrayList<>();<a name="line.1541"></a>
-<span class="sourceLineNo">1542</span><a name="line.1542"></a>
-<span class="sourceLineNo">1543</span> List<RegionInfo> replicationParents = new ArrayList<>(2);<a name="line.1543"></a>
-<span class="sourceLineNo">1544</span> // Deletes for merging regions<a name="line.1544"></a>
-<span class="sourceLineNo">1545</span> mutations.add(makeDeleteFromRegionInfo(regionA, time));<a name="line.1545"></a>
-<span class="sourceLineNo">1546</span> if (regionAOpenSeqNum > 0) {<a name="line.1546"></a>
-<span class="sourceLineNo">1547</span> mutations.add(makePutForReplicationBarrier(regionA, regionAOpenSeqNum, time));<a name="line.1547"></a>
-<span class="sourceLineNo">1548</span> replicationParents.add(regionA);<a name="line.1548"></a>
-<span class="sourceLineNo">1549</span> }<a name="line.1549"></a>
-<span class="sourceLineNo">1550</span> mutations.add(makeDeleteFromRegionInfo(regionB, time));<a name="line.1550"></a>
-<span class="sourceLineNo">1551</span> if (regionBOpenSeqNum > 0) {<a name="line.1551"></a>
-<span class="sourceLineNo">1552</span> mutations.add(makePutForReplicationBarrier(regionB, regionBOpenSeqNum, time));<a name="line.1552"></a>
-<span class="sourceLineNo">1553</span> replicationParents.add(regionB);<a name="line.1553"></a>
-<span class="sourceLineNo">1554</span> }<a name="line.1554"></a>
-<span class="sourceLineNo">1555</span><a name="line.1555"></a>
-<span class="sourceLineNo">1556</span> // Put for parent<a name="line.1556"></a>
-<span class="sourceLineNo">1557</span> Put putOfMerged = makePutFromRegionInfo(mergedRegion, time);<a name="line.1557"></a>
-<span class="sourceLineNo">1558</span> putOfMerged.add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.1558"></a>
-<span class="sourceLineNo">1559</span> .setRow(putOfMerged.getRow())<a name="line.1559"></a>
-<span class="sourceLineNo">1560</span> .setFamily(HConstants.CATALOG_FAMILY)<a name="line.1560"></a>
-<span class="sourceLineNo">1561</span> .setQualifier(HConstants.MERGEA_QUALIFIER)<a name="line.1561"></a>
-<span class="sourceLineNo">1562</span> .setTimestamp(putOfMerged.getTimestamp())<a name="line.1562"></a>
-<span class="sourceLineNo">1563</span> .setType(Type.Put)<a name="line.1563"></a>
-<span class="sourceLineNo">1564</span> .setValue(RegionInfo.toByteArray(regionA))<a name="line.1564"></a>
-<span class="sourceLineNo">1565</span> .build())<a name="line.1565"></a>
-<span class="sourceLineNo">1566</span> .add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.1566"></a>
+<span class="sourceLineNo">1349</span> if (ps.isEmpty()) {<a name="line.1349"></a>
+<span class="sourceLineNo">1350</span> return;<a name="line.1350"></a>
+<span class="sourceLineNo">1351</span> }<a name="line.1351"></a>
+<span class="sourceLineNo">1352</span> try (Table t = getMetaHTable(connection)) {<a name="line.1352"></a>
+<span class="sourceLineNo">1353</span> debugLogMutations(ps);<a name="line.1353"></a>
+<span class="sourceLineNo">1354</span> // the implementation for putting a single Put is much simpler so here we do a check first.<a name="line.1354"></a>
+<span class="sourceLineNo">1355</span> if (ps.size() == 1) {<a name="line.1355"></a>
+<span class="sourceLineNo">1356</span> t.put(ps.get(0));<a name="line.1356"></a>
+<span class="sourceLineNo">1357</span> } else {<a name="line.1357"></a>
+<span class="sourceLineNo">1358</span> t.put(ps);<a name="line.1358"></a>
+<span class="sourceLineNo">1359</span> }<a name="line.1359"></a>
+<span class="sourceLineNo">1360</span> }<a name="line.1360"></a>
+<span class="sourceLineNo">1361</span> }<a name="line.1361"></a>
+<span class="sourceLineNo">1362</span><a name="line.1362"></a>
+<span class="sourceLineNo">1363</span> /**<a name="line.1363"></a>
+<span class="sourceLineNo">1364</span> * Delete the passed <code>d</code> from the <code>hbase:meta</code> table.<a name="line.1364"></a>
+<span class="sourceLineNo">1365</span> * @param connection connection we're using<a name="line.1365"></a>
+<span class="sourceLineNo">1366</span> * @param d Delete to add to hbase:meta<a name="line.1366"></a>
+<span class="sourceLineNo">1367</span> */<a name="line.1367"></a>
+<span class="sourceLineNo">1368</span> private static void deleteFromMetaTable(final Connection connection, final Delete d)<a name="line.1368"></a>
+<span class="sourceLineNo">1369</span> throws IOException {<a name="line.1369"></a>
+<span class="sourceLineNo">1370</span> List<Delete> dels = new ArrayList<>(1);<a name="line.1370"></a>
+<span class="sourceLineNo">1371</span> dels.add(d);<a name="line.1371"></a>
+<span class="sourceLineNo">1372</span> deleteFromMetaTable(connection, dels);<a name="line.1372"></a>
+<span class="sourceLineNo">1373</span> }<a name="line.1373"></a>
+<span class="sourceLineNo">1374</span><a name="line.1374"></a>
+<span class="sourceLineNo">1375</span> /**<a name="line.1375"></a>
+<span class="sourceLineNo">1376</span> * Delete the passed <code>deletes</code> from the <code>hbase:meta</code> table.<a name="line.1376"></a>
+<span class="sourceLineNo">1377</span> * @param connection connection we're using<a name="line.1377"></a>
+<span class="sourceLineNo">1378</span> * @param deletes Deletes to add to hbase:meta This list should support #remove.<a name="line.1378"></a>
+<span class="sourceLineNo">1379</span> */<a name="line.1379"></a>
+<span class="sourceLineNo">1380</span> private static void deleteFromMetaTable(final Connection connection, final List<Delete> deletes)<a name="line.1380"></a>
+<span class="sourceLineNo">1381</span> throws IOException {<a name="line.1381"></a>
+<span class="sourceLineNo">1382</span> try (Table t = getMetaHTable(connection)) {<a name="line.1382"></a>
+<span class="sourceLineNo">1383</span> debugLogMutations(deletes);<a name="line.1383"></a>
+<span class="sourceLineNo">1384</span> t.delete(deletes);<a name="line.1384"></a>
+<span class="sourceLineNo">1385</span> }<a name="line.1385"></a>
+<span class="sourceLineNo">1386</span> }<a name="line.1386"></a>
+<span class="sourceLineNo">1387</span><a name="line.1387"></a>
+<span class="sourceLineNo">1388</span> /**<a name="line.1388"></a>
+<span class="sourceLineNo">1389</span> * Deletes some replica columns corresponding to replicas for the passed rows<a name="line.1389"></a>
+<span class="sourceLineNo">1390</span> * @param metaRows rows in hbase:meta<a name="line.1390"></a>
+<span class="sourceLineNo">1391</span> * @param replicaIndexToDeleteFrom the replica ID we would start deleting from<a name="line.1391"></a>
+<span class="sourceLineNo">1392</span> * @param numReplicasToRemove how many replicas to remove<a name="line.1392"></a>
+<span class="sourceLineNo">1393</span> * @param connection connection we're using to access meta table<a name="line.1393"></a>
+<span class="sourceLineNo">1394</span> */<a name="line.1394"></a>
+<span class="sourceLineNo">1395</span> public static void removeRegionReplicasFromMeta(Set<byte[]> metaRows,<a name="line.1395"></a>
+<span class="sourceLineNo">1396</span> int replicaIndexToDeleteFrom, int numReplicasToRemove, Connection connection)<a name="line.1396"></a>
+<span class="sourceLineNo">1397</span> throws IOException {<a name="line.1397"></a>
+<span class="sourceLineNo">1398</span> int absoluteIndex = replicaIndexToDeleteFrom + numReplicasToRemove;<a name="line.1398"></a>
+<span class="sourceLineNo">1399</span> for (byte[] row : metaRows) {<a name="line.1399"></a>
+<span class="sourceLineNo">1400</span> long now = EnvironmentEdgeManager.currentTime();<a name="line.1400"></a>
+<span class="sourceLineNo">1401</span> Delete deleteReplicaLocations = new Delete(row);<a name="line.1401"></a>
+<span class="sourceLineNo">1402</span> for (int i = replicaIndexToDeleteFrom; i < absoluteIndex; i++) {<a name="line.1402"></a>
+<span class="sourceLineNo">1403</span> deleteReplicaLocations.addColumns(getCatalogFamily(),<a name="line.1403"></a>
+<span class="sourceLineNo">1404</span> getServerColumn(i), now);<a name="line.1404"></a>
+<span class="sourceLineNo">1405</span> deleteReplicaLocations.addColumns(getCatalogFamily(),<a name="line.1405"></a>
+<span class="sourceLineNo">1406</span> getSeqNumColumn(i), now);<a name="line.1406"></a>
+<span class="sourceLineNo">1407</span> deleteReplicaLocations.addColumns(getCatalogFamily(),<a name="line.1407"></a>
+<span class="sourceLineNo">1408</span> getStartCodeColumn(i), now);<a name="line.1408"></a>
+<span class="sourceLineNo">1409</span> }<a name="line.1409"></a>
+<span class="sourceLineNo">1410</span> deleteFromMetaTable(connection, deleteReplicaLocations);<a name="line.1410"></a>
+<span class="sourceLineNo">1411</span> }<a name="line.1411"></a>
+<span class="sourceLineNo">1412</span> }<a name="line.1412"></a>
+<span class="sourceLineNo">1413</span><a name="line.1413"></a>
+<span class="sourceLineNo">1414</span> /**<a name="line.1414"></a>
+<span class="sourceLineNo">1415</span> * Execute the passed <code>mutations</code> against <code>hbase:meta</code> table.<a name="line.1415"></a>
+<span class="sourceLineNo">1416</span> * @param connection connection we're using<a name="line.1416"></a>
+<span class="sourceLineNo">1417</span> * @param mutations Puts and Deletes to execute on hbase:meta<a name="line.1417"></a>
+<span class="sourceLineNo">1418</span> * @throws IOException<a name="line.1418"></a>
+<span class="sourceLineNo">1419</span> */<a name="line.1419"></a>
+<span class="sourceLineNo">1420</span> public static void mutateMetaTable(final Connection connection,<a name="line.1420"></a>
+<span class="sourceLineNo">1421</span> final List<Mutation> mutations)<a name="line.1421"></a>
+<span class="sourceLineNo">1422</span> throws IOException {<a name="line.1422"></a>
+<span class="sourceLineNo">1423</span> Table t = getMetaHTable(connection);<a name="line.1423"></a>
+<span class="sourceLineNo">1424</span> try {<a name="line.1424"></a>
+<span class="sourceLineNo">1425</span> debugLogMutations(mutations);<a name="line.1425"></a>
+<span class="sourceLineNo">1426</span> t.batch(mutations, null);<a name="line.1426"></a>
+<span class="sourceLineNo">1427</span> } catch (InterruptedException e) {<a name="line.1427"></a>
+<span class="sourceLineNo">1428</span> InterruptedIOException ie = new InterruptedIOException(e.getMessage());<a name="line.1428"></a>
+<span class="sourceLineNo">1429</span> ie.initCause(e);<a name="line.1429"></a>
+<span class="sourceLineNo">1430</span> throw ie;<a name="line.1430"></a>
+<span class="sourceLineNo">1431</span> } finally {<a name="line.1431"></a>
+<span class="sourceLineNo">1432</span> t.close();<a name="line.1432"></a>
+<span class="sourceLineNo">1433</span> }<a name="line.1433"></a>
+<span class="sourceLineNo">1434</span> }<a name="line.1434"></a>
+<span class="sourceLineNo">1435</span><a name="line.1435"></a>
+<span class="sourceLineNo">1436</span> private static void addRegionStateToPut(Put put, RegionState.State state) throws IOException {<a name="line.1436"></a>
+<span class="sourceLineNo">1437</span> put.add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.1437"></a>
+<span class="sourceLineNo">1438</span> .setRow(put.getRow())<a name="line.1438"></a>
+<span class="sourceLineNo">1439</span> .setFamily(HConstants.CATALOG_FAMILY)<a name="line.1439"></a>
+<span class="sourceLineNo">1440</span> .setQualifier(getRegionStateColumn())<a name="line.1440"></a>
+<span class="sourceLineNo">1441</span> .setTimestamp(put.getTimestamp())<a name="line.1441"></a>
+<span class="sourceLineNo">1442</span> .setType(Cell.Type.Put)<a name="line.1442"></a>
+<span class="sourceLineNo">1443</span> .setValue(Bytes.toBytes(state.name()))<a name="line.1443"></a>
+<span class="sourceLineNo">1444</span> .build());<a name="line.1444"></a>
+<span class="sourceLineNo">1445</span> }<a name="line.1445"></a>
+<span class="sourceLineNo">1446</span><a name="line.1446"></a>
+<span class="sourceLineNo">1447</span> /**<a name="line.1447"></a>
+<span class="sourceLineNo">1448</span> * Adds daughter region infos to hbase:meta row for the specified region. Note that this does not<a name="line.1448"></a>
+<span class="sourceLineNo">1449</span> * add its daughter's as different rows, but adds information about the daughters in the same row<a name="line.1449"></a>
+<span class="sourceLineNo">1450</span> * as the parent. Use<a name="line.1450"></a>
+<span class="sourceLineNo">1451</span> * {@link #splitRegion(Connection, RegionInfo, long, RegionInfo, RegionInfo, ServerName, int)}<a name="line.1451"></a>
+<span class="sourceLineNo">1452</span> * if you want to do that.<a name="line.1452"></a>
+<span class="sourceLineNo">1453</span> * @param connection connection we're using<a name="line.1453"></a>
+<span class="sourceLineNo">1454</span> * @param regionInfo RegionInfo of parent region<a name="line.1454"></a>
+<span class="sourceLineNo">1455</span> * @param splitA first split daughter of the parent regionInfo<a name="line.1455"></a>
+<span class="sourceLineNo">1456</span> * @param splitB second split daughter of the parent regionInfo<a name="line.1456"></a>
+<span class="sourceLineNo">1457</span> * @throws IOException if problem connecting or updating meta<a name="line.1457"></a>
+<span class="sourceLineNo">1458</span> */<a name="line.1458"></a>
+<span class="sourceLineNo">1459</span> public static void addSplitsToParent(Connection connection, RegionInfo regionInfo,<a name="line.1459"></a>
+<span class="sourceLineNo">1460</span> RegionInfo splitA, RegionInfo splitB) throws IOException {<a name="line.1460"></a>
+<span class="sourceLineNo">1461</span> Table meta = getMetaHTable(connection);<a name="line.1461"></a>
+<span class="sourceLineNo">1462</span> try {<a name="line.1462"></a>
+<span class="sourceLineNo">1463</span> Put put = makePutFromRegionInfo(regionInfo, EnvironmentEdgeManager.currentTime());<a name="line.1463"></a>
+<span class="sourceLineNo">1464</span> addDaughtersToPut(put, splitA, splitB);<a name="line.1464"></a>
+<span class="sourceLineNo">1465</span> meta.put(put);<a name="line.1465"></a>
+<span class="sourceLineNo">1466</span> debugLogMutation(put);<a name="line.1466"></a>
+<span class="sourceLineNo">1467</span> LOG.debug("Added region {}", regionInfo.getRegionNameAsString());<a name="line.1467"></a>
+<span class="sourceLineNo">1468</span> } finally {<a name="line.1468"></a>
+<span class="sourceLineNo">1469</span> meta.close();<a name="line.1469"></a>
+<span class="sourceLineNo">1470</span> }<a name="line.1470"></a>
+<span class="sourceLineNo">1471</span> }<a name="line.1471"></a>
+<span class="sourceLineNo">1472</span><a name="line.1472"></a>
+<span class="sourceLineNo">1473</span> /**<a name="line.1473"></a>
+<span class="sourceLineNo">1474</span> * Adds a (single) hbase:meta row for the specified new region and its daughters. Note that this<a name="line.1474"></a>
+<span class="sourceLineNo">1475</span> * does not add its daughter's as different rows, but adds information about the daughters<a name="line.1475"></a>
+<span class="sourceLineNo">1476</span> * in the same row as the parent. Use<a name="line.1476"></a>
+<span class="sourceLineNo">1477</span> * {@link #splitRegion(Connection, RegionInfo, long, RegionInfo, RegionInfo, ServerName, int)}<a name="line.1477"></a>
+<span class="sourceLineNo">1478</span> * if you want to do that.<a name="line.1478"></a>
+<span class="sourceLineNo">1479</span> * @param connection connection we're using<a name="line.1479"></a>
+<span class="sourceLineNo">1480</span> * @param regionInfo region information<a name="line.1480"></a>
+<span class="sourceLineNo">1481</span> * @throws IOException if problem connecting or updating meta<a name="line.1481"></a>
+<span class="sourceLineNo">1482</span> */<a name="line.1482"></a>
+<span class="sourceLineNo">1483</span> @VisibleForTesting<a name="line.1483"></a>
+<span class="sourceLineNo">1484</span> public static void addRegionToMeta(Connection connection, RegionInfo regionInfo)<a name="line.1484"></a>
+<span class="sourceLineNo">1485</span> throws IOException {<a name="line.1485"></a>
+<span class="sourceLineNo">1486</span> addRegionsToMeta(connection, Collections.singletonList(regionInfo), 1);<a name="line.1486"></a>
+<span class="sourceLineNo">1487</span> }<a name="line.1487"></a>
+<span class="sourceLineNo">1488</span><a name="line.1488"></a>
+<span class="sourceLineNo">1489</span> /**<a name="line.1489"></a>
+<span class="sourceLineNo">1490</span> * Adds a hbase:meta row for each of the specified new regions. Initial state for new regions<a name="line.1490"></a>
+<span class="sourceLineNo">1491</span> * is CLOSED.<a name="line.1491"></a>
+<span class="sourceLineNo">1492</span> * @param connection connection we're using<a name="line.1492"></a>
+<span class="sourceLineNo">1493</span> * @param regionInfos region information list<a name="line.1493"></a>
+<span class="sourceLineNo">1494</span> * @throws IOException if problem connecting or updating meta<a name="line.1494"></a>
+<span class="sourceLineNo">1495</span> */<a name="line.1495"></a>
+<span class="sourceLineNo">1496</span> public static void addRegionsToMeta(Connection connection, List<RegionInfo> regionInfos,<a name="line.1496"></a>
+<span class="sourceLineNo">1497</span> int regionReplication) throws IOException {<a name="line.1497"></a>
+<span class="sourceLineNo">1498</span> addRegionsToMeta(connection, regionInfos, regionReplication,<a name="line.1498"></a>
+<span class="sourceLineNo">1499</span> EnvironmentEdgeManager.currentTime());<a name="line.1499"></a>
+<span class="sourceLineNo">1500</span> }<a name="line.1500"></a>
+<span class="sourceLineNo">1501</span><a name="line.1501"></a>
+<span class="sourceLineNo">1502</span> /**<a name="line.1502"></a>
+<span class="sourceLineNo">1503</span> * Adds a hbase:meta row for each of the specified new regions. Initial state for new regions<a name="line.1503"></a>
+<span class="sourceLineNo">1504</span> * is CLOSED.<a name="line.1504"></a>
+<span class="sourceLineNo">1505</span> * @param connection connection we're using<a name="line.1505"></a>
+<span class="sourceLineNo">1506</span> * @param regionInfos region information list<a name="line.1506"></a>
+<span class="sourceLineNo">1507</span> * @param regionReplication<a name="line.1507"></a>
+<span class="sourceLineNo">1508</span> * @param ts desired timestamp<a name="line.1508"></a>
+<span class="sourceLineNo">1509</span> * @throws IOException if problem connecting or updating meta<a name="line.1509"></a>
+<span class="sourceLineNo">1510</span> */<a name="line.1510"></a>
+<span class="sourceLineNo">1511</span> private static void addRegionsToMeta(Connection connection, List<RegionInfo> regionInfos,<a name="line.1511"></a>
+<span class="sourceLineNo">1512</span> int regionReplication, long ts) throws IOException {<a name="line.1512"></a>
+<span class="sourceLineNo">1513</span> List<Put> puts = new ArrayList<>();<a name="line.1513"></a>
+<span class="sourceLineNo">1514</span> for (RegionInfo regionInfo : regionInfos) {<a name="line.1514"></a>
+<span class="sourceLineNo">1515</span> if (RegionReplicaUtil.isDefaultReplica(regionInfo)) {<a name="line.1515"></a>
+<span class="sourceLineNo">1516</span> Put put = makePutFromRegionInfo(regionInfo, ts);<a name="line.1516"></a>
+<span class="sourceLineNo">1517</span> // New regions are added with initial state of CLOSED.<a name="line.1517"></a>
+<span class="sourceLineNo">1518</span> addRegionStateToPut(put, RegionState.State.CLOSED);<a name="line.1518"></a>
+<span class="sourceLineNo">1519</span> // Add empty locations for region replicas so that number of replicas can be cached<a name="line.1519"></a>
+<span class="sourceLineNo">1520</span> // whenever the primary region is looked up from meta<a name="line.1520"></a>
+<span class="sourceLineNo">1521</span> for (int i = 1; i < regionReplication; i++) {<a name="line.1521"></a>
+<span class="sourceLineNo">1522</span> addEmptyLocation(put, i);<a name="line.1522"></a>
+<span class="sourceLineNo">1523</span> }<a name="line.1523"></a>
+<span class="sourceLineNo">1524</span> puts.add(put);<a name="line.1524"></a>
+<span class="sourceLineNo">1525</span> }<a name="line.1525"></a>
+<span class="sourceLineNo">1526</span> }<a name="line.1526"></a>
+<span class="sourceLineNo">1527</span> putsToMetaTable(connection, puts);<a name="line.1527"></a>
+<span class="sourceLineNo">1528</span> LOG.info("Added {} regions to meta.", puts.size());<a name="line.1528"></a>
+<span class="sourceLineNo">1529</span> }<a name="line.1529"></a>
+<span class="sourceLineNo">1530</span><a name="line.1530"></a>
+<span class="sourceLineNo">1531</span> /**<a name="line.1531"></a>
+<span class="sourceLineNo">1532</span> * Merge the two regions into one in an atomic operation. Deletes the two merging regions in<a name="line.1532"></a>
+<span class="sourceLineNo">1533</span> * hbase:meta and adds the merged region with the information of two merging regions.<a name="line.1533"></a>
+<span class="sourceLineNo">1534</span> * @param connection connection we're using<a name="line.1534"></a>
+<span class="sourceLineNo">1535</span> * @param mergedRegion the merged region<a name="line.1535"></a>
+<span class="sourceLineNo">1536</span> * @param regionA merge parent region A<a name="line.1536"></a>
+<span class="sourceLineNo">1537</span> * @param regionAOpenSeqNum the next open sequence id for region A, used by serial replication. -1<a name="line.1537"></a>
+<span class="sourceLineNo">1538</span> * if not necessary.<a name="line.1538"></a>
+<span class="sourceLineNo">1539</span> * @param regionB merge parent region B<a name="line.1539"></a>
+<span class="sourceLineNo">1540</span> * @param regionBOpenSeqNum the next open sequence id for region B, used by serial replication. -1<a name="line.1540"></a>
+<span class="sourceLineNo">1541</span> * if not necessary.<a name="line.1541"></a>
+<span class="sourceLineNo">1542</span> * @param sn the location of the region<a name="line.1542"></a>
+<span class="sourceLineNo">1543</span> */<a name="line.1543"></a>
+<span class="sourceLineNo">1544</span> public static void mergeRegions(Connection connection, RegionInfo mergedRegion,<a name="line.1544"></a>
+<span class="sourceLineNo">1545</span> RegionInfo regionA, long regionAOpenSeqNum, RegionInfo regionB, long regionBOpenSeqNum,<a name="line.1545"></a>
+<span class="sourceLineNo">1546</span> ServerName sn, int regionReplication) throws IOException {<a name="line.1546"></a>
+<span class="sourceLineNo">1547</span> try (Table meta = getMetaHTable(connection)) {<a name="line.1547"></a>
+<span class="sourceLineNo">1548</span> long time = EnvironmentEdgeManager.currentTime();<a name="line.1548"></a>
+<span class="sourceLineNo">1549</span> List<Mutation> mutations = new ArrayList<>();<a name="line.1549"></a>
+<span class="sourceLineNo">1550</span><a name="line.1550"></a>
+<span class="sourceLineNo">1551</span> List<RegionInfo> replicationParents = new ArrayList<>(2);<a name="line.1551"></a>
+<span class="sourceLineNo">1552</span> // Deletes for merging regions<a name="line.1552"></a>
+<span class="sourceLineNo">1553</span> mutations.add(makeDeleteFromRegionInfo(regionA, time));<a name="line.1553"></a>
+<span class="sourceLineNo">1554</span> if (regionAOpenSeqNum > 0) {<a name="line.1554"></a>
+<span class="sourceLineNo">1555</span> mutations.add(makePutForReplicationBarrier(regionA, regionAOpenSeqNum, time));<a name="line.1555"></a>
+<span class="sourceLineNo">1556</span> replicationParents.add(regionA);<a name="line.1556"></a>
+<span class="sourceLineNo">1557</span> }<a name="line.1557"></a>
+<span class="sourceLineNo">1558</span> mutations.add(makeDeleteFromRegionInfo(regionB, time));<a name="line.1558"></a>
+<span class="sourceLineNo">1559</span> if (regionBOpenSeqNum > 0) {<a name="line.1559"></a>
+<span class="sourceLineNo">1560</span> mutations.add(makePutForReplicationBarrier(regionB, regionBOpenSeqNum, time));<a name="line.1560"></a>
+<span class="sourceLineNo">1561</span> replicationParents.add(regionB);<a name="line.1561"></a>
+<span class="sourceLineNo">1562</span> }<a name="line.1562"></a>
+<span class="sourceLineNo">1563</span><a name="line.1563"></a>
+<span class="sourceLineNo">1564</span> // Put for parent<a name="line.1564"></a>
+<span class="sourceLineNo">1565</span> Put putOfMerged = makePutFromRegionInfo(mergedRegion, time);<a name="line.1565"></a>
+<span class="sourceLineNo">1566</span> putOfMerged.add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.1566"></a>
<span class="sourceLineNo">1567</span> .setRow(putOfMerged.getRow())<a name="line.1567"></a>
<span class="sourceLineNo">1568</span> .setFamily(HConstants.CATALOG_FAMILY)<a name="line.1568"></a>
-<span class="sourceLineNo">1569</span> .setQualifier(HConstants.MERGEB_QUALIFIER)<a name="line.1569"></a>
+<span class="sourceLineNo">1569</span> .setQualifier(HConstants.MERGEA_QUALIFIER)<a name="line.1569"></a>
<span class="sourceLineNo">1570</span> .setTimestamp(putOfMerged.getTimestamp())<a name="line.1570"></a>
<span class="sourceLineNo">1571</span> .setType(Type.Put)<a name="line.1571"></a>
-<span class="sourceLineNo">1572</span> .setValue(RegionInfo.toByteArray(regionB))<a name="line.1572"></a>
-<span class="sourceLineNo">1573</span> .build());<a name="line.1573"></a>
-<span class="sourceLineNo">1574</span> // Set initial state to CLOSED<a name="line.1574"></a>
-<span class="sourceLineNo">1575</span> // NOTE: If initial state is not set to CLOSED then merged region gets added with the<a name="line.1575"></a>
-<span class="sourceLineNo">1576</span> // default OFFLINE state. If Master gets restarted after this step, start up sequence of<a name="line.1576"></a>
-<span class="sourceLineNo">1577</span> // master tries to assign this offline region. This is followed by re-assignments of the<a name="line.1577"></a>
-<span class="sourceLineNo">1578</span> // merged region from resumed {@link MergeTableRegionsProcedure}<a name="line.1578"></a>
-<span class="sourceLineNo">1579</span> addRegionStateToPut(putOfMerged, RegionState.State.CLOSED);<a name="line.1579"></a>
-<span class="sourceLineNo">1580</span> mutations.add(putOfMerged);<a name="line.1580"></a>
-<span class="sourceLineNo">1581</span> // The merged is a new region, openSeqNum = 1 is fine. ServerName may be null<a name="line.1581"></a>
-<span class="sourceLineNo">1582</span> // if crash after merge happened but before we got to here.. means in-memory<a name="line.1582"></a>
-<span class="sourceLineNo">1583</span> // locations of offlined merged, now-closed, regions is lost. Should be ok. We<a name="line.1583"></a>
-<span class="sourceLineNo">1584</span> // assign the merged region later.<a name="line.1584"></a>
-<span class="sourceLineNo">1585</span> if (sn != null) {<a name="line.1585"></a>
-<span class="sourceLineNo">1586</span> addLocation(putOfMerged, sn, 1, mergedRegion.getReplicaId());<a name="line.1586"></a>
-<span class="sourceLineNo">1587</span> }<a name="line.1587"></a>
-<span class="sourceLineNo">1588</span><a name="line.1588"></a>
-<span class="sourceLineNo">1589</span> // Add empty locations for region replicas of the merged region so that number of replicas can<a name="line.1589"></a>
-<span class="sourceLineNo">1590</span> // be cached whenever the primary region is looked up from meta<a name="line.1590"></a>
-<span class="sourceLineNo">1591</span> for (int i = 1; i < regionReplication; i++) {<a name="line.1591"></a>
-<span class="sourceLineNo">1592</span> addEmptyLocation(putOfMerged, i);<a name="line.1592"></a>
-<span class="sourceLineNo">1593</span> }<a name="line.1593"></a>
-<span class="sourceLineNo">1594</span> // add parent reference for serial replication<a name="line.1594"></a>
-<span class="sourceLineNo">1595</span> if (!replicationParents.isEmpty()) {<a name="line.1595"></a>
-<span class="sourceLineNo">1596</span> addReplicationParent(putOfMerged, replicationParents);<a name="line.1596"></a>
-<span class="sourceLineNo">1597</span> }<a name="line.1597"></a>
-<span class="sourceLineNo">1598</span> byte[] tableRow = Bytes.toBytes(mergedRegion.getRegionNameAsString() + HConstants.DELIMITER);<a name="line.1598"></a>
-<span class="sourceLineNo">1599</span> multiMutate(connection, meta, tableRow, mutations);<a name="line.1599"></a>
-<span class="sourceLineNo">1600</span> }<a name="line.1600"></a>
-<span class="sourceLineNo">1601</span> }<a name="line.1601"></a>
-<span class="sourceLineNo">1602</span><a name="line.1602"></a>
-<span class="sourceLineNo">1603</span> /**<a name="line.1603"></a>
-<span class="sourceLineNo">1604</span> * Splits the region into two in an atomic operation. Offlines the parent region with the<a name="line.1604"></a>
-<span class="sourceLineNo">1605</span> * information that it is split into two, and also adds the daughter regions. Does not add the<a name="line.1605"></a>
-<span class="sourceLineNo">1606</span> * location information to the daughter regions since they are not open yet.<a name="line.1606"></a>
-<span class="sourceLineNo">1607</span> * @param connection connection we're using<a name="line.1607"></a>
-<span class="sourceLineNo">1608</span> * @param parent the parent region which is split<a name="line.1608"></a>
-<span class="sourceLineNo">1609</span> * @param parentOpenSeqNum the next open sequence id for parent region, used by serial<a name="line.1609"></a>
-<span class="sourceLineNo">1610</span> * replication. -1 if not necessary.<a name="line.1610"></a>
-<span class="sourceLineNo">1611</span> * @param splitA Split daughter region A<a name="line.1611"></a>
-<span class="sourceLineNo">1612</span> * @param splitB Split daughter region B<a name="line.1612"></a>
-<span class="sourceLineNo">1613</span> * @param sn the location of the region<a name="line.1613"></a>
-<span class="sourceLineNo">1614</span> */<a name="line.1614"></a>
-<span class="sourceLineNo">1615</span> public static void splitRegion(Connection connection, RegionInfo parent, long parentOpenSeqNum,<a name="line.1615"></a>
-<span class="sourceLineNo">1616</span> RegionInfo splitA, RegionInfo splitB, ServerName sn, int regionReplication)<a name="line.1616"></a>
-<span class="sourceLineNo">1617</span> throws IOException {<a name="line.1617"></a>
-<span class="sourceLineNo">1618</span> try (Table meta = getMetaHTable(connection)) {<a name="line.1618"></a>
-<span class="sourceLineNo">1619</span> long time = EnvironmentEdgeManager.currentTime();<a name="line.1619"></a>
-<span class="sourceLineNo">1620</span> // Put for parent<a name="line.1620"></a>
-<span class="sourceLineNo">1621</span> Put putParent = makePutFromRegionInfo(RegionInfoBuilder.newBuilder(parent)<a name="line.1621"></a>
-<span class="sourceLineNo">1622</span> .setOffline(true)<a name="line.1622"></a>
-<span class="sourceLineNo">1623</span> .setSplit(true).build(), time);<a name="line.1623"></a>
-<span class="sourceLineNo">1624</span> addDaughtersToPut(putParent, splitA, splitB);<a name="line.1624"></a>
-<span class="sourceLineNo">1625</span><a name="line.1625"></a>
-<span class="sourceLineNo">1626</span> // Puts for daughters<a name="line.1626"></a>
-<span class="sourceLineNo">1627</span> Put putA = makePutFromRegionInfo(splitA, time);<a name="line.1627"></a>
-<span class="sourceLineNo">1628</span> Put putB = makePutFromRegionInfo(splitB, time);<a name="line.1628"></a>
-<span class="sourceLineNo">1629</span> if (parentOpenSeqNum > 0) {<a name="line.1629"></a>
-<span class="sourceLineNo">1630</span> addReplicationBarrier(putParent, parentOpenSeqNum);<a name="line.1630"></a>
-<span class="sourceLineNo">1631</span> addReplicationParent(putA, Collections.singletonList(parent));<a name="line.1631"></a>
-<span class="sourceLineNo">1632</span> addReplicationParent(putB, Collections.singletonList(parent));<a name="line.1632"></a>
-<span class="sourceLineNo">1633</span> }<a name="line.1633"></a>
-<span class="sourceLineNo">1634</span> // Set initial state to CLOSED<a name="line.1634"></a>
-<span class="sourceLineNo">1635</span> // NOTE: If initial state is not set to CLOSED then daughter regions get added with the<a name="line.1635"></a>
-<span class="sourceLineNo">1636</span> // default OFFLINE state. If Master gets restarted after this step, start up sequence of<a name="line.1636"></a>
-<span class="sourceLineNo">1637</span> // master tries to assign these offline regions. This is followed by re-assignments of the<a name="line.1637"></a>
-<span class="sourceLineNo">1638</span> // daughter regions from resumed {@link SplitTableRegionProcedure}<a name="line.1638"></a>
-<span class="sourceLineNo">1639</span> addRegionStateToPut(putA, RegionState.State.CLOSED);<a name="line.1639"></a>
-<span class="sourceLineNo">1640</span> addRegionStateToPut(putB, RegionState.State.CLOSED);<a name="line.1640"></a>
-<span class="sourceLineNo">1641</span><a name="line.1641"></a>
-<span class="sourceLineNo">1642</span> addSequenceNum(putA, 1, splitA.getReplicaId()); // new regions, openSeqNum = 1 is fine.<a name="line.1642"></a>
-<span class="sourceLineNo">1643</span> addSequenceNum(putB, 1, splitB.getReplicaId());<a name="line.1643"></a>
-<span class="sourceLineNo">1644</span><a name="line.1644"></a>
-<span class="sourceLineNo">1645</span> // Add empty locations for region replicas of daughters so that number of replicas can be<a name="line.1645"></a>
-<span class="sourceLineNo">1646</span> // cached whenever the primary region is looked up from meta<a name="line.1646"></a>
-<span class="sourceLineNo">1647</span> for (int i = 1; i < regionReplication; i++) {<a name="line.1647"></a>
-<span class="sourceLineNo">1648</span> addEmptyLocation(putA, i);<a name="line.1648"></a>
-<span class="sourceLineNo">1649</span> addEmptyLocation(putB, i);<a name="line.1649"></a>
-<span class="sourceLineNo">1650</span> }<a name="line.1650"></a>
-<span class="sourceLineNo">1651</span><a name="line.1651"></a>
-<span class="sourceLineNo">1652</span> byte[] tableRow = Bytes.toBytes(parent.getRegionNameAsString() + HConstants.DELIMITER);<a name="line.1652"></a>
-<span class="sourceLineNo">1653</span> multiMutate(connection, meta, tableRow, putParent, putA, putB);<a name="line.1653"></a>
-<span class="sourceLineNo">1654</span> }<a name="line.1654"></a>
-<span class="sourceLineNo">1655</span> }<a name="line.1655"></a>
-<span class="sourceLineNo">1656</span><a name="line.1656"></a>
-<span class="sourceLineNo">1657</span> /**<a name="line.1657"></a>
-<span class="sourceLineNo">1658</span> * Update state of the table in meta.<a name="line.1658"></a>
-<span class="sourceLineNo">1659</span> * @param connection what we use for update<a name="line.1659"></a>
-<span class="sourceLineNo">1660</span> * @param state new state<a name="line.1660"></a>
-<span class="sourceLineNo">1661</span> */<a name="line.1661"></a>
-<span class="sourceLineNo">1662</span> private static void updateTableState(Connection connection, TableState state) throws IOException {<a name="line.1662"></a>
-<span class="sourceLineNo">1663</span> Put put = makePutFromTableState(state, EnvironmentEdgeManager.currentTime());<a name="line.1663"></a>
-<span class="sourceLineNo">1664</span> putToMetaTable(connection, put);<a name="line.1664"></a>
-<span class="sourceLineNo">1665</span> LOG.info("Updated {} in hbase:meta", state);<a name="line.1665"></a>
-<span class="sourceLineNo">1666</span> }<a name="line.1666"></a>
-<span class="sourceLineNo">1667</span><a name="line.1667"></a>
-<span class="sourceLineNo">1668</span> /**<a name="line.1668"></a>
-<span class="sourceLineNo">1669</span> * Construct PUT for given state<a name="line.1669"></a>
-<span class="sourceLineNo">1670</span> * @param state new state<a name="line.1670"></a>
-<span class="sourceLineNo">1671</span> */<a name="line.1671"></a>
-<span class="sourceLineNo">1672</span> public static Put makePutFromTableState(TableState state, long ts) {<a name="line.1672"></a>
-<span class="sourceLineNo">1673</span> Put put = new Put(state.getTableName().getName(), ts);<a name="line.1673"></a>
-<span class="sourceLineNo">1674</span> put.addColumn(getTableFamily(), getTableStateColumn(), state.convert().toByteArray());<a name="line.1674"></a>
-<span class="sourceLineNo">1675</span> return put;<a name="line.1675"></a>
-<span class="sourceLineNo">1676</span> }<a name="line.1676"></a>
-<span class="sourceLineNo">1677</span><a name="line.1677"></a>
-<span class="sourceLineNo">1678</span> /**<a name="line.1678"></a>
-<span class="sourceLineNo">1679</span> * Remove state for table from meta<a name="line.1679"></a>
-<span class="sourceLineNo">1680</span> * @param connection to use for deletion<a name="line.1680"></a>
-<span class="sourceLineNo">1681</span> * @param table to delete state for<a name="line.1681"></a>
-<span class="sourceLineNo">1682</span> */<a name="line.1682"></a>
-<span class="sourceLineNo">1683</span> public static void deleteTableState(Connection connection, TableName table)<a name="line.1683"></a>
-<span class="sourceLineNo">1684</span> throws IOException {<a name="line.1684"></a>
-<span class="sourceLineNo">1685</span> long time = EnvironmentEdgeManager.currentTime();<a name="line.1685"></a>
-<span class="sourceLineNo">1686</span> Delete delete = new Delete(table.getName());<a name="line.1686"></a>
-<span class="sourceLineNo">1687</span> delete.addColumns(getTableFamily(), getTableStateColumn(), time);<a name="line.1687"></a>
-<span class="sourceLineNo">1688</span> deleteFromMetaTable(connection, delete);<a name="line.1688"></a>
-<span class="sourceLineNo">1689</span> LOG.info("Deleted table " + table + " state from META");<a name="line.1689"></a>
-<span class="sourceLineNo">1690</span> }<a name="line.1690"></a>
-<span class="sourceLineNo">1691</span><a name="line.1691"></a>
-<span class="sourceLineNo">1692</span> private static void multiMutate(Connection connection, Table table, byte[] row,<a name="line.1692"></a>
-<span class="sourceLineNo">1693</span> Mutation... mutations) throws IOException {<a name="line.1693"></a>
-<span class="sourceLineNo">1694</span> multiMutate(connection, table, row, Arrays.asList(mutations));<a name="line.1694"></a>
-<span class="sourceLineNo">1695</span> }<a name="line.1695"></a>
-<span class="sourceLineNo">1696</span><a name="line.1696"></a>
-<span class="sourceLineNo">1697</span> /**<a name="line.1697"></a>
-<span class="sourceLineNo">1698</span> * Performs an atomic multi-mutate operation against the given table.<a name="line.1698"></a>
-<span class="sourceLineNo">1699</span> */<a name="line.1699"></a>
-<span class="sourceLineNo">1700</span> private static void multiMutate(Connection connection, final Table table, byte[] row,<a name="line.1700"></a>
-<span class="sourceLineNo">1701</span> final List<Mutation> mutations) throws IOException {<a name="line.1701"></a>
-<span class="sourceLineNo">1702</span> debugLogMutations(mutations);<a name="line.1702"></a>
-<span class="sourceLineNo">1703</span> // TODO: Need rollback!!!!<a name="line.1703"></a>
-<span class="sourceLineNo">1704</span> // TODO: Need Retry!!!<a name="line.1704"></a>
-<span class="sourceLineNo">1705</span> // TODO: What for a timeout? Default write timeout? GET FROM HTABLE?<a name="line.1705"></a>
-<span class="sourceLineNo">1706</span> // TODO: Review when we come through with ProcedureV2.<a name="line.1706"></a>
-<span class="sourceLineNo">1707</span> RegionServerCallable<MutateRowsResponse,<a name="line.1707"></a>
-<span class="sourceLineNo">1708</span> MultiRowMutationProtos.MultiRowMutationService.BlockingInterface> callable =<a name="line.1708"></a>
-<span class="sourceLineNo">1709</span> new RegionServerCallable<MutateRowsResponse,<a name="line.1709"></a>
-<span class="sourceLineNo">1710</span> MultiRowMutationProtos.MultiRowMutationService.BlockingInterface>(<a name="line.1710"></a>
-<span class="sourceLineNo">1711</span> connection, table.getName(), row, null/*RpcController not used in this CPEP!*/) {<a name="line.1711"></a>
-<span class="sourceLineNo">1712</span> @Override<a name="line.1712"></a>
-<span class="sourceLineNo">1713</span> protected MutateRowsResponse rpcCall() throws Exception {<a name="line.1713"></a>
-<span class="sourceLineNo">1714</span> final MutateRowsRequest.Builder builder = MutateRowsRequest.newBuilder();<a name="line.1714"></a>
-<span class="sourceLineNo">1715</span> for (Mutation mutation : mutations) {<a name="line.1715"></a>
-<span class="sourceLineNo">1716</span> if (mutation instanceof Put) {<a name="line.1716"></a>
-<span class="sourceLineNo">1717</span> builder.addMutationRequest(ProtobufUtil.toMutation(<a name="line.1717"></a>
-<span class="sourceLineNo">1718</span> ClientProtos.MutationProto.MutationType.PUT, mutation));<a name="line.1718"></a>
-<span class="sourceLineNo">1719</span> } else if (mutation instanceof Delete) {<a name="line.1719"></a>
-<span class="sourceLineNo">1720</span> builder.addMutationRequest(ProtobufUtil.toMutation(<a name="line.1720"></a>
-<span class="sourceLineNo">1721</span> ClientProtos.MutationProto.MutationType.DELETE, mutation));<a name="line.1721"></a>
-<span class="sourceLineNo">1722</span> } else {<a name="line.1722"></a>
-<span class="sourceLineNo">1723</span> throw new DoNotRetryIOException("multi in MetaEditor doesn't support "<a name="line.1723"></a>
-<span class="sourceLineNo">1724</span> + mutation.getClass().getName());<a name="line.1724"></a>
-<span class="sourceLineNo">1725</span> }<a name="line.1725"></a>
-<span class="sourceLineNo">1726</span> }<a name="line.1726"></a>
-<span class="sourceLineNo">1727</span> // The call to #prepare that ran before this invocation will have populated HRegionLocation.<a name="line.1727"></a>
-<span class="sourceLineNo">1728</span> HRegionLocation hrl = getLocation();<a name="line.1728"></a>
-<span class="sourceLineNo">1729</span> RegionSpecifier region = ProtobufUtil.buildRegionSpecifier(<a name="line.1729"></a>
-<span class="sourceLineNo">1730</span> RegionSpecifierType.REGION_NAME, hrl.getRegion().getRegionName());<a name="line.1730"></a>
-<span class="sourceLineNo">1731</span> builder.setRegion(region);<a name="line.1731"></a>
-<span class="sourceLineNo">1732</span> // The rpcController here is awkward. The Coprocessor Endpoint wants an instance of a<a name="line.1732"></a>
-<span class="sourceLineNo">1733</span> // com.google.protobuf but we are going over an rpc that is all shaded protobuf so it<a name="line.1733"></a>
-<span class="sourceLineNo">1734</span> // wants a org.apache.h.h.shaded.com.google.protobuf.RpcController. Set up a factory<a name="line.1734"></a>
-<span class="sourceLineNo">1735</span> // that makes com.google.protobuf.RpcController and then copy into it configs.<a name="line.1735"></a>
-<span class="sourceLineNo">1736</span> return getStub().mutateRows(null, builder.build());<a name="line.1736"></a>
-<span class="sourceLineNo">1737</span> }<a name="line.1737"></a>
-<span class="sourceLineNo">1738</span><a name="line.1738"></a>
-<span class="sourceLineNo">1739</span> @Override<a name="line.1739"></a>
-<span class="sourceLineNo">1740</span> // Called on the end of the super.prepare call. Set the stub.<a name="line.1740"></a>
-<span class="sourceLineNo">1741</span> protected void setStubByServiceName(ServerName serviceName/*Ignored*/) throws IOException {<a name="line.1741"></a>
-<span class="sourceLineNo">1742</span> CoprocessorRpcChannel channel = table.coprocessorService(getRow());<a name="line.1742"></a>
-<span class="sourceLineNo">1743</span> setStub(MultiRowMutationProtos.MultiRowMutationService.newBlockingStub(channel));<a name="line.1743"></a>
-<span class="sourceLineNo">1744</span> }<a name="line.1744"></a>
-<span class="sourceLineNo">1745</span> };<a name="line.1745"></a>
-<span class="sourceLineNo">1746</span> int writeTimeout = connection.getConfiguration().getInt(HConstants.HBASE_RPC_WRITE_TIMEOUT_KEY,<a name="line.1746"></a>
-<span class="sourceLineNo">1747</span> connection.getConfiguration().getInt(HConstants.HBASE_RPC_TIMEOUT_KEY,<a name="line.1747"></a>
-<span class="sourceLineNo">1748</span> HConstants.DEFAULT_HBASE_RPC_TIMEOUT));<a name="line.1748"></a>
-<span class="sourceLineNo">1749</span> // The region location should be cached in connection. Call prepare so this callable picks<a name="line.1749"></a>
-<span class="sourceLineNo">1750</span> // up the region location (see super.prepare method).<a name="line.1750"></a>
-<span class="sourceLineNo">1751</span> callable.prepare(false);<a name="line.1751"></a>
-<span class="sourceLineNo">1752</span> callable.call(writeTimeout);<a name="line.1752"></a>
-<span class="sourceLineNo">1753</span> }<a name="line.1753"></a>
-<span class="sourceLineNo">1754</span><a name="line.1754"></a>
-<span class="sourceLineNo">1755</span> /**<a name="line.1755"></a>
-<span class="sourceLineNo">1756</span> * Updates the location of the specified region in hbase:meta to be the specified server hostname<a name="line.1756"></a>
-<span class="sourceLineNo">1757</span> * and startcode.<a name="line.1757"></a>
-<span class="sourceLineNo">1758</span> * <p><a name="line.1758"></a>
-<span class="sourceLineNo">1759</span> * Uses passed catalog tracker to get a connection to the server hosting hbase:meta and makes<a name="line.1759"></a>
-<span class="sourceLineNo">1760</span> * edits to that region.<a name="line.1760"></a>
-<span class="sourceLineNo">1761</span> * @param connection connection we're using<a name="line.1761"></a>
-<span class="sourceLineNo">1762</span> * @param regionInfo region to update location of<a name="line.1762"></a>
-<span class="sourceLineNo">1763</span> * @param openSeqNum the latest sequence number obtained when the region was open<a name="line.1763"></a>
-<span class="sourceLineNo">1764</span> * @param sn Server name<a name="line.1764"></a>
-<span class="sourceLineNo">1765</span> * @param masterSystemTime wall clock time from master if passed in the open region RPC<a name="line.1765"></a>
-<span class="sourceLineNo">1766</span> */<a name="line.1766"></a>
-<span class="sourceLineNo">1767</span> @VisibleForTesting<a name="line.1767"></a>
-<span class="sourceLineNo">1768</span> public static void updateRegionLocation(Connection connection, RegionInfo regionInfo,<a name="line.1768"></a>
-<span class="sourceLineNo">1769</span> ServerName sn, long openSeqNum, long masterSystemTime) throws IOException {<a name="line.1769"></a>
-<span class="sourceLineNo">1770</span> updateLocation(connection, regionInfo, sn, openSeqNum, masterSystemTime);<a name="line.1770"></a>
-<span class="sourceLineNo">1771</span> }<a name="line.1771"></a>
-<span class="sourceLineNo">1772</span><a name="line.1772"></a>
-<span class="sourceLineNo">1773</span> /**<a name="line.1773"></a>
-<span class="sourceLineNo">1774</span> * Updates the location of the specified region to be the specified server.<a name="line.1774"></a>
-<span class="sourceLineNo">1775</span> * <p><a name="line.1775"></a>
-<span class="sourceLineNo">1776</span> * Connects to the specified server which should be hosting the specified catalog region name to<a name="line.1776"></a>
-<span class="sourceLineNo">1777</span> * perform the edit.<a name="line.1777"></a>
-<span class="sourceLineNo">1778</span> * @param connection connection we're using<a name="line.1778"></a>
-<span class="sourceLineNo">1779</span> * @param regionInfo region to update location of<a name="line.1779"></a>
-<span class="sourceLineNo">1780</span> * @param sn Server name<a name="line.1780"></a>
-<span class="sourceLineNo">1781</span> * @param openSeqNum the latest sequence number obtained when the region was open<a name="line.1781"></a>
-<span class="sourceLineNo">1782</span> * @param masterSystemTime wall clock time from master if passed in the open region RPC<a name="line.1782"></a>
-<span class="sourceLineNo">1783</span> * @throws IOException In particular could throw {@link java.net.ConnectException} if the server<a name="line.1783"></a>
-<span class="sourceLineNo">1784</span> * is down on other end.<a name="line.1784"></a>
-<span class="sourceLineNo">1785</span> */<a name="line.1785"></a>
-<span class="sourceLineNo">1786</span> private static void updateLocation(Connection connection, RegionInfo regionInfo, ServerName sn,<a name="line.1786"></a>
-<span class="sourceLineNo">1787</span> long openSeqNum, long masterSystemTime) throws IOException {<a name="line.1787"></a>
-<span class="sourceLineNo">1788</span> // region replicas are kept in the primary region's row<a name="line.1788"></a>
-<span class="sourceLineNo">1789</span> Put put = new Put(getMetaKeyForRegion(regionInfo), masterSystemTime);<a name="line.1789"></a>
-<span class="sourceLineNo">1790</span> addRegionInfo(put, regionInfo);<a name="line.1790"></a>
-<span class="sourceLineNo">1791</span> addLocation(put, sn, openSeqNum, regionInfo.getReplicaId());<a name="line.1791"></a>
-<span class="sourceLineNo">1792</span> putToMetaTable(connection, put);<a name="line.1792"></a>
-<span class="sourceLineNo">1793</span> LOG.info("Updated row {} with server=", regionInfo.getRegionNameAsString(), sn);<a name="line.1793"></a>
-<span class="sourceLineNo">1794</span> }<a name="line.1794"></a>
-<span class="sourceLineNo">1795</span><a name="line.1795"></a>
-<span class="sourceLineNo">1796</span> /**<a name="line.1796"></a>
-<span class="sourceLineNo">1797</span> * Deletes the specified region from META.<a name="line.1797"></a>
-<span class="sourceLineNo">1798</span> * @param connection connection we're using<a name="line.1798"></a>
-<span class="sourceLineNo">1799</span> * @param regionInfo region to be deleted from META<a name="line.1799"></a>
-<span class="sourceLineNo">1800</span> * @throws IOException<a name="line.1800"></a>
-<span class="sourceLineNo">1801</span> */<a name="line.1801"></a>
-<span class="sourceLineNo">1802</span> public static void deleteRegion(Connection connection, RegionInfo regionInfo) throws IOException {<a name="line.1802"></a>
-<span class="sourceLineNo">1803</span> long time = EnvironmentEdgeManager.currentTime();<a name="line.1803"></a>
-<span class="sourceLineNo">1804</span> Delete delete = new Delete(regionInfo.getRegionName());<a name="line.1804"></a>
-<span class="sourceLineNo">1805</span> delete.addFamily(getCatalogFamily(), time);<a name="line.1805"></a>
-<span class="sourceLineNo">1806</span> deleteFromMetaTable(connection, delete);<a name="line.1806"></a>
-<span class="sourceLineNo">1807</span> LOG.info("Deleted " + regionInfo.getRegionNameAsString());<a name="line.1807"></a>
-<span class="sourceLineNo">1808</span> }<a name="line.1808"></a>
-<span class="sourceLineNo">1809</span><a name="line.1809"></a>
-<span class="sourceLineNo">1810</span> /**<a name="line.1810"></a>
-<span class="sourceLineNo">1811</span> * Deletes the specified regions from META.<a name="line.1811"></a>
-<span class="sourceLineNo">1812</span> * @param connection connection we're using<a name="line.1812"></a>
-<span class="sourceLineNo">1813</span> * @param regionsInfo list of regions to be deleted from META<a name="line.1813"></a>
-<span class="sourceLineNo">1814</span> */<a name="line.1814"></a>
-<span class="sourceLineNo">1815</span> public static void deleteRegions(Connection connection, List<RegionInfo> regionsInfo)<a name="line.1815"></a>
-<span class="sourceLineNo">1816</span> throws IOException {<a name="line.1816"></a>
-<span class="sourceLineNo">1817</span> deleteRegions(connection, regionsInfo, EnvironmentEdgeManager.currentTime());<a name="line.1817"></a>
-<span class="sourceLineNo">1818</span> }<a name="line.1818"></a>
-<span class="sourceLineNo">1819</span> /**<a name="line.1819"></a>
-<span class="sourceLineNo">1820</span> * Deletes the specified regions from META.<a name="line.1820"></a>
-<span class="sourceLineNo">1821</span> * @param connection connection we're using<a name="line.1821"></a>
-<span class="sourceLineNo">1822</span> * @param regionsInfo list of regions to be deleted from META<a name="line.1822"></a>
-<span class="sourceLineNo">1823</span> */<a name="line.1823"></a>
-<span class="sourceLineNo">1824</span> public static void deleteRegions(Connection connection, List<RegionInfo> regionsInfo, long ts)<a name="line.1824"></a>
-<span class="sourceLineNo">1825</span> throws IOException {<a name="line.1825"></a>
-<span class="sourceLineNo">1826</span> List<Delete> deletes = new ArrayList<>(regionsInfo.size());<a name="line.1826"></a>
-<span class="sourceLineNo">1827</span> for (RegionInfo hri : regionsInfo) {<a name="line.1827"></a>
-<span class="sourceLineNo">1828</span> Delete e = new Delete(hri.getRegionName());<a name="line.1828"></a>
-<span class="sourceLineNo">1829</span> e.addFamily(getCatalogFamily(), ts);<a name="line.1829"></a>
-<span class="sourceLineNo">1830</span> deletes.add(e);<a name="line.1830"></a>
-<span class="sourceLineNo">1831</span> }<a name="line.1831"></a>
-<span class="sourceLineNo">1832</span> deleteFromMetaTable(connection, deletes);<a name="line.1832"></a>
-<span class="sourceLineNo">1833</span> LOG.info("Deleted {} regions from META", regionsInfo.size());<a name="line.1833"></a>
-<span class="sourceLineNo">1834</span> LOG.debug("Deleted regions: {}", regionsInfo);<a name="line.1834"></a>
-<span class="sourceLineNo">1835</span> }<a name="line.1835"></a>
-<span class="sourceLineNo">1836</span><a name="line.1836"></a>
-<span class="sourceLineNo">1837</span> /**<a name="line.1837"></a>
-<span class="sourceLineNo">1838</span> * Overwrites the specified regions from hbase:meta. Deletes old rows for the given regions and<a name="line.1838"></a>
-<span class="sourceLineNo">1839</span> * adds new ones. Regions added back have state CLOSED.<a name="line.1839"></a>
-<span class="sourceLineNo">1840</span> * @param connection connection we're using<a name="line.1840"></a>
-<span class="sourceLineNo">1841</span> * @param regionInfos list of regions to be added to META<a name="line.1841"></a>
-<span class="sourceLineNo">1842</span> */<a name="line.1842"></a>
-<span class="sourceLineNo">1843</span> public static void overwriteRegions(Connection connection,<a name="line.1843"></a>
-<span class="sourceLineNo">1844</span> List<RegionInfo> regionInfos, int regionReplication) throws IOException {<a name="line.1844"></a>
-<span class="sourceLineNo">1845</span> // use master time for delete marker and the Put<a name="line.1845"></a>
-<span class="sourceLineNo">1846</span> long now = EnvironmentEdgeManager.currentTime();<a name="line.1846"></a>
-<span class="sourceLineNo">1847</span> deleteRegions(connection, regionInfos, now);<a name="line.1847"></a>
-<span class="sourceLineNo">1848</span> // Why sleep? This is the easiest way to ensure that the previous deletes does not<a name="line.1848"></a>
-<span class="sourceLineNo">1849</span> // eclipse the following puts, that might happen in the same ts from the server.<a name="line.1849"></a>
-<span class="sourceLineNo">1850</span> // See HBASE-9906, and HBASE-9879. Once either HBASE-9879, HBASE-8770 is fixed,<a name="line.1850"></a>
-<span class="sourceLineNo">1851</span> // or HBASE-9905 is fixed and meta uses seqIds, we do not need the sleep.<a name="line.1851"></a>
-<span class="sourceLineNo">1852</span> //<a name="line.1852"></a>
-<span class="sourceLineNo">1853</span> // HBASE-13875 uses master timestamp for the mutations. The 20ms sleep is not needed<a name="line.1853"></a>
-<span class="sourceLineNo">1854</span> addRegionsToMeta(connection, regionInfos, regionReplication, now + 1);<a name="line.1854"></a>
-<span class="sourceLineNo">1855</span> LOG.info("Overwritten " + regionInfos.size() + " regions to Meta");<a name="line.1855"></a>
-<span class="sourceLineNo">1856</span> LOG.debug("Overwritten regions: {} ", regionInfos);<a name="line.1856"></a>
-<span class="sourceLineNo">1857</span> }<a name="line.1857"></a>
-<span class="sourceLineNo">1858</span><a name="line.1858"></a>
-<span class="sourceLineNo">1859</span> /**<a name="line.1859"></a>
-<span class="sourceLineNo">1860</span> * Deletes merge qualifiers for the specified merged region.<a name="line.1860"></a>
-<span class="sourceLineNo">1861</span> * @param connection connection we're using<a name="line.1861"></a>
-<span class="sourceLineNo">1862</span> * @param mergedRegion the merged region<a name="line.1862"></a>
-<span class="sourceLineNo">1863</span> */<a name="line.1863"></a>
-<span class="sourceLineNo">1864</span> public static void deleteMergeQualifiers(Connection connection, final RegionInfo mergedRegion)<a name="line.1864"></a>
-<span class="sourceLineNo">1865</span> throws IOException {<a name="line.1865"></a>
-<span class="sourceLineNo">1866</span> long time = EnvironmentEdgeManager.currentTime();<a name="line.1866"></a>
-<span class="sourceLineNo">1867</span> Delete delete = new Delete(mergedRegion.getRegionName());<a name="line.1867"></a>
-<span class="sourceLineNo">1868</span> delete.addColumns(getCatalogFamily(), HConstants.MERGEA_QUALIFIER, time);<a name="line.1868"></a>
-<span class="sourceLineNo">1869</span> delete.addColumns(getCatalogFamily(), HConstants.MERGEB_QUALIFIER, time);<a name="line.1869"></a>
-<span class="sourceLineNo">1870</span> deleteFromMetaTable(connection, delete);<a name="line.1870"></a>
-<span class="sourceLineNo">1871</span> LOG.info("Deleted references in merged region "<a name="line.1871"></a>
-<span class="sourceLineNo">1872</span> + mergedRegion.getRegionNameAsString() + ", qualifier="<a name="line.1872"></a>
-<span class="sourceLineNo">1873</span> + Bytes.toStringBinary(HConstants.MERGEA_QUALIFIER) + " and qualifier="<a name="line.1873"></a>
-<span class="sourceLineNo">1874</span> + Bytes.toStringBinary(HConstants.MERGEB_QUALIFIER));<a name="line.1874"></a>
-<span class="sourceLineNo">1875</span> }<a name="line.1875"></a>
-<span class="sourceLineNo">1876</span><a name="line.1876"></a>
-<span class="sourceLineNo">1877</span> public static Put addRegionInfo(final Put p, final RegionInfo hri)<a name="line.1877"></a>
-<span class="sourceLineNo">1878</span> throws IOException {<a name="line.1878"></a>
-<span class="sourceLineNo">1879</span> p.add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.1879"></a>
-<span class="sourceLineNo">1880</span> .setRow(p.getRow())<a name="line.1880"></a>
-<span class="sourceLineNo">1881</span> .setFamily(getCatalogFamily())<a name="line.1881"></a>
-<span class="sourceLineNo">1882</span> .setQualifier(HConstants.REGIONINFO_QUALIFIER)<a name="line.1882"></a>
-<span class="sourceLineNo">1883</span> .setTimestamp(p.getTimestamp())<a name="line.1883"></a>
-<span class="sourceLineNo">1884</span> .setType(Type.Put)<a name="line.1884"></a>
-<span class="sourceLineNo">1885</span> .setValue(RegionInfo.toByteArray(hri))<a name="line.1885"></a>
-<span class="sourceLineNo">1886</span> .build());<a name="line.1886"></a>
-<span class="sourceLineNo">1887</span> return p;<a name="line.1887"></a>
-<span class="sourceLineNo">1888</span> }<a name="line.1888"></a>
-<span class="sourceLineNo">1889</span><a name="line.1889"></a>
-<span class="sourceLineNo">1890</span> public static Put addLocation(Put p, ServerName sn, long openSeqNum, int replicaId)<a name="line.1890"></a>
-<span class="sourceLineNo">1891</span> throws IOException {<a name="line.1891"></a>
-<span class="sourceLineNo">1892</span> CellBuilder builder = CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY);<a name="line.1892"></a>
-<span class="sourceLineNo">1893</span> return p.add(builder.clear()<a name="line.1893"></a>
-<span class="sourceLineNo">1894</span> .setRow(p.getRow())<a name="line.1894"></a>
-<span class="sourceLineNo">1895</span> .setFamily(getCatalogFamily())<a name="line.1895"></a>
-<span class="sourceLineNo">1896</span> .setQualifier(getServerColumn(replicaId))<a name="line.1896"></a>
-<span class="sourceLineNo">1897</span> .setTimestamp(p.getTimestamp())<a name="line.1897"></a>
-<span class="sourceLineNo">1898</span> .setType(Cell.Type.Put)<a name="line.1898"></a>
-<span class="sourceLineNo">1899</span> .setValue(Bytes.toBytes(sn.getAddress().toString()))<a name="line.1899"></a>
-<span class="sourceLineNo">1900</span> .build())<a name="line.1900"></a>
-<span class="sourceLineNo">1901</span> .add(builder.clear()<a name="line.1901"></a>
+<span class="sourceLineNo">1572</span> .setValue(RegionInfo.toByteArray(regionA))<a name="line.1572"></a>
+<span class="sourceLineNo">1573</span> .build())<a name="line.1573"></a>
+<span class="sourceLineNo">1574</span> .add(CellBuilderFactory.create(CellBuilderType.SHALLOW_COPY)<a name="line.1574"></a>
+<span class="sourceLineNo">1575</span> .setRow(putOfMerged.getRow())<a name="line.1575"></a>
+<span class="sourceLineNo">1576</span> .setFamily(HConstants.CATALOG_FAMILY)<a name="line.1576"></a>
+<span class="sourceLineNo">1577</span> .setQualifier(HConstants.MERGEB_QUALIFIER)<a name="line.1577"></a>
+<span class="sourceLineNo">1578</span> .setTimestamp(putOfMerged.getTimestamp())<a name="line.1578"></a>
+<span class="sourceLineNo">1579</span> .setType(Type.Put)<a name="line.1579"></a>
+<span class="sourceLineNo">1580</span> .setValue(RegionInfo.toByteArray(regionB))<a name="line.1580"></a>
+<span class="sourceLineNo">1581</span> .build());<a name="line.1581"></a>
+<span class="sourceLineNo">1582</span> // Set initial state to CLOSED<a name="line.1582"></a>
+<span class="sourceLineNo">1583</span> // NOTE: If initial state is not set to CLOSED then merged region gets added with the<a name="line.1583"></a>
+<span class="sourceLineNo">1584</span> // default OFFLINE state. If Master gets restarted after this step, start up sequence of<a name="line.1584"></a>
+<span class="sourceLineNo">1585</span> // master tries to assign this offline region. This is followed by re-assignments of the<a name="line.1585"></a>
+<span class="sourceLineNo">1586</span> // merged region from resumed {@link MergeTableRegionsProcedure}<a name="line.1586"></a>
+<span class="sourceLineNo">1587</span> addRegionStateToPut(putOfMerged, RegionState.State.CLOSED);<a name="line.1587"></a>
+<span class="sourceLineNo">1588</span> mutations.add(putOfMerged);<a name="line.1588"></a>
+<span class="sourceLineNo">1589</span> // The merged is a new region, openSeqNum = 1 is fine. ServerName may be null<a name="line.1589"></a>
+<span class="sourceLineNo">1590</span> // if crash after merge happened but before we got to here.. means in-memory<a name="line.1590"></a>
+<span class="sourceLineNo">1591</span> // locations of offlined merged, now-closed, regions is lost. Should be ok. We<a name="line.1591"></a>
+<span class="sourceLineNo">1592</span> // assign the merged region later.<a name="line.1592"></a>
+<span class="sourceLineNo">1593</span> if (sn != null) {<a name="line.1593"></a>
+<span class="sourceLineNo">1594</span> addLocation(putOfMerged, sn, 1, mergedRegion.getReplicaId());<a name="line.1594"></a>
+<span class="sourceLineNo">1595</span> }<a name="line.1595"></a>
+<span class="sourceLineNo">1596</span><a name="line.1596"></a>
+<span class="sourceLineNo">1597</span> // Add empty locations for region replicas of the merged region so that number of replicas can<a name="line.1597"></a>
+<span class="sourceLineNo">1598</span> // be cached whenever the primary region is looked up from meta<a name="line.1598"></a>
+<span class="sourceLineNo">1599</span> for (int i = 1; i < regionReplication; i++) {<a name="line.1599"></a>
+<span class="sourceLineNo">1600</span> addEmptyLocation(putOfMerged, i);<a name="line.1600"></a>
+<span class="sourceLineNo">1601</span> }<a name="line.1601"></a>
+<span class="sourceLineNo">1602</span> // add parent reference for serial replication<a name="line.1602"></a>
+<span class="sourceLineNo">1603</span> if (!replicationParents.isEmpty()) {<a name="line.1603"></a>
+<span class="sourceLineNo">1604</span> addReplicationParent(putOfMerged, replicationParents);<a name="line.1604"></a>
+<span class="sourceLineNo">1605</span> }<a name="line.1605"></a>
+<span class="sourceLineNo">1606</span> byte[] tableRow = Bytes.toBytes(mergedRegion.getRegionNameAsString() + HConstants.DELIMITER);<a name="line.1606"></a>
+<span class="sourceLineNo">1607</span> multiMutate(connection, meta, tableRow, mutations);<a name="line.1607"></a>
+<span class="sourceLineNo">1608</span> }<a name="line.1608"></a>
+<span class="sourceLineNo">1609</span> }<a name="line.1609"></a>
+<span class="sourceLineNo">1610</span><a name="line.1610"></a>
+<span class="sourceLineNo">1611</span> /**<a name="line.1611"></a>
+<span class="sourceLineNo">1612</span> * Splits the region into two in an atomic operation. Offlines the parent region with the<a name="line.1612"></a>
+<span class="sourceLineNo">1613</span> * information that it is split into two, and also adds the daughter regions. Does not add the<a name="line.1613"></a>
+<span class="sourceLineNo">1614</span> * location information to the daughter regions since they are not open yet.<a name="line.1614"></a>
+<span class="sourceLineNo">1615</span> * @param connection connection we're using<a name="line.1615"></a>
+<span class="sourceLineNo">1616</span> * @param parent the parent region which is split<a name="line.1616"></a>
+<span class="sourceLineNo">1617</span> * @param parentOpenSeqNum the next open sequence id for parent region, used by serial<a name="line.1617"></a>
+<span class="sourceLineNo">1618</span> * replication. -1 if not necessary.<a name="line.1618"></a>
+<span class="sourceL
<TRUNCATED>
[49/51] [partial] hbase-site git commit: Published site at
9101fc246f86445006bfbcdfda5cc495016dc280.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/book.html
----------------------------------------------------------------------
diff --git a/book.html b/book.html
index 0566e2e..ba28ae9 100644
--- a/book.html
+++ b/book.html
@@ -349,6 +349,8 @@
<li><a href="#tracing.client.modifications">197. Client Modifications</a></li>
<li><a href="#tracing.client.shell">198. Tracing from HBase Shell</a></li>
<li><a href="#hbase.rpc">Appendix N: 0.95 RPC Specification</a></li>
+<li><a href="#_known_incompatibilities_among_hbase_versions">Appendix O: Known Incompatibilities Among HBase Versions</a></li>
+<li><a href="#_hbase_2_0_incompatible_changes">199. HBase 2.0 Incompatible Changes</a></li>
</ul>
</li>
</ul>
@@ -38590,6 +38592,1777 @@ The server will return cellblocks compressed using this same compressor as long
</div>
</div>
</div>
+<div class="sect1">
+<h2 id="_known_incompatibilities_among_hbase_versions"><a class="anchor" href="#_known_incompatibilities_among_hbase_versions"></a>Appendix O: Known Incompatibilities Among HBase Versions</h2>
+<div class="sectionbody">
+
+</div>
+</div>
+<div class="sect1">
+<h2 id="_hbase_2_0_incompatible_changes"><a class="anchor" href="#_hbase_2_0_incompatible_changes"></a>199. HBase 2.0 Incompatible Changes</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>This appendix describes incompatible changes from earlier versions of HBase against HBase 2.0.
+This list is not meant to be wholly encompassing of all possible incompatibilities.
+Instead, this content is intended to give insight into some obvious incompatibilities which most
+users will face coming from HBase 1.x releases.</p>
+</div>
+<div class="sect2">
+<h3 id="_list_of_major_changes_for_hbase_2_0"><a class="anchor" href="#_list_of_major_changes_for_hbase_2_0"></a>199.1. List of Major Changes for HBase 2.0</h3>
+<div class="ulist">
+<ul>
+<li>
+<p>HBASE-1912- HBCK is a HBase database checking tool for capturing the inconsistency. As an HBase administrator, you should not use HBase version 1.0 hbck tool to check the HBase 2.0 database. Doing so will break the database and throw an exception error.</p>
+</li>
+<li>
+<p>HBASE-16189 and HBASE-18945- You cannot open the HBase 2.0 hfiles through HBase 1.0 version. If you are an admin or an HBase user who is using HBase version 1.x, you must first do a rolling upgrade to the latest version of HBase 1.x and then upgrade to HBase 2.0.</p>
+</li>
+<li>
+<p>HBASE-18240 - Changed the ReplicationEndpoint Interface. It also introduces a new hbase-third party 1.0 that packages all the third party utilities, which are expected to run in the hbase cluster.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_coprocessor_api_changes"><a class="anchor" href="#_coprocessor_api_changes"></a>199.2. Coprocessor API changes</h3>
+<div class="ulist">
+<ul>
+<li>
+<p>HBASE-16769 - Deprecated PB references from MasterObserver and RegionServerObserver.</p>
+</li>
+<li>
+<p>HBASE-17312 - [JDK8] Use default method for Observer Coprocessors. The interface classes of BaseMasterAndRegionObserver, BaseMasterObserver, BaseRegionObserver, BaseRegionServerObserver and BaseWALObserver uses JDK8’s 'default' keyword to provide empty and no-op implementations.</p>
+</li>
+<li>
+<p>Interface HTableInterface
+HBase 2.0 introduces following changes to the methods listed below:</p>
+</li>
+</ul>
+</div>
+<div class="sect3">
+<h4 id="__interface_coprocessorenvironment_changes_2"><a class="anchor" href="#__interface_coprocessorenvironment_changes_2"></a>199.2.1. [−] interface CoprocessorEnvironment changes (2)</h4>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Change</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Result</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Abstract method getTable ( TableName ) has been removed.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchMethodError exception.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Abstract method getTable ( TableName, ExecutorService ) has been removed.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchMethodError exception.</p></td>
+</tr>
+</tbody>
+</table>
+<div class="ulist">
+<ul>
+<li>
+<p>Public Audience</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>The following tables describes the coprocessor changes.</p>
+</div>
+<div class="sect4">
+<h5 id="__class_coprocessorrpcchannel_1"><a class="anchor" href="#__class_coprocessorrpcchannel_1"></a>[−] class CoprocessorRpcChannel (1)</h5>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Change</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Result</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">This class has become interface.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by IncompatibleClassChangeError or InstantiationError exception depending on the usage of this class.</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect4">
+<h5 id="_class_coprocessorhost_e"><a class="anchor" href="#_class_coprocessorhost_e"></a>Class CoprocessorHost<E></h5>
+<div class="paragraph">
+<p>Classes that were Audience Private but were removed.</p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Change</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Result</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Type of field coprocessors has been changed from java.util.SortedSet<E> to org.apache.hadoop.hbase.util.SortedList<E>.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchFieldError exception.</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_masterobserver"><a class="anchor" href="#_masterobserver"></a>199.2.2. MasterObserver</h4>
+<div class="paragraph">
+<p>HBase 2.0 introduces following changes to the MasterObserver interface.</p>
+</div>
+<div class="sect4">
+<h5 id="__interface_masterobserver_14"><a class="anchor" href="#__interface_masterobserver_14"></a>[−] interface MasterObserver (14)</h5>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Change</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Result</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Abstract method voidpostCloneSnapshot ( ObserverContext<MasterCoprocessorEnvironment>, HBaseProtos.SnapshotDescription, HTableDescriptor ) has been removed from this interface.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchMethodError exception.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Abstract method voidpostCreateTable ( ObserverContext<MasterCoprocessorEnvironment>, HTableDescriptor, HRegionInfo[ ] ) has been removed from this interface.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchMethodErrorexception.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Abstract method voidpostDeleteSnapshot (ObserverContext<MasterCoprocessorEnvironment>, HBaseProtos.SnapshotDescription ) has been removed from this interface.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchMethodErrorexception.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Abstract method voidpostGetTableDescriptors ( ObserverContext<MasterCoprocessorEnvironment>, List<HTableDescriptor> ) has been removed from this interface.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchMethodErrorexception.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Abstract method voidpostModifyTable ( ObserverContext<MasterCoprocessorEnvironment>, TableName, HTableDescriptor ) has been removed from this interface.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchMethodErrorexception.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Abstract method voidpostRestoreSnapshot ( ObserverContext<MasterCoprocessorEnvironment>, HBaseProtos.SnapshotDescription, HTableDescriptor ) has been removed from this interface.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchMethodErrorexception.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Abstract method voidpostSnapshot ( ObserverContext<MasterCoprocessorEnvironment>, HBaseProtos.SnapshotDescription, HTableDescriptor ) has been removed from this interface.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchMethodErrorexception.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Abstract method voidpreCloneSnapshot ( ObserverContext<MasterCoprocessorEnvironment>, HBaseProtos.SnapshotDescription, HTableDescriptor ) has been removed from this interface.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchMethodErrorexception.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Abstract method voidpreCreateTable ( ObserverContext<MasterCoprocessorEnvironment>, HTableDescriptor, HRegionInfo[ ] ) has been removed from this interface.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchMethodErrorexception.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Abstract method voidpreDeleteSnapshot ( ObserverContext<MasterCoprocessorEnvironment>, HBaseProtos.SnapshotDescription ) has been removed from this interface.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchMethodErrorexception.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Abstract method voidpreGetTableDescriptors ( ObserverContext<MasterCoprocessorEnvironment>, List<TableName>, List<HTableDescriptor> ) has been removed from this interface.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchMethodErrorexception.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Abstract method voidpreModifyTable ( ObserverContext<MasterCoprocessorEnvironment>, TableName, HTableDescriptor ) has been removed from this interface.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchMethodErrorexception.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Abstract method voidpreRestoreSnapshot ( ObserverContext<MasterCoprocessorEnvironment>, HBaseProtos.SnapshotDescription, HTableDescriptor ) has been removed from this interface.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchMethodErrorexception.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Abstract method voidpreSnapshot ( ObserverContext<MasterCoprocessorEnvironment>, HBaseProtos.SnapshotDescription, HTableDescriptor ) has been removed from this interface.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchMethodErrorexception.</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_regionobserver"><a class="anchor" href="#_regionobserver"></a>199.2.3. RegionObserver</h4>
+<div class="paragraph">
+<p>HBase 2.0 introduces following changes to the RegionObserver interface.</p>
+</div>
+<div class="sect4">
+<h5 id="__interface_regionobserver_13"><a class="anchor" href="#__interface_regionobserver_13"></a>[−] interface RegionObserver (13)</h5>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Change</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Result</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Abstract method voidpostCloseRegionOperation ( ObserverContext<RegionCoprocessorEnvironment>, HRegion.Operation ) has been removed from this interface.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchMethodError exception.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Abstract method voidpostCompactSelection ( ObserverContext<RegionCoprocessorEnvironment>, Store, ImmutableList<StoreFile> ) has been removed from this interface.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchMethodError exception.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Abstract method voidpostCompactSelection ( ObserverContext<RegionCoprocessorEnvironment>, Store, ImmutableList<StoreFile>, CompactionRequest ) has been removed from this interface.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchMethodError exception.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Abstract method voidpostGetClosestRowBefore ( ObserverContext<RegionCoprocessorEnvironment>, byte[ ], byte[ ], Result ) has been removed from this interface.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchMethodError exception.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Abstract method DeleteTrackerpostInstantiateDeleteTracker ( ObserverContext<RegionCoprocessorEnvironment>, DeleteTracker ) has been removed from this interface.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchMethodError exception.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Abstract method voidpostSplit ( ObserverContext<RegionCoprocessorEnvironment>, HRegion, HRegion ) has been removed from this interface.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchMethodError exception.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Abstract method voidpostStartRegionOperation ( ObserverContext<RegionCoprocessorEnvironment>, HRegion.Operation ) has been removed from this interface.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchMethodError exception.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Abstract method StoreFile.ReaderpostStoreFileReaderOpen ( ObserverContext<RegionCoprocessorEnvironment>, FileSystem, Path, FSDataInputStreamWrapper, long, CacheConfig, Reference, StoreFile.Reader ) has been removed from this interface.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchMethodError exception.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Abstract method voidpostWALRestore ( ObserverContext<RegionCoprocessorEnvironment>, HRegionInfo, HLogKey, WALEdit ) has been removed from this interface.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchMethodError exception.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Abstract method InternalScannerpreFlushScannerOpen ( ObserverContext<RegionCoprocessorEnvironment>, Store, KeyValueScanner, InternalScanner ) has been removed from this interface.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchMethodError exception.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Abstract method voidpreGetClosestRowBefore ( ObserverContext<RegionCoprocessorEnvironment>, byte[ ], byte[ ], Result ) has been removed from this interface.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchMethodError exception.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Abstract method StoreFile.ReaderpreStoreFileReaderOpen ( ObserverContext<RegionCoprocessorEnvironment>, FileSystem, Path, FSDataInputStreamWrapper, long, CacheConfig, Reference, StoreFile.Reader ) has been removed from this interface.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchMethodError exception.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Abstract method voidpreWALRestore ( ObserverContext<RegionCoprocessorEnvironment>, HRegionInfo, HLogKey, WALEdit ) has been removed from this interface.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchMethodError exception.</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_walobserver"><a class="anchor" href="#_walobserver"></a>199.2.4. WALObserver</h4>
+<div class="paragraph">
+<p>HBase 2.0 introduces following changes to the WALObserver interface.</p>
+</div>
+<div class="sect5">
+<h6 id="__interface_walobserver"><a class="anchor" href="#__interface_walobserver"></a>[−] interface WALObserver</h6>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Change</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Result</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Abstract method voidpostWALWrite ( ObserverContext<WALCoprocessorEnvironment>, HRegionInfo, HLogKey, WALEdit ) has been removed from this interface.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchMethodError exception.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Abstract method booleanpreWALWrite ( ObserverContext<WALCoprocessorEnvironment>, HRegionInfo, HLogKey, WALEdit ) has been removed from this interface.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchMethodError exception.</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_miscellaneous"><a class="anchor" href="#_miscellaneous"></a>199.2.5. Miscellaneous</h4>
+<div class="paragraph">
+<p>HBase 2.0 introduces changes to the following classes:</p>
+</div>
+<div class="paragraph">
+<p>hbase-server-1.0.0.jar, OnlineRegions.class package org.apache.hadoop.hbase.regionserver</p>
+</div>
+<div class="sect4">
+<h5 id="__onlineregions_getfromonlineregions_string_p1_abstract_hregion"><a class="anchor" href="#__onlineregions_getfromonlineregions_string_p1_abstract_hregion"></a>[−] OnlineRegions.getFromOnlineRegions ( String p1 ) [abstract] : HRegion</h5>
+<div class="paragraph">
+<p>org/apache/hadoop/hbase/regionserver/OnlineRegions.getFromOnlineRegions:(Ljava/lang/String;)Lorg/apache/hadoop/hbase/regionserver/HRegion;</p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Change</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Result</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Return value type has been changed from Region to Region.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">This method has been removed because the return type is part of the method signature. A client program may be interrupted by NoSuchMethodError exception.</p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>hbase-server-1.0.0.jar, RegionCoprocessorEnvironment.class package org.apache.hadoop.hbase.coprocessor</p>
+</div>
+</div>
+<div class="sect4">
+<h5 id="__regioncoprocessorenvironment_getregion_abstract_hregion"><a class="anchor" href="#__regioncoprocessorenvironment_getregion_abstract_hregion"></a>[−] RegionCoprocessorEnvironment.getRegion ( ) [abstract] : HRegion</h5>
+<div class="paragraph">
+<p>org/apache/hadoop/hbase/coprocessor/RegionCoprocessorEnvironment.getRegion:()Lorg/apache/hadoop/hbase/regionserver/HRegion;</p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Change</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Result</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Return value type has been changed from org.apache.hadoop.hbase.regionserver.HRegion to org.apache.hadoop.hbase.regionserver.Region.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">This method has been removed because the return type is part of the method signature. A client program may be interrupted by NoSuchMethodError exception.</p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>hbase-server-1.0.0.jar, RegionCoprocessorHost.class package org.apache.hadoop.hbase.regionserver</p>
+</div>
+</div>
+<div class="sect4">
+<h5 id="__regioncoprocessorhost_postappend_append_append_result_result_void"><a class="anchor" href="#__regioncoprocessorhost_postappend_append_append_result_result_void"></a>[−] RegionCoprocessorHost.postAppend ( Append append, Result result ) : void</h5>
+<div class="paragraph">
+<p>org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.postAppend:(Lorg/apache/hadoop/hbase/client/Append;Lorg/apache/hadoop/hbase/client/Result;)V</p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Change</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Result</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Return value type has been changed from void to org.apache.hadoop.hbase.client.Result.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">This method has been removed because the return type is part of the method signature. A client program may be interrupted by NoSuchMethodError exception.</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect4">
+<h5 id="__regioncoprocessorhost_prestorefilereaderopen_filesystem_fs_path_p_fsdatainputstreamwrapper_in_long_size_cacheconfig_cacheconf_reference_r_storefile_reader"><a class="anchor" href="#__regioncoprocessorhost_prestorefilereaderopen_filesystem_fs_path_p_fsdatainputstreamwrapper_in_long_size_cacheconfig_cacheconf_reference_r_storefile_reader"></a>[−] RegionCoprocessorHost.preStoreFileReaderOpen ( FileSystem fs, Path p, FSDataInputStreamWrapper in, long size,CacheConfig cacheConf, Reference r ) : StoreFile.Reader</h5>
+<div class="paragraph">
+<p>org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.preStoreFileReaderOpen:(Lorg/apache/hadoop/fs/FileSystem;Lorg/apache/hadoop/fs/Path;Lorg/apache/hadoop/hbase/io/FSDataInputStreamWrapper;JLorg/apache/hadoop/hbase/io/hfile/CacheConfig;Lorg/apache/hadoop/hbase/io/Reference;)Lorg/apache/hadoop/hbase/regionserver/StoreFile$Reader;</p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Change</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Result</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Return value type has been changed from StoreFile.Reader to StoreFileReader.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">This method has been removed because the return type is part of the method signature. A client program may be interrupted by NoSuchMethodError exception.</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_ipc"><a class="anchor" href="#_ipc"></a>199.2.6. IPC</h4>
+
+</div>
+<div class="sect3">
+<h4 id="_scheduler_changes"><a class="anchor" href="#_scheduler_changes"></a>199.2.7. Scheduler changes:</h4>
+<div class="olist arabic">
+<ol class="arabic">
+<li>
+<p>Following methods became abstract:</p>
+</li>
+</ol>
+</div>
+<div class="paragraph">
+<p>package org.apache.hadoop.hbase.ipc</p>
+</div>
+<div class="sect4">
+<h5 id="__class_rpcscheduler_1"><a class="anchor" href="#__class_rpcscheduler_1"></a>[−]class RpcScheduler (1)</h5>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Change</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Result</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Abstract method void dispatch ( CallRunner ) has been removed from this class.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchMethodError exception.</p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>hbase-server-1.0.0.jar, RpcScheduler.class package org.apache.hadoop.hbase.ipc</p>
+</div>
+</div>
+<div class="sect4">
+<h5 id="__rpcscheduler_dispatch_callrunner_p1_abstract_void_1"><a class="anchor" href="#__rpcscheduler_dispatch_callrunner_p1_abstract_void_1"></a>[−] RpcScheduler.dispatch ( CallRunner p1 ) [abstract] : void 1</h5>
+<div class="paragraph">
+<p>org/apache/hadoop/hbase/ipc/RpcScheduler.dispatch:(Lorg/apache/hadoop/hbase/ipc/CallRunner;)V</p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Change</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Result</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Return value type has been changed from void to boolean.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">This method has been removed because the return type is part of the method signature. A client program may be interrupted by NoSuchMethodError exception.</p></td>
+</tr>
+</tbody>
+</table>
+<div class="olist arabic">
+<ol class="arabic">
+<li>
+<p>Following abstract methods have been removed:</p>
+</li>
+</ol>
+</div>
+</div>
+<div class="sect4">
+<h5 id="__interface_priorityfunction_2"><a class="anchor" href="#__interface_priorityfunction_2"></a>[−]interface PriorityFunction (2)</h5>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Change</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Result</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Abstract method longgetDeadline ( RPCProtos.RequestHeader, Message ) has been removed from this interface.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchMethodError exception.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Abstract method int getPriority ( RPCProtos.RequestHeader, Message ) has been removed from this interface.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchMethodError exception.</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_server_api_changes"><a class="anchor" href="#_server_api_changes"></a>199.2.8. Server API changes:</h4>
+<div class="sect4">
+<h5 id="__class_rpcserver_12"><a class="anchor" href="#__class_rpcserver_12"></a>[−] class RpcServer (12)</h5>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Change</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Result</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Type of field CurCall has been changed from java.lang.ThreadLocal<RpcServer.Call> to java.lang.ThreadLocal<RpcCall>.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchFieldError exception.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">This class became abstract.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by InstantiationError exception.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Abstract method int getNumOpenConnections ( ) has been added to this class.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">This class became abstract and a client program may be interrupted by InstantiationError exception.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Field callQueueSize of type org.apache.hadoop.hbase.util.Counter has been removed from this class.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchFieldError exception.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Field connectionList of type java.util.List<RpcServer.Connection> has been removed from this class.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchFieldError exception.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Field maxIdleTime of type int has been removed from this class.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchFieldError exception.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Field numConnections of type int has been removed from this class.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchFieldError exception.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Field port of type int has been removed from this class.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchFieldError exception.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Field purgeTimeout of type long has been removed from this class.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchFieldError exception.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Field responder of type RpcServer.Responder has been removed from this class.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchFieldError exception.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Field socketSendBufferSize of type int has been removed from this class.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchFieldError exception.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Field thresholdIdleConnections of type int has been removed from this class.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchFieldError exception.</p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>Following abstract method has been removed:</p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Change</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Result</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Abstract method Pair<Message,CellScanner>call ( BlockingService, Descriptors.MethodDescriptor, Message, CellScanner, long, MonitoredRPCHandler ) has been removed from this interface.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchMethodError exception.</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_replication_and_wal_changes"><a class="anchor" href="#_replication_and_wal_changes"></a>199.2.9. Replication and WAL changes:</h4>
+<div class="paragraph">
+<p>HBASE-18733: WALKey has been purged completely in HBase 2.0.
+Following are the changes to the WALKey:</p>
+</div>
+<div class="sect4">
+<h5 id="__classwalkey_8"><a class="anchor" href="#__classwalkey_8"></a>[−] classWALKey (8)</h5>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Change</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Result</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Access level of field clusterIds has been changed from protected to private.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by IllegalAccessError exception.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Access level of field compressionContext has been changed from protected to private.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by IllegalAccessError exception.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Access level of field encodedRegionName has been changed from protected to private.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by IllegalAccessError exception.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Access level of field tablename has been changed from protectedto private.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by IllegalAccessError exception.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Access level of field writeTime has been changed from protectedto private.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by IllegalAccessError exception.</p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>Following fields have been removed:</p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Change</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Result</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Field LOG of type org.apache.commons.logging.Log has been removed from this class.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchFieldError exception.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Field VERSION of type WALKey.Version has been removed from this class.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchFieldError exception.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Field logSeqNum of type long has been removed from this class.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchFieldError exception.</p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>Following are the changes to the WALEdit.class:
+hbase-server-1.0.0.jar, WALEdit.class package org.apache.hadoop.hbase.regionserver.wal</p>
+</div>
+</div>
+<div class="sect4">
+<h5 id="_waledit_getcompaction_cell_kv_static_walprotos_compactiondescriptor_1"><a class="anchor" href="#_waledit_getcompaction_cell_kv_static_walprotos_compactiondescriptor_1"></a>WALEdit.getCompaction ( Cell kv ) [static] : WALProtos.CompactionDescriptor (1)</h5>
+<div class="paragraph">
+<p>org/apache/hadoop/hbase/regionserver/wal/WALEdit.getCompaction:(Lorg/apache/hadoop/hbase/Cell;)Lorg/apache/hadoop/hbase/protobuf/generated/WALProtos$CompactionDescriptor;</p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Change</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Result</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Return value type has been changed from org.apache.hadoop.hbase.protobuf.generated.WALProtos.CompactionDescriptor to org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.CompactionDescriptor.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">This method has been removed because the return type is part of the method signature. A client program may be interrupted by NoSuchMethodError exception.</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect4">
+<h5 id="_waledit_getflushdescriptor_cell_cell_static_walprotos_flushdescriptor_1"><a class="anchor" href="#_waledit_getflushdescriptor_cell_cell_static_walprotos_flushdescriptor_1"></a>WALEdit.getFlushDescriptor ( Cell cell ) [static] : WALProtos.FlushDescriptor (1)</h5>
+<div class="paragraph">
+<p>org/apache/hadoop/hbase/regionserver/wal/WALEdit.getFlushDescriptor:(Lorg/apache/hadoop/hbase/Cell;)Lorg/apache/hadoop/hbase/protobuf/generated/WALProtos$FlushDescriptor;</p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Change</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Result</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Return value type has been changed from org.apache.hadoop.hbase.protobuf.generated.WALProtos.FlushDescriptor to org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.FlushDescriptor.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">This method has been removed because the return type is part of the method signature. A client program may be interrupted by NoSuchMethodError exception.</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect4">
+<h5 id="_waledit_getregioneventdescriptor_cell_cell_static_walprotos_regioneventdescriptor_1"><a class="anchor" href="#_waledit_getregioneventdescriptor_cell_cell_static_walprotos_regioneventdescriptor_1"></a>WALEdit.getRegionEventDescriptor ( Cell cell ) [static] : WALProtos.RegionEventDescriptor (1)</h5>
+<div class="paragraph">
+<p>org/apache/hadoop/hbase/regionserver/wal/WALEdit.getRegionEventDescriptor:(Lorg/apache/hadoop/hbase/Cell;)Lorg/apache/hadoop/hbase/protobuf/generated/WALProtos$RegionEventDescriptor;</p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Change</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Result</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Return value type has been changed from org.apache.hadoop.hbase.protobuf.generated.WALProtos.RegionEventDescriptor to org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.RegionEventDescriptor.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">This method has been removed because the return type is part of the method signature. A client program may be interrupted by NoSuchMethodError exception.</p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>Following is the change to the WALKey.class:
+package org.apache.hadoop.hbase.wal</p>
+</div>
+</div>
+<div class="sect4">
+<h5 id="_walkey_getbuilder_walcellcodec_bytestringcompressor_compressor_walprotos_walkey_builder_1"><a class="anchor" href="#_walkey_getbuilder_walcellcodec_bytestringcompressor_compressor_walprotos_walkey_builder_1"></a>WALKey.getBuilder ( WALCellCodec.ByteStringCompressor compressor ) : WALProtos.WALKey.Builder 1</h5>
+<div class="paragraph">
+<p>org/apache/hadoop/hbase/wal/WALKey.getBuilder:(Lorg/apache/hadoop/hbase/regionserver/wal/WALCellCodec$ByteStringCompressor;)Lorg/apache/hadoop/hbase/protobuf/generated/WALProtos$WALKey$Builder;</p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Change</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Result</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Return value type has been changed from org.apache.hadoop.hbase.protobuf.generated.WALProtos.WALKey.Builder to org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.WALKey.Builder.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">This method has been removed because the return type is part of the method signature. A client program may be interrupted by NoSuchMethodError exception.</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_deprecated_apis_or_coprocessor"><a class="anchor" href="#_deprecated_apis_or_coprocessor"></a>199.2.10. Deprecated APIs or coprocessor:</h4>
+<div class="paragraph">
+<p>HBASE-16769 - PB references from MasterObserver and RegionServerObserver has been removed.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_admin_interface_api_changes"><a class="anchor" href="#_admin_interface_api_changes"></a>199.2.11. Admin Interface API changes:</h4>
+<div class="paragraph">
+<p>You cannot administer an HBase 2.0 cluster with an HBase 1.0 client that includes RelicationAdmin, ACC, Thrift and REST usage of Admin ops. Methods returning protobufs have been changed to return POJOs instead. pb is not used in the APIs anymore. Returns have changed from void to Future for async methods.
+HBASE-18106 - Admin.listProcedures and Admin.listLocks were renamed to getProcedures and getLocks.
+MapReduce makes use of Admin doing following admin.getClusterStatus() to calcluate Splits.</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Thrift usage of Admin API:
+compact(ByteBuffer)
+createTable(ByteBuffer, List<ColumnDescriptor>)
+deleteTable(ByteBuffer)
+disableTable(ByteBuffer)
+enableTable(ByteBuffer)
+getTableNames()
+majorCompact(ByteBuffer)</p>
+</li>
+<li>
+<p>REST usage of Admin API:
+hbase-rest
+org.apache.hadoop.hbase.rest
+RootResource
+getTableList()
+ TableName[] tableNames = servlet.getAdmin().listTableNames();
+SchemaResource
+delete(UriInfo)
+ Admin admin = servlet.getAdmin();
+update(TableSchemaModel, boolean, UriInfo)
+ Admin admin = servlet.getAdmin();
+StorageClusterStatusResource
+get(UriInfo)
+ ClusterStatus status = servlet.getAdmin().getClusterStatus();
+StorageClusterVersionResource
+get(UriInfo)
+ model.setVersion(servlet.getAdmin().getClusterStatus().getHBaseVersion());
+TableResource
+exists()
+ return servlet.getAdmin().tableExists(TableName.valueOf(table));</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>Following are the changes to the Admin interface:</p>
+</div>
+<div class="sect4">
+<h5 id="__interface_admin_9"><a class="anchor" href="#__interface_admin_9"></a>[−] interface Admin (9)</h5>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Change</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Result</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Abstract method createTableAsync ( HTableDescriptor, byte[ ][ ] ) has been removed from this interface.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchMethodError exception.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Abstract method disableTableAsync ( TableName ) has been removed from this interface.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchMethodError exception.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Abstract method enableTableAsync ( TableName ) has been removed from this interface.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchMethodError exception.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Abstract method getCompactionState ( TableName ) has been removed from this interface.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchMethodError exception.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Abstract method getCompactionStateForRegion ( byte[ ] ) has been removed from this interface.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchMethodError exception.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Abstract method isSnapshotFinished ( HBaseProtos.SnapshotDescription ) has been removed from this interface.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchMethodError exception.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Abstract method snapshot ( String, TableName, HBaseProtos.SnapshotDescription.Type ) has been removed from this interface.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchMethodError exception.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Abstract method snapshot ( HBaseProtos.SnapshotDescription ) has been removed from this interface.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchMethodError exception.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Abstract method takeSnapshotAsync ( HBaseProtos.SnapshotDescription ) has been removed from this interface.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchMethodError exception.</p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>Following are the changes to the Admin.class:
+hbase-client-1.0.0.jar, Admin.class package org.apache.hadoop.hbase.client</p>
+</div>
+</div>
+<div class="sect4">
+<h5 id="__admin_createtableasync_htabledescriptor_p1_byte_p2_abstract_void_1"><a class="anchor" href="#__admin_createtableasync_htabledescriptor_p1_byte_p2_abstract_void_1"></a>[−] Admin.createTableAsync ( HTableDescriptor p1, byte[ ][ ] p2 ) [abstract] : void 1</h5>
+<div class="paragraph">
+<p>org/apache/hadoop/hbase/client/Admin.createTableAsync:(Lorg/apache/hadoop/hbase/HTableDescriptor;[[B)V</p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Change</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Result</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Return value type has been changed from void to java.util.concurrent.Future<java.lang.Void>.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">This method has been removed because the return type is part of the method signature. A client program may be interrupted by NoSuchMethodError exception.</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect4">
+<h5 id="__admin_disabletableasync_tablename_p1_abstract_void_1"><a class="anchor" href="#__admin_disabletableasync_tablename_p1_abstract_void_1"></a>[−] Admin.disableTableAsync ( TableName p1 ) [abstract] : void 1</h5>
+<div class="paragraph">
+<p>org/apache/hadoop/hbase/client/Admin.disableTableAsync:(Lorg/apache/hadoop/hbase/TableName;)V</p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Change</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Result</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Return value type has been changed from void to java.util.concurrent.Future<java.lang.Void>.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">This method has been removed because the return type is part of the method signature. A client program may be interrupted by NoSuchMethodError exception.</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect4">
+<h5 id="_admin_enabletableasync_tablename_p1_abstract_void_1"><a class="anchor" href="#_admin_enabletableasync_tablename_p1_abstract_void_1"></a>Admin.enableTableAsync ( TableName p1 ) [abstract] : void 1</h5>
+<div class="paragraph">
+<p>org/apache/hadoop/hbase/client/Admin.enableTableAsync:(Lorg/apache/hadoop/hbase/TableName;)V</p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Change</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Result</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Return value type has been changed from void to java.util.concurrent.Future<java.lang.Void>.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">This method has been removed because the return type is part of the method signature. A client program may be interrupted by NoSuchMethodError exception.</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect4">
+<h5 id="__admin_getcompactionstate_tablename_p1_abstract_adminprotos_getregioninforesponse_compactionstate_1"><a class="anchor" href="#__admin_getcompactionstate_tablename_p1_abstract_adminprotos_getregioninforesponse_compactionstate_1"></a>[−] Admin.getCompactionState ( TableName p1 ) [abstract] : AdminProtos.GetRegionInfoResponse.CompactionState 1</h5>
+<div class="paragraph">
+<p>org/apache/hadoop/hbase/client/Admin.getCompactionState:(Lorg/apache/hadoop/hbase/TableName;)Lorg/apache/hadoop/hbase/protobuf/generated/AdminProtos$GetRegionInfoResponse$CompactionState;</p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Change</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Result</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Return value type has been changed from org.apache.hadoop.hbase.protobuf.generated.AdminProtos.GetRegionInfoResponse.CompactionState to CompactionState.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">This method has been removed because the return type is part of the method signature. A client program may be interrupted by NoSuchMethodError exception.</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect4">
+<h5 id="__admin_getcompactionstateforregion_byte_p1_abstract_adminprotos_getregioninforesponse_compactionstate_1"><a class="anchor" href="#__admin_getcompactionstateforregion_byte_p1_abstract_adminprotos_getregioninforesponse_compactionstate_1"></a>[−] Admin.getCompactionStateForRegion ( byte[ ] p1 ) [abstract] : AdminProtos.GetRegionInfoResponse.CompactionState 1</h5>
+<div class="paragraph">
+<p>org/apache/hadoop/hbase/client/Admin.getCompactionStateForRegion:([B)Lorg/apache/hadoop/hbase/protobuf/generated/AdminProtos$GetRegionInfoResponse$CompactionState;</p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Change</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Result</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Return value type has been changed from org.apache.hadoop.hbase.protobuf.generated.AdminProtos.GetRegionInfoResponse.CompactionState to CompactionState.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">This method has been removed because the return type is part of the method signature. A client program may be interrupted by NoSuchMethodError exception.</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_htabledescriptor_and_hcolumndescriptor_changes"><a class="anchor" href="#_htabledescriptor_and_hcolumndescriptor_changes"></a>199.2.12. HTableDescriptor and HColumnDescriptor changes</h4>
+<div class="paragraph">
+<p>HTableDescriptor and HColumnDescriptor has become interfaces and you can create it through Builders. HCD has become CFD. It no longer implements writable interface.
+package org.apache.hadoop.hbase</p>
+</div>
+<div class="sect4">
+<h5 id="__class_hcolumndescriptor_1"><a class="anchor" href="#__class_hcolumndescriptor_1"></a>[−] class HColumnDescriptor (1)</h5>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Change</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Result</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Removed super-interface org.apache.hadoop.io.WritableComparable<HColumnDescriptor>.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchMethodError exception.</p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>HColumnDescriptor in 1.0.0
+{code}
+@InterfaceAudience.Public
+@InterfaceStability.Evolving
+public class HColumnDescriptor implements WritableComparable<HColumnDescriptor> {
+{code}</p>
+</div>
+<div class="paragraph">
+<p>HColumnDescriptor in 2.0
+{code}
+@InterfaceAudience.Public
+@Deprecated // remove it in 3.0
+public class HColumnDescriptor implements ColumnFamilyDescriptor, Comparable<HColumnDescriptor> {
+{code}</p>
+</div>
+<div class="paragraph">
+<p>For META_TABLEDESC, the maker method had been deprecated already in HTD in 1.0.0. OWNER_KEY is still in HTD.</p>
+</div>
+</div>
+<div class="sect4">
+<h5 id="_class_htabledescriptor_3"><a class="anchor" href="#_class_htabledescriptor_3"></a>class HTableDescriptor (3)</h5>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Change</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Result</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Removed super-interface org.apache.hadoop.io.WritableComparable<HTableDescriptor>.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchMethodError exception.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Field META_TABLEDESC of type HTableDescriptor has been removed from this class.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchFieldError exception.</p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>hbase-client-1.0.0.jar, HTableDescriptor.class package org.apache.hadoop.hbase</p>
+</div>
+</div>
+<div class="sect4">
+<h5 id="__htabledescriptor_getcolumnfamilies_hcolumndescriptor_1"><a class="anchor" href="#__htabledescriptor_getcolumnfamilies_hcolumndescriptor_1"></a>[−] HTableDescriptor.getColumnFamilies ( ) : HColumnDescriptor[ ] (1)</h5>
+<div class="paragraph">
+<p>org/apache/hadoop/hbase/HTableDescriptor.getColumnFamilies:()[Lorg/apache/hadoop/hbase/HColumnDescriptor;</p>
+</div>
+</div>
+<div class="sect4">
+<h5 id="__class_hcolumndescriptor_1_2"><a class="anchor" href="#__class_hcolumndescriptor_1_2"></a>[−] class HColumnDescriptor (1)</h5>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Change</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Result</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Return value type has been changed from HColumnDescriptor[]to client.ColumnFamilyDescriptor[].</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">This method has been removed because the return type is part of the method signature. A client program may be interrupted by NoSuchMethodError exception.</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect4">
+<h5 id="__htabledescriptor_getcoprocessors_list_string_1"><a class="anchor" href="#__htabledescriptor_getcoprocessors_list_string_1"></a>[−] HTableDescriptor.getCoprocessors ( ) : List<String> (1)</h5>
+<div class="paragraph">
+<p>org/apache/hadoop/hbase/HTableDescriptor.getCoprocessors:()Ljava/util/List;</p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Change</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Result</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Return value type has been changed from java.util.List<java.lang.String> to java.util.Collection.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">This method has been removed because the return type is part of the method signature. A client program may be interrupted by NoSuchMethodError exception.</p></td>
+</tr>
+</tbody>
+</table>
+<div class="ulist">
+<ul>
+<li>
+<p>HBASE-12990 MetaScanner is removed and it is replaced by MetaTableAccessor.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect4">
+<h5 id="_htablewrapper_changes"><a class="anchor" href="#_htablewrapper_changes"></a>HTableWrapper changes:</h5>
+<div class="paragraph">
+<p>hbase-server-1.0.0.jar, HTableWrapper.class package org.apache.hadoop.hbase.client</p>
+</div>
+</div>
+<div class="sect4">
+<h5 id="__htablewrapper_createwrapper_list_htableinterface_opentables_tablename_tablename_coprocessorhost_environment_env_executorservice_pool_static_htableinterface_1"><a class="anchor" href="#__htablewrapper_createwrapper_list_htableinterface_opentables_tablename_tablename_coprocessorhost_environment_env_executorservice_pool_static_htableinterface_1"></a>[−] HTableWrapper.createWrapper ( List<HTableInterface> openTables, TableName tableName, CoprocessorHost.Environment env, ExecutorService pool ) [static] : HTableInterface 1</h5>
+<div class="paragraph">
+<p>org/apache/hadoop/hbase/client/HTableWrapper.createWrapper:(Ljava/util/List;Lorg/apache/hadoop/hbase/TableName;Lorg/apache/hadoop/hbase/coprocessor/CoprocessorHost$Environment;Ljava/util/concurrent/ExecutorService;)Lorg/apache/hadoop/hbase/client/HTableInterface;</p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Change</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Result</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Return value type has been changed from HTableInterface to Table.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">This method has been removed because the return type is part of the method signature. A client program may be interrupted by NoSuchMethodError exception.</p></td>
+</tr>
+</tbody>
+</table>
+<div class="ulist">
+<ul>
+<li>
+<p>HBASE-12586: Delete all public HTable constructors and delete ConnectionManager#{delete,get}Connection.</p>
+</li>
+<li>
+<p>HBASE-9117: Remove HTablePool and all HConnection pooling related APIs.</p>
+</li>
+<li>
+<p>HBASE-13214: Remove deprecated and unused methods from HTable class
+Following are the changes to the Table interface:</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect4">
+<h5 id="__interface_table_4"><a class="anchor" href="#__interface_table_4"></a>[−] interface Table (4)</h5>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Change</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Result</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Abstract method batch ( List<?> ) has been removed from this interface.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchMethodError exception.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Abstract method batchCallback ( List<?>, Batch.Callback<R> )has been removed from this interface.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchMethodError exception.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Abstract method getWriteBufferSize ( ) has been removed from this interface.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchMethodError exception.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Abstract method setWriteBufferSize ( long ) has been removed from this interface.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchMethodError exception.</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_deprecated_buffer_methods_in_table_in_1_0_1_and_removed_in_2_0_0"><a class="anchor" href="#_deprecated_buffer_methods_in_table_in_1_0_1_and_removed_in_2_0_0"></a>199.2.13. Deprecated buffer methods in Table (in 1.0.1) and removed in 2.0.0</h4>
+<div class="ulist">
+<ul>
+<li>
+<p>HBASE-13298- Clarify if Table.{set|get}WriteBufferSize() is deprecated or not.</p>
+</li>
+<li>
+<p>LockTimeoutException and OperationConflictException classes have been removed.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_class_operationconflictexception_1"><a class="anchor" href="#_class_operationconflictexception_1"></a>199.2.14. class OperationConflictException (1)</h4>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Change</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Result</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">This class has been removed.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoClassDefFoundErrorexception.</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect3">
+<h4 id="_class_class_locktimeoutexception_1"><a class="anchor" href="#_class_class_locktimeoutexception_1"></a>199.2.15. class class LockTimeoutException (1)</h4>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Change</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Result</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">This class has been removed.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoClassDefFoundErrorexception.</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect3">
+<h4 id="_filter_api_changes"><a class="anchor" href="#_filter_api_changes"></a>199.2.16. Filter API changes:</h4>
+<div class="paragraph">
+<p>Following methods have been removed:
+package org.apache.hadoop.hbase.filter</p>
+</div>
+<div class="sect4">
+<h5 id="__class_filter_2"><a class="anchor" href="#__class_filter_2"></a>[−] class Filter (2)</h5>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Change</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Result</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Abstract method getNextKeyHint ( KeyValue ) has been removed from this class.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchMethodError exception.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Abstract method transform ( KeyValue ) has been removed from this class.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchMethodError exception.</p></td>
+</tr>
+</tbody>
+</table>
+<div class="ulist">
+<ul>
+<li>
+<p>HBASE-12296 Filters should work with ByteBufferedCell.</p>
+</li>
+<li>
+<p>HConnection is removed in HBase 2.0.</p>
+</li>
+<li>
+<p>RegionLoad and ServerLoad internally moved to shaded PB.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect4">
+<h5 id="__class_regionload_1"><a class="anchor" href="#__class_regionload_1"></a>[−] class RegionLoad (1)</h5>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Change</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Result</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Type of field regionLoadPB has been changed from protobuf.generated.ClusterStatusProtos.RegionLoad to shaded.protobuf.generated.ClusterStatusProtos.RegionLoad.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchFieldError exception.</p></td>
+</tr>
+</tbody>
+</table>
+<div class="ulist">
+<ul>
+<li>
+<p>HBASE-15783:AccessControlConstants#OP_ATTRIBUTE_ACL_STRATEGY_CELL_FIRST is not used any more.
+package org.apache.hadoop.hbase.security.access</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect4">
+<h5 id="__interface_accesscontrolconstants_3"><a class="anchor" href="#__interface_accesscontrolconstants_3"></a>[−] interface AccessControlConstants (3)</h5>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Change</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Result</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Field OP_ATTRIBUTE_ACL_STRATEGY of type java.lang.Stringhas been removed from this interface.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchFieldError exception.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Field OP_ATTRIBUTE_ACL_STRATEGY_CELL_FIRST of type byte[] has been removed from this interface.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchFieldError exception.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Field OP_ATTRIBUTE_ACL_STRATEGY_DEFAULT of type byte[] has been removed from this interface.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchFieldError exception.</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect4">
+<h5 id="_serverload_returns_long_instead_of_int_1"><a class="anchor" href="#_serverload_returns_long_instead_of_int_1"></a>ServerLoad returns long instead of int 1</h5>
+<div class="paragraph">
+<p>hbase-client-1.0.0.jar, ServerLoad.class package org.apache.hadoop.hbase</p>
+</div>
+</div>
+<div class="sect4">
+<h5 id="__serverload_getnumberofrequests_int_1"><a class="anchor" href="#__serverload_getnumberofrequests_int_1"></a>[−] ServerLoad.getNumberOfRequests ( ) : int 1</h5>
+<div class="paragraph">
+<p>org/apache/hadoop/hbase/ServerLoad.getNumberOfRequests:()I</p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Change</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Result</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Return value type has been changed from int to long.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">This method has been removed because the return type is part of the method signature. A client program may be interrupted by NoSuchMethodError exception.</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect4">
+<h5 id="__serverload_getreadrequestscount_int_1"><a class="anchor" href="#__serverload_getreadrequestscount_int_1"></a>[−] ServerLoad.getReadRequestsCount ( ) : int 1</h5>
+<div class="paragraph">
+<p>org/apache/hadoop/hbase/ServerLoad.getReadRequestsCount:()I</p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Change</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Result</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Return value type has been changed from int to long.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">This method has been removed because the return type is part of the method signature. A client program may be interrupted by NoSuchMethodError exception.</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect4">
+<h5 id="__serverload_gettotalnumberofrequests_int_1"><a class="anchor" href="#__serverload_gettotalnumberofrequests_int_1"></a>[−] ServerLoad.getTotalNumberOfRequests ( ) : int 1</h5>
+<div class="paragraph">
+<p>org/apache/hadoop/hbase/ServerLoad.getTotalNumberOfRequests:()I</p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Change</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Result</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Return value type has been changed from int to long.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">This method has been removed because the return type is part of the method signature. A client program may be interrupted by NoSuchMethodError exception.</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect4">
+<h5 id="__serverload_getwriterequestscount_int_1"><a class="anchor" href="#__serverload_getwriterequestscount_int_1"></a>[−]ServerLoad.getWriteRequestsCount ( ) : int 1</h5>
+<div class="paragraph">
+<p>org/apache/hadoop/hbase/ServerLoad.getWriteRequestsCount:()I</p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Change</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Result</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Return value type has been changed from int to long.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">This method has been removed because the return type is part of the method signature. A client program may be interrupted by NoSuchMethodError exception.</p></td>
+</tr>
+</tbody>
+</table>
+<div class="ulist">
+<ul>
+<li>
+<p>HBASE-13636 Remove deprecation for HBASE-4072 (Reading of zoo.cfg)</p>
+</li>
+<li>
+<p>HConstants are removed. HBASE-16040 Remove configuration "hbase.replication"</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect4">
+<h5 id="__class_hconstants_6"><a class="anchor" href="#__class_hconstants_6"></a>[−]class HConstants (6)</h5>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Change</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Result</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Field DEFAULT_HBASE_CONFIG_READ_ZOOKEEPER_CONFIG of type boolean has been removed from this class.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchFieldError exception.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Field HBASE_CONFIG_READ_ZOOKEEPER_CONFIG of type java.lang.String has been removed from this class.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchFieldError exception.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Field REPLICATION_ENABLE_DEFAULT of type boolean has been removed from this class.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchFieldError exception.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Field REPLICATION_ENABLE_KEY of type java.lang.String has been removed from this class.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchFieldError exception.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Field ZOOKEEPER_CONFIG_NAME of type java.lang.String has been removed from this class.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchFieldError exception.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Field ZOOKEEPER_USEMULTI of type java.lang.String has been removed from this class.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchFieldError exception.</p></td>
+</tr>
+</tbody>
+</table>
+<div class="ulist">
+<ul>
+<li>
+<p>HBASE-18732: [compat 1-2] HBASE-14047 removed Cell methods without deprecation cycle.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect4">
+<h5 id="__interface_cell_5"><a class="anchor" href="#__interface_cell_5"></a>[−]interface Cell 5</h5>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Change</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Result</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Abstract method getFamily ( ) has been removed from this interface.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchMethodError exception.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Abstract method getMvccVersion ( ) has been removed from this interface.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchMethodError exception.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Abstract method getQualifier ( ) has been removed from this interface.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchMethodError exception.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Abstract method getRow ( ) has been removed from this interface.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchMethodError exception.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Abstract method getValue ( ) has been removed from this interface.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchMethodError exception.</p></td>
+</tr>
+</tbody>
+</table>
+<div class="ulist">
+<ul>
+<li>
+<p>HBASE-18795:Expose KeyValue.getBuffer() for tests alone. Allows KV#getBuffer in tests only that was deprecated previously.</p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_region_scanner_changes"><a class="anchor" href="#_region_scanner_changes"></a>199.2.17. Region scanner changes:</h4>
+<div class="sect4">
+<h5 id="__interface_regionscanner_1"><a class="anchor" href="#__interface_regionscanner_1"></a>[−]interface RegionScanner (1)</h5>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Change</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Result</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Abstract method boolean nextRaw ( List<Cell>, int ) has been removed from this interface.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by NoSuchMethodError exception.</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_storefile_changes"><a class="anchor" href="#_storefile_changes"></a>199.2.18. StoreFile changes:</h4>
+<div class="sect4">
+<h5 id="__class_storefile_1"><a class="anchor" href="#__class_storefile_1"></a>[−] class StoreFile (1)</h5>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Change</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Result</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">This class became interface.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A client program may be interrupted by IncompatibleClassChangeError or InstantiationError exception dependent on the usage of this class.</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_mapreduce_changes"><a class="anchor" href="#_mapreduce_changes"></a>199.2.19. Mapreduce changes:</h4>
+<div class="paragraph">
+<p>HFile*Format has been removed in HBase 2.0.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_clusterstatus_changes"><a class="anchor" href="#_clusterstatus_changes"></a>199.2.20. ClusterStatus changes:</h4>
+<div class="paragraph">
+<p>HBASE-15843: Replace RegionState.getRegionInTransition() Map with a Set
+hbase-client-1.0.0.jar, ClusterStatus.class package org.apache.hadoop.hbase</p>
+</div>
+<div class="sect4">
+<h5 id="__clusterstatus_getregionsintransition_map_string_regionstate_1"><a class="anchor" href="#__clusterstatus_getregionsintransition_map_string_regionstate_1"></a>[−] ClusterStatus.getRegionsInTransition ( ) : Map<String,RegionState> 1</h5>
+<div class="paragraph">
+<p>org/apache/hadoop/hbase/ClusterStatus.getRegionsInTransition:()Ljava/util/Map;</p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Change</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Result</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Return value type has been changed from java.util.Map<java.lang.String,master.RegionState> to java.util.List<master.RegionState>.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">This method has been removed because the return type is part of the method signature. A client program may be interrupted by NoSuchMethodError exception.</p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>Other changes in ClusterStatus include removal of convert methods that were no longer necessary after purge of PB from API.</p>
+</div>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_purge_of_pbs_from_api"><a class="anchor" href="#_purge_of_pbs_from_api"></a>199.2.21. Purge of PBs from API</h4>
+<div class="paragraph">
+<p>PBs have been deprecated in APIs in HBase 2.0.</p>
+</div>
+<div class="sect4">
+<h5 id="__hbasesnapshotexception_getsnapshotdescription_hbaseprotos_snapshotdescription_1"><a class="anchor" href="#__hbasesnapshotexception_getsnapshotdescription_hbaseprotos_snapshotdescription_1"></a>[−] HBaseSnapshotException.getSnapshotDescription ( ) : HBaseProtos.SnapshotDescription 1</h5>
+<div class="paragraph">
+<p>org/apache/hadoop/hbase/snapshot/HBaseSnapshotException.getSnapshotDescription:()Lorg/apache/hadoop/hbase/protobuf/generated/HBaseProtos$SnapshotDescription;</p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Change</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Result</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Return value type has been changed from org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.SnapshotDescription to org.apache.hadoop.hbase.client.SnapshotDescription.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">This method has been removed because the return type is part of the method signature. A client program may be interrupted by NoSuchMethodError exception.</p></td>
+</tr>
+</tbody>
+</table>
+<div class="ulist">
+<ul>
+<li>
+<p>HBASE-15609: Remove PB references from Result, DoubleColumnInterpreter and any such public facing class for 2.0.
+hbase-client-1.0.0.jar, Result.class package org.apache.hadoop.hbase.client</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect4">
+<h5 id="__result_getstats_clientprotos_regionloadstats_1"><a class="anchor" href="#__result_getstats_clientprotos_regionloadstats_1"></a>[−] Result.getStats ( ) : ClientProtos.RegionLoadStats 1</h5>
+<div class="paragraph">
+<p>org/apache/hadoop/hbase/client/Result.getStats:()Lorg/apache/hadoop/hbase/protobuf/generated/ClientProtos$RegionLoadStats;</p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+<
<TRUNCATED>
[25/51] [partial] hbase-site git commit: Published site at
9101fc246f86445006bfbcdfda5cc495016dc280.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/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 a5de1cb..8c1b90f 100644
--- a/devapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
@@ -219,11 +219,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><E> (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><T>, 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/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/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/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/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/LockType.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">LockType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/LockedResourceType.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">LockedResourceType</span></a></li>
</ul>
</li>
</ul>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html b/devapidocs/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html
index a60c9b6..ee8b574 100644
--- a/devapidocs/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html
+++ b/devapidocs/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html
@@ -1428,7 +1428,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
<ul class="blockList">
<li class="blockList">
<h4>WALS_PATH_FILTER</h4>
-<pre>private static final org.apache.hadoop.fs.PathFilter <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1202">WALS_PATH_FILTER</a></pre>
+<pre>private static final org.apache.hadoop.fs.PathFilter <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1200">WALS_PATH_FILTER</a></pre>
</li>
</ul>
<a name="FILE_STATUS_ID_COMPARATOR">
@@ -1437,7 +1437,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
<ul class="blockListLast">
<li class="blockList">
<h4>FILE_STATUS_ID_COMPARATOR</h4>
-<pre>private static final <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true" title="class or interface in java.util">Comparator</a><org.apache.hadoop.fs.FileStatus> <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1210">FILE_STATUS_ID_COMPARATOR</a></pre>
+<pre>private static final <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true" title="class or interface in java.util">Comparator</a><org.apache.hadoop.fs.FileStatus> <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1208">FILE_STATUS_ID_COMPARATOR</a></pre>
</li>
</ul>
</li>
@@ -1991,7 +1991,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
<ul class="blockList">
<li class="blockList">
<h4>closeCurrentLogStream</h4>
-<pre>private void <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1083">closeCurrentLogStream</a>()</pre>
+<pre>private void <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1081">closeCurrentLogStream</a>()</pre>
</li>
</ul>
<a name="removeInactiveLogs--">
@@ -2000,7 +2000,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
<ul class="blockList">
<li class="blockList">
<h4>removeInactiveLogs</h4>
-<pre>private void <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1108">removeInactiveLogs</a>()
+<pre>private void <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1106">removeInactiveLogs</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>
@@ -2014,7 +2014,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
<ul class="blockList">
<li class="blockList">
<h4>buildHoldingCleanupTracker</h4>
-<pre>private void <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1120">buildHoldingCleanupTracker</a>()</pre>
+<pre>private void <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1118">buildHoldingCleanupTracker</a>()</pre>
</li>
</ul>
<a name="removeAllLogs-long-">
@@ -2023,7 +2023,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
<ul class="blockList">
<li class="blockList">
<h4>removeAllLogs</h4>
-<pre>private void <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1141">removeAllLogs</a>(long lastLogId)</pre>
+<pre>private void <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1139">removeAllLogs</a>(long lastLogId)</pre>
<div class="block">Remove all logs with logId <= <code>lastLogId</code>.</div>
</li>
</ul>
@@ -2033,7 +2033,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
<ul class="blockList">
<li class="blockList">
<h4>removeLogFile</h4>
-<pre>private boolean <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1163">removeLogFile</a>(<a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/ProcedureWALFile.html" title="class in org.apache.hadoop.hbase.procedure2.store.wal">ProcedureWALFile</a> log,
+<pre>private boolean <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1161">removeLogFile</a>(<a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/ProcedureWALFile.html" title="class in org.apache.hadoop.hbase.procedure2.store.wal">ProcedureWALFile</a> log,
org.apache.hadoop.fs.Path walArchiveDir)</pre>
</li>
</ul>
@@ -2043,7 +2043,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
<ul class="blockList">
<li class="blockList">
<h4>getWALDir</h4>
-<pre>public org.apache.hadoop.fs.Path <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1184">getWALDir</a>()</pre>
+<pre>public org.apache.hadoop.fs.Path <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1182">getWALDir</a>()</pre>
</li>
</ul>
<a name="getFileSystem--">
@@ -2052,7 +2052,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
<ul class="blockList">
<li class="blockList">
<h4>getFileSystem</h4>
-<pre>public org.apache.hadoop.fs.FileSystem <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1188">getFileSystem</a>()</pre>
+<pre>public org.apache.hadoop.fs.FileSystem <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1186">getFileSystem</a>()</pre>
</li>
</ul>
<a name="getLogFilePath-long-">
@@ -2061,7 +2061,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
<ul class="blockList">
<li class="blockList">
<h4>getLogFilePath</h4>
-<pre>protected org.apache.hadoop.fs.Path <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1192">getLogFilePath</a>(long logId)
+<pre>protected org.apache.hadoop.fs.Path <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1190">getLogFilePath</a>(long logId)
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>
@@ -2075,7 +2075,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
<ul class="blockList">
<li class="blockList">
<h4>getLogIdFromName</h4>
-<pre>private static long <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1196">getLogIdFromName</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> name)</pre>
+<pre>private static long <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1194">getLogIdFromName</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> name)</pre>
</li>
</ul>
<a name="getLogFiles--">
@@ -2084,7 +2084,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
<ul class="blockList">
<li class="blockList">
<h4>getLogFiles</h4>
-<pre>private org.apache.hadoop.fs.FileStatus[] <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1220">getLogFiles</a>()
+<pre>private org.apache.hadoop.fs.FileStatus[] <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1218">getLogFiles</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>
@@ -2098,7 +2098,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
<ul class="blockList">
<li class="blockList">
<h4>getMaxLogId</h4>
-<pre>private static long <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1231">getMaxLogId</a>(org.apache.hadoop.fs.FileStatus[] logFiles)</pre>
+<pre>private static long <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1229">getMaxLogId</a>(org.apache.hadoop.fs.FileStatus[] logFiles)</pre>
</li>
</ul>
<a name="initOldLogs-org.apache.hadoop.fs.FileStatus:A-">
@@ -2107,7 +2107,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
<ul class="blockList">
<li class="blockList">
<h4>initOldLogs</h4>
-<pre>private long <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1244">initOldLogs</a>(org.apache.hadoop.fs.FileStatus[] logFiles)
+<pre>private long <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1242">initOldLogs</a>(org.apache.hadoop.fs.FileStatus[] logFiles)
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="returnLabel">Returns:</span></dt>
@@ -2123,7 +2123,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
<ul class="blockList">
<li class="blockList">
<h4>initTrackerFromOldLogs</h4>
-<pre>private void <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1273">initTrackerFromOldLogs</a>()</pre>
+<pre>private void <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1271">initTrackerFromOldLogs</a>()</pre>
<div class="block">If last log's tracker is not null, use it as <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#storeTracker"><code>storeTracker</code></a>.
Otherwise, set storeTracker as partial, and let <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/ProcedureWALFormatReader.html" title="class in org.apache.hadoop.hbase.procedure2.store.wal"><code>ProcedureWALFormatReader</code></a> rebuild
it using entries in the log.</div>
@@ -2135,7 +2135,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
<ul class="blockListLast">
<li class="blockList">
<h4>initOldLog</h4>
-<pre>private <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/ProcedureWALFile.html" title="class in org.apache.hadoop.hbase.procedure2.store.wal">ProcedureWALFile</a> <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1287">initOldLog</a>(org.apache.hadoop.fs.FileStatus logFile,
+<pre>private <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/ProcedureWALFile.html" title="class in org.apache.hadoop.hbase.procedure2.store.wal">ProcedureWALFile</a> <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.1285">initOldLog</a>(org.apache.hadoop.fs.FileStatus logFile,
org.apache.hadoop.fs.Path walArchiveDir)
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">Loads given log file and it's tracker.</div>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/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 325e178..6d4dd59 100644
--- a/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html
@@ -229,12 +229,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><E> (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><T>, 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/QuotaType.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">QuotaType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/OperationQuota.OperationType.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">OperationQuota.OperationType</span></a></li>
<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/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/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/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/QuotaType.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">QuotaType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/OperationQuota.OperationType.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">OperationQuota.OperationType</span></a></li>
<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>
</ul>
</li>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/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 29857ee..116edfa 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
@@ -704,20 +704,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><E> (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><T>, 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/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/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/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/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/MetricsRegionServerSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">MetricsRegionServerSourceFactoryImpl.FactoryStorage</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/BloomType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">BloomType</span></a></li>
<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.LimitScope.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ScannerContext.LimitScope</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/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/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/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/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/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/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/TimeRangeTracker.Type.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TimeRangeTracker.Type</span></a></li>
<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">HRegion.FlushResult.Result</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/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/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/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/Region.Operation.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Region.Operation</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.NextState.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ScannerContext.NextState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/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/MetricsRegionServerSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">MetricsRegionServerSourceFactoryImpl.FactoryStorage</span></a></li>
</ul>
</li>
</ul>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/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 b377318..3bd22b5 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/package-tree.html
@@ -130,8 +130,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><E> (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><T>, 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/StripeCompactionScanQueryMatcher.DropDeletesInOutput.html" title="enum in org.apache.hadoop.hbase.regionserver.querymatcher"><span class="typeNameLink">StripeCompactionScanQueryMatcher.DropDeletesInOutput</span></a></li>
<li type="circle">org.apache.hadoop.hbase.regionserver.querymatcher.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/ScanQueryMatcher.MatchCode.html" title="enum in org.apache.hadoop.hbase.regionserver.querymatcher"><span class="typeNameLink">ScanQueryMatcher.MatchCode</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.querymatcher.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/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>
</ul>
</li>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/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 b49dc4d..3ab1f40 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-tree.html
@@ -242,8 +242,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><E> (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><T>, 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/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/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>
</ul>
</li>
</ul>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/replication/regionserver/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/replication/regionserver/package-tree.html b/devapidocs/org/apache/hadoop/hbase/replication/regionserver/package-tree.html
index d1e114d..193a3a3032 100644
--- a/devapidocs/org/apache/hadoop/hbase/replication/regionserver/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/replication/regionserver/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><E> (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><T>, 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.replication.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsReplicationSourceFactoryImpl.SourceHolder.html" title="enum in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">MetricsReplicationSourceFactoryImpl.SourceHolder</span></a></li>
<li type="circle">org.apache.hadoop.hbase.replication.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.WorkerState.html" title="enum in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">ReplicationSourceShipper.WorkerState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.replication.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsReplicationSourceFactoryImpl.SourceHolder.html" title="enum in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">MetricsReplicationSourceFactoryImpl.SourceHolder</span></a></li>
</ul>
</li>
</ul>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/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 d9fa142..5a7e325 100644
--- a/devapidocs/org/apache/hadoop/hbase/security/access/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/security/access/package-tree.html
@@ -137,9 +137,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><E> (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><T>, 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/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>
<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>
</ul>
</li>
</ul>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/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 67b7e3a..29d7634 100644
--- a/devapidocs/org/apache/hadoop/hbase/security/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/security/package-tree.html
@@ -191,9 +191,9 @@
<ul>
<li type="circle">java.lang.<a href="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><E> (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><T>, 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/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/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/SaslUtil.QualityOfProtection.html" title="enum in org.apache.hadoop.hbase.security"><span class="typeNameLink">SaslUtil.QualityOfProtection</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.security.<a href="../../../../../org/apache/hadoop/hbase/security/AuthMethod.html" title="enum in org.apache.hadoop.hbase.security"><span class="typeNameLink">AuthMethod</span></a></li>
</ul>
</li>
</ul>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/util/class-use/AvlUtil.AvlLinkedNode.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/util/class-use/AvlUtil.AvlLinkedNode.html b/devapidocs/org/apache/hadoop/hbase/util/class-use/AvlUtil.AvlLinkedNode.html
index ec05b4c..be23856 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/class-use/AvlUtil.AvlLinkedNode.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/class-use/AvlUtil.AvlLinkedNode.html
@@ -108,7 +108,12 @@
<tbody>
<tr class="altColor">
<td class="colFirst"><code>(package private) class </code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MetaQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">MetaQueue</a></span></code> </td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MetaQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">MetaQueue</a></span></code>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span>
+<div class="block"><span class="deprecationComment">only used for <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>RecoverMetaProcedure</code></a>. Should be removed along with
+ <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>RecoverMetaProcedure</code></a>.</span></div>
+</div>
+</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>(package private) class </code></td>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/util/class-use/AvlUtil.AvlNode.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/util/class-use/AvlUtil.AvlNode.html b/devapidocs/org/apache/hadoop/hbase/util/class-use/AvlUtil.AvlNode.html
index 8b89a0a..224dcec 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/class-use/AvlUtil.AvlNode.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/class-use/AvlUtil.AvlNode.html
@@ -108,7 +108,12 @@
<tbody>
<tr class="altColor">
<td class="colFirst"><code>(package private) class </code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MetaQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">MetaQueue</a></span></code> </td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MetaQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">MetaQueue</a></span></code>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span>
+<div class="block"><span class="deprecationComment">only used for <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>RecoverMetaProcedure</code></a>. Should be removed along with
+ <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>RecoverMetaProcedure</code></a>.</span></div>
+</div>
+</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>(package private) class </code></td>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/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 3c2c174..63bcc87 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
@@ -532,13 +532,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><E> (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><T>, 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/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/IdReadWriteLock.ReferenceType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">IdReadWriteLock.ReferenceType</span></a></li>
<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.UnsafeComparer.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">Bytes.LexicographicalComparerHolder.UnsafeComparer</span></a> (implements org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.Comparer.html" title="interface in org.apache.hadoop.hbase.util">Bytes.Comparer</a><T>)</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/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/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/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/PrettyPrinter.Unit.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">PrettyPrinter.Unit</span></a></li>
<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.PureJavaComparer.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">Bytes.LexicographicalComparerHolder.PureJavaComparer</span></a> (implements org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.Comparer.html" title="interface in org.apache.hadoop.hbase.util">Bytes.Comparer</a><T>)</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/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/HBaseFsck.ErrorReporter.ERROR_CODE.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">HBaseFsck.ErrorReporter.ERROR_CODE</span></a></li>
</ul>
</li>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/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 9ec5b35..c0e28b4 100644
--- a/devapidocs/org/apache/hadoop/hbase/wal/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/wal/package-tree.html
@@ -189,8 +189,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><E> (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><T>, 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/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>
+<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>
</ul>
</li>
</ul>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/org/apache/hadoop/hbase/zookeeper/class-use/ZKListener.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/zookeeper/class-use/ZKListener.html b/devapidocs/org/apache/hadoop/hbase/zookeeper/class-use/ZKListener.html
index ed67b6d..3103705 100644
--- a/devapidocs/org/apache/hadoop/hbase/zookeeper/class-use/ZKListener.html
+++ b/devapidocs/org/apache/hadoop/hbase/zookeeper/class-use/ZKListener.html
@@ -229,8 +229,7 @@
<tr class="altColor">
<td class="colFirst"><code>class </code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/RegionServerTracker.html" title="class in org.apache.hadoop.hbase.master">RegionServerTracker</a></span></code>
-<div class="block">
- Tracks the online region servers via ZK.</div>
+<div class="block">Tracks the online region servers via ZK.</div>
</td>
</tr>
<tr class="rowColor">
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/65565d77/devapidocs/overview-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/overview-tree.html b/devapidocs/overview-tree.html
index 9c79960..d885dfe 100644
--- a/devapidocs/overview-tree.html
+++ b/devapidocs/overview-tree.html
@@ -2699,6 +2699,7 @@
<li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/DisableTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">DisableTableProcedure</span></a></li>
<li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/EnableTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">EnableTableProcedure</span></a></li>
<li type="circle">org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/GCMergedRegionsProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment"><span class="typeNameLink">GCMergedRegionsProcedure</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/InitMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">InitMetaProcedure</span></a></li>
<li type="circle">org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment"><span class="typeNameLink">MergeTableRegionsProcedure</span></a></li>
<li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">ModifyTableProcedure</span></a></li>
<li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/ReopenTableRegionsProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">ReopenTableRegionsProcedure</span></a></li>
@@ -3331,6 +3332,7 @@
<li type="circle">org.apache.hadoop.hbase.master.normalizer.<a href="org/apache/hadoop/hbase/master/normalizer/RegionNormalizerChore.html" title="class in org.apache.hadoop.hbase.master.normalizer"><span class="typeNameLink">RegionNormalizerChore</span></a></li>
<li type="circle">org.apache.hadoop.hbase.quotas.<a href="org/apache/hadoop/hbase/quotas/RegionSizeReportingChore.html" title="class in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">RegionSizeReportingChore</span></a></li>
<li type="circle">org.apache.hadoop.hbase.master.cleaner.<a href="org/apache/hadoop/hbase/master/cleaner/ReplicationBarrierCleaner.html" title="class in org.apache.hadoop.hbase.master.cleaner"><span class="typeNameLink">ReplicationBarrierCleaner</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/ServerManager.FlushedSequenceIdFlusher.html" title="class in org.apache.hadoop.hbase.master"><span class="typeNameLink">ServerManager.FlushedSequenceIdFlusher</span></a></li>
<li type="circle">org.apache.hadoop.hbase.quotas.<a href="org/apache/hadoop/hbase/quotas/SnapshotQuotaObserverChore.html" title="class in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">SnapshotQuotaObserverChore</span></a></li>
<li type="circle">org.apache.hadoop.hbase.quotas.<a href="org/apache/hadoop/hbase/quotas/SpaceQuotaRefresherChore.html" title="class in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">SpaceQuotaRefresherChore</span></a></li>
<li type="circle">org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/SplitLogManager.TimeoutMonitor.html" title="class in org.apache.hadoop.hbase.master"><span class="typeNameLink">SplitLogManager.TimeoutMonitor</span></a></li>