Skip to content

Commit 556ea80

Browse files
committed
fix revision conditions when initial scale isn't achieved
1 parent b1c8d17 commit 556ea80

File tree

3 files changed

+43
-2
lines changed

3 files changed

+43
-2
lines changed

pkg/apis/serving/v1/revision_lifecycle.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -204,8 +204,10 @@ func (rs *RevisionStatus) PropagateAutoscalerStatus(ps *autoscalingv1alpha1.PodA
204204

205205
// Mark resource unavailable if we don't have a Service Name and the deployment is ready
206206
// This can happen when we have initial scale set to 0
207-
if rs.GetCondition(RevisionConditionResourcesAvailable).IsTrue() && ps.ServiceName == "" {
208-
rs.MarkResourcesAvailableUnknown(ReasonDeploying, "")
207+
if rs.GetCondition(RevisionConditionResourcesAvailable).IsTrue() {
208+
if ps.ServiceName == "" || !ps.IsScaleTargetInitialized() {
209+
rs.MarkResourcesAvailableUnknown(ReasonDeploying, "")
210+
}
209211
}
210212

211213
switch cond.Status {

pkg/apis/serving/v1/revision_lifecycle_test.go

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -584,6 +584,44 @@ func TestPropagateAutoscalerStatus(t *testing.T) {
584584
apistest.CheckConditionSucceeded(r, RevisionConditionResourcesAvailable, t)
585585
}
586586

587+
func TestPropagateAutoscalerStatus_ScaleTargetNotInitialized(t *testing.T) {
588+
r := &RevisionStatus{}
589+
r.InitializeConditions()
590+
apistest.CheckConditionOngoing(r, RevisionConditionReady, t)
591+
592+
// PodAutoscaler has no active condition, so we are just coming up.
593+
r.PropagateAutoscalerStatus(&autoscalingv1alpha1.PodAutoscalerStatus{
594+
Status: duckv1.Status{},
595+
})
596+
597+
apistest.CheckConditionOngoing(r, RevisionConditionActive, t)
598+
apistest.CheckConditionOngoing(r, RevisionConditionResourcesAvailable, t)
599+
600+
// Deployment is created we mark resources created
601+
r.MarkResourcesAvailableTrue()
602+
603+
// PodAutoscaler resources have been created but initial scale target
604+
// has not been acheived
605+
r.PropagateAutoscalerStatus(&autoscalingv1alpha1.PodAutoscalerStatus{
606+
ServiceName: "some-service",
607+
Status: duckv1.Status{
608+
Conditions: duckv1.Conditions{{
609+
Type: autoscalingv1alpha1.PodAutoscalerConditionReady,
610+
Status: corev1.ConditionUnknown,
611+
}, {
612+
Type: autoscalingv1alpha1.PodAutoscalerConditionScaleTargetInitialized,
613+
Status: corev1.ConditionUnknown,
614+
}, {
615+
Type: autoscalingv1alpha1.PodAutoscalerConditionSKSReady,
616+
Status: corev1.ConditionTrue,
617+
}},
618+
},
619+
})
620+
621+
// ResourcesAvailable should be reverted back to on-going
622+
apistest.CheckConditionOngoing(r, RevisionConditionResourcesAvailable, t)
623+
}
624+
587625
func TestPropagateAutoscalerStatus_NoOverridingResourcesAvailable(t *testing.T) {
588626
// Cases to test Ready condition
589627
// we fix ScaleTargetInitialized to True

pkg/reconciler/revision/table_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -282,6 +282,7 @@ func TestReconcile(t *testing.T) {
282282
WithRoutingState(v1.RoutingStateActive, fc),
283283
MarkRevisionReady, WithRevisionObservedGeneration(1)),
284284
pa("foo", "pa-not-ready",
285+
WithScaleTargetInitialized,
285286
WithPAStatusService("its-not-confidential"),
286287
WithBufferedTraffic,
287288
WithReachabilityReachable),

0 commit comments

Comments
 (0)