1
1
package io .javaoperatorsdk .operator .processing .event ;
2
2
3
+ import java .util .function .Function ;
4
+
3
5
import org .slf4j .Logger ;
4
6
import org .slf4j .LoggerFactory ;
5
7
@@ -291,8 +293,7 @@ private PostExecutionControl<P> handleCleanup(P originalResource, P resource,
291
293
// cleanup is finished, nothing left to done
292
294
final var finalizerName = configuration ().getFinalizerName ();
293
295
if (deleteControl .isRemoveFinalizer () && resource .hasFinalizer (finalizerName )) {
294
- resource .removeFinalizer (finalizerName );
295
- P customResource = conflictRetryingUpdate (resource );
296
+ P customResource = conflictRetryingUpdate (resource , r -> r .removeFinalizer (finalizerName ));
296
297
return PostExecutionControl .customResourceFinalizerRemoved (customResource );
297
298
}
298
299
}
@@ -311,8 +312,8 @@ private P updateCustomResourceWithFinalizer(P resourceForExecution, P originalRe
311
312
log .debug (
312
313
"Adding finalizer for resource: {} version: {}" , getUID (originalResource ),
313
314
getVersion (originalResource ));
314
- resourceForExecution . addFinalizer ( configuration (). getFinalizerName ());
315
- return conflictRetryingUpdate ( resourceForExecution );
315
+ return conflictRetryingUpdate ( resourceForExecution ,
316
+ r -> r . addFinalizer ( configuration (). getFinalizerName ()) );
316
317
}
317
318
318
319
private P updateCustomResource (P resource ) {
@@ -325,13 +326,17 @@ ControllerConfiguration<P> configuration() {
325
326
return controller .getConfiguration ();
326
327
}
327
328
328
- public P conflictRetryingUpdate (P resource ) {
329
+ public P conflictRetryingUpdate (P resource , Function < P , Boolean > modificationFunction ) {
329
330
if (log .isDebugEnabled ()) {
330
331
log .debug ("Removing finalizer on resource: {}" , ResourceID .fromResource (resource ));
331
332
}
332
333
int retryIndex = 0 ;
333
334
while (true ) {
334
335
try {
336
+ var modified = modificationFunction .apply (resource );
337
+ if (Boolean .FALSE .equals (modified )) {
338
+ return resource ;
339
+ }
335
340
return customResourceFacade .updateResource (resource );
336
341
} catch (KubernetesClientException e ) {
337
342
log .trace ("Exception during patch for resource: {}" , resource );
0 commit comments