Skip to content

Commit b6dfbfd

Browse files
authored
fix: resource cache after finalizer add (#1244)
1 parent 31628b5 commit b6dfbfd

File tree

3 files changed

+12
-16
lines changed

3 files changed

+12
-16
lines changed

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

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,9 @@ private PostExecutionControl(
2323
this.runtimeException = runtimeException;
2424
}
2525

26-
public static <R extends HasMetadata> PostExecutionControl<R> onlyFinalizerAdded() {
27-
return new PostExecutionControl<>(true, null, false, null);
26+
public static <R extends HasMetadata> PostExecutionControl<R> onlyFinalizerAdded(
27+
R updatedCustomResource) {
28+
return new PostExecutionControl<>(true, updatedCustomResource, false, null);
2829
}
2930

3031
public static <R extends HasMetadata> PostExecutionControl<R> defaultDispatch() {
@@ -46,18 +47,10 @@ public static <R extends HasMetadata> PostExecutionControl<R> exceptionDuringExe
4647
return new PostExecutionControl<>(false, null, false, exception);
4748
}
4849

49-
public boolean isOnlyFinalizerHandled() {
50-
return onlyFinalizerHandled;
51-
}
52-
5350
public Optional<R> getUpdatedCustomResource() {
5451
return Optional.ofNullable(updatedCustomResource);
5552
}
5653

57-
public boolean customResourceUpdatedDuringExecution() {
58-
return updatedCustomResource != null;
59-
}
60-
6154
public boolean exceptionDuringExecution() {
6255
return runtimeException != null;
6356
}

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -98,8 +98,8 @@ private PostExecutionControl<R> handleReconcile(
9898
* finalizer add. This will make sure that the resources are not created before there is a
9999
* finalizer.
100100
*/
101-
updateCustomResourceWithFinalizer(originalResource);
102-
return PostExecutionControl.onlyFinalizerAdded();
101+
var updatedResource = updateCustomResourceWithFinalizer(originalResource);
102+
return PostExecutionControl.onlyFinalizerAdded(updatedResource);
103103
} else {
104104
var resourceForExecution =
105105
cloneResource(originalResource);
@@ -295,11 +295,11 @@ private PostExecutionControl<R> handleCleanup(R resource, Context<R> context) {
295295
return postExecutionControl;
296296
}
297297

298-
private void updateCustomResourceWithFinalizer(R resource) {
298+
private R updateCustomResourceWithFinalizer(R resource) {
299299
log.debug(
300300
"Adding finalizer for resource: {} version: {}", getUID(resource), getVersion(resource));
301301
resource.addFinalizer(configuration().getFinalizerName());
302-
customResourceFacade.replaceResourceWithLock(resource);
302+
return customResourceFacade.replaceResourceWithLock(resource);
303303
}
304304

305305
private R updateCustomResource(R resource) {

operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/ReconciliationDispatcherTest.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -261,13 +261,16 @@ void doesNotUpdateTheResourceIfNoUpdateUpdateControlIfFinalizerSet() {
261261
@Test
262262
void addsFinalizerIfNotMarkedForDeletionAndEmptyCustomResourceReturned() {
263263
removeFinalizers(testCustomResource);
264-
265264
reconciler.reconcile = (r, c) -> UpdateControl.noUpdate();
265+
when(customResourceFacade.replaceResourceWithLock(any())).thenReturn(testCustomResource);
266266

267-
reconciliationDispatcher.handleExecution(executionScopeWithCREvent(testCustomResource));
267+
var postExecControl =
268+
reconciliationDispatcher.handleExecution(executionScopeWithCREvent(testCustomResource));
268269

269270
assertEquals(1, testCustomResource.getMetadata().getFinalizers().size());
270271
verify(customResourceFacade, times(1)).replaceResourceWithLock(any());
272+
assertThat(postExecControl.updateIsStatusPatch()).isFalse();
273+
assertThat(postExecControl.getUpdatedCustomResource()).isPresent();
271274
}
272275

273276
@Test

0 commit comments

Comments
 (0)