Index: src/java/org/apache/hadoop/hbase/master/ServerManager.java =================================================================== --- src/java/org/apache/hadoop/hbase/master/ServerManager.java (revision 808204) +++ src/java/org/apache/hadoop/hbase/master/ServerManager.java (working copy) @@ -500,9 +500,18 @@ // has already split by the region server. master.regionManager.endActions(region.getRegionName()); HRegionInfo newRegionA = splitA.getRegionInfo(); - master.regionManager.setUnassigned(newRegionA, false); + // Check before clearing the assignment that the region is not currently + // being opened, which could happen if the REPORT_SPLIT message + // arrived after the master discovered the new regions by scanning + // META in BaseScanner and the master already assigned one of the + // new regions to a RegionServer. See HBASE-1784. + if (!master.regionManager.regionIsOpening(newRegionA.getRegionNameAsString())) { + master.regionManager.setUnassigned(newRegionA, false); + } HRegionInfo newRegionB = splitB.getRegionInfo(); - master.regionManager.setUnassigned(newRegionB, false); + if (!master.regionManager.regionIsOpening(newRegionB.getRegionNameAsString())) { + master.regionManager.setUnassigned(newRegionB, false); + } if (region.isMetaTable()) { // A meta region has split. master.regionManager.offlineMetaRegion(region.getStartKey());