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; }
