Skip to content
Opensource internals
  • Posts

Client go

The Informer Will OOM If You Are Too Slow: An Unbounded Ring Buffer, On Purpose

Oct 23, 2026 13 min read Jay Hubbert

Each informer listener buffers notifications in an unbounded growing ring; a handler too slow to drain it will OOM the process, by design.

KubernetesInternalsClient go

Read more →

Two Sets and a FIFO: The Whole Concurrency Model of the Kubernetes Workqueue

Oct 23, 2026 13 min read Jay Hubbert

The Kubernetes workqueue is a FIFO plus a dirty set plus a processing set; together they give per-item mutual exclusion and automatic coalescing of repeated Adds.

KubernetesInternalsClient go

Read more →

The Reflector Refuses to Publish a Resource Version It Hasn't Earned

Oct 23, 2026 14 min read Jay Hubbert

The reflector tracks eventReceivedBesidesAdded and only publishes the resource version once it knows it is past the synthetic ADDED burst.

KubernetesInternalsClient go

Read more →

One Stream Instead of Two: The Watch List That Killed LIST + WATCH

Oct 23, 2026 14 min read Jay Hubbert

The watch-list path turns LIST+WATCH into one WATCH stream: synthetic ADDED events, an end-of-initial-events bookmark, then live deltas on the same connection.

KubernetesInternalsClient go

Read more →

© 2026 Jay Hubbert · Built with Hugo 0.168.0

RSS ·