Skip to content

Commit f98cb27

Browse files
committed
fix for retry
1 parent b811827 commit f98cb27

File tree

1 file changed

+10
-5
lines changed

1 file changed

+10
-5
lines changed

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/ReconciliationDispatcher.java

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package io.javaoperatorsdk.operator.processing.event;
22

3+
import java.util.function.Function;
4+
35
import org.slf4j.Logger;
46
import org.slf4j.LoggerFactory;
57

@@ -291,8 +293,7 @@ private PostExecutionControl<P> handleCleanup(P originalResource, P resource,
291293
// cleanup is finished, nothing left to done
292294
final var finalizerName = configuration().getFinalizerName();
293295
if (deleteControl.isRemoveFinalizer() && resource.hasFinalizer(finalizerName)) {
294-
resource.removeFinalizer(finalizerName);
295-
P customResource = conflictRetryingUpdate(resource);
296+
P customResource = conflictRetryingUpdate(resource, r -> r.removeFinalizer(finalizerName));
296297
return PostExecutionControl.customResourceFinalizerRemoved(customResource);
297298
}
298299
}
@@ -311,8 +312,8 @@ private P updateCustomResourceWithFinalizer(P resourceForExecution, P originalRe
311312
log.debug(
312313
"Adding finalizer for resource: {} version: {}", getUID(originalResource),
313314
getVersion(originalResource));
314-
resourceForExecution.addFinalizer(configuration().getFinalizerName());
315-
return conflictRetryingUpdate(resourceForExecution);
315+
return conflictRetryingUpdate(resourceForExecution,
316+
r -> r.addFinalizer(configuration().getFinalizerName()));
316317
}
317318

318319
private P updateCustomResource(P resource) {
@@ -325,13 +326,17 @@ ControllerConfiguration<P> configuration() {
325326
return controller.getConfiguration();
326327
}
327328

328-
public P conflictRetryingUpdate(P resource) {
329+
public P conflictRetryingUpdate(P resource, Function<P, Boolean> modificationFunction) {
329330
if (log.isDebugEnabled()) {
330331
log.debug("Removing finalizer on resource: {}", ResourceID.fromResource(resource));
331332
}
332333
int retryIndex = 0;
333334
while (true) {
334335
try {
336+
var modified = modificationFunction.apply(resource);
337+
if (Boolean.FALSE.equals(modified)) {
338+
return resource;
339+
}
335340
return customResourceFacade.updateResource(resource);
336341
} catch (KubernetesClientException e) {
337342
log.trace("Exception during patch for resource: {}", resource);

0 commit comments

Comments
 (0)