You are viewing a plain text version of this content. The canonical link for it is here.
Posted to yarn-issues@hadoop.apache.org by "zhihai xu (JIRA)" <ji...@apache.org> on 2015/09/28 10:02:04 UTC
[jira] [Commented] (YARN-4209) RMStateStore FENCED state doesn’t work due to updateFencedState called by stateMachine.doTransition
[ https://issues.apache.org/jira/browse/YARN-4209?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14910141#comment-14910141 ]
zhihai xu commented on YARN-4209:
---------------------------------
Also the test case in the patch can verify this issue. Without the change, the RMStateStore is still in ACTIVE state even after {{updateFencedState}} is called.
> RMStateStore FENCED state doesn’t work due to updateFencedState called by stateMachine.doTransition
> ---------------------------------------------------------------------------------------------------
>
> Key: YARN-4209
> URL: https://issues.apache.org/jira/browse/YARN-4209
> Project: Hadoop YARN
> Issue Type: Bug
> Components: resourcemanager
> Affects Versions: 2.7.2
> Reporter: zhihai xu
> Assignee: zhihai xu
> Priority: Critical
> Attachments: YARN-4209.000.patch
>
>
> RMStateStore FENCED state doesn’t work due to {{updateFencedState}} called by {{stateMachine.doTransition}}. The reason is
> {{stateMachine.doTransition}} called from {{updateFencedState}} is embedded in {{stateMachine.doTransition}} called from public API(removeRMDelegationToken...) or {{ForwardingEventHandler#handle}}. So right after the internal state transition from {{updateFencedState}} changes the state to FENCED state, the external state transition changes the state back to ACTIVE state. The end result is that RMStateStore is still in ACTIVE state even {{notifyStoreOperationFailed}} is called. The only working case for FENCED state is {{notifyStoreOperationFailed}} called from {{ZKRMStateStore#VerifyActiveStatusThread}}.
> For example: {{removeRMDelegationToken}} => {{handleStoreEvent}} => enter external {{stateMachine.doTransition}} => {{RemoveRMDTTransition}} => {{notifyStoreOperationFailed}} =>{{updateFencedState}}=>{{handleStoreEvent}}=> enter internal {{stateMachine.doTransition}} => exit internal {{stateMachine.doTransition}} change state to FENCED => exit external {{stateMachine.doTransition}} change state to ACTIVE.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)