private boolean canMerge()

in hbase-tools/src/main/java/org/apache/hbase/RegionsMerger.java [134:161]


  private boolean canMerge(Path path, RegionInfo region1, RegionInfo region2,
      Collection<Pair<RegionInfo, RegionInfo>> alreadyMerging) throws IOException {
    if(alreadyMerging.stream().anyMatch(regionPair ->
        region1.equals(regionPair.getFirst()) ||
        region2.equals(regionPair.getFirst()) ||
        region1.equals(regionPair.getSecond()) ||
        region2.equals(regionPair.getSecond()))){
      return false;
    }
    if (RegionInfo.areAdjacent(region1, region2)) {
      long size1 = sumSizeInFS(new Path(path, region1.getEncodedName()));
      long size2 = sumSizeInFS(new Path(path, region2.getEncodedName()));
      boolean mergeable = (resultSizeThreshold > (size1 + size2));
      if (!mergeable) {
        LOG.warn("Not merging regions {} and {} because resulting region size would get close to " +
            "the {} limit. {} total size: {}; {} total size:{}", region1.getEncodedName(),
          region2.getEncodedName(), resultSizeThreshold, region1.getEncodedName(), size1,
          region2.getEncodedName(), size2);
      }
      return mergeable;
    } else {
      LOG.warn(
        "WARNING: Can't merge regions {} and {} because those are not adjacent.",
        region1.getEncodedName(),
        region2.getEncodedName());
      return false;
    }
  }