In hbase-1, it always runs into the situation that primary region has been closed/removed and replica region still stays in master's in-memory db and open at one of the region servers. Balancer can move this replica region to a new region server. During the region open, replica region does not check if primary region has been removed and moves forward. During store open, it will recreates primary region directory at hdfs and caused inconsistency.
In hbase-2, things get much better. To prevent the above inconsistency from happening, it adds more checks for a replica region, i.e, if primary regions' directory exists and there is a .regioninfo under.