[
https://issues.apache.org/jira/browse/HBASE-21440?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16677531#comment-16677531
]
Allan Yang commented on HBASE-21440:
------------------------------------
{code}
+ if (rtp.getTransitionState() !=
RegionTransitionState.REGION_TRANSITION_FINISH) {
...
+ it.remove();
+ }
{code}
I think we only need to check AssignProcedure, for UnassinProcedure, we can
assure that there will be a AssignProcedure there.
> Assign procedure on the crashed server is not properly interrupted
> ------------------------------------------------------------------
>
> Key: HBASE-21440
> URL: https://issues.apache.org/jira/browse/HBASE-21440
> Project: HBase
> Issue Type: Bug
> Affects Versions: 2.0.2
> Reporter: Ankit Singhal
> Assignee: Ankit Singhal
> Priority: Major
> Attachments: HBASE-21440.branch-2.0.001.patch
>
>
> When the server crashes, it's SCP checks if there is already a procedure
> assigning the region on this crashed server. If we found one, SCP will just
> interrupt the already running AssignProcedure by calling remoteCallFailed
> which internally just changes the region node state to OFFLINE and send the
> procedure back with transition queue state for assignment with a new plan.
> But, due to the race condition between the calling of the remoteCallFailed
> and current state of the already running assign
> procedure(REGION_TRANSITION_FINISH: where the region is already opened), it
> is possible that assign procedure goes ahead in updating the regionStateNode
> to OPEN on a crashed server.
> As SCP had already skipped this region for assignment as it was relying on
> existing assign procedure to do the right thing, this whole confusion leads
> region to a not accessible state.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)