Skip to content

Commit 4e1b5f2

Browse files
committed
cleanup
Signed-off-by: Attila Mészáros <a_meszaros@apple.com>
1 parent dbc9f0f commit 4e1b5f2

4 files changed

Lines changed: 32 additions & 4 deletions

File tree

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ synchronized Map<ResourceID, EventFilterWindow> getEventFilterWindows() {
7373
return eventFilterWindows;
7474
}
7575

76-
public synchronized void setStartingReList(String lastKnownVersion) {
76+
public synchronized void setStartingReList() {
7777
ongoingReList = true;
7878
eventFilterWindows.values().forEach(EventFilterWindow::setReListStarted);
7979
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ && getFirstRelatedEvent().getAction().equals(ResourceAction.DELETED)) {
7070
return eventForRangeAndClear(relatedEvents, ownResourceVersions);
7171
}
7272

73-
var lastEventVersion = getLastRelatedEvent().getResourceVersion();
73+
var lastEventVersion = relatedEvents.lastKey();
7474
var numberOwnUpdatesSelected = 0;
7575
long lastOwnVersion = -1;
7676
for (long ownVersion : ownResourceVersions) {
@@ -174,7 +174,7 @@ public synchronized boolean canBeRemoved() {
174174
return false;
175175
}
176176

177-
void addToOwnResourceVersions(String resourceVersion) {
177+
public synchronized void addToOwnResourceVersions(String resourceVersion) {
178178
ownResourceVersions.add(Long.parseLong(resourceVersion));
179179
}
180180

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,7 @@ synchronized EventFilterSupport getEventFilterSupport() {
254254
}
255255

256256
public synchronized void setOngoingRelist(String lastKnownSyncVersion) {
257-
eventFilteringSupport.setStartingReList(lastKnownSyncVersion);
257+
eventFilteringSupport.setStartingReList();
258258
}
259259

260260
public synchronized void setRelistFinished(String syncResourceVersions) {

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

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -539,6 +539,34 @@ void reListBetweenTwoUpdates() {
539539
assertThat(eventFilterWindow.canBeRemoved()).isTrue();
540540
}
541541

542+
@Test
543+
void combinedCaseWithEarlyEvent() {
544+
// Scenario: an own write is in flight (RV recorded), a foreign event with a
545+
// lower RV arrives, then the write completes (active → 0) but no echo for
546+
// our own RV ever arrives. The held foreign event must surface — otherwise
547+
// the window wedges (canRemoved stays false because relatedEvents is not
548+
// empty) and the reconciler never learns about the foreign change.
549+
eventFilterWindow.increaseActiveUpdates();
550+
eventFilterWindow.addToOwnResourceVersions(s(FIRST_OWN_VERSION));
551+
eventFilterWindow.addRelatedEvent(updateEvent(FIRST_OWN_VERSION - 2));
552+
553+
// Held while the write is in flight.
554+
assertThat(eventFilterWindow.check()).isEmpty();
555+
556+
// Write completes, no echo for own=[FIRST_OWN_VERSION] ever arrived.
557+
eventFilterWindow.decreaseActiveUpdates();
558+
559+
eventFilterWindow.setReListStarted();
560+
eventFilterWindow.addRelatedEvent(updateEvent(FIRST_OWN_VERSION));
561+
// The foreign event must surface now.
562+
eventFilterWindow.setReListFinished();
563+
assertThat(eventFilterWindow.check())
564+
.hasValueSatisfying(e -> assertUpdateEvent(e, FIRST_OWN_VERSION, FIRST_OWN_VERSION - 3));
565+
566+
assertEmptyState();
567+
assertThat(eventFilterWindow.canBeRemoved()).isTrue();
568+
}
569+
542570
void assertUpdateEvent(GenericResourceEvent event, Long resourceVersion) {
543571
assertUpdateEvent(event, resourceVersion, resourceVersion - 1);
544572
}

0 commit comments

Comments
 (0)