Skip to content

Commit ea84665

Browse files
committed
fix: handling delete non-active dependent when parent reconcile condition false
Signed-off-by: Attila Mészáros <a_meszaros@apple.com>
1 parent 35c4e68 commit ea84665

File tree

1 file changed

+9
-2
lines changed

1 file changed

+9
-2
lines changed

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

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -238,6 +238,13 @@ private void handleReconcileOrActivationConditionNotMet(
238238
bottomNodes.forEach(this::handleDelete);
239239
}
240240

241+
private <R> void markDependentsForDelete(
242+
DependentResourceNode<R, P> dependentResourceNode, Set<DependentResourceNode> bottomNodes) {
243+
boolean activationConditionMet =
244+
isConditionMet(dependentResourceNode.getActivationCondition(), dependentResourceNode);
245+
markDependentsForDelete(dependentResourceNode, bottomNodes, activationConditionMet);
246+
}
247+
241248
private void markDependentsForDelete(
242249
DependentResourceNode<?, P> dependentResourceNode,
243250
Set<DependentResourceNode> bottomNodes,
@@ -254,15 +261,15 @@ private void markDependentsForDelete(
254261
if (dependents.isEmpty()) {
255262
bottomNodes.add(dependentResourceNode);
256263
} else {
257-
dependents.forEach(d -> markDependentsForDelete(d, bottomNodes, true));
264+
dependents.forEach(d -> markDependentsForDelete(d, bottomNodes));
258265
}
259266
} else {
260267
// this is for an edge case when there is only one resource but that is not active
261268
createOrGetResultFor(dependentResourceNode).markAsVisited();
262269
if (dependents.isEmpty()) {
263270
handleNodeExecutionFinish(dependentResourceNode);
264271
} else {
265-
dependents.forEach(d -> markDependentsForDelete(d, bottomNodes, true));
272+
dependents.forEach(d -> markDependentsForDelete(d, bottomNodes));
266273
}
267274
}
268275
}

0 commit comments

Comments
 (0)