From 126908b33d40719b4005bad7dd38df608debbcf9 Mon Sep 17 00:00:00 2001 From: csviri Date: Tue, 22 Nov 2022 10:37:00 +0100 Subject: [PATCH 1/2] fix: leader election stop deadlock --- .../java/io/javaoperatorsdk/operator/Operator.java | 10 ++++------ .../event/source/informer/InformerManager.java | 1 + .../operator/sample/WebPageOperator.java | 1 + 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/Operator.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/Operator.java index 3f09fe77ed..41213ac736 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/Operator.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/Operator.java @@ -112,12 +112,10 @@ public void stop() throws OperatorException { final var configurationService = ConfigurationServiceProvider.instance(); log.info( "Operator SDK {} is shutting down...", configurationService.getVersion().getSdkVersion()); - - controllerManager.stop(); - ExecutorServiceManager.stop(); - leaderElectionManager.stop(); - if (configurationService.closeClientOnStop()) { - kubernetesClient.close(); + controllerManager.stop(); + ExecutorServiceManager.stop(); + if (configurationService.closeClientOnStop()) { + kubernetesClient.close(); } } diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/informer/InformerManager.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/informer/InformerManager.java index f5f52d1c0e..e994b7301e 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/informer/InformerManager.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/informer/InformerManager.java @@ -110,6 +110,7 @@ public void stop() { try { log.debug("Stopping informer for namespace: {} -> {}", ns, source); source.stop(); + log.debug("Informer stopped: {} -> {}", ns, source); } catch (Exception e) { log.warn("Error stopping informer for namespace: {} -> {}", ns, source, e); } diff --git a/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/WebPageOperator.java b/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/WebPageOperator.java index 9b137649fc..4bde6b75e9 100644 --- a/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/WebPageOperator.java +++ b/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/WebPageOperator.java @@ -11,6 +11,7 @@ import io.fabric8.kubernetes.client.*; import io.javaoperatorsdk.operator.Operator; +import io.javaoperatorsdk.operator.api.config.LeaderElectionConfiguration; public class WebPageOperator { public static final String WEBPAGE_RECONCILER_ENV = "WEBPAGE_RECONCILER"; From a070a84f212a451e5c641f47d94e4591b73f3f9e Mon Sep 17 00:00:00 2001 From: csviri Date: Tue, 22 Nov 2022 10:38:45 +0100 Subject: [PATCH 2/2] cleanup --- .../main/java/io/javaoperatorsdk/operator/Operator.java | 8 ++++---- .../processing/event/source/informer/InformerManager.java | 1 - .../javaoperatorsdk/operator/sample/WebPageOperator.java | 4 ++-- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/Operator.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/Operator.java index 41213ac736..37ec5883e4 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/Operator.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/Operator.java @@ -112,10 +112,10 @@ public void stop() throws OperatorException { final var configurationService = ConfigurationServiceProvider.instance(); log.info( "Operator SDK {} is shutting down...", configurationService.getVersion().getSdkVersion()); - controllerManager.stop(); - ExecutorServiceManager.stop(); - if (configurationService.closeClientOnStop()) { - kubernetesClient.close(); + controllerManager.stop(); + ExecutorServiceManager.stop(); + if (configurationService.closeClientOnStop()) { + kubernetesClient.close(); } } diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/informer/InformerManager.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/informer/InformerManager.java index e994b7301e..f5f52d1c0e 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/informer/InformerManager.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/informer/InformerManager.java @@ -110,7 +110,6 @@ public void stop() { try { log.debug("Stopping informer for namespace: {} -> {}", ns, source); source.stop(); - log.debug("Informer stopped: {} -> {}", ns, source); } catch (Exception e) { log.warn("Error stopping informer for namespace: {} -> {}", ns, source, e); } diff --git a/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/WebPageOperator.java b/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/WebPageOperator.java index 4bde6b75e9..e86bcbb120 100644 --- a/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/WebPageOperator.java +++ b/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/WebPageOperator.java @@ -9,9 +9,9 @@ import org.takes.http.Exit; import org.takes.http.FtBasic; -import io.fabric8.kubernetes.client.*; +import io.fabric8.kubernetes.client.KubernetesClient; +import io.fabric8.kubernetes.client.KubernetesClientBuilder; import io.javaoperatorsdk.operator.Operator; -import io.javaoperatorsdk.operator.api.config.LeaderElectionConfiguration; public class WebPageOperator { public static final String WEBPAGE_RECONCILER_ENV = "WEBPAGE_RECONCILER";