void fixHoles(CatalogJanitorReport report) {
    final List<Pair<RegionInfo, RegionInfo>> holes = report.getHoles();
    if (holes.isEmpty()) {
      LOG.info("CatalogJanitor Report contains no holes to fix. Skipping.");
      return;
    }

    LOG.info("Identified {} region holes to fix. Detailed fixup progress logged at DEBUG.",
      holes.size());

    final List<RegionInfo> newRegionInfos = createRegionInfosForHoles(holes);
    final List<RegionInfo> newMetaEntries = createMetaEntries(masterServices, newRegionInfos);
    final TransitRegionStateProcedure[] assignProcedures =
      masterServices.getAssignmentManager().createRoundRobinAssignProcedures(newMetaEntries);

    masterServices.getMasterProcedureExecutor().submitProcedures(assignProcedures);
    LOG.info("Scheduled {}/{} new regions for assignment.", assignProcedures.length, holes.size());
  }
If hole, it papers it over by adding a region in the filesystem and to hbase:meta. Does not
assign.
hbase-server/src/main/java/org/apache/hadoop/hbase/master/janitor/MetaFixer.java