diff --git hbase-server/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java hbase-server/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java index 90d35bf..64ef372 100644 --- hbase-server/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java +++ hbase-server/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java @@ -1473,15 +1473,17 @@ public class HBaseAdmin implements Abortable, Closeable { /** * Turn the load balancer on or off. - * @param b If true, enable balancer. If false, disable balancer. + * @param on If true, enable balancer. If false, disable balancer. + * @param synchronous If true, it waits until current balance() call, if outstanding, to return. * @return Previous balancer value */ - public boolean balanceSwitch(final boolean b) + public boolean setBalancerRunning(final boolean on, final boolean synchronous) throws MasterNotRunningException, ZooKeeperConnectionException { MasterKeepAliveConnection master = connection.getKeepAliveMaster(); try { - SetBalancerRunningRequest req = RequestConverter.buildLoadBalancerIsRequest(b, false); - return master.loadBalancerIs(null, req).getPrevBalanceValue(); + SetBalancerRunningRequest req = + RequestConverter.buildSetBalancerRunningRequest(on, synchronous); + return master.setBalancerRunning(null, req).getPrevBalanceValue(); } catch (ServiceException se) { IOException ioe = ProtobufUtil.getRemoteException(se); if (ioe instanceof MasterNotRunningException) { diff --git hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/HMasterInterface.java hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/HMasterInterface.java index ed35223..d23a81d 100644 --- hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/HMasterInterface.java +++ hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/HMasterInterface.java @@ -287,8 +287,8 @@ public interface HMasterInterface extends VersionedProtocol { * - prevBalanceValue: Previous balancer value * @throws ServiceException */ - public SetBalancerRunningResponse loadBalancerIs(RpcController controller, SetBalancerRunningRequest req) - throws ServiceException; + public SetBalancerRunningResponse setBalancerRunning( + RpcController controller, SetBalancerRunningRequest req) throws ServiceException; /** * Get list of TableDescriptors for requested tables. diff --git hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java index fba2e4e..dcfb30c 100644 --- hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java +++ hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java @@ -1267,8 +1267,8 @@ Server { } @Override - public SetBalancerRunningResponse loadBalancerIs(RpcController controller, SetBalancerRunningRequest req) - throws ServiceException { + public SetBalancerRunningResponse setBalancerRunning( + RpcController controller, SetBalancerRunningRequest req) throws ServiceException { boolean prevValue = (req.getSynchronous())? synchronousBalanceSwitch(req.getOn()):balanceSwitch(req.getOn()); return SetBalancerRunningResponse.newBuilder().setPrevBalanceValue(prevValue).build(); diff --git hbase-server/src/main/java/org/apache/hadoop/hbase/protobuf/RequestConverter.java hbase-server/src/main/java/org/apache/hadoop/hbase/protobuf/RequestConverter.java index f5ad467..56c9eba 100644 --- hbase-server/src/main/java/org/apache/hadoop/hbase/protobuf/RequestConverter.java +++ hbase-server/src/main/java/org/apache/hadoop/hbase/protobuf/RequestConverter.java @@ -1099,7 +1099,7 @@ public final class RequestConverter { * @param synchronous * @return a SetBalancerRunningRequest */ - public static SetBalancerRunningRequest buildLoadBalancerIsRequest(boolean on, boolean synchronous) { + public static SetBalancerRunningRequest buildSetBalancerRunningRequest(boolean on, boolean synchronous) { return SetBalancerRunningRequest.newBuilder().setOn(on).setSynchronous(synchronous).build(); } diff --git hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java index 808068c..fe916c2 100644 --- hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java +++ hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java @@ -389,12 +389,12 @@ public class HBaseFsck { offlineHdfsIntegrityRepair(); // turn the balancer off - boolean oldBalancer = admin.balanceSwitch(false); + boolean oldBalancer = admin.setBalancerRunning(false, true); try { onlineConsistencyRepair(); } finally { - admin.balanceSwitch(oldBalancer); + admin.setBalancerRunning(oldBalancer, false); } // Print table summary diff --git hbase-server/src/main/ruby/hbase/admin.rb hbase-server/src/main/ruby/hbase/admin.rb index b77bfc5..95995f1 100644 --- hbase-server/src/main/ruby/hbase/admin.rb +++ hbase-server/src/main/ruby/hbase/admin.rb @@ -88,7 +88,8 @@ module Hbase # Enable/disable balancer # Returns previous balancer switch setting. def balance_switch(enableDisable) - @admin.balanceSwitch(java.lang.Boolean::valueOf(enableDisable)) + @admin.setBalancerRunning( + java.lang.Boolean::valueOf(enableDisable), java.lang.Boolean::valueOf(false)) end #---------------------------------------------------------------------------------------------- diff --git hbase-server/src/test/java/org/apache/hadoop/hbase/TestDrainingServer.java hbase-server/src/test/java/org/apache/hadoop/hbase/TestDrainingServer.java index 047d3cf..077fe8f 100644 --- hbase-server/src/test/java/org/apache/hadoop/hbase/TestDrainingServer.java +++ hbase-server/src/test/java/org/apache/hadoop/hbase/TestDrainingServer.java @@ -188,7 +188,7 @@ public class TestDrainingServer { HMaster master = TEST_UTIL.getHBaseCluster().getMaster(); // Ensure a stable env - TEST_UTIL.getHBaseAdmin().balanceSwitch(false); + TEST_UTIL.getHBaseAdmin().setBalancerRunning(false, false); waitForAllRegionsOnline(); final long regionCount = TEST_UTIL.getMiniHBaseCluster().countServedRegions(); diff --git hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestHCM.java hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestHCM.java index 4426082..d9c5eea 100644 --- hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestHCM.java +++ hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestHCM.java @@ -163,7 +163,7 @@ public class TestHCM { } // Now moving the region to the second server - TEST_UTIL.getHBaseAdmin().balanceSwitch(false); + TEST_UTIL.getHBaseAdmin().setBalancerRunning(false, false); HRegionLocation toMove = conn.getCachedLocation(TABLE_NAME, ROW); byte[] regionName = toMove.getRegionInfo().getRegionName(); diff --git hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.java hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.java index 20f7ba3..a53a085 100644 --- hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.java +++ hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.java @@ -121,7 +121,7 @@ public class TestSplitTransactionOnCluster { int tableRegionIndex = ensureTableRegionNotOnSameServerAsMeta(admin, hri); // Turn off balancer so it doesn't cut in and mess up our placements. - this.admin.balanceSwitch(false); + this.admin.setBalancerRunning(false, true); // Turn off the meta scanner so it don't remove parent on us. cluster.getMaster().setCatalogJanitorEnabled(false); try { @@ -172,7 +172,7 @@ public class TestSplitTransactionOnCluster { } finally { // Set this flag back. SplitRegionHandler.TEST_SKIP = false; - admin.balanceSwitch(true); + admin.setBalancerRunning(true, false); cluster.getMaster().setCatalogJanitorEnabled(true); } } @@ -191,7 +191,7 @@ public class TestSplitTransactionOnCluster { int tableRegionIndex = ensureTableRegionNotOnSameServerAsMeta(admin, hri); // Turn off balancer so it doesn't cut in and mess up our placements. - this.admin.balanceSwitch(false); + this.admin.setBalancerRunning(false, true); // Turn off the meta scanner so it don't remove parent on us. cluster.getMaster().setCatalogJanitorEnabled(false); try { @@ -224,7 +224,7 @@ public class TestSplitTransactionOnCluster { assertTrue(daughters.size() >= 2); // OK, so split happened after we cleared the blocking node. } finally { - admin.balanceSwitch(true); + admin.setBalancerRunning(true, false); cluster.getMaster().setCatalogJanitorEnabled(true); } } @@ -250,7 +250,7 @@ public class TestSplitTransactionOnCluster { int tableRegionIndex = ensureTableRegionNotOnSameServerAsMeta(admin, hri); // Turn off balancer so it doesn't cut in and mess up our placements. - this.admin.balanceSwitch(false); + this.admin.setBalancerRunning(false, true); // Turn off the meta scanner so it don't remove parent on us. cluster.getMaster().setCatalogJanitorEnabled(false); try { @@ -282,7 +282,7 @@ public class TestSplitTransactionOnCluster { assertTrue(daughters.contains(r)); } } finally { - admin.balanceSwitch(true); + admin.setBalancerRunning(true, false); cluster.getMaster().setCatalogJanitorEnabled(true); } } @@ -307,7 +307,7 @@ public class TestSplitTransactionOnCluster { int tableRegionIndex = ensureTableRegionNotOnSameServerAsMeta(admin, hri); // Turn off balancer so it doesn't cut in and mess up our placements. - this.admin.balanceSwitch(false); + this.admin.setBalancerRunning(false, true); // Turn off the meta scanner so it don't remove parent on us. cluster.getMaster().setCatalogJanitorEnabled(false); try { @@ -360,7 +360,7 @@ public class TestSplitTransactionOnCluster { assertTrue(daughters.contains(r)); } } finally { - admin.balanceSwitch(true); + admin.setBalancerRunning(true, false); cluster.getMaster().setCatalogJanitorEnabled(true); } } @@ -390,7 +390,7 @@ public class TestSplitTransactionOnCluster { int tableRegionIndex = ensureTableRegionNotOnSameServerAsMeta(admin, hri); // Turn off balancer so it doesn't cut in and mess up our placements. - this.admin.balanceSwitch(false); + this.admin.setBalancerRunning(false, true); // Turn off the meta scanner so it don't remove parent on us. cluster.getMaster().setCatalogJanitorEnabled(false); try { @@ -442,7 +442,7 @@ public class TestSplitTransactionOnCluster { } finally { // Set this flag back. SplitRegionHandler.TEST_SKIP = false; - admin.balanceSwitch(true); + admin.setBalancerRunning(true, false); cluster.getMaster().setCatalogJanitorEnabled(true); } } @@ -470,7 +470,7 @@ public class TestSplitTransactionOnCluster { int tableRegionIndex = ensureTableRegionNotOnSameServerAsMeta(admin, hri); // Turn off balancer so it doesn't cut in and mess up our placements. - this.admin.balanceSwitch(false); + this.admin.setBalancerRunning(false, true); // Turn off the meta scanner so it don't remove parent on us. cluster.getMaster().setCatalogJanitorEnabled(false); try { @@ -520,7 +520,7 @@ public class TestSplitTransactionOnCluster { } finally { // Set this flag back. SplitRegionHandler.TEST_SKIP = false; - this.admin.balanceSwitch(true); + this.admin.setBalancerRunning(true, false); cluster.getMaster().setCatalogJanitorEnabled(true); } }