Skip to content

Commit a7f5373

Browse files
committed
wip
Signed-off-by: Attila Mészáros <a_meszaros@apple.com>
1 parent 7230595 commit a7f5373

File tree

1 file changed

+13
-15
lines changed

1 file changed

+13
-15
lines changed

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

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ private synchronized EventHandling onEvent(
144144
"Removing resource from temp cache. comparison: {} unknown state: {}",
145145
comp,
146146
unknownState);
147-
cacheRemove(resourceId, cached.getMetadata().getResourceVersion());
147+
cacheRemove(resourceId);
148148
// we propagate event only for our update or newer other can be discarded since we know we
149149
// will receive
150150
// additional event
@@ -160,7 +160,6 @@ private synchronized EventHandling onEvent(
160160
delete
161161
? new ResourceDeleteEvent(ResourceAction.DELETED, resourceId, resource, unknownState)
162162
: new ExtendedResourceEvent(action, resourceId, resource, prevResourceVersion));
163-
checkStaleResources();
164163
return EventHandling.DEFER;
165164
} else {
166165
return result;
@@ -173,8 +172,10 @@ private void checkStaleResources() {
173172
var longLatest = Long.parseLong(latestResourceVersion);
174173
var head = cachedVersions.headMap(longLatest);
175174
for (var entry : head.entrySet()) {
176-
cache.remove(entry.getValue());
177-
cachedVersions.remove(entry.getKey());
175+
synchronized (this) {
176+
cache.remove(entry.getValue());
177+
cachedVersions.remove(entry.getKey());
178+
}
178179
}
179180
});
180181
}
@@ -231,18 +232,15 @@ public synchronized Optional<T> getResourceFromCache(ResourceID resourceID) {
231232
}
232233

233234
private void cacheResource(ResourceID resourceId, T resource) {
234-
var actualCached = cache.get(resourceId);
235-
cache.put(resourceId, resource);
236-
CompletableFuture.runAsync(
237-
() -> {
238-
cachedVersions.remove(Long.parseLong(actualCached.getMetadata().getResourceVersion()));
239-
cachedVersions.put(
240-
Long.parseLong(resource.getMetadata().getResourceVersion()), resourceId);
241-
});
235+
var prevValue = cache.put(resourceId, resource);
236+
if (prevValue != null) {
237+
cachedVersions.remove(Long.parseLong(prevValue.getMetadata().getResourceVersion()));
238+
}
239+
cachedVersions.put(Long.parseLong(resource.getMetadata().getResourceVersion()), resourceId);
242240
}
243241

244-
private void cacheRemove(ResourceID resourceId, String cachedResourceVersion) {
245-
cache.remove(resourceId);
246-
CompletableFuture.runAsync(() -> cachedVersions.remove(Long.parseLong(cachedResourceVersion)));
242+
private void cacheRemove(ResourceID resourceId) {
243+
var removed = cache.remove(resourceId);
244+
cachedVersions.remove(Long.parseLong(removed.getMetadata().getResourceVersion()));
247245
}
248246
}

0 commit comments

Comments
 (0)