You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
✨ Implement warm replica support for controllers (#3192)
* [Warm Replicas] Implement warm replica support for controllers.
* Remove irrelevant runnable_group.go code.
* Rename ShouldWarmup.
* fmt
* Change to atomic.Bool to avoid race in test.
* Address comments.
* Add ready check to block controller startup until warmup is complete.
* Keep test helper structs private.
* Address comments.
* Fix lint.
* Address naming + comments from sbueringer.
* Refactor tests to use HaveValue.
* Document + add UT for WaitForWarmupComplete behavior on ctx cancellation.
* Add unit test that exercises controller warmup integration with manager.
* Add UT that verifies WaitForWarmupComplete blocking / non-blocking behavior.
* Verify r.Others.startQueue in runnables test cases.
* Fix UT to verify runnable ordering.
* Fix UT for WaitForWarmupComplete blocking.
* Document !NeedLeaderElection+NeedWarmup behavior
* Fix test race.
* Cleanup test wrapper runnables.
* Make didStartEventSources run once with sync.Once + UT.
* Rewrite Warmup to avoid polling.
* Rename NeedWarmup to EnableWarmup.
* Clarify comment on Warmup.
* Move reset watches critical section inside of startEventSources.
* Add test to assert startEventSources blocking behavior.
* Make Start threadsafe with Warmup + UT.
* Change warmup to use buffered error channel and add New method.
* Fail in warmup directly and rely on sync.Once for warmup thread-safety without WaitForWarmupComplete.
* Sync controller EnableWarmup comments.
* Rename to startEventSourcesLocked and lock with c.mu
* Address edge case for watch added after warmup completes.
* Fix test description and set leaderelection==true
* Fix lint.
* Change shutdown order to shutdown warmup runnables in parallel with other runnables.
* Fix test races by ensuring goroutines do not outlive their It blocks.
* Block on source start on context cancel.
* Guard access to c.Queue explicitly.
* Initialize queue in warmup with test.
* Fix watch comment.
* Add warmup to manager and controller integration tests.
* fmt + lint.
* Add tests for Warmup for parity with Start.
* golangci-lint
* Increase test coverage for start with warmup race.
* Remove synchronization code around c.Queue concurrent access.
* Assert startedEventSourcesAndQueue is set in tests.
* fmt
* Clarify namespace predicate vs. cleanup in controller integration test.
* Add option for fake leader elector package and assert that warmup runnables are started before leader election.
* fmt + rename
* Address PR comments.
0 commit comments