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

Duo Zhang commented on HBASE-26283:
-----------------------------------

https://github.com/apache/hbase/blob/master/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/handler/AssignRegionHandler.java#L152

In this line, we will call reportRegionStateTransition, and will only return 
when it succeeds.

And please see https://issues.apache.org/jira/browse/HBASE-22074, where we 
persist the state to procedure store in reportRegionStateTransition, so 
theoretically this should not happen.

Maybe there are other concern cases we haven't processed cleanly, could you 
please try grep in the master log to see if there are any related warning/error 
message about this region?

Thanks.

> RegionServer ignored a procedure dute to repeatedly opening which lead region 
> stuck in RIT
> ------------------------------------------------------------------------------------------
>
>                 Key: HBASE-26283
>                 URL: https://issues.apache.org/jira/browse/HBASE-26283
>             Project: HBase
>          Issue Type: Improvement
>          Components: Region Assignment
>    Affects Versions: 2.3.5
>            Reporter: bolao
>            Priority: Minor
>
>        when hbase cluster shut down Suddenlly,  there are some repeatedly 
> opening regions and cause them to stuck in RTI。we found 
> org.apache.hadoop.hbase.regionserver.handler.AssignRegionHandler#process() 
> directly return when handle repeatedly opening regions, and don't report to 
> master,  master unable to  process next status for this procedure, and 
> regions stuck in RIT。so can we  do like this:
>  #  AssignRegionHandler report the region is online if regionserver found the 
> region is online,
>  # or AssignRegionHandler report the region is failed online if regionserver 
> found the region is online, let Hmater to retry。
> please give some suggestions, thanks !
> {code:java}
> // code placeholder
> Region onlineRegion = rs.getRegion(encodedName); if (onlineRegion != null) { 
> LOG.warn("Received OPEN for the region:{}, which is already online", 
> regionName);
>  // Just follow the old behavior, do we need to call 
> reportRegionStateTransition? Maybe not? 
> // For normal case, it could happen that the rpc call to schedule this 
> handler is succeeded,
>  // but before returning to master the connection is broken. And when master 
> tries again, we 
> // have already finished the opening. For this case we do not need to call 
> // reportRegionStateTransition any more.
>  return; }
> {code}
>  



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

Reply via email to