Readiness asserts the load-bearing informers per probe - #45
Merged
Merged
Conversation
The Runnable-derived signal was defeated by the same ordering class it replaced: controllers create their informers after plain runnables start, so the channel closed before the v1beta1 informers existed. Every readyz evaluation now asks the cache for the AIBOM and AIBOMControllerConfig informers (v1beta1) and their sync state directly — failing while the cache is unstarted or the API server cannot serve those versions. No ordering assumptions left to violate.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
rc.2's boundary rerun defeated the Runnable-based fix from #44: plain runnables and controllers start in the same late group, and the informers are created by the controllers — so the channel closed before the v1beta1 informers existed, reproducing the false-Ready window (pod went Ready, rollout completed, then decayed to NotReady/restarts exactly like rc.1).
This fix has no ordering assumptions to violate: every readyz probe asks
mgr.GetCache().GetInformer()for the v1beta1AIBOMandAIBOMControllerConfiginformers and checksHasSynced()— failing while the cache is unstarted, while informers haven't synced, and (the stranded-CRD case) while the API server cannot serve the requested version at all. Ready means "this pod can genuinely observe its own APIs," evaluated fresh at every probe.Full suite green. Changelog's 1.3.0 entry updated to describe both defeated implementations honestly. Next: rc.3 and the boundary rerun — third time against a check that finally has no seams.