* @return List of regions neither in transition nor assigned.
* @throws IOException
*/
private List<HRegionInfo> regionsToAssignWithServerName(
final List<Pair<HRegionInfo, ServerName>> regionsInMeta) throws IOException {
ServerManager serverManager = ((HMaster) this.server).getServerManager();
List<HRegionInfo> regions = new ArrayList<HRegionInfo>();
List<HRegionInfo> enablingTableRegions = this.assignmentManager
.getEnablingTableRegions(this.tableNameStr);
final List<HRegionInfo> onlineRegions = this.assignmentManager.getRegionsOfTable(tableName);
for (Pair<HRegionInfo, ServerName> regionLocation : regionsInMeta) {
HRegionInfo hri = regionLocation.getFirst();
ServerName sn = regionLocation.getSecond();
if (this.skipTableStateCheck) {
// Region may be available in enablingTableRegions during master startup only.
if (enablingTableRegions != null && enablingTableRegions.contains(hri)) {
regions.add(hri);
if (sn != null && serverManager.isServerOnline(sn)) {
this.assignmentManager.addPlan(hri.getEncodedName(), new RegionPlan(hri, null, sn));
}
}
} else if (onlineRegions.contains(hri)) {
continue;
} else {
regions.add(hri);
if (sn != null && serverManager.isServerOnline(sn)) {
this.assignmentManager.addPlan(hri.getEncodedName(), new RegionPlan(hri, null, sn));
}
}
}
return regions;