This is an automated email from the ASF dual-hosted git repository. elserj pushed a commit to branch branch-1 in repository https://gitbox.apache.org/repos/asf/hbase.git
The following commit(s) were added to refs/heads/branch-1 by this push: new 404c2dd HBASE-19365 Guard against a missing table descriptor which crashes master 404c2dd is described below commit 404c2dd3fedb30b15418818630a272defc2ee5c7 Author: Josh Elser <els...@apache.org> AuthorDate: Mon Jun 15 21:15:38 2020 -0400 HBASE-19365 Guard against a missing table descriptor which crashes master While we never expect table descriptors to be missing, a corrupt meta can result in the master crashing before regions get assigned. We can guard against that happening with a simple null-check. Signed-off-by: Viraj Jasani <vjas...@apache.org> Closes #1908 --- .../org/apache/hadoop/hbase/master/AssignmentManager.java | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 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 78294a0..de4edbb 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 @@ -3220,12 +3220,16 @@ public class AssignmentManager extends ZooKeeperListener { // maybe because it crashed. PairOfSameType<HRegionInfo> p = MetaTableAccessor.getMergeRegions(result); if (p.getFirst() != null && p.getSecond() != null) { - int numReplicas = server.getTableDescriptors().get(p.getFirst(). - getTable()).getRegionReplication(); - for (HRegionInfo merge : p) { - for (int i = 1; i < numReplicas; i++) { - replicasToClose.add(RegionReplicaUtil.getRegionInfoForReplica(merge, i)); + HTableDescriptor desc = server.getTableDescriptors().get(p.getFirst().getTable()); + if (desc != null) { + int numReplicas = desc.getRegionReplication(); + for (HRegionInfo merge : p) { + for (int i = 1; i < numReplicas; i++) { + replicasToClose.add(RegionReplicaUtil.getRegionInfoForReplica(merge, i)); + } } + } else { + LOG.warn("Found no table descriptor on filesystem for " + p.getFirst().getTable()); } } RegionLocations rl = MetaTableAccessor.getRegionLocations(result);