1
1
package io .javaoperatorsdk .operator .processing .dependent .workflow ;
2
2
3
+ import java .util .ArrayList ;
3
4
import java .util .List ;
4
5
5
6
import org .slf4j .Logger ;
@@ -34,13 +35,30 @@ protected Logger logger() {
34
35
35
36
@ SuppressWarnings ({"rawtypes" , "unchecked" })
36
37
private synchronized void handleCleanup (DependentResourceNode dependentResourceNode ) {
37
- log .debug ("Submitting for cleanup: {} primaryID: {}" , dependentResourceNode , primaryID );
38
-
39
- if (alreadyVisited (dependentResourceNode )
40
- || isExecutingNow (dependentResourceNode )
41
- || !allDependentsCleaned (dependentResourceNode )
42
- || hasErroredDependent (dependentResourceNode )) {
43
- log .debug ("Skipping submit of: {} primaryID: {}" , dependentResourceNode , primaryID );
38
+ log .debug ("Considering for cleanup: {} primaryID: {}" , dependentResourceNode , primaryID );
39
+
40
+ final var alreadyVisited = alreadyVisited (dependentResourceNode );
41
+ final var executingNow = isExecutingNow (dependentResourceNode );
42
+ final var waitingOnDependents = !allDependentsCleaned (dependentResourceNode );
43
+ final var hasErroredDependent = hasErroredDependent (dependentResourceNode );
44
+ if (waitingOnDependents || alreadyVisited || executingNow || hasErroredDependent ) {
45
+ if (log .isDebugEnabled ()) {
46
+ final var causes = new ArrayList <String >();
47
+ if (alreadyVisited ) {
48
+ causes .add ("already visited" );
49
+ }
50
+ if (executingNow ) {
51
+ causes .add ("executing now" );
52
+ }
53
+ if (waitingOnDependents ) {
54
+ causes .add ("waiting on dependents" );
55
+ }
56
+ if (hasErroredDependent ) {
57
+ causes .add ("errored dependent" );
58
+ }
59
+ log .debug ("Skipping: {} primaryID: {} causes: {}" , dependentResourceNode ,
60
+ primaryID , String .join (", " , causes ));
61
+ }
44
62
return ;
45
63
}
46
64
@@ -73,8 +91,9 @@ protected void doRun(DependentResourceNode<R, P> dependentResourceNode) {
73
91
isConditionMet (dependentResourceNode .getDeletePostcondition (), dependentResourceNode );
74
92
}
75
93
94
+ createOrGetResultFor (dependentResourceNode ).markAsVisited ();
95
+
76
96
if (deletePostConditionMet ) {
77
- createOrGetResultFor (dependentResourceNode ).markAsVisited ();
78
97
handleDependentCleaned (dependentResourceNode );
79
98
}
80
99
}
@@ -97,7 +116,7 @@ private boolean allDependentsCleaned(DependentResourceNode dependentResourceNode
97
116
List <DependentResourceNode > parents = dependentResourceNode .getParents ();
98
117
return parents .isEmpty ()
99
118
|| parents .stream ()
100
- .allMatch (d -> alreadyVisited (d ) && postDeleteConditionNotMet (d ));
119
+ .allMatch (d -> alreadyVisited (d ) && ! postDeleteConditionNotMet (d ));
101
120
}
102
121
103
122
@ SuppressWarnings ("unchecked" )
0 commit comments