diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java index 00752cad7ab..594b0a880f2 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java @@ -3823,7 +3823,8 @@ public class RSRpcServices implements HBaseRPCErrorHandler, long masterSystemTime = request.hasMasterSystemTime() ? request.getMasterSystemTime() : -1; for (RegionOpenInfo regionOpenInfo : request.getOpenInfoList()) { RegionInfo regionInfo = ProtobufUtil.toRegionInfo(regionOpenInfo.getRegion()); - TableDescriptor tableDesc = tdCache.get(regionInfo.getTable()); + TableName tableName = regionInfo.getTable(); + TableDescriptor tableDesc = tdCache.get(tableName); if (tableDesc == null) { try { tableDesc = regionServer.getTableDescriptors().get(regionInfo.getTable()); @@ -3835,6 +3836,9 @@ public class RSRpcServices implements HBaseRPCErrorHandler, LOG.warn("Failed to get TableDescriptor of {}, will try again in the handler", regionInfo.getTable(), e); } + if(tableDesc != null) { + tdCache.put(tableName, tableDesc); + } } if (regionOpenInfo.getFavoredNodesCount() > 0) { regionServer.updateRegionFavoredNodesMapping(regionInfo.getEncodedName(),