[
https://issues.apache.org/jira/browse/HBASE-21351?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16657837#comment-16657837
]
Duo Zhang commented on HBASE-21351:
-----------------------------------
But first I need to revisit the rollback logic to know how do we make sure that
there is only one PE worker which executes the rollback. The code of
setRollback seems like a lock, but it also checks other things so I need to
read it more carefully...
> The force update thread may have race with PE worker when the procedure is
> rolling back
> ---------------------------------------------------------------------------------------
>
> Key: HBASE-21351
> URL: https://issues.apache.org/jira/browse/HBASE-21351
> Project: HBase
> Issue Type: Sub-task
> Components: proc-v2
> Reporter: Duo Zhang
> Priority: Major
> Fix For: 3.0.0, 2.2.0, 2.1.1, 2.0.3
>
>
> We will acquire the procExecutionLock for a procedure when force updating its
> state to prevent race with PE worker, but this does not work then the
> procedure is rolling back.
> If a procedure is failed, we will mark the root procedure stack as FAILED,
> and then start to rollback the whole procedure stack. We will pop every
> procedure in the stack and try to rollback them. So we may change the state
> of a procedure without holding its procExecutionLock when rolling back.
> This means we may persist an intermediate state of a procedure and cause
> corruption when loading procedures.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)