Skip to content

Commit 8659e50

Browse files
committed
refactor: no need to record ExecutorService in Workflow
1 parent 1066d37 commit 8659e50

File tree

6 files changed

+9
-40
lines changed

6 files changed

+9
-40
lines changed

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/workflow/DefaultManagedWorkflow.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
import io.fabric8.kubernetes.client.KubernetesClient;
1111
import io.javaoperatorsdk.operator.api.config.ConfigurationServiceProvider;
1212
import io.javaoperatorsdk.operator.api.config.ControllerConfiguration;
13-
import io.javaoperatorsdk.operator.api.config.ExecutorServiceManager;
1413
import io.javaoperatorsdk.operator.api.config.dependent.DependentResourceSpec;
1514
import io.javaoperatorsdk.operator.api.reconciler.dependent.DependentResource;
1615
import io.javaoperatorsdk.operator.api.reconciler.dependent.EventSourceReferencer;
@@ -89,7 +88,6 @@ public Workflow<P> resolve(KubernetesClient client,
8988
final var top =
9089
topLevelResources.stream().map(alreadyResolved::get).collect(Collectors.toSet());
9190
return new DefaultWorkflow<>(alreadyResolved, bottom, top,
92-
ExecutorServiceManager.instance().workflowExecutorService(),
9391
THROW_EXCEPTION_AUTOMATICALLY_DEFAULT, hasCleaner);
9492
}
9593

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/workflow/DefaultWorkflow.java

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,10 @@
66
import java.util.List;
77
import java.util.Map;
88
import java.util.Set;
9-
import java.util.concurrent.ExecutorService;
109
import java.util.function.Function;
1110
import java.util.stream.Collectors;
1211

1312
import io.fabric8.kubernetes.api.model.HasMetadata;
14-
import io.javaoperatorsdk.operator.api.config.ExecutorServiceManager;
1513
import io.javaoperatorsdk.operator.api.reconciler.Context;
1614
import io.javaoperatorsdk.operator.api.reconciler.dependent.Deleter;
1715
import io.javaoperatorsdk.operator.api.reconciler.dependent.DependentResource;
@@ -31,19 +29,15 @@ public class DefaultWorkflow<P extends HasMetadata> implements Workflow<P> {
3129
private final Set<DependentResourceNode> bottomLevelResource;
3230

3331
private final boolean throwExceptionAutomatically;
34-
// it's "global" executor service shared between multiple reconciliations running parallel
35-
private final ExecutorService executorService;
3632
private final boolean hasCleaner;
3733

3834
DefaultWorkflow(Set<DependentResourceNode> dependentResourceNodes) {
39-
this(dependentResourceNodes, ExecutorServiceManager.instance().workflowExecutorService(),
40-
THROW_EXCEPTION_AUTOMATICALLY_DEFAULT, false);
35+
this(dependentResourceNodes, THROW_EXCEPTION_AUTOMATICALLY_DEFAULT, false);
4136
}
4237

4338
DefaultWorkflow(Set<DependentResourceNode> dependentResourceNodes,
44-
ExecutorService executorService, boolean throwExceptionAutomatically,
39+
boolean throwExceptionAutomatically,
4540
boolean hasCleaner) {
46-
this.executorService = executorService;
4741
this.throwExceptionAutomatically = throwExceptionAutomatically;
4842
this.hasCleaner = hasCleaner;
4943

@@ -60,9 +54,8 @@ public class DefaultWorkflow<P extends HasMetadata> implements Workflow<P> {
6054

6155
DefaultWorkflow(Map<String, DependentResourceNode> dependentResourceNodes,
6256
Set<DependentResourceNode> bottomLevelResource, Set<DependentResourceNode> topLevelResources,
63-
ExecutorService executorService, boolean throwExceptionAutomatically,
57+
boolean throwExceptionAutomatically,
6458
boolean hasCleaner) {
65-
this.executorService = executorService;
6659
this.throwExceptionAutomatically = throwExceptionAutomatically;
6760
this.hasCleaner = hasCleaner;
6861

@@ -121,11 +114,6 @@ public Set<DependentResourceNode> getBottomLevelResource() {
121114
return bottomLevelResource;
122115
}
123116

124-
@Override
125-
public ExecutorService getExecutorService() {
126-
return executorService;
127-
}
128-
129117
@Override
130118
public boolean hasCleaner() {
131119
return hasCleaner;

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/workflow/Workflow.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import java.util.Map;
44
import java.util.Set;
5-
import java.util.concurrent.ExecutorService;
65

76
import io.fabric8.kubernetes.api.model.HasMetadata;
87
import io.javaoperatorsdk.operator.api.reconciler.Context;
@@ -22,8 +21,6 @@ public interface Workflow<P extends HasMetadata> {
2221
@SuppressWarnings("rawtypes")
2322
Set<DependentResourceNode> getBottomLevelResource();
2423

25-
ExecutorService getExecutorService();
26-
2724
boolean hasCleaner();
2825

2926
boolean isEmpty();

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/workflow/WorkflowBuilder.java

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,8 @@
55
import java.util.HashSet;
66
import java.util.Map;
77
import java.util.Set;
8-
import java.util.concurrent.ExecutorService;
9-
import java.util.concurrent.Executors;
108

119
import io.fabric8.kubernetes.api.model.HasMetadata;
12-
import io.javaoperatorsdk.operator.api.config.ExecutorServiceManager;
1310
import io.javaoperatorsdk.operator.api.reconciler.dependent.DependentResource;
1411

1512
import static io.javaoperatorsdk.operator.processing.dependent.workflow.Workflow.THROW_EXCEPTION_AUTOMATICALLY_DEFAULT;
@@ -75,26 +72,13 @@ DependentResourceNode getNodeByDependentResource(DependentResource<?, ?> depende
7572
}
7673
}
7774

78-
public boolean isThrowExceptionAutomatically() {
79-
return throwExceptionAutomatically;
80-
}
81-
8275
public WorkflowBuilder<P> withThrowExceptionFurther(boolean throwExceptionFurther) {
8376
this.throwExceptionAutomatically = throwExceptionFurther;
8477
return this;
8578
}
8679

8780
public Workflow<P> build() {
88-
return build(ExecutorServiceManager.instance().workflowExecutorService());
89-
}
90-
91-
public Workflow<P> build(int parallelism) {
92-
return build(Executors.newFixedThreadPool(parallelism));
93-
}
94-
95-
public Workflow<P> build(ExecutorService executorService) {
96-
// workflow has been built from dependent resources so it is already resolved
97-
return new DefaultWorkflow(new HashSet<>(dependentResourceNodes.values()), executorService,
81+
return new DefaultWorkflow(new HashSet<>(dependentResourceNodes.values()),
9882
throwExceptionAutomatically, isCleaner);
9983
}
10084
}

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/workflow/WorkflowCleanupExecutor.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import org.slf4j.LoggerFactory;
1111

1212
import io.fabric8.kubernetes.api.model.HasMetadata;
13+
import io.javaoperatorsdk.operator.api.config.ExecutorServiceManager;
1314
import io.javaoperatorsdk.operator.api.reconciler.Context;
1415
import io.javaoperatorsdk.operator.api.reconciler.dependent.Deleter;
1516
import io.javaoperatorsdk.operator.api.reconciler.dependent.DependentResource;
@@ -52,7 +53,7 @@ private synchronized void handleCleanup(DependentResourceNode dependentResourceN
5253
return;
5354
}
5455

55-
Future<?> nodeFuture = workflow.getExecutorService()
56+
Future<?> nodeFuture = ExecutorServiceManager.instance().workflowExecutorService()
5657
.submit(new CleanupExecutor<>(dependentResourceNode));
5758
markAsExecuting(dependentResourceNode, nodeFuture);
5859
log.debug("Submitted for cleanup: {}", dependentResourceNode);

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/workflow/WorkflowReconcileExecutor.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import org.slf4j.LoggerFactory;
1212

1313
import io.fabric8.kubernetes.api.model.HasMetadata;
14+
import io.javaoperatorsdk.operator.api.config.ExecutorServiceManager;
1415
import io.javaoperatorsdk.operator.api.reconciler.Context;
1516
import io.javaoperatorsdk.operator.api.reconciler.dependent.Deleter;
1617
import io.javaoperatorsdk.operator.api.reconciler.dependent.DependentResource;
@@ -67,7 +68,7 @@ private synchronized <R> void handleReconcile(DependentResourceNode<R, P> depend
6768
if (!reconcileConditionMet) {
6869
handleReconcileConditionNotMet(dependentResourceNode);
6970
} else {
70-
Future<?> nodeFuture = workflow.getExecutorService()
71+
Future<?> nodeFuture = ExecutorServiceManager.instance().workflowExecutorService()
7172
.submit(new NodeReconcileExecutor(dependentResourceNode));
7273
markAsExecuting(dependentResourceNode, nodeFuture);
7374
log.debug("Submitted to reconcile: {}", dependentResourceNode);
@@ -85,7 +86,7 @@ private synchronized void handleDelete(DependentResourceNode dependentResourceNo
8586
return;
8687
}
8788

88-
Future<?> nodeFuture = workflow.getExecutorService()
89+
Future<?> nodeFuture = ExecutorServiceManager.instance().workflowExecutorService()
8990
.submit(new NodeDeleteExecutor(dependentResourceNode));
9091
markAsExecuting(dependentResourceNode, nodeFuture);
9192
log.debug("Submitted to delete: {}", dependentResourceNode);

0 commit comments

Comments
 (0)