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

Duo Zhang commented on HBASE-20708:
-----------------------------------

{quote}
IIRC, thinking was probably that hbase:meta would never be CLOSED.
{quote}

But when we are moving hbase:meta then it could be in CLOSED state as we will 
also do an unassign and an assign. And also, when doing SCP, I think it could 
be in OPENING state and then OPEN?

The reason why I want to remove RMP is that, it is not enough to make sure that 
meta is online, so we still need to partially enable SCP later. You can see the 
code in SCP, for state SERVER_CRASH_GET_REGIONS, we have this
{code}
          // If hbase:meta is not assigned, yield.
          if (env.getAssignmentManager().waitMetaLoaded(this)) {
            throw new ProcedureSuspendedException();
          }
{code}
So why not use SCP directly to recover the meta?

And RMP has another problem. For SCP, there is a state to break the ongoing 
assign/unassign procedures for the given server, and for RMP we have the same 
logic. In HBASE-20700 we solved a problem that RMP maybe blocked by MRP as it 
requires the exclusive lock which is the same with MRP. and even after 
HBASE-20700, there is still a problem that, and RMP can not be interrupted by 
another RMP as they require the same exclusive lock, so we need to add some 
code in SCP or expireServer to break the RMP execution. So still the same 
question, why not use SCP directly? It seems that using RMP just introduces 
more complexity...

Will write a simple design doc soon.

> Remove the usage of RecoverMetaProcedure in master startup
> ----------------------------------------------------------
>
>                 Key: HBASE-20708
>                 URL: https://issues.apache.org/jira/browse/HBASE-20708
>             Project: HBase
>          Issue Type: Bug
>          Components: proc-v2, Region Assignment
>            Reporter: Duo Zhang
>            Priority: Blocker
>             Fix For: 3.0.0, 2.1.0
>
>
> In HBASE-20700, we make RecoverMetaProcedure use a special lock which is only 
> used by RMP to avoid dead lock with MoveRegionProcedure. But we will always 
> schedule a RMP when master starting up, so we still need to make sure that 
> there is no race between this RMP and other RMPs and SCPs scheduled before 
> the master restarts.



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

Reply via email to