[ 
https://issues.apache.org/jira/browse/HBASE-19608?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Duo Zhang updated HBASE-19608:
------------------------------
    Attachment: HBASE-19608.patch

The fix is straight forward. Use ProcedureExecutor.isFinished instead of 
Procedure.isFinished or Procedure.isFailed to determine whether a procedure is 
finished.

> Race in MasterRpcServices.getProcedureResult
> --------------------------------------------
>
>                 Key: HBASE-19608
>                 URL: https://issues.apache.org/jira/browse/HBASE-19608
>             Project: HBase
>          Issue Type: Bug
>          Components: proc-v2
>            Reporter: Duo Zhang
>            Assignee: Duo Zhang
>             Fix For: 2.0.0-beta-1
>
>         Attachments: HBASE-19608.patch
>
>
> In ProcedureExecutor, we only consider a procedure to be finished when it is 
> removed from the procedures map. But in MasterRpcServices.getProcedureResult, 
> we will use the state of the procedure to determine whether it is finished. 
> If setFailure is called, the procedure may enter the FAILED state which 
> indicates it is finished before being  removed from the procedure map, and 
> then causes an assertion when we calling ProcedureExecutor.removeResult in 
> MasterRpcServices.getProcedureResult.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to