From 97f1fa00a78273d0719aa67989ff6f5a66a57255 Mon Sep 17 00:00:00 2001 From: Steve Hawkins Date: Thu, 9 Oct 2025 16:40:39 -0400 Subject: [PATCH] refactor: remove the use of knownResourceVersions closes: #2984 Signed-off-by: Steve Hawkins --- .../source/informer/InformerEventSource.java | 6 ++---- .../source/informer/TemporaryResourceCache.java | 17 +---------------- .../TemporaryPrimaryResourceCacheTest.java | 3 --- 3 files changed, 3 insertions(+), 23 deletions(-) diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/informer/InformerEventSource.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/informer/InformerEventSource.java index c029a54170..12c2723c95 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/informer/InformerEventSource.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/informer/InformerEventSource.java @@ -192,9 +192,6 @@ private synchronized void onAddOrUpdate( } private boolean canSkipEvent(R newObject, R oldObject, ResourceID resourceID) { - if (temporaryResourceCache.isKnownResourceVersion(newObject)) { - return true; - } var res = temporaryResourceCache.getResourceFromCache(resourceID); if (res.isEmpty()) { return isEventKnownFromAnnotation(newObject, oldObject); @@ -208,7 +205,8 @@ private boolean canSkipEvent(R newObject, R oldObject, ResourceID resourceID) { "Resource found in temporal cache for id: {} resource versions equal: {}", resourceID, resVersionsEqual); - return resVersionsEqual; + return resVersionsEqual + || temporaryResourceCache.isLaterResourceVersion(resourceID, res.get(), newObject); } private boolean isEventKnownFromAnnotation(R newObject, R oldObject) { diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/informer/TemporaryResourceCache.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/informer/TemporaryResourceCache.java index af75a5abc4..4e991481d8 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/informer/TemporaryResourceCache.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/informer/TemporaryResourceCache.java @@ -80,19 +80,12 @@ void clean() { private final ExpirationCache tombstones = new ExpirationCache<>(1000000, 1200000); private final ManagedInformerEventSource managedInformerEventSource; private final boolean parseResourceVersions; - private final ExpirationCache knownResourceVersions; public TemporaryResourceCache( ManagedInformerEventSource managedInformerEventSource, boolean parseResourceVersions) { this.managedInformerEventSource = managedInformerEventSource; this.parseResourceVersions = parseResourceVersions; - if (parseResourceVersions) { - // keep up to the 50000 add/updates for up to 5 minutes - knownResourceVersions = new ExpirationCache<>(50000, 600000); - } else { - knownResourceVersions = null; - } } public synchronized void onDeleteEvent(T resource, boolean unknownState) { @@ -122,9 +115,6 @@ public synchronized void putAddedResource(T newResource) { * @param previousResourceVersion null indicates an add */ public synchronized void putResource(T newResource, String previousResourceVersion) { - if (knownResourceVersions != null) { - knownResourceVersions.add(newResource.getMetadata().getResourceVersion()); - } var resourceId = ResourceID.fromResource(newResource); var cachedResource = managedInformerEventSource.get(resourceId).orElse(null); @@ -159,17 +149,12 @@ public synchronized void putResource(T newResource, String previousResourceVersi } } - public synchronized boolean isKnownResourceVersion(T resource) { - return knownResourceVersions != null - && knownResourceVersions.contains(resource.getMetadata().getResourceVersion()); - } - /** * @return true if {@link ConfigurationService#parseResourceVersionsForEventFilteringAndCaching()} * is enabled and the resourceVersion of newResource is numerically greater than * cachedResource, otherwise false */ - private boolean isLaterResourceVersion(ResourceID resourceId, T newResource, T cachedResource) { + public boolean isLaterResourceVersion(ResourceID resourceId, T newResource, T cachedResource) { try { if (parseResourceVersions && Long.parseLong(newResource.getMetadata().getResourceVersion()) diff --git a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/source/informer/TemporaryPrimaryResourceCacheTest.java b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/source/informer/TemporaryPrimaryResourceCacheTest.java index e62888832f..81887aac49 100644 --- a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/source/informer/TemporaryPrimaryResourceCacheTest.java +++ b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/source/informer/TemporaryPrimaryResourceCacheTest.java @@ -96,8 +96,6 @@ void removesResourceFromCache() { void resourceVersionParsing() { this.temporaryResourceCache = new TemporaryResourceCache<>(informerEventSource, true); - assertThat(temporaryResourceCache.isKnownResourceVersion(testResource())).isFalse(); - ConfigMap testResource = propagateTestResourceToCache(); // an event with a newer version will not remove @@ -108,7 +106,6 @@ void resourceVersionParsing() { .endMetadata() .build()); - assertThat(temporaryResourceCache.isKnownResourceVersion(testResource)).isTrue(); assertThat(temporaryResourceCache.getResourceFromCache(ResourceID.fromResource(testResource))) .isPresent();