private void checkServer(RegionLocations locations) {
    if (this.services == null) {
      // Can't do this test if no services.
      return;
    }
    if (locations == null) {
      return;
    }
    if (locations.getRegionLocations() == null) {
      return;
    }
    // Check referenced servers are known/online. Here we are looking
    // at both the default replica -- the main replica -- and then replica
    // locations too.
    for (HRegionLocation location : locations.getRegionLocations()) {
      if (location == null) {
        continue;
      }
      ServerName sn = location.getServerName();
      if (sn == null) {
        continue;
      }
      if (location.getRegion() == null) {
        LOG.warn("Empty RegionInfo in {}", location);
        // This should never happen but if it does, will mess up below.
        continue;
      }
      RegionInfo ri = location.getRegion();
      // Skip split parent region
      if (ri.isSplitParent()) {
        continue;
      }
      // skip the offline regions which belong to disabled table.
      if (isTableDisabled(ri)) {
        continue;
      }
      RegionState rs = this.services.getAssignmentManager().getRegionStates().getRegionState(ri);
      if (rs == null || rs.isClosedOrAbnormallyClosed()) {
        // If closed against an 'Unknown Server', that is should be fine.
        continue;
      }
      ServerManager.ServerLiveState state =
        this.services.getServerManager().isServerKnownAndOnline(sn);
      switch (state) {
        case UNKNOWN:
          this.report.unknownServers.add(new Pair<>(ri, sn));
          break;

        default:
          break;
      }
    }
  }
Run through referenced servers and save off unknown and the dead.
hbase-server/src/main/java/org/apache/hadoop/hbase/master/janitor/ReportMakingVisitor.java