You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@flink.apache.org by "Yang Wang (Jira)" <ji...@apache.org> on 2020/01/30 08:33:00 UTC

[jira] [Commented] (FLINK-15790) Make FlinkKubeClient and its implementations asynchronous

    [ https://issues.apache.org/jira/browse/FLINK-15790?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17026505#comment-17026505 ] 

Yang Wang commented on FLINK-15790:
-----------------------------------

[~trohrmann] I prefer to make all potentially blocking operations in {{FlinkKubeClient}} asynchronous.

The methods {{createTaskManagerPod, stopPod}} will be certainly updated to asynchronous.

Do you think all other resource operations {{createConfigMap, createInternalService, createRestService, createFlinkMasterDeployment, stopAndCleanupCluster}} should also be synchronous? This methods are executed on client side or in the init of {{KubernetesResourceManager}}.

BTW, I do not think we also need to make all the get methods {{getInternalService, getRestService, getRestEndpoint, getPodsWithLabels}}. When we call these methods, we are always expecting the result immediately.

> Make FlinkKubeClient and its implementations asynchronous
> ---------------------------------------------------------
>
>                 Key: FLINK-15790
>                 URL: https://issues.apache.org/jira/browse/FLINK-15790
>             Project: Flink
>          Issue Type: Sub-task
>          Components: Deployment / Kubernetes
>    Affects Versions: 1.10.0
>            Reporter: Till Rohrmann
>            Priority: Critical
>             Fix For: 1.11.0, 1.10.1
>
>
> The {{FlinkKubeClient}} interface offers several methods which are synchronous (e.g. {{FlinkKubeClient.createTaskManagerPod}}, {{FlinkKubeClient.stopPod}}, {{FlinkKubeClient.getPodsWithLabels}}, etc). The problem is that these methods are directly used by the {{KubernetesResourceManager}} which calls them from the main thread. Since these methods perform I/O operations (sending and receiving network packages) they can potentially block the execution and hence should not happen from the {{RpcEndpoint's}} main thread.
> I propose to make all potentially blocking operations on the {{FlinkKubeClient}} asynchronous so that the {{KubernetesResourceManager}} does not risk to block the main thread. Alternatively, we could also introduce a {{FlinkKubeClientAsync}} which offers asynchronous operations.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)