private boolean deletedLeftoverSplitRegion()

in hbase-hbck2/src/main/java/org/apache/hbase/hbck1/HBaseFsck.java [2854:2885]


  private boolean deletedLeftoverSplitRegion(HbckInfo hbi) throws IOException {
    RegionInfo hri = hbi.getHdfsHRI();
    TableInfo tableInfo = tablesInfo.get(hri.getTable());
    for (RegionInfo region : tableInfo.getRegionsFromMeta()) {
      if (Bytes.compareTo(region.getStartKey(), hri.getStartKey()) <= 0
          && (region.getEndKey().length == 0 || Bytes.compareTo(region.getEndKey(),
          hri.getEndKey()) >= 0)
          && Bytes.compareTo(region.getStartKey(), hri.getEndKey()) <= 0) {
        if (region.isSplit() || region.isOffline()) {
          continue;
        }
        Path regionDir = hbi.getHdfsRegionDir();
        FileSystem fs = regionDir.getFileSystem(getConf());
        List<Path> familyDirs = FSUtils.getFamilyDirs(fs, regionDir);
        for (Path familyDir : familyDirs) {
          List<Path> referenceFilePaths = FSUtils.getReferenceFilePaths(fs, familyDir);
          for (Path referenceFilePath : referenceFilePaths) {
            Path parentRegionDir =
                StoreFileInfo.getReferredToFile(referenceFilePath).getParent().getParent();
            if (parentRegionDir.toString().endsWith(region.getEncodedName())) {
              LOG.warn(hri + " start and stop keys are in range of " + region + ". Region " +
                  "not cleaned from hdfs on " + region + " split fail; deleting from hdfs.");
              HRegionFileSystem.deleteRegionFromFileSystem(getConf(), fs,
                  regionDir.getParent(), hri);
              return true;
            }
          }
        }
      }
    }
    return false;
  }