Double the Page Size: How etcd LIST Escapes the Selector Death Spiral
etcd does not understand label selectors, so the apiserver etcd store doubles its page size on each iteration (capped at maxLimit=10000) when a selector drops too many objects.
etcd does not understand label selectors, so the apiserver etcd store doubles its page size on each iteration (capped at maxLimit=10000) when a selector drops too many objects.
The watch cache waits up to 3 seconds on a sync.Cond for a resource version it has not seen, then returns a TooLargeResourceVersion error with a 1-second Retry-After.
Watch cache bookmarks are bucketed by whole second and popped in bulk so one timer serves 100k watchers; a state machine starves a watcher schedule until its resourceVersion lands.
cachingObject memoizes the serialized bytes of a watch event per content type and only deep-copies on the first real mutation, so one encode serves every watcher.