Skip to content

Commit d972820

Browse files
committed
check sidecar featuregate in getFinishedTime
1 parent 3a2a500 commit d972820

File tree

2 files changed

+19
-10
lines changed

2 files changed

+19
-10
lines changed

pkg/controller/job/backoff_utils.go

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,11 @@ import (
2323

2424
v1 "k8s.io/api/core/v1"
2525
"k8s.io/apimachinery/pkg/util/sets"
26+
utilfeature "k8s.io/apiserver/pkg/util/feature"
2627
"k8s.io/client-go/tools/cache"
2728
"k8s.io/klog/v2"
2829
apipod "k8s.io/kubernetes/pkg/api/v1/pod"
30+
"k8s.io/kubernetes/pkg/features"
2931
"k8s.io/utils/clock"
3032
"k8s.io/utils/ptr"
3133
)
@@ -185,18 +187,21 @@ func getFinishedTime(p *v1.Pod) time.Time {
185187

186188
func getFinishTimeFromContainers(p *v1.Pod) *time.Time {
187189
finishTime := latestFinishTime(nil, p.Status.ContainerStatuses, nil)
188-
// We need to check InitContainerStatuses here also,
189-
// because with the sidecar (restartable init) containers,
190-
// sidecar containers will always finish later than regular containers.
191-
names := sets.New[string]()
192-
for _, c := range p.Spec.InitContainers {
193-
if c.RestartPolicy != nil && *c.RestartPolicy == v1.ContainerRestartPolicyAlways {
194-
names.Insert(c.Name)
190+
if utilfeature.DefaultFeatureGate.Enabled(features.SidecarContainers) {
191+
// We need to check InitContainerStatuses here also,
192+
// because with the sidecar (restartable init) containers,
193+
// sidecar containers will always finish later than regular containers.
194+
names := sets.New[string]()
195+
for _, c := range p.Spec.InitContainers {
196+
if c.RestartPolicy != nil && *c.RestartPolicy == v1.ContainerRestartPolicyAlways {
197+
names.Insert(c.Name)
198+
}
195199
}
200+
finishTime = latestFinishTime(finishTime, p.Status.InitContainerStatuses, func(status v1.ContainerStatus) bool {
201+
return names.Has(status.Name)
202+
})
196203
}
197-
return latestFinishTime(finishTime, p.Status.InitContainerStatuses, func(status v1.ContainerStatus) bool {
198-
return names.Has(status.Name)
199-
})
204+
return finishTime
200205
}
201206

202207
func latestFinishTime(prevFinishTime *time.Time, cs []v1.ContainerStatus, check func(status v1.ContainerStatus) bool) *time.Time {

pkg/controller/job/backoff_utils_test.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,10 @@ import (
2323
"github.com/google/go-cmp/cmp"
2424
v1 "k8s.io/api/core/v1"
2525
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
26+
utilfeature "k8s.io/apiserver/pkg/util/feature"
27+
featuregatetesting "k8s.io/component-base/featuregate/testing"
2628
"k8s.io/klog/v2/ktesting"
29+
"k8s.io/kubernetes/pkg/features"
2730
clocktesting "k8s.io/utils/clock/testing"
2831
"k8s.io/utils/ptr"
2932
)
@@ -200,6 +203,7 @@ func TestNewBackoffRecord(t *testing.T) {
200203
}
201204

202205
func TestGetFinishedTime(t *testing.T) {
206+
featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.SidecarContainers, true)
203207
defaultTestTime := time.Date(2009, time.November, 10, 23, 0, 0, 0, time.UTC)
204208
defaultTestTimeMinus30s := defaultTestTime.Add(-30 * time.Second)
205209
containerRestartPolicyAlways := v1.ContainerRestartPolicyAlways

0 commit comments

Comments
 (0)