Skip to content

Commit 7a8c89b

Browse files
authored
Revert "add initialize conditions to MakePA to avoid potential race conditions (#16037)" (#16075)
This reverts commit 12777f6.
1 parent 34ddcaf commit 7a8c89b

File tree

6 files changed

+13
-70
lines changed

6 files changed

+13
-70
lines changed

config/core/300-resources/podautoscaler.yaml

Lines changed: 3 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -125,28 +125,9 @@ spec:
125125
status:
126126
description: Status communicates the observed state of the PodAutoscaler (from the controller).
127127
type: object
128-
default:
129-
conditions:
130-
- lastTransitionTime: "1970-01-01T00:00:00Z"
131-
message: Waiting for controller
132-
reason: Pending
133-
status: Unknown
134-
type: Active
135-
- lastTransitionTime: "1970-01-01T00:00:00Z"
136-
message: Waiting for controller
137-
reason: Pending
138-
status: Unknown
139-
type: Ready
140-
- lastTransitionTime: "1970-01-01T00:00:00Z"
141-
message: Waiting for controller
142-
reason: Pending
143-
status: Unknown
144-
type: SKSReady
145-
- lastTransitionTime: "1970-01-01T00:00:00Z"
146-
message: Waiting for controller
147-
reason: Pending
148-
status: Unknown
149-
type: ScaleTargetInitialized
128+
required:
129+
- metricsServiceName
130+
- serviceName
150131
properties:
151132
actualScale:
152133
description: ActualScale shows the actual number of replicas for the revision.

docs/serving-api.md

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -459,7 +459,6 @@ string
459459
</em>
460460
</td>
461461
<td>
462-
<em>(Optional)</em>
463462
<p>ServiceName is the K8s Service name that serves the revision, scaled by this PA.
464463
The service is created and owned by the ServerlessService object owned by this PA.</p>
465464
</td>
@@ -472,7 +471,6 @@ string
472471
</em>
473472
</td>
474473
<td>
475-
<em>(Optional)</em>
476474
<p>MetricsServiceName is the K8s Service name that provides revision metrics.
477475
The service is managed by the PA object.</p>
478476
</td>

pkg/apis/autoscaling/v1alpha1/pa_types.go

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -112,17 +112,14 @@ const (
112112

113113
// PodAutoscalerStatus communicates the observed state of the PodAutoscaler (from the controller).
114114
type PodAutoscalerStatus struct {
115-
// +kubebuilder:default={"conditions": {{"type":"Active", "status": "Unknown", "reason": "Pending", "message": "Waiting for controller", "lastTransitionTime": "1970-01-01T00:00:00Z"}, {"type":"Ready", "status": "Unknown", "reason": "Pending", "message": "Waiting for controller", "lastTransitionTime": "1970-01-01T00:00:00Z"}, {"type":"SKSReady", "status": "Unknown", "reason": "Pending", "message": "Waiting for controller", "lastTransitionTime": "1970-01-01T00:00:00Z"}, {"type":"ScaleTargetInitialized", "status": "Unknown", "reason": "Pending", "message": "Waiting for controller", "lastTransitionTime": "1970-01-01T00:00:00Z"}}}
116115
duckv1.Status `json:",inline"`
117116

118117
// ServiceName is the K8s Service name that serves the revision, scaled by this PA.
119118
// The service is created and owned by the ServerlessService object owned by this PA.
120-
// +optional
121119
ServiceName string `json:"serviceName"`
122120

123121
// MetricsServiceName is the K8s Service name that provides revision metrics.
124122
// The service is managed by the PA object.
125-
// +optional
126123
MetricsServiceName string `json:"metricsServiceName"`
127124

128125
// DesiredScale shows the current desired number of replicas for the revision.

pkg/apis/serving/v1/revision_lifecycle_test.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -726,7 +726,6 @@ func TestPropagateAutoscalerStatusReplicas(t *testing.T) {
726726

727727
for _, tc := range testCases {
728728
t.Run(tc.name, func(t *testing.T) {
729-
tc.ps.InitializeConditions()
730729
r.PropagateAutoscalerStatus(&tc.ps)
731730

732731
if !cmp.Equal(tc.wantActualReplicas, r.ActualReplicas) {

pkg/reconciler/revision/table_test.go

Lines changed: 10 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ func TestReconcile(t *testing.T) {
9292
WantStatusUpdates: []clientgotesting.UpdateActionImpl{{
9393
Object: Revision("foo", "first-reconcile",
9494
// The first reconciliation Populates the following status properties.
95-
WithLogURL, withRevisionConditionsGivenPADefault, MarkDeploying("Deploying"),
95+
WithLogURL, allUnknownConditions, MarkDeploying("Deploying"),
9696
withDefaultContainerStatuses(), WithRevisionObservedGeneration(1)),
9797
}},
9898
Key: "foo/first-reconcile",
@@ -256,7 +256,7 @@ func TestReconcile(t *testing.T) {
256256
Name: "pa is ready",
257257
Objects: []runtime.Object{
258258
Revision("foo", "pa-ready",
259-
WithLogURL, withRevisionConditionsGivenPADefault),
259+
WithLogURL, allUnknownConditions),
260260
pa("foo", "pa-ready", WithPASKSReady, WithTraffic,
261261
WithScaleTargetInitialized, WithPAStatusService("new-stuff"), WithReachabilityUnknown),
262262
deploy(t, "foo", "pa-ready"),
@@ -340,7 +340,7 @@ func TestReconcile(t *testing.T) {
340340
},
341341
WantStatusUpdates: []clientgotesting.UpdateActionImpl{{
342342
Object: Revision("foo", "pa-inactive",
343-
WithLogURL, withDefaultContainerStatuses(), MarkContainerHealthyUnknown(""),
343+
WithLogURL, withDefaultContainerStatuses(), MarkDeploying(""),
344344
// When we reconcile an "all ready" revision when the PA
345345
// is inactive, we should see the following change.
346346
MarkInactive("NoTraffic", "This thing is inactive."), WithRevisionObservedGeneration(1),
@@ -351,7 +351,7 @@ func TestReconcile(t *testing.T) {
351351
}, {
352352
Name: "pa is not ready with initial scale zero, but ServiceName still empty, so not marking resources available false",
353353
Objects: []runtime.Object{
354-
Revision("foo", "pa-inactive", withRevisionConditionsGivenPADefault,
354+
Revision("foo", "pa-inactive", allUnknownConditions,
355355
WithLogURL,
356356
MarkDeploying(v1.ReasonDeploying),
357357
WithRevisionObservedGeneration(1)),
@@ -363,7 +363,7 @@ func TestReconcile(t *testing.T) {
363363
WantStatusUpdates: []clientgotesting.UpdateActionImpl{{
364364
// We should not mark resources unavailable if ServiceName is empty
365365
Object: Revision("foo", "pa-inactive",
366-
WithLogURL, withDefaultContainerStatuses(), withRevisionConditionsGivenPADefault,
366+
WithLogURL, withDefaultContainerStatuses(), allUnknownConditions,
367367
MarkInactive("NoTraffic", "This thing is inactive."),
368368
MarkDeploying(v1.ReasonDeploying),
369369
WithRevisionObservedGeneration(1)),
@@ -403,7 +403,7 @@ func TestReconcile(t *testing.T) {
403403
// Protocol type is the only thing that can be changed on PA
404404
Objects: []runtime.Object{
405405
Revision("foo", "fix-mutated-pa",
406-
withRevisionConditionsGivenPADefault,
406+
allUnknownConditions,
407407
WithLogURL, MarkRevisionReady,
408408
WithRoutingState(v1.RoutingStateActive, fc)),
409409
pa("foo", "fix-mutated-pa", WithProtocolType(networking.ProtocolH2C),
@@ -414,7 +414,7 @@ func TestReconcile(t *testing.T) {
414414
},
415415
WantStatusUpdates: []clientgotesting.UpdateActionImpl{{
416416
Object: Revision("foo", "fix-mutated-pa",
417-
WithLogURL, withRevisionConditionsGivenPADefault,
417+
WithLogURL, allUnknownConditions,
418418
// When our reconciliation has to change the service
419419
// we should see the following mutations to status.
420420

@@ -693,7 +693,7 @@ func TestReconcile(t *testing.T) {
693693
WantStatusUpdates: []clientgotesting.UpdateActionImpl{{
694694
Object: Revision("foo", "image-pull-secrets",
695695
WithImagePullSecrets("foo-secret"),
696-
WithLogURL, withRevisionConditionsGivenPADefault, MarkDeploying("Deploying"), withDefaultContainerStatuses(), WithRevisionObservedGeneration(1)),
696+
WithLogURL, allUnknownConditions, MarkDeploying("Deploying"), withDefaultContainerStatuses(), WithRevisionObservedGeneration(1)),
697697
}},
698698
Key: "foo/image-pull-secrets",
699699
}, {
@@ -714,7 +714,7 @@ func TestReconcile(t *testing.T) {
714714
WantStatusUpdates: []clientgotesting.UpdateActionImpl{{
715715
Object: Revision("foo", "first-reconcile", WithRevisionInitContainers(),
716716
// The first reconciliation Populates the following status properties.
717-
WithLogURL, withRevisionConditionsGivenPADefault, MarkDeploying("Deploying"),
717+
WithLogURL, allUnknownConditions, MarkDeploying("Deploying"),
718718
withDefaultContainerStatuses(), withInitContainerStatuses(), WithRevisionObservedGeneration(1)),
719719
}},
720720
Key: "foo/first-reconcile",
@@ -736,7 +736,7 @@ func TestReconcile(t *testing.T) {
736736
WantStatusUpdates: []clientgotesting.UpdateActionImpl{{
737737
Object: Revision("foo", "first-reconcile",
738738
// The first reconciliation Populates the following status properties.
739-
WithLogURL, withRevisionConditionsGivenPADefault, MarkDeploying("Deploying"),
739+
WithLogURL, allUnknownConditions, MarkDeploying("Deploying"),
740740
withDefaultContainerStatuses(), WithRevisionObservedGeneration(1), WithRevisionPVC()),
741741
}},
742742
Key: "foo/first-reconcile",
@@ -905,15 +905,6 @@ func allUnknownConditions(r *v1.Revision) {
905905
MarkActivating("Deploying", "")(r)
906906
}
907907

908-
// Revision Unknown conditions but with the generated default PA conditions
909-
// taken into consideration
910-
func withRevisionConditionsGivenPADefault(r *v1.Revision) {
911-
WithInitRevConditions(r)
912-
r.Status.MarkActiveUnknown("Pending", "Waiting for controller")
913-
r.Status.MarkResourcesAvailableUnknown("Pending", "Waiting for controller")
914-
r.Status.MarkContainerHealthyUnknown("Pending", "Waiting for controller")
915-
}
916-
917908
type configOption func(*config.Config)
918909

919910
type deploymentOption func(*appsv1.Deployment)

pkg/reconciler/testing/v1/factory.go

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ import (
2525
fakenetworkingclient "knative.dev/networking/pkg/client/injection/client/fake"
2626
fakekubeclient "knative.dev/pkg/client/injection/kube/client/fake"
2727
fakedynamicclient "knative.dev/pkg/injection/clients/dynamicclient/fake"
28-
autoscalingv1alpha1 "knative.dev/serving/pkg/apis/autoscaling/v1alpha1"
2928
v1 "knative.dev/serving/pkg/apis/serving/v1"
3029
fakeservingclient "knative.dev/serving/pkg/client/injection/client/fake"
3130

@@ -96,28 +95,6 @@ func MakeFactory(ctor Ctor) rtesting.Factory {
9695
return false, nil, nil
9796
},
9897
)
99-
100-
client.PrependReactor("create", "podautoscalers", func(action ktesting.Action) (handled bool, ret runtime.Object, err error) {
101-
if createAction, ok := action.(ktesting.CreateAction); ok {
102-
if pa, ok := createAction.GetObject().(*autoscalingv1alpha1.PodAutoscaler); ok {
103-
// Initialize conditions first
104-
pa.Status.InitializeConditions()
105-
106-
// Set all conditions to match kubebuilder defaults: status="Unknown", reason="Deploying"
107-
// This matches the behavior defined in the +kubebuilder:default annotation
108-
condSet := pa.GetConditionSet()
109-
manager := condSet.Manage(&pa.Status)
110-
111-
// Set each condition to Unknown with "Deploying" reason to match kubebuilder defaults
112-
manager.MarkUnknown(autoscalingv1alpha1.PodAutoscalerConditionActive, "Pending", "Waiting for controller")
113-
manager.MarkUnknown(autoscalingv1alpha1.PodAutoscalerConditionReady, "Pending", "Waiting for controller")
114-
manager.MarkUnknown(autoscalingv1alpha1.PodAutoscalerConditionSKSReady, "Pending", "Waiting for controller")
115-
manager.MarkUnknown(autoscalingv1alpha1.PodAutoscalerConditionScaleTargetInitialized, "Pending", "Waiting for controller")
116-
}
117-
}
118-
return false, nil, nil
119-
})
120-
12198
// This is needed by the Configuration controller tests, which
12299
// use GenerateName to produce Revisions.
123100
rtesting.PrependGenerateNameReactor(&client.Fake)

0 commit comments

Comments
 (0)