From d4caabcf5d4502de55b33a885b3cb7465eb2b75a Mon Sep 17 00:00:00 2001 From: Hong Seongpyo Date: Sat, 23 Dec 2023 17:09:42 +0900 Subject: [PATCH 1/3] Check all container's status when calculate rev status --- pkg/reconciler/revision/reconcile_resources.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/reconciler/revision/reconcile_resources.go b/pkg/reconciler/revision/reconcile_resources.go index 09c12c221b77..413bdc22f596 100644 --- a/pkg/reconciler/revision/reconcile_resources.go +++ b/pkg/reconciler/revision/reconcile_resources.go @@ -95,7 +95,7 @@ func (c *Reconciler) reconcileDeployment(ctx context.Context, rev *v1.Revision) } for _, status := range pod.Status.ContainerStatuses { - if status.Name == rev.Spec.GetContainer().Name { + if status.Name != resources.QueueContainerName { if t := status.LastTerminationState.Terminated; t != nil { logger.Infof("marking exiting with: %d/%s", t.ExitCode, t.Message) if t.ExitCode == 0 && t.Message == "" { From 19733c36c6ce3066e00f04c468302d96227831f2 Mon Sep 17 00:00:00 2001 From: Hong Seongpyo Date: Mon, 11 Mar 2024 23:26:56 +0900 Subject: [PATCH 2/3] Move break --- pkg/reconciler/revision/reconcile_resources.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkg/reconciler/revision/reconcile_resources.go b/pkg/reconciler/revision/reconcile_resources.go index 413bdc22f596..3fa6f07d24fe 100644 --- a/pkg/reconciler/revision/reconcile_resources.go +++ b/pkg/reconciler/revision/reconcile_resources.go @@ -102,14 +102,16 @@ func (c *Reconciler) reconcileDeployment(ctx context.Context, rev *v1.Revision) // In cases where there is no error message, we should still provide some exit message in the status rev.Status.MarkContainerHealthyFalse(v1.ExitCodeReason(t.ExitCode), v1.RevisionContainerExitingMessage("container exited with no error")) + break } else { rev.Status.MarkContainerHealthyFalse(v1.ExitCodeReason(t.ExitCode), v1.RevisionContainerExitingMessage(t.Message)) + break } } else if w := status.State.Waiting; w != nil && hasDeploymentTimedOut(deployment) { logger.Infof("marking resources unavailable with: %s: %s", w.Reason, w.Message) rev.Status.MarkResourcesAvailableFalse(w.Reason, w.Message) + break } - break } } } From 9bc98bf905ef4cf7b33092b2c35da0942eecc3ed Mon Sep 17 00:00:00 2001 From: Hong Seongpyo Date: Mon, 11 Mar 2024 23:31:22 +0900 Subject: [PATCH 3/3] Update resUnavailable to true when containerHealthy condition is false --- pkg/apis/serving/v1/revision_lifecycle.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/apis/serving/v1/revision_lifecycle.go b/pkg/apis/serving/v1/revision_lifecycle.go index 9c92c01a3cd8..f0e54da9d872 100644 --- a/pkg/apis/serving/v1/revision_lifecycle.go +++ b/pkg/apis/serving/v1/revision_lifecycle.go @@ -170,7 +170,7 @@ func (rs *RevisionStatus) PropagateDeploymentStatus(original *appsv1.DeploymentS // PropagateAutoscalerStatus propagates autoscaler's status to the revision's status. func (rs *RevisionStatus) PropagateAutoscalerStatus(ps *autoscalingv1alpha1.PodAutoscalerStatus) { - resUnavailable := rs.GetCondition(RevisionConditionResourcesAvailable).IsFalse() + resUnavailable := rs.GetCondition(RevisionConditionResourcesAvailable).IsFalse() || rs.GetCondition(RevisionConditionContainerHealthy).IsFalse() // Reflect the PA status in our own. cond := ps.GetCondition(autoscalingv1alpha1.PodAutoscalerConditionReady)