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

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

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

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

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

Reply via email to