This is an automated email from the ASF dual-hosted git repository.

nicknezis pushed a commit to branch nicknezis/k8s-delete-fix
in repository https://gitbox.apache.org/repos/asf/incubator-heron.git

commit cad3d8ca1cad2fa7f9e60299ace457236878040a
Author: Nicholas Nezis <[email protected]>
AuthorDate: Wed Dec 30 03:08:46 2020 -0500

    Initial commit
---
 WORKSPACE                                          |  3 ++-
 .../heron/scheduler/kubernetes/V1Controller.java   | 26 +++++++++++++++++++---
 2 files changed, 25 insertions(+), 4 deletions(-)

diff --git a/WORKSPACE b/WORKSPACE
index 8e46253..f6c7a55 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -54,7 +54,7 @@ jetty_version = "9.4.6.v20170531"
 
 jersey_version = "2.25.1"
 
-kubernetes_client_version = "8.0.0"
+kubernetes_client_version = "11.0.0"
 
 load("@rules_jvm_external//:defs.bzl", "maven_install")
 load("@rules_jvm_external//:specs.bzl", "maven")
@@ -263,6 +263,7 @@ http_archive(
 http_archive(
     name = "org_apache_zookeeper",
     build_file = "@//:third_party/zookeeper/BUILD",
+    sha256 = 
"bafc0abe7da696a2020ba11b8ce7d06f6e28e9bf1e5504de09be25b8b589777d",
     strip_prefix = "apache-zookeeper-3.5.8",
     urls = 
["https://archive.apache.org/dist/zookeeper/zookeeper-3.5.8/apache-zookeeper-3.5.8.tar.gz";],
 )
diff --git 
a/heron/schedulers/src/java/org/apache/heron/scheduler/kubernetes/V1Controller.java
 
b/heron/schedulers/src/java/org/apache/heron/scheduler/kubernetes/V1Controller.java
index f4efe2c..d06987b 100644
--- 
a/heron/schedulers/src/java/org/apache/heron/scheduler/kubernetes/V1Controller.java
+++ 
b/heron/schedulers/src/java/org/apache/heron/scheduler/kubernetes/V1Controller.java
@@ -70,6 +70,8 @@ import io.kubernetes.client.util.PatchUtils;
 
 import okhttp3.Response;
 
+import static java.net.HttpURLConnection.HTTP_NOT_FOUND;
+
 public class V1Controller extends KubernetesController {
 
   private static final Logger LOG =
@@ -230,6 +232,10 @@ public class V1Controller extends KubernetesController {
             + "] in namespace [" + getNamespace() + "] is deleted.");
         return true;
       } else {
+        if (response.code() == HTTP_NOT_FOUND) {
+          LOG.log(Level.INFO, "Kubernetes headless service does not exist for 
Topology: " + getTopologyName());
+          return true;
+        }
         LOG.log(Level.SEVERE, "Error when deleting the Service of the job ["
             + getTopologyName() + "] in namespace [" + getNamespace() + "]");
         LOG.log(Level.SEVERE, "Error killing topoogy message:" + 
response.message());
@@ -238,8 +244,13 @@ public class V1Controller extends KubernetesController {
         throw new TopologyRuntimeManagementException(
             KubernetesUtils.errorMessageFromResponse(response));
       }
-    } catch (IOException | ApiException e) {
-      KubernetesUtils.logExceptionWithDetails(LOG, "Error deleting topology 
service", e);
+    } catch (ApiException e) {
+      if (e.getCode() == HTTP_NOT_FOUND) {
+        LOG.log(Level.INFO, "Kubernetes headless service does not exist for 
Topology: " + getTopologyName());
+        return true;
+      }
+    } catch (IOException e) {
+      KubernetesUtils.logExceptionWithDetails(LOG, "Error deleting topology [" 
+ getTopologyName() +"] Kubernetes service", e);
       return false;
     }
   }
@@ -255,6 +266,10 @@ public class V1Controller extends KubernetesController {
             + "] in namespace [" + getNamespace() + "] is deleted.");
         return true;
       } else {
+        if (response.code() == HTTP_NOT_FOUND) {
+          LOG.log(Level.INFO, "Statefulset does not exist for Topology: " + 
getTopologyName());
+          return true;
+        }
         LOG.log(Level.SEVERE, "Error when deleting the StatefulSet of the job 
["
             + getTopologyName() + "] in namespace [" + getNamespace() + "]");
         LOG.log(Level.SEVERE, "Error killing topology message: " + 
response.message());
@@ -263,7 +278,12 @@ public class V1Controller extends KubernetesController {
         throw new TopologyRuntimeManagementException(
             KubernetesUtils.errorMessageFromResponse(response));
       }
-    } catch (IOException | ApiException e) {
+    } catch (ApiException e) {
+      if (e.getCode() == HTTP_NOT_FOUND) {
+        LOG.log(Level.INFO, "Statefulset does not exist for Topology: " + 
getTopologyName());
+        return true;
+      }
+    } catch (IOException e) {
       KubernetesUtils.logExceptionWithDetails(LOG, "Error deleting topology", 
e);
       return false;
     }

Reply via email to