Don't mark idle revisions as ProgressDeadlineExceeded - #16697
Anjali-Chauhan1 wants to merge 1 commit into
Conversation
|
Welcome @Anjali-Chauhan1! It looks like this is your first PR to knative/serving 🎉 |
|
Hi @Anjali-Chauhan1. Thanks for your PR. I'm waiting for a knative member to verify that this patch is reasonable to test. If it is, they should reply with Regular contributors should join the org to skip this step. Once the patch is verified, the new status will be reflected by the I understand the commands that are listed here. DetailsInstructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. |
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: Anjali-Chauhan1 The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
A revision was marked ResourcesAvailable=False with reason
ProgressDeadlineExceeded ("Initial scale was never achieved") whenever its
PodAutoscaler was Ready=False with the scale target not yet initialized.
That state also occurs for a freshly created revision whose PA is merely
inactive because it has no traffic (e.g. initial-scale 0), so revisions
were spuriously failed seconds after creation and recovered later.
Only treat the PA as having missed its progress deadline when it reports
the TimedOut reason, which the KPA sets solely when activation times out.
To keep that signal reliable, the KPA now preserves TimedOut on subsequent
reconciles until the PA activates again, instead of rewriting it to
NoTraffic on the next pass, which would otherwise silently clear a genuine
failure on the revision.
Signed-off-by: Anjali-Chauhan1 <anjalichauhan1036@gmail.com>
76eb87d to
05b7ca7
Compare
Fixes #16694
Proposed Changes
PropagateAutoscalerStatusnow only marks a revisionResourcesAvailable=False/ProgressDeadlineExceeded("Initial scale was never achieved") when the PodAutoscaler is inactive with reasonTimedOut. A PA that is inactive because it has no traffic (NoTraffic) is the normal state for an idle revision, and when its scale target is not yet initialized (e.g. initial-scale 0) it no longer causes a spurious failure seconds after creation.TimedOutreason on later reconciles until the PA activates again. Before this change it rewroteTimedOuttoNoTrafficon the next pass, which would silently clear a genuine progress-deadline failure on the revision (the Deployment reports Ready once scaled to zero, so the failure had to be re-derived from the PA on every reconcile).ReasonTimedOut/ReasonNoTrafficconstants toautoscaling/v1alpha1, plus unit and table tests covering: idle (NoTraffic) revisions are not failed;TimedOutrevisions fail and stay failed across reconciles; the KPA preservesTimedOutfor desired scale 0 and -1.Note: a revision whose activation times out now has its PA's Active/Ready reason remain
TimedOut(instead of switching toNoTraffic) until it receives traffic again.