[
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)