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

Reply via email to