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

Duo Zhang commented on HBASE-21217:
-----------------------------------

You can see how do I implement the general remote procedure. The 
executeProcedures method is not the problem, the problem is we just call 
openRegion/closeRegion method directly, and they could fail. In general, the 
executeProcedures method should not fail, it will just schedule the procedures 
to an executor. And it is the procedure's duty to report back to master. 
Especially for opening/closing a region, we should use 
reportRegionStateTransition to tell master the result, instead of throwing 
exceptions and let the dispatcher to handle the problem.

> Revisit the executeProcedure method for open/close region
> ---------------------------------------------------------
>
>                 Key: HBASE-21217
>                 URL: https://issues.apache.org/jira/browse/HBASE-21217
>             Project: HBase
>          Issue Type: Sub-task
>          Components: amv2, proc-v2
>            Reporter: Duo Zhang
>            Priority: Critical
>             Fix For: 3.0.0, 2.2.0
>
>
> Currently we just call openRegion and closeRegion directly, which is a bit 
> buggy. For example, in order to not fail all the open region requests while 
> there is only one failure, we will catch the exception and set a flag in the 
> return value. But for executeProcedures call, the return value will be 
> ignored, and we expect the openRegion method will always call 
> reportRegionStateTransition to report the failure but in fact it does not...
> And after HBASE-20881, we can confirm that the race could happen, where we 
> send a close request to a region which is opening(HBASE-21199), and vice 
> visa. So I think here we need to revisit the implementation of 
> executeProcedures to make it more stable.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to