Skip to content

Commit 5667085

Browse files
committed
wip
Signed-off-by: Attila Mészáros <[email protected]>
1 parent baab53b commit 5667085

File tree

4 files changed

+28
-36
lines changed

4 files changed

+28
-36
lines changed

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/controller/ControllerEventSource.java

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,11 @@ public synchronized void start() {
8282
}
8383

8484
public void eventReceived(
85-
ResourceAction action, T resource, T oldResource, Boolean deletedFinalStateUnknown) {
85+
ResourceAction action,
86+
T resource,
87+
T oldResource,
88+
Boolean deletedFinalStateUnknown,
89+
boolean filterEvent) {
8690
try {
8791
if (log.isDebugEnabled()) {
8892
log.debug(
@@ -95,7 +99,7 @@ public void eventReceived(
9599
}
96100
MDCUtils.addResourceInfo(resource);
97101
controller.getEventSourceManager().broadcastOnResourceEvent(action, resource, oldResource);
98-
if (isAcceptedByFilters(action, resource, oldResource)) {
102+
if (isAcceptedByFilters(action, resource, oldResource) && !filterEvent) {
99103
if (deletedFinalStateUnknown != null) {
100104
getEventHandler()
101105
.handleEvent(
@@ -132,20 +136,21 @@ private boolean isAcceptedByFilters(ResourceAction action, T resource, T oldReso
132136

133137
@Override
134138
public void onAdd(T resource) {
135-
super.onAdd(resource);
136-
eventReceived(ResourceAction.ADDED, resource, null, null);
139+
var knownResourceVersion = temporaryResourceCache.onAddOrUpdateEvent(resource);
140+
eventReceived(ResourceAction.ADDED, resource, null, null, knownResourceVersion);
137141
}
138142

139143
@Override
140144
public void onUpdate(T oldCustomResource, T newCustomResource) {
141-
super.onUpdate(oldCustomResource, newCustomResource);
142-
eventReceived(ResourceAction.UPDATED, newCustomResource, oldCustomResource, null);
145+
var knownResourceVersion = temporaryResourceCache.onAddOrUpdateEvent(newCustomResource);
146+
eventReceived(
147+
ResourceAction.UPDATED, newCustomResource, oldCustomResource, null, knownResourceVersion);
143148
}
144149

145150
@Override
146151
public void onDelete(T resource, boolean deletedFinalStateUnknown) {
147152
super.onDelete(resource, deletedFinalStateUnknown);
148-
eventReceived(ResourceAction.DELETED, resource, null, deletedFinalStateUnknown);
153+
eventReceived(ResourceAction.DELETED, resource, null, deletedFinalStateUnknown, false);
149154
}
150155

151156
@Override

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/informer/ManagedInformerEventSource.java

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -72,16 +72,6 @@ protected ManagedInformerEventSource(
7272
this.configuration = configuration;
7373
}
7474

75-
@Override
76-
public void onAdd(R resource) {
77-
temporaryResourceCache.onAddOrUpdateEvent(resource);
78-
}
79-
80-
@Override
81-
public void onUpdate(R oldObj, R newObj) {
82-
temporaryResourceCache.onAddOrUpdateEvent(newObj);
83-
}
84-
8575
@Override
8676
public void onDelete(R obj, boolean deletedFinalStateUnknown) {
8777
temporaryResourceCache.onDeleteEvent(obj, deletedFinalStateUnknown);

operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/source/controller/ControllerEventSourceTest.java

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -68,35 +68,35 @@ void skipsEventHandlingIfGenerationNotIncreased() {
6868
TestCustomResource oldCustomResource = TestUtils.testCustomResource();
6969
oldCustomResource.getMetadata().setFinalizers(List.of(FINALIZER));
7070

71-
source.eventReceived(ResourceAction.UPDATED, customResource, oldCustomResource, null);
71+
source.eventReceived(ResourceAction.UPDATED, customResource, oldCustomResource, null, false);
7272
verify(eventHandler, times(1)).handleEvent(any());
7373

74-
source.eventReceived(ResourceAction.UPDATED, customResource, customResource, null);
74+
source.eventReceived(ResourceAction.UPDATED, customResource, customResource, null, false);
7575
verify(eventHandler, times(1)).handleEvent(any());
7676
}
7777

7878
@Test
7979
void dontSkipEventHandlingIfMarkedForDeletion() {
8080
TestCustomResource customResource1 = TestUtils.testCustomResource();
8181

82-
source.eventReceived(ResourceAction.UPDATED, customResource1, customResource1, null);
82+
source.eventReceived(ResourceAction.UPDATED, customResource1, customResource1, null, false);
8383
verify(eventHandler, times(1)).handleEvent(any());
8484

8585
// mark for deletion
8686
customResource1.getMetadata().setDeletionTimestamp(LocalDateTime.now().toString());
87-
source.eventReceived(ResourceAction.UPDATED, customResource1, customResource1, null);
87+
source.eventReceived(ResourceAction.UPDATED, customResource1, customResource1, null, false);
8888
verify(eventHandler, times(2)).handleEvent(any());
8989
}
9090

9191
@Test
9292
void normalExecutionIfGenerationChanges() {
9393
TestCustomResource customResource1 = TestUtils.testCustomResource();
9494

95-
source.eventReceived(ResourceAction.UPDATED, customResource1, customResource1, null);
95+
source.eventReceived(ResourceAction.UPDATED, customResource1, customResource1, null, false);
9696
verify(eventHandler, times(1)).handleEvent(any());
9797

9898
customResource1.getMetadata().setGeneration(2L);
99-
source.eventReceived(ResourceAction.UPDATED, customResource1, customResource1, null);
99+
source.eventReceived(ResourceAction.UPDATED, customResource1, customResource1, null, false);
100100
verify(eventHandler, times(2)).handleEvent(any());
101101
}
102102

@@ -107,18 +107,18 @@ void handlesAllEventIfNotGenerationAware() {
107107

108108
TestCustomResource customResource1 = TestUtils.testCustomResource();
109109

110-
source.eventReceived(ResourceAction.UPDATED, customResource1, customResource1, null);
110+
source.eventReceived(ResourceAction.UPDATED, customResource1, customResource1, null, false);
111111
verify(eventHandler, times(1)).handleEvent(any());
112112

113-
source.eventReceived(ResourceAction.UPDATED, customResource1, customResource1, null);
113+
source.eventReceived(ResourceAction.UPDATED, customResource1, customResource1, null, false);
114114
verify(eventHandler, times(2)).handleEvent(any());
115115
}
116116

117117
@Test
118118
void eventWithNoGenerationProcessedIfNoFinalizer() {
119119
TestCustomResource customResource1 = TestUtils.testCustomResource();
120120

121-
source.eventReceived(ResourceAction.UPDATED, customResource1, customResource1, null);
121+
source.eventReceived(ResourceAction.UPDATED, customResource1, customResource1, null, false);
122122

123123
verify(eventHandler, times(1)).handleEvent(any());
124124
}
@@ -127,7 +127,7 @@ void eventWithNoGenerationProcessedIfNoFinalizer() {
127127
void callsBroadcastsOnResourceEvents() {
128128
TestCustomResource customResource1 = TestUtils.testCustomResource();
129129

130-
source.eventReceived(ResourceAction.UPDATED, customResource1, customResource1, null);
130+
source.eventReceived(ResourceAction.UPDATED, customResource1, customResource1, null, false);
131131

132132
verify(testController.getEventSourceManager(), times(1))
133133
.broadcastOnResourceEvent(
@@ -143,8 +143,8 @@ void filtersOutEventsOnAddAndUpdate() {
143143
source = new ControllerEventSource<>(new TestController(onAddFilter, onUpdatePredicate, null));
144144
setUpSource(source, true, controllerConfig);
145145

146-
source.eventReceived(ResourceAction.ADDED, cr, null, null);
147-
source.eventReceived(ResourceAction.UPDATED, cr, cr, null);
146+
source.eventReceived(ResourceAction.ADDED, cr, null, null, false);
147+
source.eventReceived(ResourceAction.UPDATED, cr, cr, null, false);
148148

149149
verify(eventHandler, never()).handleEvent(any());
150150
}
@@ -156,9 +156,9 @@ void genericFilterFiltersOutAddUpdateAndDeleteEvents() {
156156
source = new ControllerEventSource<>(new TestController(null, null, res -> false));
157157
setUpSource(source, true, controllerConfig);
158158

159-
source.eventReceived(ResourceAction.ADDED, cr, null, null);
160-
source.eventReceived(ResourceAction.UPDATED, cr, cr, null);
161-
source.eventReceived(ResourceAction.DELETED, cr, cr, true);
159+
source.eventReceived(ResourceAction.ADDED, cr, null, null, false);
160+
source.eventReceived(ResourceAction.UPDATED, cr, cr, null, false);
161+
source.eventReceived(ResourceAction.DELETED, cr, cr, true, false);
162162

163163
verify(eventHandler, never()).handleEvent(any());
164164
}

operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/filterpatchevent/FilterPatchEventIT.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,17 +56,14 @@ void patchEventFilteredWhenFlagIsTrue() {
5656

5757
// Wait for the reconciliation to complete and the resource to be updated
5858
await()
59-
.atMost(Duration.ofSeconds(5))
59+
.pollDelay(Duration.ofMillis(POLL_DELAY))
6060
.untilAsserted(
6161
() -> {
6262
var updated = extension.get(FilterPatchEventTestCustomResource.class, NAME);
6363
assertThat(updated.getStatus()).isNotNull();
6464
assertThat(updated.getStatus().getValue()).isEqualTo(UPDATED);
6565
});
6666

67-
// Give some time for any potential additional reconciliations to occur
68-
await().pollDelay(Duration.ofMillis(POLL_DELAY)).untilAsserted(() -> assertThat(true).isTrue());
69-
7067
// With filterPatchEvent=true, reconciliation should only run once
7168
// (triggered by the initial create, but not by the patch operation)
7269
int executions = reconciler.getNumberOfExecutions();

0 commit comments

Comments
 (0)