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) diff --git a/pkg/reconciler/revision/reconcile_resources.go b/pkg/reconciler/revision/reconcile_resources.go index 09c12c221b77..3fa6f07d24fe 100644 --- a/pkg/reconciler/revision/reconcile_resources.go +++ b/pkg/reconciler/revision/reconcile_resources.go @@ -95,21 +95,23 @@ 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 == "" { // 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 } } }