Repository navigation
[Docs] An unreachable admission webhook parks the operation, not the Instance: the AdmissionUnavailable hold - #218
Merged
Conversation
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
github-actions
Bot
requested review from
XinyueZhang369,
pallasathena92 and
slin1237
as code owners
November 2, 2026 20:49
|
Important Review skippedBot user detected. To trigger a single review, invoke the
|
Contributor
Author
|
Documentation maintenance: ready. Unsuccessful content rounds: 0/3. Operational attempts: 0/3. Head: The diff documents one concern — the AdmissionUnavailable operation hold and its InstanceAdmissionUnavailable warning — as a row in the waiting table that owns holds, one explanatory paragraph, and the matching entry in the deadlines guide's clock-stop list. Every claim matches executable behavior at the pinned commit: the token value and classification (apirejection.go:81, evidence/rejection.go:32-80) fire on both pod create (ops/create.go:1447) and in-place patch (ops/update_inplace.go:493) writes; the attempt keeps its phase and operation with no RetryBlock charged (create_external_test.go:4444+ asserts Creating, operation intact, zero retry-block writes); lastFailure is recorded under the same reason with the refused pod and the apiserver's message naming the webhook (holds/admission.go:64-77, admission_test.go:45-54); the warning fires once per episode (pass_update_test.go:1277: one event over six refused passes); release happens when a write passes admission (create.go:1472, update_inplace.go:352); and the hold parks the InstanceReadyTimeout clock via OperationExternallyHeld (scheduling.go:44, escalation/deadline.go:116). No since badges or release claims added, no protected files touched, checks.json is empty. Human review threads and CODEOWNER approval remain under repository policy. |
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.
What this PR does
My new Instance's pods aren't being created and the InferenceReplica shows the operation waiting on AdmissionUnavailable with an InstanceAdmissionUnavailable warning naming a third-party webhook — is the attempt failing, and does the readiness deadline still run?
Why we need it
Source change: ome-projects/ome@2dfc9e5
Processes the prior plan's pending omenative-lifecycle concern of the same slug; re-verified today, and no PR covers it (instances.md is now free: #207-#211 merged). From commit 11 (#1201), whose patch adds EventReasonInstanceAdmissionUnavailable (emission at patch hunk line +27484, once-per-episode tests at +27222-27372, read today). Current code verified today: pkg/controller/v1beta1/workload/types/events.go:78-84 — the Warning fires once per episode when the apiserver refuses an Instance's pod create or patch because it cannot reach an admission webhook; the attempt is NOT failed: it waits with its InstanceReadyTimeout clock parked until admission answers again, and the event carries the apiserver's own words so the operator can see which webhook is unreachable; types/evidence classification in workload/evidence/rejection.go:78 records RejectionReasonAdmissionUnavailable; the hold lives in workload/holds/admission.go (waiting token, LastFailure under the same reason, release — holds/admission_test.go:45-133), and emission is at ops/create_rejection.go:210. Tests in today's checkout: ops/create_external_test.go:4466-4488 and :4598-4638 (once per episode, create and added index), ops/update_inplace_test.go:1188-1208, workload/pass_update_test.go:1277-1286 (Operation.Waiting = AdmissionUnavailable, never a failure). Docs gaps verified today: concepts/omenative/instances.md's waiting table (:133-140) lists QuotaExceeded, Unschedulable, PodGroupTerminating, NodeUnknown, Paused and SourceUnrouted — no AdmissionUnavailable row — and guides/omenative/set-instance-readiness-deadlines.md:31's clock-stop list ('a scheduling gate, a quota refusal, an unschedulable pod, an unreachable node or a paused rollout') omits the admission wait; a repo-wide grep shows InstanceAdmissionUnavailable nowhere under src/lib/content (only reference/kubectl-ome/instance.md:204 names the AdmissionUnavailable waiting token, merged #111, which needs no change). One independent concern: one hold token and its one Warning event from the commit that added them, as a row in the table that owns operation holds plus the clock-stop list that enumerates them. instances.md and set-instance-readiness-deadlines.md are shared with other items in this plan — the workflow selects one per file and queues the rest; do not combine.
Scope: omenative-lifecycle / admission-unavailable-operation-hold. Other concerns are deferred.
How to test
git diff --checkand website content/link tests, type checks, lint and production build.Checklist
git commit -s)pnpm lint && pnpm check && pnpm test && pnpm buildpasses (run by the publisher on an isolated copy)