http://git-wip-us.apache.org/repos/asf/hbase-site/blob/fd365a2b/devapidocs/src-html/org/apache/hadoop/hbase/client/HBaseAdmin.ProcedureFuture.html
----------------------------------------------------------------------
diff --git 
a/devapidocs/src-html/org/apache/hadoop/hbase/client/HBaseAdmin.ProcedureFuture.html
 
b/devapidocs/src-html/org/apache/hadoop/hbase/client/HBaseAdmin.ProcedureFuture.html
index d438f22..7c59e27 100644
--- 
a/devapidocs/src-html/org/apache/hadoop/hbase/client/HBaseAdmin.ProcedureFuture.html
+++ 
b/devapidocs/src-html/org/apache/hadoop/hbase/client/HBaseAdmin.ProcedureFuture.html
@@ -1290,8 +1290,8 @@
 <span class="sourceLineNo">1282</span>                       CompactType 
compactType) throws IOException {<a name="line.1282"></a>
 <span class="sourceLineNo">1283</span>    switch (compactType) {<a 
name="line.1283"></a>
 <span class="sourceLineNo">1284</span>      case MOB:<a name="line.1284"></a>
-<span class="sourceLineNo">1285</span>        
compact(this.connection.getAdminForMaster(), getMobRegionInfo(tableName), 
major,<a name="line.1285"></a>
-<span class="sourceLineNo">1286</span>          columnFamily);<a 
name="line.1286"></a>
+<span class="sourceLineNo">1285</span>        
compact(this.connection.getAdminForMaster(), 
RegionInfo.createMobRegionInfo(tableName),<a name="line.1285"></a>
+<span class="sourceLineNo">1286</span>            major, columnFamily);<a 
name="line.1286"></a>
 <span class="sourceLineNo">1287</span>        break;<a name="line.1287"></a>
 <span class="sourceLineNo">1288</span>      case NORMAL:<a 
name="line.1288"></a>
 <span class="sourceLineNo">1289</span>        checkTableExists(tableName);<a 
name="line.1289"></a>
@@ -3248,7 +3248,7 @@
 <span class="sourceLineNo">3240</span>          new 
Callable&lt;AdminProtos.GetRegionInfoResponse.CompactionState&gt;() {<a 
name="line.3240"></a>
 <span class="sourceLineNo">3241</span>            @Override<a 
name="line.3241"></a>
 <span class="sourceLineNo">3242</span>            public 
AdminProtos.GetRegionInfoResponse.CompactionState call() throws Exception {<a 
name="line.3242"></a>
-<span class="sourceLineNo">3243</span>              RegionInfo info = 
getMobRegionInfo(tableName);<a name="line.3243"></a>
+<span class="sourceLineNo">3243</span>              RegionInfo info = 
RegionInfo.createMobRegionInfo(tableName);<a name="line.3243"></a>
 <span class="sourceLineNo">3244</span>              GetRegionInfoRequest 
request =<a name="line.3244"></a>
 <span class="sourceLineNo">3245</span>                
RequestConverter.buildGetRegionInfoRequest(info.getRegionName(), true);<a 
name="line.3245"></a>
 <span class="sourceLineNo">3246</span>              GetRegionInfoResponse 
response = masterAdmin.getRegionInfo(rpcController, request);<a 
name="line.3246"></a>
@@ -3312,7 +3312,7 @@
 <span class="sourceLineNo">3304</span>        }<a name="line.3304"></a>
 <span class="sourceLineNo">3305</span>        break;<a name="line.3305"></a>
 <span class="sourceLineNo">3306</span>      default:<a name="line.3306"></a>
-<span class="sourceLineNo">3307</span>        throw new 
IllegalArgumentException("Unknowne compactType: " + compactType);<a 
name="line.3307"></a>
+<span class="sourceLineNo">3307</span>        throw new 
IllegalArgumentException("Unknown compactType: " + compactType);<a 
name="line.3307"></a>
 <span class="sourceLineNo">3308</span>    }<a name="line.3308"></a>
 <span class="sourceLineNo">3309</span>    if (state != null) {<a 
name="line.3309"></a>
 <span class="sourceLineNo">3310</span>      return 
ProtobufUtil.createCompactionState(state);<a name="line.3310"></a>
@@ -3847,325 +3847,320 @@
 <span class="sourceLineNo">3839</span>    });<a name="line.3839"></a>
 <span class="sourceLineNo">3840</span>  }<a name="line.3840"></a>
 <span class="sourceLineNo">3841</span><a name="line.3841"></a>
-<span class="sourceLineNo">3842</span>  private RegionInfo 
getMobRegionInfo(TableName tableName) {<a name="line.3842"></a>
-<span class="sourceLineNo">3843</span>    return 
RegionInfoBuilder.newBuilder(tableName).setStartKey(Bytes.toBytes(".mob")).setRegionId(0)<a
 name="line.3843"></a>
-<span class="sourceLineNo">3844</span>        .build();<a name="line.3844"></a>
-<span class="sourceLineNo">3845</span>  }<a name="line.3845"></a>
-<span class="sourceLineNo">3846</span><a name="line.3846"></a>
-<span class="sourceLineNo">3847</span>  private RpcControllerFactory 
getRpcControllerFactory() {<a name="line.3847"></a>
-<span class="sourceLineNo">3848</span>    return this.rpcControllerFactory;<a 
name="line.3848"></a>
-<span class="sourceLineNo">3849</span>  }<a name="line.3849"></a>
-<span class="sourceLineNo">3850</span><a name="line.3850"></a>
-<span class="sourceLineNo">3851</span>  @Override<a name="line.3851"></a>
-<span class="sourceLineNo">3852</span>  public void addReplicationPeer(String 
peerId, ReplicationPeerConfig peerConfig, boolean enabled)<a 
name="line.3852"></a>
-<span class="sourceLineNo">3853</span>      throws IOException {<a 
name="line.3853"></a>
-<span class="sourceLineNo">3854</span>    executeCallable(new 
MasterCallable&lt;Void&gt;(getConnection(), getRpcControllerFactory()) {<a 
name="line.3854"></a>
-<span class="sourceLineNo">3855</span>      @Override<a name="line.3855"></a>
-<span class="sourceLineNo">3856</span>      protected Void rpcCall() throws 
Exception {<a name="line.3856"></a>
-<span class="sourceLineNo">3857</span>        
master.addReplicationPeer(getRpcController(),<a name="line.3857"></a>
-<span class="sourceLineNo">3858</span>          
RequestConverter.buildAddReplicationPeerRequest(peerId, peerConfig, 
enabled));<a name="line.3858"></a>
-<span class="sourceLineNo">3859</span>        return null;<a 
name="line.3859"></a>
-<span class="sourceLineNo">3860</span>      }<a name="line.3860"></a>
-<span class="sourceLineNo">3861</span>    });<a name="line.3861"></a>
-<span class="sourceLineNo">3862</span>  }<a name="line.3862"></a>
-<span class="sourceLineNo">3863</span><a name="line.3863"></a>
-<span class="sourceLineNo">3864</span>  @Override<a name="line.3864"></a>
-<span class="sourceLineNo">3865</span>  public void 
removeReplicationPeer(String peerId) throws IOException {<a 
name="line.3865"></a>
-<span class="sourceLineNo">3866</span>    executeCallable(new 
MasterCallable&lt;Void&gt;(getConnection(), getRpcControllerFactory()) {<a 
name="line.3866"></a>
-<span class="sourceLineNo">3867</span>      @Override<a name="line.3867"></a>
-<span class="sourceLineNo">3868</span>      protected Void rpcCall() throws 
Exception {<a name="line.3868"></a>
-<span class="sourceLineNo">3869</span>        
master.removeReplicationPeer(getRpcController(),<a name="line.3869"></a>
-<span class="sourceLineNo">3870</span>          
RequestConverter.buildRemoveReplicationPeerRequest(peerId));<a 
name="line.3870"></a>
-<span class="sourceLineNo">3871</span>        return null;<a 
name="line.3871"></a>
-<span class="sourceLineNo">3872</span>      }<a name="line.3872"></a>
-<span class="sourceLineNo">3873</span>    });<a name="line.3873"></a>
-<span class="sourceLineNo">3874</span>  }<a name="line.3874"></a>
-<span class="sourceLineNo">3875</span><a name="line.3875"></a>
-<span class="sourceLineNo">3876</span>  @Override<a name="line.3876"></a>
-<span class="sourceLineNo">3877</span>  public void 
enableReplicationPeer(final String peerId) throws IOException {<a 
name="line.3877"></a>
-<span class="sourceLineNo">3878</span>    executeCallable(new 
MasterCallable&lt;Void&gt;(getConnection(), getRpcControllerFactory()) {<a 
name="line.3878"></a>
-<span class="sourceLineNo">3879</span>      @Override<a name="line.3879"></a>
-<span class="sourceLineNo">3880</span>      protected Void rpcCall() throws 
Exception {<a name="line.3880"></a>
-<span class="sourceLineNo">3881</span>        
master.enableReplicationPeer(getRpcController(),<a name="line.3881"></a>
-<span class="sourceLineNo">3882</span>          
RequestConverter.buildEnableReplicationPeerRequest(peerId));<a 
name="line.3882"></a>
-<span class="sourceLineNo">3883</span>        return null;<a 
name="line.3883"></a>
-<span class="sourceLineNo">3884</span>      }<a name="line.3884"></a>
-<span class="sourceLineNo">3885</span>    });<a name="line.3885"></a>
-<span class="sourceLineNo">3886</span>  }<a name="line.3886"></a>
-<span class="sourceLineNo">3887</span><a name="line.3887"></a>
-<span class="sourceLineNo">3888</span>  @Override<a name="line.3888"></a>
-<span class="sourceLineNo">3889</span>  public void 
disableReplicationPeer(final String peerId) throws IOException {<a 
name="line.3889"></a>
-<span class="sourceLineNo">3890</span>    executeCallable(new 
MasterCallable&lt;Void&gt;(getConnection(), getRpcControllerFactory()) {<a 
name="line.3890"></a>
-<span class="sourceLineNo">3891</span>      @Override<a name="line.3891"></a>
-<span class="sourceLineNo">3892</span>      protected Void rpcCall() throws 
Exception {<a name="line.3892"></a>
-<span class="sourceLineNo">3893</span>        
master.disableReplicationPeer(getRpcController(),<a name="line.3893"></a>
-<span class="sourceLineNo">3894</span>          
RequestConverter.buildDisableReplicationPeerRequest(peerId));<a 
name="line.3894"></a>
-<span class="sourceLineNo">3895</span>        return null;<a 
name="line.3895"></a>
-<span class="sourceLineNo">3896</span>      }<a name="line.3896"></a>
-<span class="sourceLineNo">3897</span>    });<a name="line.3897"></a>
-<span class="sourceLineNo">3898</span>  }<a name="line.3898"></a>
-<span class="sourceLineNo">3899</span><a name="line.3899"></a>
-<span class="sourceLineNo">3900</span>  @Override<a name="line.3900"></a>
-<span class="sourceLineNo">3901</span>  public ReplicationPeerConfig 
getReplicationPeerConfig(final String peerId) throws IOException {<a 
name="line.3901"></a>
-<span class="sourceLineNo">3902</span>    return executeCallable(new 
MasterCallable&lt;ReplicationPeerConfig&gt;(getConnection(),<a 
name="line.3902"></a>
-<span class="sourceLineNo">3903</span>        getRpcControllerFactory()) {<a 
name="line.3903"></a>
-<span class="sourceLineNo">3904</span>      @Override<a name="line.3904"></a>
-<span class="sourceLineNo">3905</span>      protected ReplicationPeerConfig 
rpcCall() throws Exception {<a name="line.3905"></a>
-<span class="sourceLineNo">3906</span>        GetReplicationPeerConfigResponse 
response = master.getReplicationPeerConfig(<a name="line.3906"></a>
-<span class="sourceLineNo">3907</span>          getRpcController(), 
RequestConverter.buildGetReplicationPeerConfigRequest(peerId));<a 
name="line.3907"></a>
-<span class="sourceLineNo">3908</span>        return 
ReplicationPeerConfigUtil.convert(response.getPeerConfig());<a 
name="line.3908"></a>
-<span class="sourceLineNo">3909</span>      }<a name="line.3909"></a>
-<span class="sourceLineNo">3910</span>    });<a name="line.3910"></a>
-<span class="sourceLineNo">3911</span>  }<a name="line.3911"></a>
-<span class="sourceLineNo">3912</span><a name="line.3912"></a>
-<span class="sourceLineNo">3913</span>  @Override<a name="line.3913"></a>
-<span class="sourceLineNo">3914</span>  public void 
updateReplicationPeerConfig(final String peerId,<a name="line.3914"></a>
-<span class="sourceLineNo">3915</span>      final ReplicationPeerConfig 
peerConfig) throws IOException {<a name="line.3915"></a>
-<span class="sourceLineNo">3916</span>    executeCallable(new 
MasterCallable&lt;Void&gt;(getConnection(), getRpcControllerFactory()) {<a 
name="line.3916"></a>
-<span class="sourceLineNo">3917</span>      @Override<a name="line.3917"></a>
-<span class="sourceLineNo">3918</span>      protected Void rpcCall() throws 
Exception {<a name="line.3918"></a>
-<span class="sourceLineNo">3919</span>        
master.updateReplicationPeerConfig(getRpcController(),<a name="line.3919"></a>
-<span class="sourceLineNo">3920</span>          
RequestConverter.buildUpdateReplicationPeerConfigRequest(peerId, 
peerConfig));<a name="line.3920"></a>
-<span class="sourceLineNo">3921</span>        return null;<a 
name="line.3921"></a>
-<span class="sourceLineNo">3922</span>      }<a name="line.3922"></a>
-<span class="sourceLineNo">3923</span>    });<a name="line.3923"></a>
-<span class="sourceLineNo">3924</span>  }<a name="line.3924"></a>
-<span class="sourceLineNo">3925</span><a name="line.3925"></a>
-<span class="sourceLineNo">3926</span>  @Override<a name="line.3926"></a>
-<span class="sourceLineNo">3927</span>  public void 
appendReplicationPeerTableCFs(String id,<a name="line.3927"></a>
-<span class="sourceLineNo">3928</span>      Map&lt;TableName, ? extends 
Collection&lt;String&gt;&gt; tableCfs) throws ReplicationException,<a 
name="line.3928"></a>
-<span class="sourceLineNo">3929</span>      IOException {<a 
name="line.3929"></a>
-<span class="sourceLineNo">3930</span>    if (tableCfs == null) {<a 
name="line.3930"></a>
-<span class="sourceLineNo">3931</span>      throw new 
ReplicationException("tableCfs is null");<a name="line.3931"></a>
-<span class="sourceLineNo">3932</span>    }<a name="line.3932"></a>
-<span class="sourceLineNo">3933</span>    ReplicationPeerConfig peerConfig = 
getReplicationPeerConfig(id);<a name="line.3933"></a>
-<span class="sourceLineNo">3934</span>    
ReplicationPeerConfigUtil.appendTableCFsToReplicationPeerConfig(tableCfs, 
peerConfig);<a name="line.3934"></a>
-<span class="sourceLineNo">3935</span>    updateReplicationPeerConfig(id, 
peerConfig);<a name="line.3935"></a>
-<span class="sourceLineNo">3936</span>  }<a name="line.3936"></a>
-<span class="sourceLineNo">3937</span><a name="line.3937"></a>
-<span class="sourceLineNo">3938</span>  @Override<a name="line.3938"></a>
-<span class="sourceLineNo">3939</span>  public void 
removeReplicationPeerTableCFs(String id,<a name="line.3939"></a>
-<span class="sourceLineNo">3940</span>      Map&lt;TableName, ? extends 
Collection&lt;String&gt;&gt; tableCfs) throws ReplicationException,<a 
name="line.3940"></a>
-<span class="sourceLineNo">3941</span>      IOException {<a 
name="line.3941"></a>
-<span class="sourceLineNo">3942</span>    if (tableCfs == null) {<a 
name="line.3942"></a>
-<span class="sourceLineNo">3943</span>      throw new 
ReplicationException("tableCfs is null");<a name="line.3943"></a>
-<span class="sourceLineNo">3944</span>    }<a name="line.3944"></a>
-<span class="sourceLineNo">3945</span>    ReplicationPeerConfig peerConfig = 
getReplicationPeerConfig(id);<a name="line.3945"></a>
-<span class="sourceLineNo">3946</span>    
ReplicationPeerConfigUtil.removeTableCFsFromReplicationPeerConfig(tableCfs, 
peerConfig, id);<a name="line.3946"></a>
-<span class="sourceLineNo">3947</span>    updateReplicationPeerConfig(id, 
peerConfig);<a name="line.3947"></a>
+<span class="sourceLineNo">3842</span>  private RpcControllerFactory 
getRpcControllerFactory() {<a name="line.3842"></a>
+<span class="sourceLineNo">3843</span>    return this.rpcControllerFactory;<a 
name="line.3843"></a>
+<span class="sourceLineNo">3844</span>  }<a name="line.3844"></a>
+<span class="sourceLineNo">3845</span><a name="line.3845"></a>
+<span class="sourceLineNo">3846</span>  @Override<a name="line.3846"></a>
+<span class="sourceLineNo">3847</span>  public void addReplicationPeer(String 
peerId, ReplicationPeerConfig peerConfig, boolean enabled)<a 
name="line.3847"></a>
+<span class="sourceLineNo">3848</span>      throws IOException {<a 
name="line.3848"></a>
+<span class="sourceLineNo">3849</span>    executeCallable(new 
MasterCallable&lt;Void&gt;(getConnection(), getRpcControllerFactory()) {<a 
name="line.3849"></a>
+<span class="sourceLineNo">3850</span>      @Override<a name="line.3850"></a>
+<span class="sourceLineNo">3851</span>      protected Void rpcCall() throws 
Exception {<a name="line.3851"></a>
+<span class="sourceLineNo">3852</span>        
master.addReplicationPeer(getRpcController(),<a name="line.3852"></a>
+<span class="sourceLineNo">3853</span>          
RequestConverter.buildAddReplicationPeerRequest(peerId, peerConfig, 
enabled));<a name="line.3853"></a>
+<span class="sourceLineNo">3854</span>        return null;<a 
name="line.3854"></a>
+<span class="sourceLineNo">3855</span>      }<a name="line.3855"></a>
+<span class="sourceLineNo">3856</span>    });<a name="line.3856"></a>
+<span class="sourceLineNo">3857</span>  }<a name="line.3857"></a>
+<span class="sourceLineNo">3858</span><a name="line.3858"></a>
+<span class="sourceLineNo">3859</span>  @Override<a name="line.3859"></a>
+<span class="sourceLineNo">3860</span>  public void 
removeReplicationPeer(String peerId) throws IOException {<a 
name="line.3860"></a>
+<span class="sourceLineNo">3861</span>    executeCallable(new 
MasterCallable&lt;Void&gt;(getConnection(), getRpcControllerFactory()) {<a 
name="line.3861"></a>
+<span class="sourceLineNo">3862</span>      @Override<a name="line.3862"></a>
+<span class="sourceLineNo">3863</span>      protected Void rpcCall() throws 
Exception {<a name="line.3863"></a>
+<span class="sourceLineNo">3864</span>        
master.removeReplicationPeer(getRpcController(),<a name="line.3864"></a>
+<span class="sourceLineNo">3865</span>          
RequestConverter.buildRemoveReplicationPeerRequest(peerId));<a 
name="line.3865"></a>
+<span class="sourceLineNo">3866</span>        return null;<a 
name="line.3866"></a>
+<span class="sourceLineNo">3867</span>      }<a name="line.3867"></a>
+<span class="sourceLineNo">3868</span>    });<a name="line.3868"></a>
+<span class="sourceLineNo">3869</span>  }<a name="line.3869"></a>
+<span class="sourceLineNo">3870</span><a name="line.3870"></a>
+<span class="sourceLineNo">3871</span>  @Override<a name="line.3871"></a>
+<span class="sourceLineNo">3872</span>  public void 
enableReplicationPeer(final String peerId) throws IOException {<a 
name="line.3872"></a>
+<span class="sourceLineNo">3873</span>    executeCallable(new 
MasterCallable&lt;Void&gt;(getConnection(), getRpcControllerFactory()) {<a 
name="line.3873"></a>
+<span class="sourceLineNo">3874</span>      @Override<a name="line.3874"></a>
+<span class="sourceLineNo">3875</span>      protected Void rpcCall() throws 
Exception {<a name="line.3875"></a>
+<span class="sourceLineNo">3876</span>        
master.enableReplicationPeer(getRpcController(),<a name="line.3876"></a>
+<span class="sourceLineNo">3877</span>          
RequestConverter.buildEnableReplicationPeerRequest(peerId));<a 
name="line.3877"></a>
+<span class="sourceLineNo">3878</span>        return null;<a 
name="line.3878"></a>
+<span class="sourceLineNo">3879</span>      }<a name="line.3879"></a>
+<span class="sourceLineNo">3880</span>    });<a name="line.3880"></a>
+<span class="sourceLineNo">3881</span>  }<a name="line.3881"></a>
+<span class="sourceLineNo">3882</span><a name="line.3882"></a>
+<span class="sourceLineNo">3883</span>  @Override<a name="line.3883"></a>
+<span class="sourceLineNo">3884</span>  public void 
disableReplicationPeer(final String peerId) throws IOException {<a 
name="line.3884"></a>
+<span class="sourceLineNo">3885</span>    executeCallable(new 
MasterCallable&lt;Void&gt;(getConnection(), getRpcControllerFactory()) {<a 
name="line.3885"></a>
+<span class="sourceLineNo">3886</span>      @Override<a name="line.3886"></a>
+<span class="sourceLineNo">3887</span>      protected Void rpcCall() throws 
Exception {<a name="line.3887"></a>
+<span class="sourceLineNo">3888</span>        
master.disableReplicationPeer(getRpcController(),<a name="line.3888"></a>
+<span class="sourceLineNo">3889</span>          
RequestConverter.buildDisableReplicationPeerRequest(peerId));<a 
name="line.3889"></a>
+<span class="sourceLineNo">3890</span>        return null;<a 
name="line.3890"></a>
+<span class="sourceLineNo">3891</span>      }<a name="line.3891"></a>
+<span class="sourceLineNo">3892</span>    });<a name="line.3892"></a>
+<span class="sourceLineNo">3893</span>  }<a name="line.3893"></a>
+<span class="sourceLineNo">3894</span><a name="line.3894"></a>
+<span class="sourceLineNo">3895</span>  @Override<a name="line.3895"></a>
+<span class="sourceLineNo">3896</span>  public ReplicationPeerConfig 
getReplicationPeerConfig(final String peerId) throws IOException {<a 
name="line.3896"></a>
+<span class="sourceLineNo">3897</span>    return executeCallable(new 
MasterCallable&lt;ReplicationPeerConfig&gt;(getConnection(),<a 
name="line.3897"></a>
+<span class="sourceLineNo">3898</span>        getRpcControllerFactory()) {<a 
name="line.3898"></a>
+<span class="sourceLineNo">3899</span>      @Override<a name="line.3899"></a>
+<span class="sourceLineNo">3900</span>      protected ReplicationPeerConfig 
rpcCall() throws Exception {<a name="line.3900"></a>
+<span class="sourceLineNo">3901</span>        GetReplicationPeerConfigResponse 
response = master.getReplicationPeerConfig(<a name="line.3901"></a>
+<span class="sourceLineNo">3902</span>          getRpcController(), 
RequestConverter.buildGetReplicationPeerConfigRequest(peerId));<a 
name="line.3902"></a>
+<span class="sourceLineNo">3903</span>        return 
ReplicationPeerConfigUtil.convert(response.getPeerConfig());<a 
name="line.3903"></a>
+<span class="sourceLineNo">3904</span>      }<a name="line.3904"></a>
+<span class="sourceLineNo">3905</span>    });<a name="line.3905"></a>
+<span class="sourceLineNo">3906</span>  }<a name="line.3906"></a>
+<span class="sourceLineNo">3907</span><a name="line.3907"></a>
+<span class="sourceLineNo">3908</span>  @Override<a name="line.3908"></a>
+<span class="sourceLineNo">3909</span>  public void 
updateReplicationPeerConfig(final String peerId,<a name="line.3909"></a>
+<span class="sourceLineNo">3910</span>      final ReplicationPeerConfig 
peerConfig) throws IOException {<a name="line.3910"></a>
+<span class="sourceLineNo">3911</span>    executeCallable(new 
MasterCallable&lt;Void&gt;(getConnection(), getRpcControllerFactory()) {<a 
name="line.3911"></a>
+<span class="sourceLineNo">3912</span>      @Override<a name="line.3912"></a>
+<span class="sourceLineNo">3913</span>      protected Void rpcCall() throws 
Exception {<a name="line.3913"></a>
+<span class="sourceLineNo">3914</span>        
master.updateReplicationPeerConfig(getRpcController(),<a name="line.3914"></a>
+<span class="sourceLineNo">3915</span>          
RequestConverter.buildUpdateReplicationPeerConfigRequest(peerId, 
peerConfig));<a name="line.3915"></a>
+<span class="sourceLineNo">3916</span>        return null;<a 
name="line.3916"></a>
+<span class="sourceLineNo">3917</span>      }<a name="line.3917"></a>
+<span class="sourceLineNo">3918</span>    });<a name="line.3918"></a>
+<span class="sourceLineNo">3919</span>  }<a name="line.3919"></a>
+<span class="sourceLineNo">3920</span><a name="line.3920"></a>
+<span class="sourceLineNo">3921</span>  @Override<a name="line.3921"></a>
+<span class="sourceLineNo">3922</span>  public void 
appendReplicationPeerTableCFs(String id,<a name="line.3922"></a>
+<span class="sourceLineNo">3923</span>      Map&lt;TableName, ? extends 
Collection&lt;String&gt;&gt; tableCfs) throws ReplicationException,<a 
name="line.3923"></a>
+<span class="sourceLineNo">3924</span>      IOException {<a 
name="line.3924"></a>
+<span class="sourceLineNo">3925</span>    if (tableCfs == null) {<a 
name="line.3925"></a>
+<span class="sourceLineNo">3926</span>      throw new 
ReplicationException("tableCfs is null");<a name="line.3926"></a>
+<span class="sourceLineNo">3927</span>    }<a name="line.3927"></a>
+<span class="sourceLineNo">3928</span>    ReplicationPeerConfig peerConfig = 
getReplicationPeerConfig(id);<a name="line.3928"></a>
+<span class="sourceLineNo">3929</span>    
ReplicationPeerConfigUtil.appendTableCFsToReplicationPeerConfig(tableCfs, 
peerConfig);<a name="line.3929"></a>
+<span class="sourceLineNo">3930</span>    updateReplicationPeerConfig(id, 
peerConfig);<a name="line.3930"></a>
+<span class="sourceLineNo">3931</span>  }<a name="line.3931"></a>
+<span class="sourceLineNo">3932</span><a name="line.3932"></a>
+<span class="sourceLineNo">3933</span>  @Override<a name="line.3933"></a>
+<span class="sourceLineNo">3934</span>  public void 
removeReplicationPeerTableCFs(String id,<a name="line.3934"></a>
+<span class="sourceLineNo">3935</span>      Map&lt;TableName, ? extends 
Collection&lt;String&gt;&gt; tableCfs) throws ReplicationException,<a 
name="line.3935"></a>
+<span class="sourceLineNo">3936</span>      IOException {<a 
name="line.3936"></a>
+<span class="sourceLineNo">3937</span>    if (tableCfs == null) {<a 
name="line.3937"></a>
+<span class="sourceLineNo">3938</span>      throw new 
ReplicationException("tableCfs is null");<a name="line.3938"></a>
+<span class="sourceLineNo">3939</span>    }<a name="line.3939"></a>
+<span class="sourceLineNo">3940</span>    ReplicationPeerConfig peerConfig = 
getReplicationPeerConfig(id);<a name="line.3940"></a>
+<span class="sourceLineNo">3941</span>    
ReplicationPeerConfigUtil.removeTableCFsFromReplicationPeerConfig(tableCfs, 
peerConfig, id);<a name="line.3941"></a>
+<span class="sourceLineNo">3942</span>    updateReplicationPeerConfig(id, 
peerConfig);<a name="line.3942"></a>
+<span class="sourceLineNo">3943</span>  }<a name="line.3943"></a>
+<span class="sourceLineNo">3944</span><a name="line.3944"></a>
+<span class="sourceLineNo">3945</span>  @Override<a name="line.3945"></a>
+<span class="sourceLineNo">3946</span>  public 
List&lt;ReplicationPeerDescription&gt; listReplicationPeers() throws 
IOException {<a name="line.3946"></a>
+<span class="sourceLineNo">3947</span>    return 
listReplicationPeers((Pattern)null);<a name="line.3947"></a>
 <span class="sourceLineNo">3948</span>  }<a name="line.3948"></a>
 <span class="sourceLineNo">3949</span><a name="line.3949"></a>
 <span class="sourceLineNo">3950</span>  @Override<a name="line.3950"></a>
-<span class="sourceLineNo">3951</span>  public 
List&lt;ReplicationPeerDescription&gt; listReplicationPeers() throws 
IOException {<a name="line.3951"></a>
-<span class="sourceLineNo">3952</span>    return 
listReplicationPeers((Pattern)null);<a name="line.3952"></a>
-<span class="sourceLineNo">3953</span>  }<a name="line.3953"></a>
-<span class="sourceLineNo">3954</span><a name="line.3954"></a>
-<span class="sourceLineNo">3955</span>  @Override<a name="line.3955"></a>
-<span class="sourceLineNo">3956</span>  public 
List&lt;ReplicationPeerDescription&gt; listReplicationPeers(Pattern pattern)<a 
name="line.3956"></a>
-<span class="sourceLineNo">3957</span>      throws IOException {<a 
name="line.3957"></a>
-<span class="sourceLineNo">3958</span>    return executeCallable(new 
MasterCallable&lt;List&lt;ReplicationPeerDescription&gt;&gt;(getConnection(),<a 
name="line.3958"></a>
-<span class="sourceLineNo">3959</span>        getRpcControllerFactory()) {<a 
name="line.3959"></a>
-<span class="sourceLineNo">3960</span>      @Override<a name="line.3960"></a>
-<span class="sourceLineNo">3961</span>      protected 
List&lt;ReplicationPeerDescription&gt; rpcCall() throws Exception {<a 
name="line.3961"></a>
-<span class="sourceLineNo">3962</span>        
List&lt;ReplicationProtos.ReplicationPeerDescription&gt; peersList = 
master.listReplicationPeers(<a name="line.3962"></a>
-<span class="sourceLineNo">3963</span>          getRpcController(), 
RequestConverter.buildListReplicationPeersRequest(pattern))<a 
name="line.3963"></a>
-<span class="sourceLineNo">3964</span>            .getPeerDescList();<a 
name="line.3964"></a>
-<span class="sourceLineNo">3965</span>        
List&lt;ReplicationPeerDescription&gt; result = new 
ArrayList&lt;&gt;(peersList.size());<a name="line.3965"></a>
-<span class="sourceLineNo">3966</span>        for 
(ReplicationProtos.ReplicationPeerDescription peer : peersList) {<a 
name="line.3966"></a>
-<span class="sourceLineNo">3967</span>          
result.add(ReplicationPeerConfigUtil.toReplicationPeerDescription(peer));<a 
name="line.3967"></a>
-<span class="sourceLineNo">3968</span>        }<a name="line.3968"></a>
-<span class="sourceLineNo">3969</span>        return result;<a 
name="line.3969"></a>
-<span class="sourceLineNo">3970</span>      }<a name="line.3970"></a>
-<span class="sourceLineNo">3971</span>    });<a name="line.3971"></a>
-<span class="sourceLineNo">3972</span>  }<a name="line.3972"></a>
-<span class="sourceLineNo">3973</span><a name="line.3973"></a>
-<span class="sourceLineNo">3974</span>  @Override<a name="line.3974"></a>
-<span class="sourceLineNo">3975</span>  public void 
decommissionRegionServers(List&lt;ServerName&gt; servers, boolean offload)<a 
name="line.3975"></a>
-<span class="sourceLineNo">3976</span>      throws IOException {<a 
name="line.3976"></a>
-<span class="sourceLineNo">3977</span>    executeCallable(new 
MasterCallable&lt;Void&gt;(getConnection(), getRpcControllerFactory()) {<a 
name="line.3977"></a>
-<span class="sourceLineNo">3978</span>      @Override<a name="line.3978"></a>
-<span class="sourceLineNo">3979</span>      public Void rpcCall() throws 
ServiceException {<a name="line.3979"></a>
-<span class="sourceLineNo">3980</span>        
master.decommissionRegionServers(getRpcController(),<a name="line.3980"></a>
-<span class="sourceLineNo">3981</span>          
RequestConverter.buildDecommissionRegionServersRequest(servers, offload));<a 
name="line.3981"></a>
-<span class="sourceLineNo">3982</span>        return null;<a 
name="line.3982"></a>
-<span class="sourceLineNo">3983</span>      }<a name="line.3983"></a>
-<span class="sourceLineNo">3984</span>    });<a name="line.3984"></a>
-<span class="sourceLineNo">3985</span>  }<a name="line.3985"></a>
-<span class="sourceLineNo">3986</span><a name="line.3986"></a>
-<span class="sourceLineNo">3987</span>  @Override<a name="line.3987"></a>
-<span class="sourceLineNo">3988</span>  public List&lt;ServerName&gt; 
listDecommissionedRegionServers() throws IOException {<a name="line.3988"></a>
-<span class="sourceLineNo">3989</span>    return executeCallable(new 
MasterCallable&lt;List&lt;ServerName&gt;&gt;(getConnection(),<a 
name="line.3989"></a>
-<span class="sourceLineNo">3990</span>              getRpcControllerFactory()) 
{<a name="line.3990"></a>
-<span class="sourceLineNo">3991</span>      @Override<a name="line.3991"></a>
-<span class="sourceLineNo">3992</span>      public List&lt;ServerName&gt; 
rpcCall() throws ServiceException {<a name="line.3992"></a>
-<span class="sourceLineNo">3993</span>        
ListDecommissionedRegionServersRequest req = 
ListDecommissionedRegionServersRequest.newBuilder().build();<a 
name="line.3993"></a>
-<span class="sourceLineNo">3994</span>        List&lt;ServerName&gt; servers = 
new ArrayList&lt;&gt;();<a name="line.3994"></a>
-<span class="sourceLineNo">3995</span>        for (HBaseProtos.ServerName 
server : master<a name="line.3995"></a>
-<span class="sourceLineNo">3996</span>            
.listDecommissionedRegionServers(getRpcController(), req).getServerNameList()) 
{<a name="line.3996"></a>
-<span class="sourceLineNo">3997</span>          
servers.add(ProtobufUtil.toServerName(server));<a name="line.3997"></a>
-<span class="sourceLineNo">3998</span>        }<a name="line.3998"></a>
-<span class="sourceLineNo">3999</span>        return servers;<a 
name="line.3999"></a>
-<span class="sourceLineNo">4000</span>      }<a name="line.4000"></a>
-<span class="sourceLineNo">4001</span>    });<a name="line.4001"></a>
-<span class="sourceLineNo">4002</span>  }<a name="line.4002"></a>
-<span class="sourceLineNo">4003</span><a name="line.4003"></a>
-<span class="sourceLineNo">4004</span>  @Override<a name="line.4004"></a>
-<span class="sourceLineNo">4005</span>  public void 
recommissionRegionServer(ServerName server, List&lt;byte[]&gt; 
encodedRegionNames)<a name="line.4005"></a>
-<span class="sourceLineNo">4006</span>      throws IOException {<a 
name="line.4006"></a>
-<span class="sourceLineNo">4007</span>    executeCallable(new 
MasterCallable&lt;Void&gt;(getConnection(), getRpcControllerFactory()) {<a 
name="line.4007"></a>
-<span class="sourceLineNo">4008</span>      @Override<a name="line.4008"></a>
-<span class="sourceLineNo">4009</span>      public Void rpcCall() throws 
ServiceException {<a name="line.4009"></a>
-<span class="sourceLineNo">4010</span>        
master.recommissionRegionServer(getRpcController(),<a name="line.4010"></a>
-<span class="sourceLineNo">4011</span>          
RequestConverter.buildRecommissionRegionServerRequest(server, 
encodedRegionNames));<a name="line.4011"></a>
-<span class="sourceLineNo">4012</span>        return null;<a 
name="line.4012"></a>
-<span class="sourceLineNo">4013</span>      }<a name="line.4013"></a>
-<span class="sourceLineNo">4014</span>    });<a name="line.4014"></a>
-<span class="sourceLineNo">4015</span>  }<a name="line.4015"></a>
-<span class="sourceLineNo">4016</span><a name="line.4016"></a>
-<span class="sourceLineNo">4017</span>  @Override<a name="line.4017"></a>
-<span class="sourceLineNo">4018</span>  public List&lt;TableCFs&gt; 
listReplicatedTableCFs() throws IOException {<a name="line.4018"></a>
-<span class="sourceLineNo">4019</span>    List&lt;TableCFs&gt; 
replicatedTableCFs = new ArrayList&lt;&gt;();<a name="line.4019"></a>
-<span class="sourceLineNo">4020</span>    List&lt;TableDescriptor&gt; tables = 
listTableDescriptors();<a name="line.4020"></a>
-<span class="sourceLineNo">4021</span>    tables.forEach(table -&gt; {<a 
name="line.4021"></a>
-<span class="sourceLineNo">4022</span>      Map&lt;String, Integer&gt; cfs = 
new HashMap&lt;&gt;();<a name="line.4022"></a>
-<span class="sourceLineNo">4023</span>      
Stream.of(table.getColumnFamilies())<a name="line.4023"></a>
-<span class="sourceLineNo">4024</span>          .filter(column -&gt; 
column.getScope() != HConstants.REPLICATION_SCOPE_LOCAL)<a name="line.4024"></a>
-<span class="sourceLineNo">4025</span>          .forEach(column -&gt; {<a 
name="line.4025"></a>
-<span class="sourceLineNo">4026</span>            
cfs.put(column.getNameAsString(), column.getScope());<a name="line.4026"></a>
-<span class="sourceLineNo">4027</span>          });<a name="line.4027"></a>
-<span class="sourceLineNo">4028</span>      if (!cfs.isEmpty()) {<a 
name="line.4028"></a>
-<span class="sourceLineNo">4029</span>        replicatedTableCFs.add(new 
TableCFs(table.getTableName(), cfs));<a name="line.4029"></a>
-<span class="sourceLineNo">4030</span>      }<a name="line.4030"></a>
-<span class="sourceLineNo">4031</span>    });<a name="line.4031"></a>
-<span class="sourceLineNo">4032</span>    return replicatedTableCFs;<a 
name="line.4032"></a>
-<span class="sourceLineNo">4033</span>  }<a name="line.4033"></a>
-<span class="sourceLineNo">4034</span><a name="line.4034"></a>
-<span class="sourceLineNo">4035</span>  @Override<a name="line.4035"></a>
-<span class="sourceLineNo">4036</span>  public void 
enableTableReplication(final TableName tableName) throws IOException {<a 
name="line.4036"></a>
-<span class="sourceLineNo">4037</span>    if (tableName == null) {<a 
name="line.4037"></a>
-<span class="sourceLineNo">4038</span>      throw new 
IllegalArgumentException("Table name cannot be null");<a name="line.4038"></a>
-<span class="sourceLineNo">4039</span>    }<a name="line.4039"></a>
-<span class="sourceLineNo">4040</span>    if (!tableExists(tableName)) {<a 
name="line.4040"></a>
-<span class="sourceLineNo">4041</span>      throw new 
TableNotFoundException("Table '" + tableName.getNameAsString()<a 
name="line.4041"></a>
-<span class="sourceLineNo">4042</span>          + "' does not exists.");<a 
name="line.4042"></a>
-<span class="sourceLineNo">4043</span>    }<a name="line.4043"></a>
-<span class="sourceLineNo">4044</span>    byte[][] splits = 
getTableSplits(tableName);<a name="line.4044"></a>
-<span class="sourceLineNo">4045</span>    
checkAndSyncTableDescToPeers(tableName, splits);<a name="line.4045"></a>
-<span class="sourceLineNo">4046</span>    setTableRep(tableName, true);<a 
name="line.4046"></a>
-<span class="sourceLineNo">4047</span>  }<a name="line.4047"></a>
-<span class="sourceLineNo">4048</span><a name="line.4048"></a>
-<span class="sourceLineNo">4049</span>  @Override<a name="line.4049"></a>
-<span class="sourceLineNo">4050</span>  public void 
disableTableReplication(final TableName tableName) throws IOException {<a 
name="line.4050"></a>
-<span class="sourceLineNo">4051</span>    if (tableName == null) {<a 
name="line.4051"></a>
-<span class="sourceLineNo">4052</span>      throw new 
IllegalArgumentException("Table name is null");<a name="line.4052"></a>
-<span class="sourceLineNo">4053</span>    }<a name="line.4053"></a>
-<span class="sourceLineNo">4054</span>    if (!tableExists(tableName)) {<a 
name="line.4054"></a>
-<span class="sourceLineNo">4055</span>      throw new 
TableNotFoundException("Table '" + tableName.getNameAsString()<a 
name="line.4055"></a>
-<span class="sourceLineNo">4056</span>          + "' does not exists.");<a 
name="line.4056"></a>
-<span class="sourceLineNo">4057</span>    }<a name="line.4057"></a>
-<span class="sourceLineNo">4058</span>    setTableRep(tableName, false);<a 
name="line.4058"></a>
-<span class="sourceLineNo">4059</span>  }<a name="line.4059"></a>
-<span class="sourceLineNo">4060</span><a name="line.4060"></a>
-<span class="sourceLineNo">4061</span>  /**<a name="line.4061"></a>
-<span class="sourceLineNo">4062</span>   * Connect to peer and check the table 
descriptor on peer:<a name="line.4062"></a>
-<span class="sourceLineNo">4063</span>   * &lt;ol&gt;<a name="line.4063"></a>
-<span class="sourceLineNo">4064</span>   * &lt;li&gt;Create the same table on 
peer when not exist.&lt;/li&gt;<a name="line.4064"></a>
-<span class="sourceLineNo">4065</span>   * &lt;li&gt;Throw an exception if the 
table already has replication enabled on any of the column<a 
name="line.4065"></a>
-<span class="sourceLineNo">4066</span>   * families.&lt;/li&gt;<a 
name="line.4066"></a>
-<span class="sourceLineNo">4067</span>   * &lt;li&gt;Throw an exception if the 
table exists on peer cluster but descriptors are not same.&lt;/li&gt;<a 
name="line.4067"></a>
-<span class="sourceLineNo">4068</span>   * &lt;/ol&gt;<a name="line.4068"></a>
-<span class="sourceLineNo">4069</span>   * @param tableName name of the table 
to sync to the peer<a name="line.4069"></a>
-<span class="sourceLineNo">4070</span>   * @param splits table split keys<a 
name="line.4070"></a>
-<span class="sourceLineNo">4071</span>   * @throws IOException<a 
name="line.4071"></a>
-<span class="sourceLineNo">4072</span>   */<a name="line.4072"></a>
-<span class="sourceLineNo">4073</span>  private void 
checkAndSyncTableDescToPeers(final TableName tableName, final byte[][] 
splits)<a name="line.4073"></a>
-<span class="sourceLineNo">4074</span>      throws IOException {<a 
name="line.4074"></a>
-<span class="sourceLineNo">4075</span>    
List&lt;ReplicationPeerDescription&gt; peers = listReplicationPeers();<a 
name="line.4075"></a>
-<span class="sourceLineNo">4076</span>    if (peers == null || peers.size() 
&lt;= 0) {<a name="line.4076"></a>
-<span class="sourceLineNo">4077</span>      throw new 
IllegalArgumentException("Found no peer cluster for replication.");<a 
name="line.4077"></a>
-<span class="sourceLineNo">4078</span>    }<a name="line.4078"></a>
-<span class="sourceLineNo">4079</span><a name="line.4079"></a>
-<span class="sourceLineNo">4080</span>    for (ReplicationPeerDescription 
peerDesc : peers) {<a name="line.4080"></a>
-<span class="sourceLineNo">4081</span>      if 
(peerDesc.getPeerConfig().needToReplicate(tableName)) {<a name="line.4081"></a>
-<span class="sourceLineNo">4082</span>        Configuration peerConf =<a 
name="line.4082"></a>
-<span class="sourceLineNo">4083</span>            
ReplicationPeerConfigUtil.getPeerClusterConfiguration(this.conf, peerDesc);<a 
name="line.4083"></a>
-<span class="sourceLineNo">4084</span>        try (Connection conn = 
ConnectionFactory.createConnection(peerConf);<a name="line.4084"></a>
-<span class="sourceLineNo">4085</span>            Admin repHBaseAdmin = 
conn.getAdmin()) {<a name="line.4085"></a>
-<span class="sourceLineNo">4086</span>          TableDescriptor tableDesc = 
getDescriptor(tableName);<a name="line.4086"></a>
-<span class="sourceLineNo">4087</span>          TableDescriptor peerTableDesc 
= null;<a name="line.4087"></a>
-<span class="sourceLineNo">4088</span>          if 
(!repHBaseAdmin.tableExists(tableName)) {<a name="line.4088"></a>
-<span class="sourceLineNo">4089</span>            
repHBaseAdmin.createTable(tableDesc, splits);<a name="line.4089"></a>
-<span class="sourceLineNo">4090</span>          } else {<a 
name="line.4090"></a>
-<span class="sourceLineNo">4091</span>            peerTableDesc = 
repHBaseAdmin.getDescriptor(tableName);<a name="line.4091"></a>
-<span class="sourceLineNo">4092</span>            if (peerTableDesc == null) 
{<a name="line.4092"></a>
-<span class="sourceLineNo">4093</span>              throw new 
IllegalArgumentException("Failed to get table descriptor for table "<a 
name="line.4093"></a>
-<span class="sourceLineNo">4094</span>                  + 
tableName.getNameAsString() + " from peer cluster " + peerDesc.getPeerId());<a 
name="line.4094"></a>
-<span class="sourceLineNo">4095</span>            }<a name="line.4095"></a>
-<span class="sourceLineNo">4096</span>            if 
(TableDescriptor.COMPARATOR_IGNORE_REPLICATION.compare(peerTableDesc,<a 
name="line.4096"></a>
-<span class="sourceLineNo">4097</span>              tableDesc) != 0) {<a 
name="line.4097"></a>
-<span class="sourceLineNo">4098</span>              throw new 
IllegalArgumentException("Table " + tableName.getNameAsString()<a 
name="line.4098"></a>
-<span class="sourceLineNo">4099</span>                  + " exists in peer 
cluster " + peerDesc.getPeerId()<a name="line.4099"></a>
-<span class="sourceLineNo">4100</span>                  + ", but the table 
descriptors are not same when compared with source cluster."<a 
name="line.4100"></a>
-<span class="sourceLineNo">4101</span>                  + " Thus can not 
enable the table's replication switch.");<a name="line.4101"></a>
-<span class="sourceLineNo">4102</span>            }<a name="line.4102"></a>
-<span class="sourceLineNo">4103</span>          }<a name="line.4103"></a>
-<span class="sourceLineNo">4104</span>        }<a name="line.4104"></a>
-<span class="sourceLineNo">4105</span>      }<a name="line.4105"></a>
-<span class="sourceLineNo">4106</span>    }<a name="line.4106"></a>
-<span class="sourceLineNo">4107</span>  }<a name="line.4107"></a>
-<span class="sourceLineNo">4108</span><a name="line.4108"></a>
-<span class="sourceLineNo">4109</span>  /**<a name="line.4109"></a>
-<span class="sourceLineNo">4110</span>   * Set the table's replication switch 
if the table's replication switch is already not set.<a name="line.4110"></a>
-<span class="sourceLineNo">4111</span>   * @param tableName name of the 
table<a name="line.4111"></a>
-<span class="sourceLineNo">4112</span>   * @param enableRep is replication 
switch enable or disable<a name="line.4112"></a>
-<span class="sourceLineNo">4113</span>   * @throws IOException if a remote or 
network exception occurs<a name="line.4113"></a>
-<span class="sourceLineNo">4114</span>   */<a name="line.4114"></a>
-<span class="sourceLineNo">4115</span>  private void setTableRep(final 
TableName tableName, boolean enableRep) throws IOException {<a 
name="line.4115"></a>
-<span class="sourceLineNo">4116</span>    TableDescriptor tableDesc = 
getDescriptor(tableName);<a name="line.4116"></a>
-<span class="sourceLineNo">4117</span>    if 
(!tableDesc.matchReplicationScope(enableRep)) {<a name="line.4117"></a>
-<span class="sourceLineNo">4118</span>      int scope =<a name="line.4118"></a>
-<span class="sourceLineNo">4119</span>          enableRep ? 
HConstants.REPLICATION_SCOPE_GLOBAL : HConstants.REPLICATION_SCOPE_LOCAL;<a 
name="line.4119"></a>
-<span class="sourceLineNo">4120</span>      
modifyTable(TableDescriptorBuilder.newBuilder(tableDesc).setReplicationScope(scope).build());<a
 name="line.4120"></a>
-<span class="sourceLineNo">4121</span>    }<a name="line.4121"></a>
-<span class="sourceLineNo">4122</span>  }<a name="line.4122"></a>
-<span class="sourceLineNo">4123</span><a name="line.4123"></a>
-<span class="sourceLineNo">4124</span>  @Override<a name="line.4124"></a>
-<span class="sourceLineNo">4125</span>  public void 
clearCompactionQueues(final ServerName sn, final Set&lt;String&gt; queues)<a 
name="line.4125"></a>
-<span class="sourceLineNo">4126</span>    throws IOException, 
InterruptedException {<a name="line.4126"></a>
-<span class="sourceLineNo">4127</span>    if (queues == null || queues.size() 
== 0) {<a name="line.4127"></a>
-<span class="sourceLineNo">4128</span>      throw new 
IllegalArgumentException("queues cannot be null or empty");<a 
name="line.4128"></a>
-<span class="sourceLineNo">4129</span>    }<a name="line.4129"></a>
-<span class="sourceLineNo">4130</span>    final AdminService.BlockingInterface 
admin = this.connection.getAdmin(sn);<a name="line.4130"></a>
-<span class="sourceLineNo">4131</span>    Callable&lt;Void&gt; callable = new 
Callable&lt;Void&gt;() {<a name="line.4131"></a>
-<span class="sourceLineNo">4132</span>      @Override<a name="line.4132"></a>
-<span class="sourceLineNo">4133</span>      public Void call() throws 
Exception {<a name="line.4133"></a>
-<span class="sourceLineNo">4134</span>        // TODO: There is no timeout on 
this controller. Set one!<a name="line.4134"></a>
-<span class="sourceLineNo">4135</span>        HBaseRpcController controller = 
rpcControllerFactory.newController();<a name="line.4135"></a>
-<span class="sourceLineNo">4136</span>        ClearCompactionQueuesRequest 
request =<a name="line.4136"></a>
-<span class="sourceLineNo">4137</span>                
RequestConverter.buildClearCompactionQueuesRequest(queues);<a 
name="line.4137"></a>
-<span class="sourceLineNo">4138</span>        
admin.clearCompactionQueues(controller, request);<a name="line.4138"></a>
-<span class="sourceLineNo">4139</span>        return null;<a 
name="line.4139"></a>
-<span class="sourceLineNo">4140</span>      }<a name="line.4140"></a>
-<span class="sourceLineNo">4141</span>    };<a name="line.4141"></a>
-<span class="sourceLineNo">4142</span>    ProtobufUtil.call(callable);<a 
name="line.4142"></a>
-<span class="sourceLineNo">4143</span>  }<a name="line.4143"></a>
-<span class="sourceLineNo">4144</span><a name="line.4144"></a>
-<span class="sourceLineNo">4145</span>  @Override<a name="line.4145"></a>
-<span class="sourceLineNo">4146</span>  public List&lt;ServerName&gt; 
clearDeadServers(final List&lt;ServerName&gt; servers) throws IOException {<a 
name="line.4146"></a>
-<span class="sourceLineNo">4147</span>    if (servers == null || 
servers.size() == 0) {<a name="line.4147"></a>
-<span class="sourceLineNo">4148</span>      throw new 
IllegalArgumentException("servers cannot be null or empty");<a 
name="line.4148"></a>
-<span class="sourceLineNo">4149</span>    }<a name="line.4149"></a>
-<span class="sourceLineNo">4150</span>    return executeCallable(new 
MasterCallable&lt;List&lt;ServerName&gt;&gt;(getConnection(),<a 
name="line.4150"></a>
-<span class="sourceLineNo">4151</span>            getRpcControllerFactory()) 
{<a name="line.4151"></a>
-<span class="sourceLineNo">4152</span>      @Override<a name="line.4152"></a>
-<span class="sourceLineNo">4153</span>      protected List&lt;ServerName&gt; 
rpcCall() throws Exception {<a name="line.4153"></a>
-<span class="sourceLineNo">4154</span>        ClearDeadServersRequest req = 
RequestConverter.buildClearDeadServersRequest(servers);<a name="line.4154"></a>
-<span class="sourceLineNo">4155</span>        return 
ProtobufUtil.toServerNameList(<a name="line.4155"></a>
-<span class="sourceLineNo">4156</span>                
master.clearDeadServers(getRpcController(), req).getServerNameList());<a 
name="line.4156"></a>
-<span class="sourceLineNo">4157</span>      }<a name="line.4157"></a>
-<span class="sourceLineNo">4158</span>    });<a name="line.4158"></a>
-<span class="sourceLineNo">4159</span>  }<a name="line.4159"></a>
-<span class="sourceLineNo">4160</span>}<a name="line.4160"></a>
+<span class="sourceLineNo">3951</span>  public 
List&lt;ReplicationPeerDescription&gt; listReplicationPeers(Pattern pattern)<a 
name="line.3951"></a>
+<span class="sourceLineNo">3952</span>      throws IOException {<a 
name="line.3952"></a>
+<span class="sourceLineNo">3953</span>    return executeCallable(new 
MasterCallable&lt;List&lt;ReplicationPeerDescription&gt;&gt;(getConnection(),<a 
name="line.3953"></a>
+<span class="sourceLineNo">3954</span>        getRpcControllerFactory()) {<a 
name="line.3954"></a>
+<span class="sourceLineNo">3955</span>      @Override<a name="line.3955"></a>
+<span class="sourceLineNo">3956</span>      protected 
List&lt;ReplicationPeerDescription&gt; rpcCall() throws Exception {<a 
name="line.3956"></a>
+<span class="sourceLineNo">3957</span>        
List&lt;ReplicationProtos.ReplicationPeerDescription&gt; peersList = 
master.listReplicationPeers(<a name="line.3957"></a>
+<span class="sourceLineNo">3958</span>          getRpcController(), 
RequestConverter.buildListReplicationPeersRequest(pattern))<a 
name="line.3958"></a>
+<span class="sourceLineNo">3959</span>            .getPeerDescList();<a 
name="line.3959"></a>
+<span class="sourceLineNo">3960</span>        
List&lt;ReplicationPeerDescription&gt; result = new 
ArrayList&lt;&gt;(peersList.size());<a name="line.3960"></a>
+<span class="sourceLineNo">3961</span>        for 
(ReplicationProtos.ReplicationPeerDescription peer : peersList) {<a 
name="line.3961"></a>
+<span class="sourceLineNo">3962</span>          
result.add(ReplicationPeerConfigUtil.toReplicationPeerDescription(peer));<a 
name="line.3962"></a>
+<span class="sourceLineNo">3963</span>        }<a name="line.3963"></a>
+<span class="sourceLineNo">3964</span>        return result;<a 
name="line.3964"></a>
+<span class="sourceLineNo">3965</span>      }<a name="line.3965"></a>
+<span class="sourceLineNo">3966</span>    });<a name="line.3966"></a>
+<span class="sourceLineNo">3967</span>  }<a name="line.3967"></a>
+<span class="sourceLineNo">3968</span><a name="line.3968"></a>
+<span class="sourceLineNo">3969</span>  @Override<a name="line.3969"></a>
+<span class="sourceLineNo">3970</span>  public void 
decommissionRegionServers(List&lt;ServerName&gt; servers, boolean offload)<a 
name="line.3970"></a>
+<span class="sourceLineNo">3971</span>      throws IOException {<a 
name="line.3971"></a>
+<span class="sourceLineNo">3972</span>    executeCallable(new 
MasterCallable&lt;Void&gt;(getConnection(), getRpcControllerFactory()) {<a 
name="line.3972"></a>
+<span class="sourceLineNo">3973</span>      @Override<a name="line.3973"></a>
+<span class="sourceLineNo">3974</span>      public Void rpcCall() throws 
ServiceException {<a name="line.3974"></a>
+<span class="sourceLineNo">3975</span>        
master.decommissionRegionServers(getRpcController(),<a name="line.3975"></a>
+<span class="sourceLineNo">3976</span>          
RequestConverter.buildDecommissionRegionServersRequest(servers, offload));<a 
name="line.3976"></a>
+<span class="sourceLineNo">3977</span>        return null;<a 
name="line.3977"></a>
+<span class="sourceLineNo">3978</span>      }<a name="line.3978"></a>
+<span class="sourceLineNo">3979</span>    });<a name="line.3979"></a>
+<span class="sourceLineNo">3980</span>  }<a name="line.3980"></a>
+<span class="sourceLineNo">3981</span><a name="line.3981"></a>
+<span class="sourceLineNo">3982</span>  @Override<a name="line.3982"></a>
+<span class="sourceLineNo">3983</span>  public List&lt;ServerName&gt; 
listDecommissionedRegionServers() throws IOException {<a name="line.3983"></a>
+<span class="sourceLineNo">3984</span>    return executeCallable(new 
MasterCallable&lt;List&lt;ServerName&gt;&gt;(getConnection(),<a 
name="line.3984"></a>
+<span class="sourceLineNo">3985</span>              getRpcControllerFactory()) 
{<a name="line.3985"></a>
+<span class="sourceLineNo">3986</span>      @Override<a name="line.3986"></a>
+<span class="sourceLineNo">3987</span>      public List&lt;ServerName&gt; 
rpcCall() throws ServiceException {<a name="line.3987"></a>
+<span class="sourceLineNo">3988</span>        
ListDecommissionedRegionServersRequest req = 
ListDecommissionedRegionServersRequest.newBuilder().build();<a 
name="line.3988"></a>
+<span class="sourceLineNo">3989</span>        List&lt;ServerName&gt; servers = 
new ArrayList&lt;&gt;();<a name="line.3989"></a>
+<span class="sourceLineNo">3990</span>        for (HBaseProtos.ServerName 
server : master<a name="line.3990"></a>
+<span class="sourceLineNo">3991</span>            
.listDecommissionedRegionServers(getRpcController(), req).getServerNameList()) 
{<a name="line.3991"></a>
+<span class="sourceLineNo">3992</span>          
servers.add(ProtobufUtil.toServerName(server));<a name="line.3992"></a>
+<span class="sourceLineNo">3993</span>        }<a name="line.3993"></a>
+<span class="sourceLineNo">3994</span>        return servers;<a 
name="line.3994"></a>
+<span class="sourceLineNo">3995</span>      }<a name="line.3995"></a>
+<span class="sourceLineNo">3996</span>    });<a name="line.3996"></a>
+<span class="sourceLineNo">3997</span>  }<a name="line.3997"></a>
+<span class="sourceLineNo">3998</span><a name="line.3998"></a>
+<span class="sourceLineNo">3999</span>  @Override<a name="line.3999"></a>
+<span class="sourceLineNo">4000</span>  public void 
recommissionRegionServer(ServerName server, List&lt;byte[]&gt; 
encodedRegionNames)<a name="line.4000"></a>
+<span class="sourceLineNo">4001</span>      throws IOException {<a 
name="line.4001"></a>
+<span class="sourceLineNo">4002</span>    executeCallable(new 
MasterCallable&lt;Void&gt;(getConnection(), getRpcControllerFactory()) {<a 
name="line.4002"></a>
+<span class="sourceLineNo">4003</span>      @Override<a name="line.4003"></a>
+<span class="sourceLineNo">4004</span>      public Void rpcCall() throws 
ServiceException {<a name="line.4004"></a>
+<span class="sourceLineNo">4005</span>        
master.recommissionRegionServer(getRpcController(),<a name="line.4005"></a>
+<span class="sourceLineNo">4006</span>          
RequestConverter.buildRecommissionRegionServerRequest(server, 
encodedRegionNames));<a name="line.4006"></a>
+<span class="sourceLineNo">4007</span>        return null;<a 
name="line.4007"></a>
+<span class="sourceLineNo">4008</span>      }<a name="line.4008"></a>
+<span class="sourceLineNo">4009</span>    });<a name="line.4009"></a>
+<span class="sourceLineNo">4010</span>  }<a name="line.4010"></a>
+<span class="sourceLineNo">4011</span><a name="line.4011"></a>
+<span class="sourceLineNo">4012</span>  @Override<a name="line.4012"></a>
+<span class="sourceLineNo">4013</span>  public List&lt;TableCFs&gt; 
listReplicatedTableCFs() throws IOException {<a name="line.4013"></a>
+<span class="sourceLineNo">4014</span>    List&lt;TableCFs&gt; 
replicatedTableCFs = new ArrayList&lt;&gt;();<a name="line.4014"></a>
+<span class="sourceLineNo">4015</span>    List&lt;TableDescriptor&gt; tables = 
listTableDescriptors();<a name="line.4015"></a>
+<span class="sourceLineNo">4016</span>    tables.forEach(table -&gt; {<a 
name="line.4016"></a>
+<span class="sourceLineNo">4017</span>      Map&lt;String, Integer&gt; cfs = 
new HashMap&lt;&gt;();<a name="line.4017"></a>
+<span class="sourceLineNo">4018</span>      
Stream.of(table.getColumnFamilies())<a name="line.4018"></a>
+<span class="sourceLineNo">4019</span>          .filter(column -&gt; 
column.getScope() != HConstants.REPLICATION_SCOPE_LOCAL)<a name="line.4019"></a>
+<span class="sourceLineNo">4020</span>          .forEach(column -&gt; {<a 
name="line.4020"></a>
+<span class="sourceLineNo">4021</span>            
cfs.put(column.getNameAsString(), column.getScope());<a name="line.4021"></a>
+<span class="sourceLineNo">4022</span>          });<a name="line.4022"></a>
+<span class="sourceLineNo">4023</span>      if (!cfs.isEmpty()) {<a 
name="line.4023"></a>
+<span class="sourceLineNo">4024</span>        replicatedTableCFs.add(new 
TableCFs(table.getTableName(), cfs));<a name="line.4024"></a>
+<span class="sourceLineNo">4025</span>      }<a name="line.4025"></a>
+<span class="sourceLineNo">4026</span>    });<a name="line.4026"></a>
+<span class="sourceLineNo">4027</span>    return replicatedTableCFs;<a 
name="line.4027"></a>
+<span class="sourceLineNo">4028</span>  }<a name="line.4028"></a>
+<span class="sourceLineNo">4029</span><a name="line.4029"></a>
+<span class="sourceLineNo">4030</span>  @Override<a name="line.4030"></a>
+<span class="sourceLineNo">4031</span>  public void 
enableTableReplication(final TableName tableName) throws IOException {<a 
name="line.4031"></a>
+<span class="sourceLineNo">4032</span>    if (tableName == null) {<a 
name="line.4032"></a>
+<span class="sourceLineNo">4033</span>      throw new 
IllegalArgumentException("Table name cannot be null");<a name="line.4033"></a>
+<span class="sourceLineNo">4034</span>    }<a name="line.4034"></a>
+<span class="sourceLineNo">4035</span>    if (!tableExists(tableName)) {<a 
name="line.4035"></a>
+<span class="sourceLineNo">4036</span>      throw new 
TableNotFoundException("Table '" + tableName.getNameAsString()<a 
name="line.4036"></a>
+<span class="sourceLineNo">4037</span>          + "' does not exists.");<a 
name="line.4037"></a>
+<span class="sourceLineNo">4038</span>    }<a name="line.4038"></a>
+<span class="sourceLineNo">4039</span>    byte[][] splits = 
getTableSplits(tableName);<a name="line.4039"></a>
+<span class="sourceLineNo">4040</span>    
checkAndSyncTableDescToPeers(tableName, splits);<a name="line.4040"></a>
+<span class="sourceLineNo">4041</span>    setTableRep(tableName, true);<a 
name="line.4041"></a>
+<span class="sourceLineNo">4042</span>  }<a name="line.4042"></a>
+<span class="sourceLineNo">4043</span><a name="line.4043"></a>
+<span class="sourceLineNo">4044</span>  @Override<a name="line.4044"></a>
+<span class="sourceLineNo">4045</span>  public void 
disableTableReplication(final TableName tableName) throws IOException {<a 
name="line.4045"></a>
+<span class="sourceLineNo">4046</span>    if (tableName == null) {<a 
name="line.4046"></a>
+<span class="sourceLineNo">4047</span>      throw new 
IllegalArgumentException("Table name is null");<a name="line.4047"></a>
+<span class="sourceLineNo">4048</span>    }<a name="line.4048"></a>
+<span class="sourceLineNo">4049</span>    if (!tableExists(tableName)) {<a 
name="line.4049"></a>
+<span class="sourceLineNo">4050</span>      throw new 
TableNotFoundException("Table '" + tableName.getNameAsString()<a 
name="line.4050"></a>
+<span class="sourceLineNo">4051</span>          + "' does not exists.");<a 
name="line.4051"></a>
+<span class="sourceLineNo">4052</span>    }<a name="line.4052"></a>
+<span class="sourceLineNo">4053</span>    setTableRep(tableName, false);<a 
name="line.4053"></a>
+<span class="sourceLineNo">4054</span>  }<a name="line.4054"></a>
+<span class="sourceLineNo">4055</span><a name="line.4055"></a>
+<span class="sourceLineNo">4056</span>  /**<a name="line.4056"></a>
+<span class="sourceLineNo">4057</span>   * Connect to peer and check the table 
descriptor on peer:<a name="line.4057"></a>
+<span class="sourceLineNo">4058</span>   * &lt;ol&gt;<a name="line.4058"></a>
+<span class="sourceLineNo">4059</span>   * &lt;li&gt;Create the same table on 
peer when not exist.&lt;/li&gt;<a name="line.4059"></a>
+<span class="sourceLineNo">4060</span>   * &lt;li&gt;Throw an exception if the 
table already has replication enabled on any of the column<a 
name="line.4060"></a>
+<span class="sourceLineNo">4061</span>   * families.&lt;/li&gt;<a 
name="line.4061"></a>
+<span class="sourceLineNo">4062</span>   * &lt;li&gt;Throw an exception if the 
table exists on peer cluster but descriptors are not same.&lt;/li&gt;<a 
name="line.4062"></a>
+<span class="sourceLineNo">4063</span>   * &lt;/ol&gt;<a name="line.4063"></a>
+<span class="sourceLineNo">4064</span>   * @param tableName name of the table 
to sync to the peer<a name="line.4064"></a>
+<span class="sourceLineNo">4065</span>   * @param splits table split keys<a 
name="line.4065"></a>
+<span class="sourceLineNo">4066</span>   * @throws IOException<a 
name="line.4066"></a>
+<span class="sourceLineNo">4067</span>   */<a name="line.4067"></a>
+<span class="sourceLineNo">4068</span>  private void 
checkAndSyncTableDescToPeers(final TableName tableName, final byte[][] 
splits)<a name="line.4068"></a>
+<span class="sourceLineNo">4069</span>      throws IOException {<a 
name="line.4069"></a>
+<span class="sourceLineNo">4070</span>    
List&lt;ReplicationPeerDescription&gt; peers = listReplicationPeers();<a 
name="line.4070"></a>
+<span class="sourceLineNo">4071</span>    if (peers == null || peers.size() 
&lt;= 0) {<a name="line.4071"></a>
+<span class="sourceLineNo">4072</span>      throw new 
IllegalArgumentException("Found no peer cluster for replication.");<a 
name="line.4072"></a>
+<span class="sourceLineNo">4073</span>    }<a name="line.4073"></a>
+<span class="sourceLineNo">4074</span><a name="line.4074"></a>
+<span class="sourceLineNo">4075</span>    for (ReplicationPeerDescription 
peerDesc : peers) {<a name="line.4075"></a>
+<span class="sourceLineNo">4076</span>      if 
(peerDesc.getPeerConfig().needToReplicate(tableName)) {<a name="line.4076"></a>
+<span class="sourceLineNo">4077</span>        Configuration peerConf =<a 
name="line.4077"></a>
+<span class="sourceLineNo">4078</span>            
ReplicationPeerConfigUtil.getPeerClusterConfiguration(this.conf, peerDesc);<a 
name="line.4078"></a>
+<span class="sourceLineNo">4079</span>        try (Connection conn = 
ConnectionFactory.createConnection(peerConf);<a name="line.4079"></a>
+<span class="sourceLineNo">4080</span>            Admin repHBaseAdmin = 
conn.getAdmin()) {<a name="line.4080"></a>
+<span class="sourceLineNo">4081</span>          TableDescriptor tableDesc = 
getDescriptor(tableName);<a name="line.4081"></a>
+<span class="sourceLineNo">4082</span>          TableDescriptor peerTableDesc 
= null;<a name="line.4082"></a>
+<span class="sourceLineNo">4083</span>          if 
(!repHBaseAdmin.tableExists(tableName)) {<a name="line.4083"></a>
+<span class="sourceLineNo">4084</span>            
repHBaseAdmin.createTable(tableDesc, splits);<a name="line.4084"></a>
+<span class="sourceLineNo">4085</span>          } else {<a 
name="line.4085"></a>
+<span class="sourceLineNo">4086</span>            peerTableDesc = 
repHBaseAdmin.getDescriptor(tableName);<a name="line.4086"></a>
+<span class="sourceLineNo">4087</span>            if (peerTableDesc == null) 
{<a name="line.4087"></a>
+<span class="sourceLineNo">4088</span>              throw new 
IllegalArgumentException("Failed to get table descriptor for table "<a 
name="line.4088"></a>
+<span class="sourceLineNo">4089</span>                  + 
tableName.getNameAsString() + " from peer cluster " + peerDesc.getPeerId());<a 
name="line.4089"></a>
+<span class="sourceLineNo">4090</span>            }<a name="line.4090"></a>
+<span class="sourceLineNo">4091</span>            if 
(TableDescriptor.COMPARATOR_IGNORE_REPLICATION.compare(peerTableDesc,<a 
name="line.4091"></a>
+<span class="sourceLineNo">4092</span>              tableDesc) != 0) {<a 
name="line.4092"></a>
+<span class="sourceLineNo">4093</span>              throw new 
IllegalArgumentException("Table " + tableName.getNameAsString()<a 
name="line.4093"></a>
+<span class="sourceLineNo">4094</span>                  + " exists in peer 
cluster " + peerDesc.getPeerId()<a name="line.4094"></a>
+<span class="sourceLineNo">4095</span>                  + ", but the table 
descriptors are not same when compared with source cluster."<a 
name="line.4095"></a>
+<span class="sourceLineNo">4096</span>                  + " Thus can not 
enable the table's replication switch.");<a name="line.4096"></a>
+<span class="sourceLineNo">4097</span>            }<a name="line.4097"></a>
+<span class="sourceLineNo">4098</span>          }<a name="line.4098"></a>
+<span class="sourceLineNo">4099</span>        }<a name="line.4099"></a>
+<span class="sourceLineNo">4100</span>      }<a name="line.4100"></a>
+<span class="sourceLineNo">4101</span>    }<a name="line.4101"></a>
+<span class="sourceLineNo">4102</span>  }<a name="line.4102"></a>
+<span class="sourceLineNo">4103</span><a name="line.4103"></a>
+<span class="sourceLineNo">4104</span>  /**<a name="line.4104"></a>
+<span class="sourceLineNo">4105</span>   * Set the table's replication switch 
if the table's replication switch is already not set.<a name="line.4105"></a>
+<span class="sourceLineNo">4106</span>   * @param tableName name of the 
table<a name="line.4106"></a>
+<span class="sourceLineNo">4107</span>   * @param enableRep is replication 
switch enable or disable<a name="line.4107"></a>
+<span class="sourceLineNo">4108</span>   * @throws IOException if a remote or 
network exception occurs<a name="line.4108"></a>
+<span class="sourceLineNo">4109</span>   */<a name="line.4109"></a>
+<span class="sourceLineNo">4110</span>  private void setTableRep(final 
TableName tableName, boolean enableRep) throws IOException {<a 
name="line.4110"></a>
+<span class="sourceLineNo">4111</span>    TableDescriptor tableDesc = 
getDescriptor(tableName);<a name="line.4111"></a>
+<span class="sourceLineNo">4112</span>    if 
(!tableDesc.matchReplicationScope(enableRep)) {<a name="line.4112"></a>
+<span class="sourceLineNo">4113</span>      int scope =<a name="line.4113"></a>
+<span class="sourceLineNo">4114</span>          enableRep ? 
HConstants.REPLICATION_SCOPE_GLOBAL : HConstants.REPLICATION_SCOPE_LOCAL;<a 
name="line.4114"></a>
+<span class="sourceLineNo">4115</span>      
modifyTable(TableDescriptorBuilder.newBuilder(tableDesc).setReplicationScope(scope).build());<a
 name="line.4115"></a>
+<span class="sourceLineNo">4116</span>    }<a name="line.4116"></a>
+<span class="sourceLineNo">4117</span>  }<a name="line.4117"></a>
+<span class="sourceLineNo">4118</span><a name="line.4118"></a>
+<span class="sourceLineNo">4119</span>  @Override<a name="line.4119"></a>
+<span class="sourceLineNo">4120</span>  public void 
clearCompactionQueues(final ServerName sn, final Set&lt;String&gt; queues)<a 
name="line.4120"></a>
+<span class="sourceLineNo">4121</span>    throws IOException, 
InterruptedException {<a name="line.4121"></a>
+<span class="sourceLineNo">4122</span>    if (queues == null || queues.size() 
== 0) {<a name="line.4122"></a>
+<span class="sourceLineNo">4123</span>      throw new 
IllegalArgumentException("queues cannot be null or empty");<a 
name="line.4123"></a>
+<span class="sourceLineNo">4124</span>    }<a name="line.4124"></a>
+<span class="sourceLineNo">4125</span>    final AdminService.BlockingInterface 
admin = this.connection.getAdmin(sn);<a name="line.4125"></a>
+<span class="sourceLineNo">4126</span>    Callable&lt;Void&gt; callable = new 
Callable&lt;Void&gt;() {<a name="line.4126"></a>
+<span class="sourceLineNo">4127</span>      @Override<a name="line.4127"></a>
+<span class="sourceLineNo">4128</span>      public Void call() throws 
Exception {<a name="line.4128"></a>
+<span class="sourceLineNo">4129</span>        // TODO: There is no timeout on 
this controller. Set one!<a name="line.4129"></a>
+<span class="sourceLineNo">4130</span>        HBaseRpcController controller = 
rpcControllerFactory.newController();<a name="line.4130"></a>
+<span class="sourceLineNo">4131</span>        ClearCompactionQueuesRequest 
request =<a name="line.4131"></a>
+<span class="sourceLineNo">4132</span>                
RequestConverter.buildClearCompactionQueuesRequest(queues);<a 
name="line.4132"></a>
+<span class="sourceLineNo">4133</span>        
admin.clearCompactionQueues(controller, request);<a name="line.4133"></a>
+<span class="sourceLineNo">4134</span>        return null;<a 
name="line.4134"></a>
+<span class="sourceLineNo">4135</span>      }<a name="line.4135"></a>
+<span class="sourceLineNo">4136</span>    };<a name="line.4136"></a>
+<span class="sourceLineNo">4137</span>    ProtobufUtil.call(callable);<a 
name="line.4137"></a>
+<span class="sourceLineNo">4138</span>  }<a name="line.4138"></a>
+<span class="sourceLineNo">4139</span><a name="line.4139"></a>
+<span class="sourceLineNo">4140</span>  @Override<a name="line.4140"></a>
+<span class="sourceLineNo">4141</span>  public List&lt;ServerName&gt; 
clearDeadServers(final List&lt;ServerName&gt; servers) throws IOException {<a 
name="line.4141"></a>
+<span class="sourceLineNo">4142</span>    if (servers == null || 
servers.size() == 0) {<a name="line.4142"></a>
+<span class="sourceLineNo">4143</span>      throw new 
IllegalArgumentException("servers cannot be null or empty");<a 
name="line.4143"></a>
+<span class="sourceLineNo">4144</span>    }<a name="line.4144"></a>
+<span class="sourceLineNo">4145</span>    return executeCallable(new 
MasterCallable&lt;List&lt;ServerName&gt;&gt;(getConnection(),<a 
name="line.4145"></a>
+<span class="sourceLineNo">4146</span>            getRpcControllerFactory()) 
{<a name="line.4146"></a>
+<span class="sourceLineNo">4147</span>      @Override<a name="line.4147"></a>
+<span class="sourceLineNo">4148</span>      protected List&lt;ServerName&gt; 
rpcCall() throws Exception {<a name="line.4148"></a>
+<span class="sourceLineNo">4149</span>        ClearDeadServersRequest req = 
RequestConverter.buildClearDeadServersRequest(servers);<a name="line.4149"></a>
+<span class="sourceLineNo">4150</span>        return 
ProtobufUtil.toServerNameList(<a name="line.4150"></a>
+<span class="sourceLineNo">4151</span>                
master.clearDeadServers(getRpcController(), req).getServerNameList());<a 
name="line.4151"></a>
+<span class="sourceLineNo">4152</span>      }<a name="line.4152"></a>
+<span class="sourceLineNo">4153</span>    });<a name="line.4153"></a>
+<span class="sourceLineNo">4154</span>  }<a name="line.4154"></a>
+<span class="sourceLineNo">4155</span>}<a name="line.4155"></a>
 
 
 

Reply via email to