[ https://issues.apache.org/jira/browse/FLINK-14010?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16931490#comment-16931490 ]
TisonKun commented on FLINK-14010: ---------------------------------- Well, it's reasonable we try to gracefully shut down. I start to work on it but I'm not sure about what the future should look like. There are two options in my mind, both of which introduce a {{shutdownFuture}} in {{ResourceManager}}. 1. {{ResourceManager#shutdownFuture}} is completed on {{YarnResourceManager#onShutdownRequest}} gets called. And we register callback in {{DispatcherResourceManagerComponent#registerShutDownFuture}}, when {{ResourceManager#shutdownFuture}} complete, we complete {{DispatcherResourceManagerComponent#shutDownFuture}} exceptionally. Concern here is that {{ResourceManager#shutdownFuture}} is never completed if {{YarnResourceManager#onShutdownRequest}} never gets called. I'm not sure if it is well. 2. {{ResourceManager#shutdownFuture}} is completed normally on {{ResourceManager#stopResourceManagerServices}} gets called, while completed exceptionally on {{YarnResourceManager#onShutdownRequest}} gets called. Also we register callback in {{DispatcherResourceManagerComponent#registerShutDownFuture}}, when {{ResourceManager#shutdownFuture}} complete exceptionally, we complete {{DispatcherResourceManagerComponent#shutDownFuture}} exceptionally; when when {{ResourceManager#shutdownFuture}} complete normally we do nothing. It might be a bit more complex than 1 and we should ensure that codepaths {{ResourceManager}} exit are all covered. WDYT [~till.rohrmann]? > Dispatcher & JobManagers don't give up leadership when AM is shut down > ---------------------------------------------------------------------- > > Key: FLINK-14010 > URL: https://issues.apache.org/jira/browse/FLINK-14010 > Project: Flink > Issue Type: Bug > Components: Deployment / YARN, Runtime / Coordination > Affects Versions: 1.7.2, 1.8.1, 1.9.0, 1.10.0 > Reporter: TisonKun > Priority: Critical > > In YARN deployment scenario, YARN RM possibly launches a new AM for the job > even if the previous AM does not terminated, for example, when AMRM heartbeat > timeout. This is a common case that RM will send a shutdown request to the > previous AM and expect the AM shutdown properly. > However, currently in {{YARNResourceManager}}, we handle this request in > {{onShutdownRequest}} which simply close the {{YARNResourceManager}} *but not > Dispatcher and JobManagers*. Thus, Dispatcher and JobManager launched in new > AM cannot be granted leadership properly. Visually, > on previous AM: Dispatcher leader, JM leaders > on new AM: ResourceManager leader > since on client side or in per-job mode, JobManager address and port are > configured as the new AM, the whole cluster goes into an unrecoverable > inconsistent status: client all queries the dispatcher on new AM who is now > the leader. Briefly, Dispatcher and JobManagers on previous AM do not give up > their leadership properly. -- This message was sent by Atlassian Jira (v8.3.2#803003)