mirror of
https://github.com/cozystack/cozystack.git
synced 2026-11-04 02:57:27 +09:00
The aggregated apiserver resources in group core.cozystack.io (TenantSecret, TenantModule, TenantNamespace) ignored the SendInitialEvents field of ListOptions. Clients using the WatchList / streaming-list protocol (client-go's WatchListClient feature, on by default since v1.35) never received the required k8s.io/initial-events-end bookmark, so their reflectors stayed stuck in the initial-stream phase and logged "hasn't received required bookmark event marking the end of initial events stream" every ~10s, never reaching HasSynced. apps.cozystack.io/Application already implemented this contract inline. Extract that logic into a shared registry.InitialEventsBookmarker helper (pkg/registry/utils.go) and wire it into all four translating Watch implementations: after the initial ADDED events, the first backing bookmark is annotated as the initial-events-end marker, with fallbacks that emit it before the first live event and on watcher close. Application is refactored onto the shared helper with its WorkloadMonitor pending-event draining preserved. Adds unit tests for the bookmarker and watch tests for each of the three core resources asserting ADDED -> annotated Bookmark -> live event. ```release-note [apiserver] core.cozystack.io resources (TenantSecret, TenantModule, TenantNamespace) now emit the k8s.io/initial-events-end bookmark for SendInitialEvents=true (WatchList) watches, so client-go informers reach HasSynced instead of looping on the missing-bookmark warning. ``` Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Signed-off-by: Simon Koudijs <simonkoudijs@gmail.com>