Index: hbase-server/src/main/java/org/apache/hadoop/hbase/LocalHBaseCluster.java =================================================================== --- hbase-server/src/main/java/org/apache/hadoop/hbase/LocalHBaseCluster.java (revision 1478981) +++ hbase-server/src/main/java/org/apache/hadoop/hbase/LocalHBaseCluster.java (working copy) @@ -426,7 +426,7 @@ /** * Shut down the mini HBase cluster */ - public void shutdown() throws IOException { + public void shutdown() { JVMClusterUtil.shutdown(this.masterThreads, this.regionThreads); } Index: hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BalancerChore.java =================================================================== --- hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BalancerChore.java (revision 1478981) +++ hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BalancerChore.java (working copy) @@ -18,21 +18,17 @@ package org.apache.hadoop.hbase.master.balancer; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; import org.apache.hadoop.classification.InterfaceAudience; import org.apache.hadoop.hbase.Chore; import org.apache.hadoop.hbase.master.HMaster; -import java.io.IOException; - /** * Chore that will call HMaster.balance{@link org.apache.hadoop.hbase.master.HMaster#balance()} when * needed. */ @InterfaceAudience.Private public class BalancerChore extends Chore { - private static final Log LOG = LogFactory.getLog(BalancerChore.class); + private final HMaster master; public BalancerChore(HMaster master) { @@ -44,10 +40,6 @@ @Override protected void chore() { - try { - master.balance(); - } catch (IOException ioe) { - LOG.error("Error invoking balancer", ioe); - } + master.balance(); } } Index: hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java =================================================================== --- hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java (revision 1478981) +++ hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java (working copy) @@ -1263,7 +1263,7 @@ return balancerCutoffTime; } - public boolean balance() throws IOException { + public boolean balance() { // if master not initialized, don't run balancer. if (!this.initialized) { LOG.debug("Master has not been initialized, don't run balancer."); @@ -1291,8 +1291,13 @@ } if (this.cpHost != null) { - if (this.cpHost.preBalance()) { - LOG.debug("Coprocessor bypassing balancer request"); + try { + if (this.cpHost.preBalance()) { + LOG.debug("Coprocessor bypassing balancer request"); + return false; + } + } catch (IOException ioe) { + LOG.error("Error invoking master coprocessor preBalance()", ioe); return false; } } @@ -1330,7 +1335,12 @@ } } if (this.cpHost != null) { - this.cpHost.postBalance(rpCount < plans.size() ? plans.subList(0, rpCount) : plans); + try { + this.cpHost.postBalance(rpCount < plans.size() ? plans.subList(0, rpCount) : plans); + } catch (IOException ioe) { + // balancing already succeeded so don't change the result + LOG.error("Error invoking master coprocessor postBalance()", ioe); + } } } return balancerRan; @@ -1338,11 +1348,7 @@ @Override public BalanceResponse balance(RpcController c, BalanceRequest request) throws ServiceException { - try { - return BalanceResponse.newBuilder().setBalancerRan(balance()).build(); - } catch (IOException e) { - throw new ServiceException(e); - } + return BalanceResponse.newBuilder().setBalancerRan(balance()).build(); } enum BalanceSwitchMode { @@ -2109,12 +2115,16 @@ return rsFatals; } - public void shutdown() throws IOException { + public void shutdown() { if (spanReceiverHost != null) { spanReceiverHost.closeReceivers(); } if (cpHost != null) { - cpHost.preShutdown(); + try { + cpHost.preShutdown(); + } catch (IOException ioe) { + LOG.error("Error call master coprocessor preShutdown()", ioe); + } } if (mxBean != null) { MBeanUtil.unregisterMBean(mxBean); @@ -2134,17 +2144,17 @@ @Override public ShutdownResponse shutdown(RpcController controller, ShutdownRequest request) throws ServiceException { - try { - shutdown(); - } catch (IOException e) { - throw new ServiceException(e); - } + shutdown(); return ShutdownResponse.newBuilder().build(); } - public void stopMaster() throws IOException { + public void stopMaster() { if (cpHost != null) { - cpHost.preStopMaster(); + try { + cpHost.preStopMaster(); + } catch (IOException ioe) { + LOG.error("Error call master coprocessor preStopMaster()", ioe); + } } stop("Stopped by " + Thread.currentThread().getName()); } @@ -2152,11 +2162,7 @@ @Override public StopMasterResponse stopMaster(RpcController controller, StopMasterRequest request) throws ServiceException { - try { - stopMaster(); - } catch (IOException e) { - throw new ServiceException(e); - } + stopMaster(); return StopMasterResponse.newBuilder().build(); } Index: hbase-server/src/main/java/org/apache/hadoop/hbase/util/JVMClusterUtil.java =================================================================== --- hbase-server/src/main/java/org/apache/hadoop/hbase/util/JVMClusterUtil.java (revision 1478981) +++ hbase-server/src/main/java/org/apache/hadoop/hbase/util/JVMClusterUtil.java (working copy) @@ -233,7 +233,7 @@ * @param regionservers */ public static void shutdown(final List masters, - final List regionservers) throws IOException { + final List regionservers) { LOG.debug("Shutting down HBase Cluster"); if (masters != null) { // Do backups first.