Skip to content

Commit 7a8d78f

Browse files
committed
Changes to processAllEventInReconciler
Signed-off-by: Attila Mészáros <[email protected]>
1 parent e9bde03 commit 7a8d78f

File tree

20 files changed

+127
-312
lines changed

20 files changed

+127
-312
lines changed

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/BaseConfigurationService.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -304,7 +304,8 @@ private <P extends HasMetadata> ResolvedControllerConfiguration<P> controllerCon
304304
final var dependentFieldManager =
305305
fieldManager.equals(CONTROLLER_NAME_AS_FIELD_MANAGER) ? name : fieldManager;
306306

307-
var controllerMode = annotation == null ? ControllerMode.DEFAULT : annotation.mode();
307+
var propagateAllEventToReconciler =
308+
annotation != null && annotation.propagateAllEventToReconciler();
308309

309310
InformerConfiguration<P> informerConfig =
310311
InformerConfiguration.builder(resourceClass)
@@ -326,7 +327,7 @@ private <P extends HasMetadata> ResolvedControllerConfiguration<P> controllerCon
326327
dependentFieldManager,
327328
this,
328329
informerConfig,
329-
controllerMode);
330+
propagateAllEventToReconciler);
330331
}
331332

332333
/**

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ControllerConfiguration.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -93,11 +93,7 @@ default String fieldManager() {
9393

9494
<C> C getConfigurationFor(DependentResourceSpec<?, P, C> spec);
9595

96-
default ControllerMode mode() {
97-
return ControllerMode.DEFAULT;
98-
}
99-
100-
default boolean isAllEventReconcileMode() {
101-
return mode() == ControllerMode.RECONCILE_ALL_EVENT;
96+
default boolean propagateAllEventToReconciler() {
97+
return false;
10298
}
10399
}

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ControllerConfigurationOverrider.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public class ControllerConfigurationOverrider<R extends HasMetadata> {
3030
private Duration reconciliationMaxInterval;
3131
private Map<DependentResourceSpec, Object> configurations;
3232
private final InformerConfiguration<R>.Builder config;
33-
private ControllerMode mode;
33+
private boolean propagateAllEventToReconciler;
3434

3535
private ControllerConfigurationOverrider(ControllerConfiguration<R> original) {
3636
this.finalizer = original.getFinalizerName();
@@ -43,7 +43,7 @@ private ControllerConfigurationOverrider(ControllerConfiguration<R> original) {
4343
this.rateLimiter = original.getRateLimiter();
4444
this.name = original.getName();
4545
this.fieldManager = original.fieldManager();
46-
this.mode = original.mode();
46+
this.propagateAllEventToReconciler = original.propagateAllEventToReconciler();
4747
}
4848

4949
public ControllerConfigurationOverrider<R> withFinalizer(String finalizer) {
@@ -156,8 +156,9 @@ public ControllerConfigurationOverrider<R> withFieldManager(String dependentFiel
156156
return this;
157157
}
158158

159-
public ControllerConfigurationOverrider<R> withMode(ControllerMode controllerMode) {
160-
this.mode = controllerMode;
159+
public ControllerConfigurationOverrider<R> withPropagateAllEventToReconciler(
160+
boolean propagateAllEventToReconciler) {
161+
this.propagateAllEventToReconciler = propagateAllEventToReconciler;
161162
return this;
162163
}
163164

@@ -205,7 +206,7 @@ public ControllerConfiguration<R> build() {
205206
fieldManager,
206207
original.getConfigurationService(),
207208
config.buildForController(),
208-
mode,
209+
propagateAllEventToReconciler,
209210
original.getWorkflowSpec().orElse(null));
210211
}
211212

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ControllerMode.java

Lines changed: 0 additions & 6 deletions
This file was deleted.

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ResolvedControllerConfiguration.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ public class ResolvedControllerConfiguration<P extends HasMetadata>
2929
private final Map<DependentResourceSpec, Object> configurations;
3030
private final ConfigurationService configurationService;
3131
private final String fieldManager;
32+
private final boolean propagateAllEventToReconciler;
3233
private WorkflowSpec workflowSpec;
33-
private ControllerMode controllerMode;
3434

3535
public ResolvedControllerConfiguration(ControllerConfiguration<P> other) {
3636
this(
@@ -45,7 +45,7 @@ public ResolvedControllerConfiguration(ControllerConfiguration<P> other) {
4545
other.fieldManager(),
4646
other.getConfigurationService(),
4747
other.getInformerConfig(),
48-
other.mode(),
48+
other.propagateAllEventToReconciler(),
4949
other.getWorkflowSpec().orElse(null));
5050
}
5151

@@ -61,7 +61,7 @@ public ResolvedControllerConfiguration(
6161
String fieldManager,
6262
ConfigurationService configurationService,
6363
InformerConfiguration<P> informerConfig,
64-
ControllerMode controllerMode,
64+
boolean propagateAllEventToReconciler,
6565
WorkflowSpec workflowSpec) {
6666
this(
6767
name,
@@ -75,7 +75,7 @@ public ResolvedControllerConfiguration(
7575
fieldManager,
7676
configurationService,
7777
informerConfig,
78-
controllerMode);
78+
propagateAllEventToReconciler);
7979
setWorkflowSpec(workflowSpec);
8080
}
8181

@@ -91,7 +91,7 @@ protected ResolvedControllerConfiguration(
9191
String fieldManager,
9292
ConfigurationService configurationService,
9393
InformerConfiguration<P> informerConfig,
94-
ControllerMode controllerMode) {
94+
boolean propagateAllEventToReconciler) {
9595
this.informerConfig = informerConfig;
9696
this.configurationService = configurationService;
9797
this.name = ControllerConfiguration.ensureValidName(name, associatedReconcilerClassName);
@@ -104,7 +104,7 @@ protected ResolvedControllerConfiguration(
104104
this.finalizer =
105105
ControllerConfiguration.ensureValidFinalizerName(finalizer, getResourceTypeName());
106106
this.fieldManager = fieldManager;
107-
this.controllerMode = controllerMode;
107+
this.propagateAllEventToReconciler = propagateAllEventToReconciler;
108108
}
109109

110110
protected ResolvedControllerConfiguration(
@@ -124,7 +124,7 @@ protected ResolvedControllerConfiguration(
124124
null,
125125
configurationService,
126126
InformerConfiguration.builder(resourceClass).buildForController(),
127-
null);
127+
false);
128128
}
129129

130130
@Override
@@ -216,7 +216,7 @@ public String fieldManager() {
216216
}
217217

218218
@Override
219-
public ControllerMode mode() {
220-
return controllerMode;
219+
public boolean propagateAllEventToReconciler() {
220+
return ControllerConfiguration.super.propagateAllEventToReconciler();
221221
}
222222
}

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/ControllerConfiguration.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
import java.lang.annotation.RetentionPolicy;
77
import java.lang.annotation.Target;
88

9-
import io.javaoperatorsdk.operator.api.config.ControllerMode;
109
import io.javaoperatorsdk.operator.api.config.informer.Informer;
1110
import io.javaoperatorsdk.operator.processing.event.rate.LinearRateLimiter;
1211
import io.javaoperatorsdk.operator.processing.event.rate.RateLimiter;
@@ -79,5 +78,5 @@ MaxReconciliationInterval maxReconciliationInterval() default
7978
*/
8079
String fieldManager() default CONTROLLER_NAME_AS_FIELD_MANAGER;
8180

82-
ControllerMode mode() default ControllerMode.DEFAULT;
81+
boolean propagateAllEventToReconciler() default false;
8382
}

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

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ public synchronized void handleEvent(Event event) {
131131
}
132132

133133
private void handleMarkedEventForResource(ResourceState state) {
134-
if (state.deleteEventPresent() && !isAllEventMode()) {
134+
if (state.deleteEventPresent() && !propagateAllEvent()) {
135135
cleanupForDeletedEvent(state.getId());
136136
} else if (!state.processedMarkForDeletionPresent()) {
137137
submitReconciliationExecution(state);
@@ -145,7 +145,7 @@ private void submitReconciliationExecution(ResourceState state) {
145145
Optional<P> maybeLatest = cache.get(resourceID);
146146
maybeLatest.ifPresent(MDCUtils::addResourceInfo);
147147
if (!controllerUnderExecution
148-
&& (maybeLatest.isPresent() || (isAllEventMode() && state.deleteEventPresent()))) {
148+
&& (maybeLatest.isPresent() || (propagateAllEvent() && state.deleteEventPresent()))) {
149149
var rateLimit = state.getRateLimit();
150150
if (rateLimit == null) {
151151
rateLimit = rateLimiter.initState();
@@ -159,7 +159,7 @@ private void submitReconciliationExecution(ResourceState state) {
159159
state.setUnderProcessing(true);
160160
final var latest = maybeLatest.orElseGet(() -> getResourceFromState(state));
161161
ExecutionScope<P> executionScope = new ExecutionScope<>(state.getRetry());
162-
state.unMarkEventReceived(isAllEventMode());
162+
state.unMarkEventReceived(propagateAllEvent());
163163
metrics.reconcileCustomResource(latest, state.getRetry(), metricsMetadata);
164164
log.debug("Executing events for custom resource. Scope: {}", executionScope);
165165
executor.execute(new ReconcilerExecutor(resourceID, executionScope));
@@ -186,7 +186,7 @@ private void submitReconciliationExecution(ResourceState state) {
186186

187187
@SuppressWarnings("unchecked")
188188
private P getResourceFromState(ResourceState state) {
189-
if (isAllEventMode()) {
189+
if (propagateAllEvent()) {
190190
log.debug("Getting resource from state for {}", state.getId());
191191
return (P) state.getLastKnownResource();
192192
} else {
@@ -217,11 +217,11 @@ private void handleEventMarking(Event event, ResourceState state) {
217217
// removed, but also the informers websocket is disconnected and later reconnected. So
218218
// meanwhile the resource could be deleted and recreated. In this case we just mark a new
219219
// event as below.
220-
state.markEventReceived(isAllEventMode());
220+
state.markEventReceived(propagateAllEvent());
221221
}
222222
} else if (!state.deleteEventPresent() && !state.processedMarkForDeletionPresent()) {
223-
state.markEventReceived(isAllEventMode());
224-
} else if (isAllEventMode() && state.deleteEventPresent()) {
223+
state.markEventReceived(propagateAllEvent());
224+
} else if (propagateAllEvent() && state.deleteEventPresent()) {
225225
state.markAdditionalEventAfterDeleteEvent();
226226
} else if (log.isDebugEnabled()) {
227227
log.debug(
@@ -264,21 +264,21 @@ synchronized void eventProcessingFinished(
264264
// Either way we don't want to retry.
265265
if (isRetryConfigured()
266266
&& postExecutionControl.exceptionDuringExecution()
267-
&& (!state.deleteEventPresent() || isAllEventMode())) {
267+
&& (!state.deleteEventPresent() || propagateAllEvent())) {
268268
handleRetryOnException(
269269
executionScope, postExecutionControl.getRuntimeException().orElseThrow());
270270
return;
271271
}
272272
cleanupOnSuccessfulExecution(executionScope);
273273
metrics.finishedReconciliation(executionScope.getResource(), metricsMetadata);
274-
if ((isAllEventMode() && executionScope.isDeleteEvent())
275-
|| (!isAllEventMode() && state.deleteEventPresent())) {
274+
if ((propagateAllEvent() && executionScope.isDeleteEvent())
275+
|| (!propagateAllEvent() && state.deleteEventPresent())) {
276276
cleanupForDeletedEvent(executionScope.getResourceID());
277277
} else if (postExecutionControl.isFinalizerRemoved()) {
278278
state.markProcessedMarkForDeletion();
279279
metrics.cleanupDoneFor(resourceID, metricsMetadata);
280280
} else {
281-
if (state.eventPresent() || (isAllEventMode() && state.deleteEventPresent())) {
281+
if (state.eventPresent() || (propagateAllEvent() && state.deleteEventPresent())) {
282282
submitReconciliationExecution(state);
283283
} else {
284284
reScheduleExecutionIfInstructed(postExecutionControl, executionScope.getResource());
@@ -343,8 +343,8 @@ private void handleRetryOnException(ExecutionScope<P> executionScope, Exception
343343
var resourceID = state.getId();
344344
boolean eventPresent =
345345
state.eventPresent()
346-
|| (isAllEventMode() && state.isAdditionalEventPresentAfterDeleteEvent());
347-
state.markEventReceived(isAllEventMode());
346+
|| (propagateAllEvent() && state.isAdditionalEventPresentAfterDeleteEvent());
347+
state.markEventReceived(propagateAllEvent());
348348

349349
retryAwareErrorLogging(state.getRetry(), eventPresent, exception, executionScope);
350350
if (eventPresent) {
@@ -488,7 +488,7 @@ public void run() {
488488
try {
489489
var actualResource = cache.get(resourceID);
490490
if (actualResource.isEmpty()) {
491-
if (isAllEventMode()) {
491+
if (propagateAllEvent()) {
492492
log.debug(
493493
"Resource not found in the cache, checking for delete event resource: {}",
494494
resourceID);
@@ -547,7 +547,7 @@ public synchronized boolean isRunning() {
547547
}
548548

549549
// shortening
550-
private boolean isAllEventMode() {
551-
return controllerConfiguration.isAllEventReconcileMode();
550+
private boolean propagateAllEvent() {
551+
return controllerConfiguration.propagateAllEventToReconciler();
552552
}
553553
}

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

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ private PostExecutionControl<P> handleDispatch(ExecutionScope<P> executionScope)
8181
originalResource.getMetadata().getNamespace());
8282

8383
final var markedForDeletion = originalResource.isMarkedForDeletion();
84-
if (!isAllEventMode()
84+
if (!propagateAllEvent()
8585
&& markedForDeletion
8686
&& shouldNotDispatchToCleanupWhenMarkedForDeletion(originalResource)) {
8787
log.debug(
@@ -100,10 +100,7 @@ && shouldNotDispatchToCleanupWhenMarkedForDeletion(originalResource)) {
100100
executionScope.isDeleteFinalStateUnknown());
101101

102102
// checking the cleaner for all-event-mode
103-
if ((!isAllEventMode() && markedForDeletion)
104-
|| (isAllEventMode()
105-
&& controller.isCleaner()
106-
&& (markedForDeletion || executionScope.isDeleteEvent()))) {
103+
if (!propagateAllEvent() && markedForDeletion) {
107104
return handleCleanup(resourceForExecution, originalResource, context, executionScope);
108105
} else {
109106
return handleReconcile(executionScope, resourceForExecution, originalResource, context);
@@ -122,7 +119,7 @@ private PostExecutionControl<P> handleReconcile(
122119
P originalResource,
123120
Context<P> context)
124121
throws Exception {
125-
if (!isAllEventMode()
122+
if (!propagateAllEvent()
126123
&& controller.useFinalizer()
127124
&& !originalResource.hasFinalizer(configuration().getFinalizerName())) {
128125
/*
@@ -291,7 +288,7 @@ private PostExecutionControl<P> handleCleanup(
291288
}
292289
DeleteControl deleteControl = controller.cleanup(resourceForExecution, context);
293290
final var useFinalizer = controller.useFinalizer();
294-
if (useFinalizer && !isAllEventMode()) {
291+
if (useFinalizer && !propagateAllEvent()) {
295292
// note that we don't reschedule here even if instructed. Removing finalizer means that
296293
// cleanup is finished, nothing left to be done
297294
final var finalizerName = configuration().getFinalizerName();
@@ -538,7 +535,7 @@ private Resource<R> resource(R resource) {
538535
}
539536
}
540537

541-
private boolean isAllEventMode() {
542-
return configuration().isAllEventReconcileMode();
538+
private boolean propagateAllEvent() {
539+
return configuration().propagateAllEventToReconciler();
543540
}
544541
}

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

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -501,12 +501,10 @@ void allEventModeRetriesDeleteEventError() {}
501501
void processesAdditionalEventWhileInDeleteModeRetry() {}
502502

503503
@Test
504-
void allEventModeIfNoRetryInCleanupOnError() {
505-
}
504+
void allEventModeIfNoRetryInCleanupOnError() {}
506505

507506
@Test
508-
void onAllEventModeIfRetryExhaustedCleansUpState() {
509-
}
507+
void onAllEventModeIfRetryExhaustedCleansUpState() {}
510508

511509
@Test
512510
void passesResourceFromStateToDispatcher() {

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

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -706,12 +706,6 @@ void reconcilerContextUsesTheSameInstanceOfResourceAsParam() {
706706
@Test
707707
void allEventModeNoReSchedulesAllowedForDeleteEvent() {}
708708

709-
@Test
710-
void allEventModeCallsCleanupOnDeleteEvent() {}
711-
712-
@Test
713-
void allEventModeCallsCleanupOnMarkedForDeletion() {}
714-
715709
private ObservedGenCustomResource createObservedGenCustomResource() {
716710
ObservedGenCustomResource observedGenCustomResource = new ObservedGenCustomResource();
717711
observedGenCustomResource.setMetadata(new ObjectMeta());

0 commit comments

Comments
 (0)