From aaf971f68b87c6d31b097a36c342b5a89dd77f11 Mon Sep 17 00:00:00 2001 From: Phil Yang Date: Mon, 7 Mar 2016 21:38:03 +0800 Subject: [PATCH] HBASE-15408 MiniCluster's master crash on initialization and unittest timeout --- .../apache/hadoop/hbase/master/AssignmentManager.java | 16 +++++++++++++++- .../master/handler/DispatchMergingRegionHandler.java | 3 +++ .../org/apache/hadoop/hbase/util/JVMClusterUtil.java | 2 +- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java index 1110db3..e3ba1a2 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java @@ -1674,7 +1674,21 @@ public class AssignmentManager { TableState.State.ENABLING); // Region assignment from META - List results = MetaTableAccessor.fullScanRegions(server.getConnection()); + List results = new ArrayList<>(); + int retry = 2; + IOException ex = null; + while (retry-- > 0) { + try { + results = MetaTableAccessor.fullScanRegions(server.getConnection()); + ex = null; + break; + } catch (IOException e){ + ex = e; + } + } + if (ex != null) { + throw ex; + } // Get any new but slow to checkin region server that joined the cluster Set onlineServers = serverManager.getOnlineServers().keySet(); // Set of offline servers to be returned diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/DispatchMergingRegionHandler.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/DispatchMergingRegionHandler.java index 872cf3f..05e5fac 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/DispatchMergingRegionHandler.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/DispatchMergingRegionHandler.java @@ -167,6 +167,9 @@ public class DispatchMergingRegionHandler extends EventHandler { region_a.getEncodedName() + "," + region_b.getEncodedName() + ", focible=" + forcible, ie); break; + } catch (Throwable throwable) { + LOG.warn("get an unexpected Throwable" + throwable.getMessage()); + break; } } } else { diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/JVMClusterUtil.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/JVMClusterUtil.java index 4db20f2..d265fee 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/JVMClusterUtil.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/JVMClusterUtil.java @@ -204,7 +204,7 @@ public class JVMClusterUtil { // Wait for an active master to be initialized (implies being master) // with this, when we return the cluster is complete startTime = System.currentTimeMillis(); - final int maxwait = 200000; + final int maxwait = 30000; while (true) { JVMClusterUtil.MasterThread t = findActiveMaster(masters); if (t != null && t.master.isInitialized()) { -- 2.5.4 (Apple Git-61)