[ 
https://issues.apache.org/jira/browse/HBASE-24255?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17094936#comment-17094936
 ] 

Huaxiang Sun commented on HBASE-24255:
--------------------------------------

Just came cross this one. Could it be addressed in 
[https://github.com/apache/hbase/pull/1584/commits/f5e00a23ddb3d60e76aa3316af8887fad4859f7e]
 ?
{code:java}
 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/MetaTableAccessor.java
+++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/MetaTableAccessor.java
@@ -1846,6 +1846,16 @@ public class MetaTableAccessor {
       qualifiers.add(qualifier);
       delete.addColumns(getCatalogFamily(), qualifier, 
HConstants.LATEST_TIMESTAMP);
     }
+
+    // There will be race condition that a GCMultipleMergedRegionsProcedure is 
scheduled while
+    // the previous GCMultipleMergedRegionsProcedure is still going on, in 
this case, the second
+    // GCMultipleMergedRegionsProcedure could delete the merged region by 
accident!
+    if (qualifiers.isEmpty()) {
+      LOG.info("No merged qualifiers for region " + 
mergeRegion.getRegionNameAsString() +
+        " in meta table, they are cleaned up already, Skip.");
+      return;
+    }
+{code}

> GCRegionProcedure doesn't assign region from RegionServer leading to orphans
> ----------------------------------------------------------------------------
>
>                 Key: HBASE-24255
>                 URL: https://issues.apache.org/jira/browse/HBASE-24255
>             Project: HBase
>          Issue Type: Bug
>          Components: proc-v2, Region Assignment, regionserver
>    Affects Versions: 2.2.4
>         Environment: hbase 2.2.4
> hadoop 3.1.3
>            Reporter: Andrey Elenskiy
>            Assignee: niuyulin
>            Priority: Major
>
> We've found ourselves in a situation where parents of merged or split regions 
> needed to be opened again on a regionserver due to having to recover from 
> cluster meltdown (HBCK2's fixMeta kicks off GCMultipleMergedRegionsProcedure 
> which requiters all regions to be merged to be open). Then, when a 
> GCProcedure is kicked of to clean a parent region up by 
> GCMultipleMergedRegionsProcedure, it ends up deleting it from hbase:meta, but 
> doesn't unassign it from RegionServer leading for it to show up in "Orphan 
> Regions on RegionServer" in hbck tab of HBase Master. Also, the hbase client 
> doesn't detect that the region is closed either because it's still 
> technically open on a regionserver (it doesn't reread hbase:meta all the 
> time). The only way to recover from this is to restart regionserver which 
> isn't idea as it can lead to other issues in clusters with region 
> inconsistencies.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to