Skip to content

Commit bf51047

Browse files
committed
refactor: remove markedForDelete field
Signed-off-by: Chris Laprun <[email protected]>
1 parent 4092e96 commit bf51047

File tree

6 files changed

+41
-25
lines changed

6 files changed

+41
-25
lines changed

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

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import java.util.concurrent.ConcurrentHashMap;
66
import java.util.concurrent.ExecutorService;
77
import java.util.concurrent.Future;
8+
import java.util.function.Function;
89
import java.util.stream.Collectors;
910

1011
import org.slf4j.Logger;
@@ -72,13 +73,15 @@ protected boolean noMoreExecutionsScheduled() {
7273
}
7374

7475
protected boolean alreadyVisited(DependentResourceNode<?, P> dependentResourceNode) {
75-
final WorkflowResult.DetailBuilder<?> builder = results.get(dependentResourceNode);
76-
return builder != null && builder.isVisited();
76+
return getResultFlagFor(dependentResourceNode, WorkflowResult.DetailBuilder::isVisited);
7777
}
7878

79-
protected boolean postDeleteConditionNotMet(DependentResourceNode<?, P> dependentResourceNode) {
80-
final var builder = results.get(dependentResourceNode);
81-
return builder != null && builder.hasPostDeleteConditionNotMet();
79+
protected boolean postDeleteConditionNotMet(DependentResourceNode<?, P> drn) {
80+
return getResultFlagFor(drn, WorkflowResult.DetailBuilder::hasPostDeleteConditionNotMet);
81+
}
82+
83+
protected boolean isMarkedForDelete(DependentResourceNode<?, P> drn) {
84+
return getResultFlagFor(drn, WorkflowResult.DetailBuilder::isMarkedForDelete);
8285
}
8386

8487
protected WorkflowResult.DetailBuilder createOrGetResultFor(
@@ -87,6 +90,16 @@ protected WorkflowResult.DetailBuilder createOrGetResultFor(
8790
unused -> new WorkflowResult.DetailBuilder());
8891
}
8992

93+
protected Optional<WorkflowResult.DetailBuilder<?>> getResultFor(
94+
DependentResourceNode<?, P> dependentResourceNode) {
95+
return Optional.ofNullable(results.get(dependentResourceNode));
96+
}
97+
98+
protected boolean getResultFlagFor(DependentResourceNode<?, P> dependentResourceNode,
99+
Function<WorkflowResult.DetailBuilder<?>, Boolean> flag) {
100+
return getResultFor(dependentResourceNode).map(flag).orElse(false);
101+
}
102+
90103
protected boolean isExecutingNow(DependentResourceNode<?, P> dependentResourceNode) {
91104
return actualExecutions.containsKey(dependentResourceNode);
92105
}
@@ -103,13 +116,11 @@ protected synchronized void handleExceptionInExecutor(
103116
}
104117

105118
protected boolean isNotReady(DependentResourceNode<?, P> dependentResourceNode) {
106-
final var builder = results.get(dependentResourceNode);
107-
return builder != null && builder.isNotReady();
119+
return getResultFlagFor(dependentResourceNode, WorkflowResult.DetailBuilder::isNotReady);
108120
}
109121

110122
protected boolean isInError(DependentResourceNode<?, P> dependentResourceNode) {
111-
final var builder = results.get(dependentResourceNode);
112-
return builder != null && builder.hasError();
123+
return getResultFlagFor(dependentResourceNode, WorkflowResult.DetailBuilder::hasError);
113124
}
114125

115126
protected synchronized void handleNodeExecutionFinish(

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ protected void doRun(DependentResourceNode<R, P> dependentResourceNode) {
8484
final var dependentResource = dependentResourceNode.getDependentResource();
8585
if (dependentResource.isDeletable()) {
8686
((Deleter<P>) dependentResource).delete(primary, context);
87-
createOrGetResultFor(dependentResourceNode).withDeleted(true);
87+
createOrGetResultFor(dependentResourceNode).markAsDeleted();
8888
}
8989

9090
deletePostConditionMet =

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

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import java.util.ArrayList;
44
import java.util.HashSet;
55
import java.util.Set;
6-
import java.util.concurrent.ConcurrentHashMap;
76

87
import org.slf4j.Logger;
98
import org.slf4j.LoggerFactory;
@@ -20,12 +19,8 @@ class WorkflowReconcileExecutor<P extends HasMetadata> extends AbstractWorkflowE
2019
private static final String RECONCILE = "reconcile";
2120
private static final String DELETE = "delete";
2221

23-
private final Set<DependentResourceNode> markedForDelete;
24-
2522
public WorkflowReconcileExecutor(DefaultWorkflow<P> workflow, P primary, Context<P> context) {
2623
super(workflow, primary, context);
27-
final var size = workflow.size();
28-
markedForDelete = ConcurrentHashMap.newKeySet(size);
2924
}
3025

3126
public synchronized WorkflowReconcileResult reconcile() {
@@ -47,7 +42,7 @@ private synchronized <R> void handleReconcile(DependentResourceNode<R, P> depend
4742
final var alreadyVisited = alreadyVisited(dependentResourceNode);
4843
final var executingNow = isExecutingNow(dependentResourceNode);
4944
final var isWaitingOnParents = !allParentsReconciledAndReady(dependentResourceNode);
50-
final var isMarkedForDelete = markedForDelete.contains(dependentResourceNode);
45+
final var isMarkedForDelete = isMarkedForDelete(dependentResourceNode);
5146
final var hasErroredParent = hasErroredParent(dependentResourceNode);
5247
if (isWaitingOnParents || alreadyVisited || executingNow || isMarkedForDelete
5348
|| hasErroredParent) {
@@ -95,7 +90,7 @@ private synchronized void handleDelete(DependentResourceNode dependentResourceNo
9590

9691
final var alreadyVisited = alreadyVisited(dependentResourceNode);
9792
final var executingNow = isExecutingNow(dependentResourceNode);
98-
final var isNotMarkedForDelete = !markedForDelete.contains(dependentResourceNode);
93+
final var isNotMarkedForDelete = !isMarkedForDelete(dependentResourceNode);
9994
final var isWaitingOnDependents = !allDependentsDeletedAlready(dependentResourceNode);
10095
if (isNotMarkedForDelete || alreadyVisited || executingNow || isWaitingOnDependents) {
10196
if (log.isDebugEnabled()) {
@@ -216,7 +211,7 @@ private void markDependentsForDelete(DependentResourceNode<?, P> dependentResour
216211
// so if the activation condition was false, this node is not meant to be deleted.
217212
var dependents = dependentResourceNode.getParents();
218213
if (activationConditionMet) {
219-
markedForDelete.add(dependentResourceNode);
214+
createOrGetResultFor(dependentResourceNode).markForDelete();
220215
if (dependents.isEmpty()) {
221216
bottomNodes.add(dependentResourceNode);
222217
} else {

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
@SuppressWarnings("rawtypes")
1010
public class WorkflowReconcileResult extends WorkflowResult {
1111

12-
public WorkflowReconcileResult(Map<DependentResource, Detail<?>> results) {
12+
WorkflowReconcileResult(Map<DependentResource, Detail<?>> results) {
1313
super(results);
1414
}
1515

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

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -67,10 +67,11 @@ static class DetailBuilder<R> {
6767
private ResultCondition.Result reconcilePostconditionResult;
6868
private boolean deleted;
6969
private boolean visited;
70+
private boolean markedForDelete;
7071

7172
Detail<R> build() {
7273
return new Detail<>(error, reconcileResult, activationConditionResult,
73-
deletePostconditionResult, readyPostconditionResult, reconcilePostconditionResult, deleted, visited);
74+
deletePostconditionResult, readyPostconditionResult, reconcilePostconditionResult, deleted, visited, markedForDelete);
7475
}
7576

7677
DetailBuilder<R> withResultForCondition(DependentResourceNode.ConditionWithType conditionWithType, ResultCondition.Result conditionResult) {
@@ -94,8 +95,8 @@ DetailBuilder<R> withReconcileResult(ReconcileResult<R> reconcileResult) {
9495
return this;
9596
}
9697

97-
DetailBuilder<R> withDeleted(boolean deleted) {
98-
this.deleted = deleted;
98+
DetailBuilder<R> markAsDeleted() {
99+
this.deleted = true;
99100
return this;
100101
}
101102

@@ -119,6 +120,15 @@ DetailBuilder<R> markAsVisited() {
119120
public boolean isVisited() {
120121
return visited;
121122
}
123+
124+
public boolean isMarkedForDelete() {
125+
return markedForDelete;
126+
}
127+
128+
DetailBuilder<R> markForDelete() {
129+
markedForDelete = true;
130+
return this;
131+
}
122132
}
123133

124134

@@ -127,7 +137,7 @@ record Detail<R>(Exception error, ReconcileResult<R> reconcileResult,
127137
ResultCondition.Result deletePostconditionResult,
128138
ResultCondition.Result readyPostconditionResult,
129139
ResultCondition.Result reconcilePostconditionResult,
130-
boolean deleted, boolean visited) {
140+
boolean deleted, boolean visited, boolean markedForDelete) {
131141

132142
boolean isConditionWithTypeMet(Condition.Type conditionType) {
133143
return getResultForConditionWithType(conditionType).map(ResultCondition.Result::isSuccess).orElse(true);

operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/dependent/workflow/WorkflowResultTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@
1313
import static org.assertj.core.api.Assertions.assertThat;
1414

1515
class WorkflowResultTest {
16-
private final static WorkflowResult.Detail detail =
16+
private final static WorkflowResult.Detail<?> detail =
1717
new WorkflowResult.Detail<>(new RuntimeException(), null, null, null, null, null, false,
18-
false);
18+
false, false);
1919

2020
@Test
2121
void throwsExceptionWithoutNumberingIfAllDifferentClass() {

0 commit comments

Comments
 (0)