Aitozi commented on a change in pull request #17554:
URL: https://github.com/apache/flink/pull/17554#discussion_r755729487



##########
File path: 
flink-kubernetes/src/main/java/org/apache/flink/kubernetes/KubernetesClusterDescriptor.java
##########
@@ -256,36 +244,51 @@ private String getWebMonitorAddress(Configuration 
configuration) throws Exceptio
                     flinkConfig.get(JobManagerOptions.PORT));
         }
 
+        final KubernetesJobManagerParameters kubernetesJobManagerParameters =
+                new KubernetesJobManagerParameters(flinkConfig, 
clusterSpecification);
+
+        final FlinkPod podTemplate =
+                kubernetesJobManagerParameters
+                        .getPodTemplateFilePath()
+                        .map(
+                                file ->
+                                        
KubernetesUtils.loadPodFromTemplateFile(
+                                                client, file, 
Constants.MAIN_CONTAINER_NAME))
+                        .orElse(new FlinkPod.Builder().build());
+        final KubernetesJobManagerSpecification kubernetesJobManagerSpec =
+                
KubernetesJobManagerFactory.buildKubernetesJobManagerSpecification(
+                        podTemplate, kubernetesJobManagerParameters);
+
+        client.createJobManagerComponent(kubernetesJobManagerSpec);
+
+        return createClusterClientProvider(clusterId);
+    }
+
+    private ClusterClientProvider<String> safelyDeployCluster(
+            SupplierWithException<ClusterClientProvider<String>, Exception> 
supplier)
+            throws ClusterDeploymentException {
         try {
-            final KubernetesJobManagerParameters 
kubernetesJobManagerParameters =
-                    new KubernetesJobManagerParameters(flinkConfig, 
clusterSpecification);
-
-            final FlinkPod podTemplate =
-                    kubernetesJobManagerParameters
-                            .getPodTemplateFilePath()
-                            .map(
-                                    file ->
-                                            
KubernetesUtils.loadPodFromTemplateFile(
-                                                    client, file, 
Constants.MAIN_CONTAINER_NAME))
-                            .orElse(new FlinkPod.Builder().build());
-            final KubernetesJobManagerSpecification kubernetesJobManagerSpec =
-                    
KubernetesJobManagerFactory.buildKubernetesJobManagerSpecification(
-                            podTemplate, kubernetesJobManagerParameters);
-
-            client.createJobManagerComponent(kubernetesJobManagerSpec);
-
-            return createClusterClientProvider(clusterId);
+
+            ClusterClientProvider<String> clusterClientProvider = 
supplier.get();
+
+            try (ClusterClient<String> clusterClient = 
clusterClientProvider.getClusterClient()) {

Review comment:
       1. I think it means the failure when get cluster client failed, during 
the phase of deploy cluster. 
   2. Failing to deploy means killing.
   
   As I mentioned in [issue 
](https://issues.apache.org/jira/browse/FLINK-24624?focusedCommentId=17434081&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-17434081),
 This PR only solve the problem in case1. In session/application mode, we seems 
can not  totally ensure there are no left resource, because the deploy process 
is asynchronous, it may need to handle by the client. 




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@flink.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


Reply via email to