From 3cbcea4cf05de61ce8ecbe1daab52271914f0813 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Attila=20M=C3=A9sz=C3=A1ros?= Date: Tue, 14 Jul 2026 08:31:04 +0200 Subject: [PATCH 1/3] chore: Community meeting invite update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds the newly recreated meeting invite in CNCF project dashboard Signed-off-by: Attila Mészáros --- invite.ics | 192 +++++++++++++++--- .../informer/EventFilterWindowTest.java | 59 ++++++ 2 files changed, 218 insertions(+), 33 deletions(-) diff --git a/invite.ics b/invite.ics index 0106e45e5a..5f790920af 100644 --- a/invite.ics +++ b/invite.ics @@ -1,48 +1,174 @@ BEGIN:VCALENDAR -PRODID:-//Google Inc//Google Calendar 70.9054//EN -VERSION:2.0 -CALSCALE:GREGORIAN METHOD:REQUEST +PRODID:-//Linux Foundation//Meeting Management +VERSION:2.0 BEGIN:VTIMEZONE -TZID:America/New_York -X-LIC-LOCATION:America/New_York +TZID:Europe/Prague +LAST-MODIFIED:20221029T021029Z +TZURL:http://tzurl.org/zoneinfo/Europe/Prague +X-LIC-LOCATION:Europe/Prague +X-PROLEPTIC-TZNAME:LMT +BEGIN:STANDARD +TZNAME:PMT +TZOFFSETFROM:+005744 +TZOFFSETTO:+005744 +DTSTART:18500101T000000 +END:STANDARD +BEGIN:STANDARD +TZNAME:CET +TZOFFSETFROM:+005744 +TZOFFSETTO:+0100 +DTSTART:18911001T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZNAME:CEST +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +DTSTART:19160430T230000 +RDATE:19400401T020000 +RDATE:19430329T020000 +RDATE:19460506T020000 +RDATE:19490409T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZNAME:CET +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +DTSTART:19161001T010000 +RDATE:19421102T030000 +RDATE:19431004T030000 +RDATE:19441002T030000 +RDATE:19451001T030000 +END:STANDARD +BEGIN:DAYLIGHT +TZNAME:CEST +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +DTSTART:19170416T020000 +RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=3MO;UNTIL=19180415T010000Z +END:DAYLIGHT +BEGIN:STANDARD +TZNAME:CET +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +DTSTART:19170917T030000 +RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=3MO;UNTIL=19180916T010000Z +END:STANDARD +BEGIN:DAYLIGHT +TZNAME:CEST +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +DTSTART:19440403T020000 +RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1MO;UNTIL=19450402T010000Z +END:DAYLIGHT +BEGIN:DAYLIGHT +TZNAME:CEST +TZOFFSETFROM:+0200 +TZOFFSETTO:+0200 +DTSTART:19450509T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZNAME:CET +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +DTSTART:19461006T030000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU;UNTIL=19491002T010000Z +END:STANDARD +BEGIN:STANDARD +TZNAME:GMT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0000 +DTSTART:19461201T030000 +END:STANDARD +BEGIN:STANDARD +TZNAME:CET +TZOFFSETFROM:+0000 +TZOFFSETTO:+0100 +DTSTART:19470223T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZNAME:CEST +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +DTSTART:19470420T020000 +RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=3SU;UNTIL=19480418T010000Z +END:DAYLIGHT +BEGIN:STANDARD +TZNAME:CET +TZOFFSETFROM:+0100 +TZOFFSETTO:+0100 +DTSTART:19790101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZNAME:CEST +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +DTSTART:19790401T020000 +RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU;UNTIL=19800406T010000Z +END:DAYLIGHT +BEGIN:STANDARD +TZNAME:CET +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +DTSTART:19790930T030000 +RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU;UNTIL=19950924T010000Z +END:STANDARD BEGIN:DAYLIGHT -TZOFFSETFROM:-0500 -TZOFFSETTO:-0400 -TZNAME:EDT -DTSTART:19700308T020000 -RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU +TZNAME:CEST +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +DTSTART:19810329T020000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU END:DAYLIGHT BEGIN:STANDARD -TZOFFSETFROM:-0400 -TZOFFSETTO:-0500 -TZNAME:EST -DTSTART:19701101T020000 -RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU +TZNAME:CET +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +DTSTART:19961027T030000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU END:STANDARD END:VTIMEZONE BEGIN:VEVENT -DTSTART;TZID=America/New_York:20260202T080000 -DTEND;TZID=America/New_York:20260202T090000 -RRULE:FREQ=WEEKLY;WKST=SU;INTERVAL=2;BYDAY=MO -DTSTAMP:20260205T122901Z -ORGANIZER:mailto:csviri@gmail.com -UID:0slja1g4au8gb1lfkfe0ladnll_R20241126T140000@google.com -X-MICROSOFT-CDO-OWNERAPPTID:1947686914 -CREATED:20231002T122647Z -DESCRIPTION:CNCF Operator SDK is inviting you to a scheduled community Zoom meeting. \n - Zoom: https://zoom.us/j/8415370125 \n - Password: 77777 -LAST-MODIFIED:20260205T122857Z -LOCATION: -SEQUENCE:5 -STATUS:CONFIRMED +ATTENDEE;VALUE=TEXT:csviri@gmail.com +CREATED:20260714T061738Z +DESCRIPTION:\nYou have been invited to a recurring meeting for Operato + r Framework\n\n\n\nWays to join meeting:\n\n1. Join from PC\, Mac\, iP + ad\, or Android\n\nhttps://zoom-lfx.platform.linuxfoundation.org/meeti + ng/97644661130?password=f0aa104f-cab5-4bee-a375-947fe4539b2d\n\n2. Joi + n via audio\n\nOne tap mobile:\nUS (iOS): +12532158782\,\,97644661130# + \,\,\,\,*684093# or +13462487799\,\,97644661130#\,\,\,\,*684093#\nUS ( + Android): +12532158782\;97644661130#\;684093# or +13462487799\;9764466 + 1130#\;684093#\n\nOr dial:\nUS: +1 253 215 8782 or +1 346 248 7799 or + +1 669 900 6833 or +1 301 715 8592 or +1 312 626 6799 or +1 646 374 86 + 56 or 877 369 0926 (Toll Free) or 855 880 1246 (Toll Free)\nCanada: +1 + 647 374 4685 or +1 647 558 0588 or +1 778 907 2071 or +1 204 272 7920 + or +1 438 809 7799 or +1 587 328 1099 or 855 703 8985 (Toll Free)\n\n + Meeting ID: 97644661130\n\nMeeting Passcode: 684093\n\n\nInternational + numbers: https://zoom.us/u/alwnPIaVT\n\nManage this meeting: https:// + projectadmin.lfx.linuxfoundation.org/project/a092M00001IkYIdQAN/collab + oration/meetings?date=2026-07-20&manage=true&meetingId=97644661130\n +DTEND;TZID=Europe/Prague:20260720T160000 +DTSTAMP:20260714T061738Z +DTSTART;TZID=Europe/Prague:20260720T150000 +LAST-MODIFIED:20260714T061738Z +LOCATION:https://zoom-lfx.platform.linuxfoundation.org/meeting/9764466 + 1130?password=f0aa104f-cab5-4bee-a375-947fe4539b2d +ORGANIZER;CN=Operator Framework:MAILTO:meetings@lfx.dev +RRULE:FREQ=DAILY;INTERVAL=14;WKST=SU +SEQUENCE:1 SUMMARY:Java Operator SDK Community Meeting -TRANSP:OPAQUE +TZID:Europe/Prague +TZNAME:Europe/Prague +UID:97644661130 +URL;VALUE=TEXT:https://zoom-lfx.platform.linuxfoundation.org/meeting/9 + 7644661130?password=f0aa104f-cab5-4bee-a375-947fe4539b2d +X-MEETING-ID:97644661130 +X-OCCURRENCE-ID: +X-REGISTRANT-ID:0a3cb7f8-701b-4ef1-9f5f-f3cdfca73594 BEGIN:VALARM ACTION:DISPLAY -DESCRIPTION:This is an event reminder -TRIGGER:-P0DT0H10M0S +DESCRIPTION:Meeting reminder +TRIGGER:-PT10M END:VALARM END:VEVENT END:VCALENDAR diff --git a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/source/informer/EventFilterWindowTest.java b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/source/informer/EventFilterWindowTest.java index 367c4fa4f3..016a8ac343 100644 --- a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/source/informer/EventFilterWindowTest.java +++ b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/source/informer/EventFilterWindowTest.java @@ -517,6 +517,46 @@ void reListBetweenTwoUpdates() { assertThat(eventFilterWindow.canBeRemoved()).isTrue(); } + @Test + void foreignUpdateCollidingWithNoOpOwnWriteVersionMustNotBeSwallowed() { + long foreignVersion = FIRST_OWN_VERSION; // rv of the generation 3 external change + + // generation 2 reconciliation starts + eventFilterWindow.increaseActiveUpdates(); + + eventFilterWindow.addRelatedEvent(specChangeUpdateEvent(foreignVersion)); + assertThat(eventFilterWindow.check()).isEmpty(); + + eventFilterWindow.decreaseActiveUpdates(); + + // the foreign generation 3 change must surface, not be swallowed as an echo of our write + assertThat(eventFilterWindow.check()) + .as("foreign update sharing an rv with a no-op own write must still surface") + .hasValueSatisfying(e -> assertUpdateEvent(e, foreignVersion)); + + assertThat(eventFilterWindow.canBeRemoved()).isTrue(); + assertEmptyState(); + } + + @Test + void foreignUpdateCollidingWithNoOpOwnWriteVersionMustNotBeSwallowed2() { + long foreignVersion = FIRST_OWN_VERSION; // rv of the generation 3 external change + + eventFilterWindow.increaseActiveUpdates(); + assertThat(eventFilterWindow.check()).isEmpty(); + + eventFilterWindow.addRelatedEvent(specChangeUpdateEvent(foreignVersion)); + + eventFilterWindow.decreaseActiveUpdates(); + + assertThat(eventFilterWindow.check()) + .as("foreign update sharing an rv with a no-op own write must still surface") + .hasValueSatisfying(e -> assertUpdateEvent(e, foreignVersion)); + + assertThat(eventFilterWindow.canBeRemoved()).isTrue(); + assertEmptyState(); + } + @Test void combinedCaseWithEarlyEvent() { // Scenario: an own write is in flight (RV recorded), a foreign event with a @@ -611,4 +651,23 @@ private void assertEmptyState() { private String s(long l) { return Long.toString(l); } + + // An update that also bumps the generation, i.e. an external spec change (not an own + // status/metadata write, which never changes the generation). + ExtendedResourceEvent specChangeUpdateEvent(long version) { + return new ExtendedResourceEvent( + UPDATED, testResource(version, 2L), testResource(version - 1, 1L), null); + } + + ConfigMap testResource(Long version, Long generation) { + var cm = new ConfigMap(); + cm.setMetadata( + new ObjectMetaBuilder() + .withName(RESOURCE_ID.getName()) + .withNamespace(RESOURCE_ID.getNamespace().orElseThrow()) + .withResourceVersion(version.toString()) + .withGeneration(generation) + .build()); + return cm; + } } From 921b12ee196d8ea3203cbc212f2195726b1165d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Attila=20M=C3=A9sz=C3=A1ros?= Date: Tue, 14 Jul 2026 08:33:01 +0200 Subject: [PATCH 2/3] wip MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Attila Mészáros --- .../informer/EventFilterWindowTest.java | 40 ------------------- 1 file changed, 40 deletions(-) diff --git a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/source/informer/EventFilterWindowTest.java b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/source/informer/EventFilterWindowTest.java index 016a8ac343..88662caeb5 100644 --- a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/source/informer/EventFilterWindowTest.java +++ b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/source/informer/EventFilterWindowTest.java @@ -517,46 +517,6 @@ void reListBetweenTwoUpdates() { assertThat(eventFilterWindow.canBeRemoved()).isTrue(); } - @Test - void foreignUpdateCollidingWithNoOpOwnWriteVersionMustNotBeSwallowed() { - long foreignVersion = FIRST_OWN_VERSION; // rv of the generation 3 external change - - // generation 2 reconciliation starts - eventFilterWindow.increaseActiveUpdates(); - - eventFilterWindow.addRelatedEvent(specChangeUpdateEvent(foreignVersion)); - assertThat(eventFilterWindow.check()).isEmpty(); - - eventFilterWindow.decreaseActiveUpdates(); - - // the foreign generation 3 change must surface, not be swallowed as an echo of our write - assertThat(eventFilterWindow.check()) - .as("foreign update sharing an rv with a no-op own write must still surface") - .hasValueSatisfying(e -> assertUpdateEvent(e, foreignVersion)); - - assertThat(eventFilterWindow.canBeRemoved()).isTrue(); - assertEmptyState(); - } - - @Test - void foreignUpdateCollidingWithNoOpOwnWriteVersionMustNotBeSwallowed2() { - long foreignVersion = FIRST_OWN_VERSION; // rv of the generation 3 external change - - eventFilterWindow.increaseActiveUpdates(); - assertThat(eventFilterWindow.check()).isEmpty(); - - eventFilterWindow.addRelatedEvent(specChangeUpdateEvent(foreignVersion)); - - eventFilterWindow.decreaseActiveUpdates(); - - assertThat(eventFilterWindow.check()) - .as("foreign update sharing an rv with a no-op own write must still surface") - .hasValueSatisfying(e -> assertUpdateEvent(e, foreignVersion)); - - assertThat(eventFilterWindow.canBeRemoved()).isTrue(); - assertEmptyState(); - } - @Test void combinedCaseWithEarlyEvent() { // Scenario: an own write is in flight (RV recorded), a foreign event with a From ba3bdff8eef7d4b69b939b86c55a68caf415a44a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Attila=20M=C3=A9sz=C3=A1ros?= Date: Tue, 14 Jul 2026 08:33:21 +0200 Subject: [PATCH 3/3] wip MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Attila Mészáros --- .../informer/EventFilterWindowTest.java | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/source/informer/EventFilterWindowTest.java b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/source/informer/EventFilterWindowTest.java index 88662caeb5..367c4fa4f3 100644 --- a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/source/informer/EventFilterWindowTest.java +++ b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/source/informer/EventFilterWindowTest.java @@ -611,23 +611,4 @@ private void assertEmptyState() { private String s(long l) { return Long.toString(l); } - - // An update that also bumps the generation, i.e. an external spec change (not an own - // status/metadata write, which never changes the generation). - ExtendedResourceEvent specChangeUpdateEvent(long version) { - return new ExtendedResourceEvent( - UPDATED, testResource(version, 2L), testResource(version - 1, 1L), null); - } - - ConfigMap testResource(Long version, Long generation) { - var cm = new ConfigMap(); - cm.setMetadata( - new ObjectMetaBuilder() - .withName(RESOURCE_ID.getName()) - .withNamespace(RESOURCE_ID.getNamespace().orElseThrow()) - .withResourceVersion(version.toString()) - .withGeneration(generation) - .build()); - return cm; - } }