[
https://issues.apache.org/jira/browse/HBASE-21440?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16681709#comment-16681709
]
Josh Elser commented on HBASE-21440:
------------------------------------
{quote}rather than SCP have to know about AP states (and open
AP#getTransitionState so SCP can use it), could your check be done inside in
AP#remoteCallFailed ? In here it looks at the state and determines if it should
skip?
{quote}
{quote}we can let RegionTransitionProcedure#remoteCallFailed return a boolean
to indicate whether if the failure is handled properly. If not(e.g. AP is
already in REGION_TRANSITION_FINISH ), SCP need to schedule a new AP for
it(only if AP fails).
{quote}
Great suggestions, both!
{quote}I also think writing a UT for this case is hard...
{quote}
hehe, yeah. I glanced through the code yesterday and came to the conclusion
that I didn't think we could make a realistic UT for this :)
> 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,
> HBASE-21440.branch-2.0.002.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)