Skip to content

Commit 9c9d44a

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

File tree

1 file changed

+22
-16
lines changed

1 file changed

+22
-16
lines changed

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

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -95,29 +95,35 @@ public R eventFilteringUpdateAndCacheResource(R resourceToUpdate, UnaryOperator<
9595
if (log.isDebugEnabled()) {
9696
log.debug("Update and cache: {}", id);
9797
}
98-
HasMetadata[] updatedResource = new HasMetadata[1];
98+
R updatedResource = null;
9999
try {
100100
temporaryResourceCache.startEventFilteringModify(id);
101-
updatedResource[0] = updateMethod.apply(resourceToUpdate);
102-
handleRecentResourceUpdate(id, (R) updatedResource[0], resourceToUpdate);
103-
return (R) updatedResource[0];
101+
updatedResource = updateMethod.apply(resourceToUpdate);
102+
handleRecentResourceUpdate(id, updatedResource, resourceToUpdate);
103+
return updatedResource;
104104
} finally {
105105
var res =
106106
temporaryResourceCache.doneEventFilterModify(
107107
id,
108-
updatedResource[0] == null
109-
? null
110-
: updatedResource[0].getMetadata().getResourceVersion());
111-
108+
updatedResource == null ? null : updatedResource.getMetadata().getResourceVersion());
109+
var updatedForLambda = updatedResource;
112110
res.ifPresent(
113-
r ->
114-
handleEvent(
115-
r.getAction(),
116-
(R) r.getResource().orElseThrow(),
117-
(R) r.getResource().orElseThrow(), // todo handle this nicer for updates?
118-
!(r instanceof ResourceDeleteEvent)
119-
|| ((ResourceDeleteEvent) r).isDeletedFinalStateUnknown(),
120-
false));
111+
r -> {
112+
R latestResource = (R) r.getResource().orElseThrow();
113+
// for update we need to have a historic resource, this might be improved to mimic more
114+
// realistic scenario
115+
R prevVersionOfResource =
116+
updatedForLambda != null
117+
? updatedForLambda
118+
: (r.getAction() == ResourceAction.UPDATED ? latestResource : null);
119+
handleEvent(
120+
r.getAction(),
121+
latestResource,
122+
prevVersionOfResource,
123+
!(r instanceof ResourceDeleteEvent)
124+
|| ((ResourceDeleteEvent) r).isDeletedFinalStateUnknown(),
125+
false);
126+
});
121127
}
122128
}
123129

0 commit comments

Comments
 (0)