Skip to content

Commit 9a9de22

Browse files
authored
fix: concurrency issue with workflow cleanup executor (#1495)
1 parent 3eb0aab commit 9a9de22

File tree

2 files changed

+7
-1
lines changed

2 files changed

+7
-1
lines changed

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

+5-1
Original file line numberDiff line numberDiff line change
@@ -104,16 +104,20 @@ public void run() {
104104
((Deleter<P>) dependentResourceNode.getDependentResource()).delete(primary, context);
105105
deleteCalled.add(dependentResourceNode);
106106
}
107-
alreadyVisited.add(dependentResourceNode);
108107
boolean deletePostConditionMet =
109108
deletePostCondition.map(c -> c.isMet(primary,
110109
dependentResourceNode.getDependentResource().getSecondaryResource(primary)
111110
.orElse(null),
112111
context)).orElse(true);
112+
113113
if (deletePostConditionMet) {
114+
alreadyVisited.add(dependentResourceNode);
114115
handleDependentCleaned(dependentResourceNode);
115116
} else {
117+
// updating alreadyVisited needs to be the last operation otherwise could lead to a race
118+
// condition in handleCleanup condition checks
116119
postDeleteConditionNotMet.add(dependentResourceNode);
120+
alreadyVisited.add(dependentResourceNode);
117121
}
118122
} catch (RuntimeException e) {
119123
handleExceptionInExecutor(dependentResourceNode, e);

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

+2
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,8 @@ public void run() {
217217
alreadyVisited.add(dependentResourceNode);
218218
handleDependentDeleted(dependentResourceNode);
219219
} else {
220+
// updating alreadyVisited needs to be the last operation otherwise could lead to a race
221+
// condition in handleDelete condition checks
220222
deletePostConditionNotMet.add(dependentResourceNode);
221223
alreadyVisited.add(dependentResourceNode);
222224
}

0 commit comments

Comments
 (0)