Using the Infomer.watch method that yields notices from the watch endpoint is not guaranteed to receive all events in case the informer restarts the watcher:
Informer fills/replaces cache from get request and stores the resource version
Informer starts watch request with the resource version from the get
Using the
Infomer.watch
method that yields notices from thewatch
endpoint is not guaranteed to receive all events in case the informer restarts the watcher:get
request and stores the resource versionwatch
request with the resource version from the getwatch
block)watch
will not be yielded with the changes happened in 4.Potential solutions:
watch
interface can miss changes (and thatlist
is the only source of truth)get
once wheninformer.start_worker
is called, when watch request stops, only restart the watch with the latest seen resource version