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 "Jian He (JIRA)" <ji...@apache.org> on 2014/12/14 04:04:13 UTC
[jira] [Commented] (YARN-2946) DeadLocks in
RMStateStore<->ZKRMStateStore
[ https://issues.apache.org/jira/browse/YARN-2946?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14245794#comment-14245794 ]
Jian He commented on YARN-2946:
-------------------------------
bq. For all above mentioned method's causing deadlock , introduce StateMachine in RMStateStore like handling application store. So all the execution flows from StateMachine->zkRMStateStore.class.
I think this is a reasonable way. We can call the transitions synchronously in each storeToken or storeMasterKey methods. This way we make all store operations follow the same path - all going through state machines
> DeadLocks in RMStateStore<->ZKRMStateStore
> ------------------------------------------
>
> Key: YARN-2946
> URL: https://issues.apache.org/jira/browse/YARN-2946
> Project: Hadoop YARN
> Issue Type: Bug
> Components: resourcemanager
> Affects Versions: 2.7.0
> Reporter: Rohith
> Assignee: Rohith
> Priority: Blocker
> Attachments: 0001-YARN-2946.patch, 0002-YARN-2946.patch, RM_BeforeFix_Deadlock_cycle_1.png, RM_BeforeFix_Deadlock_cycle_2.png, TestYARN2946.java
>
>
> Found one deadlock in ZKRMStateStore.
> # Initial stage zkClient is null because of zk disconnected event.
> # When ZKRMstatestore#runWithCheck() wait(zkSessionTimeout) for zkClient to re establish zookeeper connection either via synconnected or expired event, it is highly possible that any other thred can obtain lock on {{ZKRMStateStore.this}} from state machine transition events. This cause Deadlock in ZKRMStateStore.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)