diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/LocalHBaseCluster.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/LocalHBaseCluster.java index ca7e82a6071..1c721eef5c4 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/LocalHBaseCluster.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/LocalHBaseCluster.java @@ -310,15 +310,20 @@ public class LocalHBaseCluster { * @return Name of region server that just went down. */ public String waitOnRegionServer(JVMClusterUtil.RegionServerThread rst) { + boolean interrupted = false; while (rst.isAlive()) { try { LOG.info("Waiting on " + rst.getRegionServer().toString()); rst.join(); } catch (InterruptedException e) { - e.printStackTrace(); + LOG.error("Interrupted while waiting for {} to finish. Retrying join", rst.getName(), e); + interrupted = true; } } regionThreads.remove(rst); + if (interrupted) { + Thread.currentThread().interrupt(); + } return rst.getName(); } @@ -382,15 +387,21 @@ public class LocalHBaseCluster { * @return Name of master that just went down. */ public String waitOnMaster(JVMClusterUtil.MasterThread masterThread) { + boolean interrupted = false; while (masterThread.isAlive()) { try { LOG.info("Waiting on " + masterThread.getMaster().getServerName().toString()); masterThread.join(); } catch (InterruptedException e) { - e.printStackTrace(); + LOG.error("Interrupted while waiting for {} to finish. Retrying join", + masterThread.getName(), e); + interrupted = true; } } masterThreads.remove(masterThread); + if (interrupted) { + Thread.currentThread().interrupt(); + } return masterThread.getName(); }