Skip to content

Commit 339d030

Browse files
authored
feature: flag to allow to not close k8s client on stop (operator-framework#809)
1 parent 9ae6108 commit 339d030

File tree

3 files changed

+27
-1
lines changed

3 files changed

+27
-1
lines changed

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/Operator.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,18 @@ public class Operator implements AutoCloseable, LifecycleAware {
2727
private final ConfigurationService configurationService;
2828
private final ControllerManager controllers = new ControllerManager();
2929

30+
3031
public Operator(ConfigurationService configurationService) {
3132
this(new DefaultKubernetesClient(), configurationService);
3233
}
3334

35+
/**
36+
* Note that Operator by default closes the client on stop, this can be changed using
37+
* {@link ConfigurationService}
38+
*
39+
* @param kubernetesClient client to use to all Kubernetes related operations
40+
* @param configurationService provides configuration
41+
*/
3442
public Operator(KubernetesClient kubernetesClient, ConfigurationService configurationService) {
3543
this.kubernetesClient = kubernetesClient;
3644
this.configurationService = configurationService;
@@ -97,7 +105,9 @@ public void stop() throws OperatorException {
97105
controllers.stop();
98106

99107
ExecutorServiceManager.stop();
100-
kubernetesClient.close();
108+
if (configurationService.closeClientOnStop()) {
109+
kubernetesClient.close();
110+
}
101111
}
102112

103113
/** Stop the operator. */

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ConfigurationService.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,4 +118,8 @@ default Metrics getMetrics() {
118118
default ExecutorService getExecutorService() {
119119
return Executors.newFixedThreadPool(concurrentReconciliationThreads());
120120
}
121+
122+
default boolean closeClientOnStop() {
123+
return true;
124+
}
121125
}

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ConfigurationServiceOverrider.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ public class ConfigurationServiceOverrider {
1515
private int threadNumber;
1616
private Cloner cloner;
1717
private int timeoutSeconds;
18+
private boolean closeClientOnStop;
1819

1920
public ConfigurationServiceOverrider(
2021
ConfigurationService original) {
@@ -25,6 +26,7 @@ public ConfigurationServiceOverrider(
2526
this.cloner = original.getResourceCloner();
2627
this.timeoutSeconds = original.getTerminationTimeoutSeconds();
2728
this.metrics = original.getMetrics();
29+
this.closeClientOnStop = original.closeClientOnStop();
2830
}
2931

3032

@@ -58,6 +60,11 @@ public ConfigurationServiceOverrider withMetrics(Metrics metrics) {
5860
return this;
5961
}
6062

63+
public ConfigurationServiceOverrider withCloseClientOnStop(boolean close) {
64+
this.closeClientOnStop = close;
65+
return this;
66+
}
67+
6168
public ConfigurationService build() {
6269
return new ConfigurationService() {
6370
@Override
@@ -105,6 +112,11 @@ public int getTerminationTimeoutSeconds() {
105112
public Metrics getMetrics() {
106113
return metrics;
107114
}
115+
116+
@Override
117+
public boolean closeClientOnStop() {
118+
return closeClientOnStop;
119+
}
108120
};
109121
}
110122

0 commit comments

Comments
 (0)