Skip to content

Commit 723e03c

Browse files
committed
small fix, test repeats
Signed-off-by: Attila Mészáros <a_meszaros@apple.com>
1 parent 41f6fcb commit 723e03c

3 files changed

Lines changed: 29 additions & 25 deletions

File tree

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

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -100,18 +100,20 @@ public R eventFilteringUpdateAndCacheResource(R resourceToUpdate, UnaryOperator<
100100
try {
101101
temporaryResourceCache.startEventFilteringModify(id);
102102
updatedResource = updateMethod.apply(resourceToUpdate);
103-
log.debug("Resource update successful");
104103
handleRecentResourceUpdate(id, updatedResource, resourceToUpdate);
104+
log.debug("Caching resource update successful");
105105
return updatedResource;
106106
} finally {
107107
var res = temporaryResourceCache.doneEventFilterModify(id);
108108
res.ifPresentOrElse(
109-
r ->
110-
handleEvent(
111-
r.getAction(),
112-
(R) r.getResource().orElseThrow(),
113-
(R) r.getPreviousResource().orElse(null),
114-
r.getLastStateUnknow()),
109+
r -> {
110+
log.debug("Propagating not own event");
111+
handleEvent(
112+
r.getAction(),
113+
(R) r.getResource().orElseThrow(),
114+
(R) r.getPreviousResource().orElse(null),
115+
r.getLastStateUnknow());
116+
},
115117
() -> log.debug("No new event present after the filtering update"));
116118
}
117119
}

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,7 @@ private synchronized EventHandling onEvent(
143143
new GenericResourceEvent(action, resource, prevResourceVersion, unknownState));
144144
return EventHandling.IGNORE;
145145
} else {
146+
log.debug("No active recornding, event handling: {}", result);
146147
return result;
147148
}
148149
}
@@ -194,6 +195,9 @@ public synchronized void putResource(T newResource) {
194195

195196
// also make sure that we're later than the existing temporary entry
196197
var cachedResource = getResourceFromCache(resourceId).orElse(null);
198+
Optional.ofNullable(activeUpdates.get(resourceId))
199+
.ifPresent(
200+
au -> au.addToOwnResourceVersions(newResource.getMetadata().getResourceVersion()));
197201

198202
if (cachedResource == null
199203
|| ReconcilerUtilsInternal.compareResourceVersions(newResource, cachedResource) > 0) {
@@ -202,10 +206,6 @@ public synchronized void putResource(T newResource) {
202206
newResource.getMetadata().getResourceVersion(),
203207
resourceId);
204208
cache.put(resourceId, newResource);
205-
var au = activeUpdates.get(resourceId);
206-
if (au != null) {
207-
au.addToOwnResourceVersions(newResource.getMetadata().getResourceVersion());
208-
}
209209
}
210210
}
211211

operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/source/informer/InformerEventSourceTest.java

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import java.util.stream.Stream;
2626

2727
import org.junit.jupiter.api.BeforeEach;
28+
import org.junit.jupiter.api.RepeatedTest;
2829
import org.junit.jupiter.api.Test;
2930

3031
import io.fabric8.kubernetes.api.model.ObjectMeta;
@@ -72,6 +73,7 @@ class InformerEventSourceTest {
7273

7374
private static final String PREV_RESOURCE_VERSION = "0";
7475
private static final String DEFAULT_RESOURCE_VERSION = "2";
76+
public static final int REPEAT_COUNT = 10;
7577

7678
private InformerEventSource<Deployment, TestCustomResource> informerEventSource;
7779
private final KubernetesClient clientMock = MockKubernetesClient.client(Deployment.class);
@@ -214,7 +216,7 @@ void filtersOnDeleteEvents() {
214216
verify(eventHandlerMock, never()).handleEvent(any());
215217
}
216218

217-
@Test
219+
@RepeatedTest(REPEAT_COUNT)
218220
void handlesPrevResourceVersionForUpdate() {
219221
withRealTemporaryResourceCache();
220222

@@ -226,7 +228,7 @@ void handlesPrevResourceVersionForUpdate() {
226228
expectHandleAddEvent(2, 1);
227229
}
228230

229-
@Test
231+
@RepeatedTest(REPEAT_COUNT)
230232
void handlesPrevResourceVersionForUpdateInCaseOfException() {
231233
withRealTemporaryResourceCache();
232234

@@ -244,7 +246,7 @@ void handlesPrevResourceVersionForUpdateInCaseOfException() {
244246
expectHandleAddEvent(2, 1);
245247
}
246248

247-
@Test
249+
@RepeatedTest(REPEAT_COUNT)
248250
void handlesPrevResourceVersionForUpdateInCaseOfMultipleUpdates() {
249251
withRealTemporaryResourceCache();
250252

@@ -259,7 +261,7 @@ void handlesPrevResourceVersionForUpdateInCaseOfMultipleUpdates() {
259261
expectHandleAddEvent(4, 2);
260262
}
261263

262-
@Test
264+
@RepeatedTest(REPEAT_COUNT)
263265
void doesNotPropagateEventIfReceivedBeforeUpdate() {
264266
withRealTemporaryResourceCache();
265267

@@ -271,7 +273,7 @@ void doesNotPropagateEventIfReceivedBeforeUpdate() {
271273
assertNoEventProduced();
272274
}
273275

274-
@Test
276+
@RepeatedTest(REPEAT_COUNT)
275277
void filterAddEventBeforeUpdate() {
276278
withRealTemporaryResourceCache();
277279

@@ -282,7 +284,7 @@ void filterAddEventBeforeUpdate() {
282284
expectHandleAddEvent(2);
283285
}
284286

285-
@Test
287+
@RepeatedTest(REPEAT_COUNT)
286288
void multipleCachingFilteringUpdates() {
287289
withRealTemporaryResourceCache();
288290
CountDownLatch latch = sendForEventFilteringUpdate(3);
@@ -299,7 +301,7 @@ void multipleCachingFilteringUpdates() {
299301
assertNoEventProduced();
300302
}
301303

302-
@Test
304+
@RepeatedTest(REPEAT_COUNT)
303305
void multipleCachingFilteringUpdates_variant2() {
304306
withRealTemporaryResourceCache();
305307

@@ -317,7 +319,7 @@ void multipleCachingFilteringUpdates_variant2() {
317319
assertNoEventProduced();
318320
}
319321

320-
@Test
322+
@RepeatedTest(REPEAT_COUNT)
321323
void multipleCachingFilteringUpdates_variant3() {
322324
withRealTemporaryResourceCache();
323325

@@ -335,7 +337,7 @@ void multipleCachingFilteringUpdates_variant3() {
335337
assertNoEventProduced();
336338
}
337339

338-
@Test
340+
@RepeatedTest(REPEAT_COUNT)
339341
void multipleCachingFilteringUpdates_variant4() {
340342
withRealTemporaryResourceCache();
341343

@@ -353,7 +355,7 @@ void multipleCachingFilteringUpdates_variant4() {
353355
assertNoEventProduced();
354356
}
355357

356-
@Test
358+
@RepeatedTest(REPEAT_COUNT)
357359
void ghostCheckRemovesCachedResourceDuringFilteringUpdate() {
358360
var mes = mock(ManagedInformerEventSource.class);
359361
var mim = mock(InformerManager.class);
@@ -383,7 +385,7 @@ void ghostCheckRemovesCachedResourceDuringFilteringUpdate() {
383385
assertThat(temporaryResourceCache.getResourceFromCache(resourceId)).isEmpty();
384386
}
385387

386-
@Test
388+
@RepeatedTest(REPEAT_COUNT)
387389
void ghostCheckRunsConcurrentlyWithPutResource() {
388390
var mes = mock(ManagedInformerEventSource.class);
389391
var mim = mock(InformerManager.class);
@@ -414,7 +416,7 @@ void ghostCheckRunsConcurrentlyWithPutResource() {
414416
.isPresent();
415417
}
416418

417-
@Test
419+
@RepeatedTest(REPEAT_COUNT)
418420
void filteringUpdateAndGhostCheckWithNamespaceChange() {
419421
var mes = mock(ManagedInformerEventSource.class);
420422
var mim = mock(InformerManager.class);
@@ -448,7 +450,7 @@ void filteringUpdateAndGhostCheckWithNamespaceChange() {
448450
assertThat(temporaryResourceCache.getResourceFromCache(resourceId)).isEmpty();
449451
}
450452

451-
@Test
453+
@RepeatedTest(REPEAT_COUNT)
452454
void propagatesIntermediateEventForExternalUpdateDuringFiltering() {
453455
// Causal-dependency fix: another controller updated the resource between our read
454456
// and our write. The informer delivers that update during our active filter; since
@@ -474,7 +476,7 @@ void propagatesIntermediateEventForExternalUpdateDuringFiltering() {
474476
expectHandleAddEvent(3, 2);
475477
}
476478

477-
@Test
479+
@RepeatedTest(REPEAT_COUNT)
478480
void doesNotPropagateIntermediateEventForOurOwnIntermediateUpdate() {
479481
// Two consecutive own writes (rv 3 then rv 4) within an open filter window: an
480482
// event for the older own version must be deferred since it's recognized as our own.

0 commit comments

Comments
 (0)