Index: main/java/org/apache/hadoop/hbase/master/AssignmentManager.java =================================================================== --- main/java/org/apache/hadoop/hbase/master/AssignmentManager.java (revision 1130382) +++ main/java/org/apache/hadoop/hbase/master/AssignmentManager.java (working copy) @@ -1848,6 +1848,15 @@ } catch (KeeperException e) { LOG.warn("Exception while validating RIT during split report", e); } + synchronized (this.regions) { + //one daughter is already online, do nothing + HServerInfo hsia = this.regions.get(a); + if (hsia != null){ + LOG.warn("Trying to process the split of " +a.getEncodedName()+ ", " + + "but it was already done and one daughter is on region server " + hsia); + return; + } + } regionOnline(a, hsi); regionOnline(b, hsi); Index: main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java =================================================================== --- main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java (revision 1130382) +++ main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java (working copy) @@ -736,6 +736,7 @@ // This will be caught and handled as a fatal error in run() throw ioe; } + LOG.warn("RemoteException connecting to master", ioe); // Couldn't connect to the master, get location from zk and reconnect // Method blocks until new master is found or we are stopped getMaster(); Index: test/java/org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.java =================================================================== --- test/java/org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.java (revision 1130382) +++ test/java/org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.java (working copy) @@ -172,6 +172,9 @@ // Get daughters List daughters = cluster.getRegions(tableName); assertTrue(daughters.size() >= 2); + //Test repeating split message. HBASE-3892 + server.reportSplit(hri, daughters.get(0).getRegionInfo(), daughters.get(1).getRegionInfo()); + LOG.info("Repeating split message. HBASE-3892"); // Now split one of the daughters. regionCount = server.getOnlineRegions().size(); split(daughters.get(0).getRegionInfo(), server, regionCount);