mirror of
https://github.com/k3s-io/kubernetes.git
synced 2026-02-22 07:03:28 +00:00
Disable SchedulerAsyncAPICalls feature gate due to a known regression
This commit is contained in:
@@ -1679,7 +1679,7 @@ var defaultVersionedKubernetesFeatureGates = map[featuregate.Feature]featuregate
|
||||
},
|
||||
|
||||
SchedulerAsyncAPICalls: {
|
||||
{Version: version.MustParse("1.34"), Default: true, PreRelease: featuregate.Beta},
|
||||
{Version: version.MustParse("1.34"), Default: false, PreRelease: featuregate.Beta},
|
||||
},
|
||||
|
||||
SchedulerAsyncPreemption: {
|
||||
|
||||
@@ -22,19 +22,21 @@ import (
|
||||
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/types"
|
||||
utilfeature "k8s.io/apiserver/pkg/util/feature"
|
||||
clientset "k8s.io/client-go/kubernetes"
|
||||
"k8s.io/client-go/kubernetes/fake"
|
||||
featuregatetesting "k8s.io/component-base/featuregate/testing"
|
||||
"k8s.io/component-base/metrics/testutil"
|
||||
"k8s.io/klog/v2/ktesting"
|
||||
fwk "k8s.io/kube-scheduler/framework"
|
||||
"k8s.io/kubernetes/pkg/features"
|
||||
"k8s.io/kubernetes/pkg/scheduler/metrics"
|
||||
)
|
||||
|
||||
func init() {
|
||||
func registerAndResetMetrics(t *testing.T) {
|
||||
featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.SchedulerAsyncAPICalls, true)
|
||||
metrics.Register()
|
||||
}
|
||||
|
||||
func resetMetrics() {
|
||||
metrics.AsyncAPICallsTotal.Reset()
|
||||
metrics.AsyncAPICallDuration.Reset()
|
||||
metrics.AsyncAPIPendingCalls.Reset()
|
||||
@@ -100,7 +102,7 @@ func (mac *mockAPICall) IsNoOp() bool {
|
||||
|
||||
func TestAPIDispatcherLifecycle(t *testing.T) {
|
||||
// Reset all async API metrics
|
||||
resetMetrics()
|
||||
registerAndResetMetrics(t)
|
||||
|
||||
logger, _ := ktesting.NewTestContext(t)
|
||||
|
||||
|
||||
@@ -106,7 +106,7 @@ func TestCallQueueAdd(t *testing.T) {
|
||||
uid2 := types.UID("uid2")
|
||||
|
||||
t.Run("First call is added without collision", func(t *testing.T) {
|
||||
resetMetrics()
|
||||
registerAndResetMetrics(t)
|
||||
|
||||
cq := newCallQueue(mockRelevances)
|
||||
call := &queuedAPICall{
|
||||
@@ -124,7 +124,7 @@ func TestCallQueueAdd(t *testing.T) {
|
||||
})
|
||||
|
||||
t.Run("No-op call is skipped", func(t *testing.T) {
|
||||
resetMetrics()
|
||||
registerAndResetMetrics(t)
|
||||
|
||||
cq := newCallQueue(mockRelevances)
|
||||
onFinishCh := make(chan error, 1)
|
||||
@@ -149,7 +149,7 @@ func TestCallQueueAdd(t *testing.T) {
|
||||
})
|
||||
|
||||
t.Run("Two calls for different objects don't collide", func(t *testing.T) {
|
||||
resetMetrics()
|
||||
registerAndResetMetrics(t)
|
||||
|
||||
cq := newCallQueue(mockRelevances)
|
||||
call1 := &queuedAPICall{
|
||||
@@ -176,7 +176,7 @@ func TestCallQueueAdd(t *testing.T) {
|
||||
})
|
||||
|
||||
t.Run("New call overwrites less relevant call", func(t *testing.T) {
|
||||
resetMetrics()
|
||||
registerAndResetMetrics(t)
|
||||
|
||||
cq := newCallQueue(mockRelevances)
|
||||
onFinishCh := make(chan error, 1)
|
||||
@@ -206,7 +206,7 @@ func TestCallQueueAdd(t *testing.T) {
|
||||
})
|
||||
|
||||
t.Run("New call is skipped if less relevant", func(t *testing.T) {
|
||||
resetMetrics()
|
||||
registerAndResetMetrics(t)
|
||||
|
||||
cq := newCallQueue(mockRelevances)
|
||||
onFinishCh := make(chan error, 1)
|
||||
@@ -237,7 +237,7 @@ func TestCallQueueAdd(t *testing.T) {
|
||||
})
|
||||
|
||||
t.Run("New call merges with old call and skips if no-op", func(t *testing.T) {
|
||||
resetMetrics()
|
||||
registerAndResetMetrics(t)
|
||||
|
||||
cq := newCallQueue(mockRelevances)
|
||||
onFinishCh1 := make(chan error, 1)
|
||||
@@ -308,7 +308,7 @@ func TestCallQueuePop(t *testing.T) {
|
||||
uid2 := types.UID("uid2")
|
||||
|
||||
t.Run("Calls are popped from the queue in FIFO order", func(t *testing.T) {
|
||||
resetMetrics()
|
||||
registerAndResetMetrics(t)
|
||||
|
||||
cq := newCallQueue(mockRelevances)
|
||||
call1 := &queuedAPICall{
|
||||
@@ -395,7 +395,7 @@ func TestCallQueueFinalize(t *testing.T) {
|
||||
uid := types.UID("uid")
|
||||
|
||||
t.Run("Call details are cleared if there is no waiting call", func(t *testing.T) {
|
||||
resetMetrics()
|
||||
registerAndResetMetrics(t)
|
||||
|
||||
cq := newCallQueue(mockRelevances)
|
||||
call := &queuedAPICall{
|
||||
@@ -420,7 +420,7 @@ func TestCallQueueFinalize(t *testing.T) {
|
||||
})
|
||||
|
||||
t.Run("UID is re-queued if a new call arrived while one was in-flight", func(t *testing.T) {
|
||||
resetMetrics()
|
||||
registerAndResetMetrics(t)
|
||||
|
||||
cq := newCallQueue(mockRelevances)
|
||||
call1 := &queuedAPICall{
|
||||
@@ -462,7 +462,7 @@ func TestCallQueueSyncObject(t *testing.T) {
|
||||
uid2 := types.UID("uid2")
|
||||
|
||||
t.Run("Object is synced with pending call details", func(t *testing.T) {
|
||||
resetMetrics()
|
||||
registerAndResetMetrics(t)
|
||||
|
||||
cq := newCallQueue(mockRelevances)
|
||||
obj := &metav1.ObjectMeta{
|
||||
@@ -497,7 +497,7 @@ func TestCallQueueSyncObject(t *testing.T) {
|
||||
})
|
||||
|
||||
t.Run("Pending call is canceled if sync results in no-op", func(t *testing.T) {
|
||||
resetMetrics()
|
||||
registerAndResetMetrics(t)
|
||||
|
||||
cq := newCallQueue(mockRelevances)
|
||||
obj := &metav1.ObjectMeta{UID: uid1}
|
||||
|
||||
@@ -1417,7 +1417,7 @@
|
||||
version: "1.29"
|
||||
- name: SchedulerAsyncAPICalls
|
||||
versionedSpecs:
|
||||
- default: true
|
||||
- default: false
|
||||
lockToDefault: false
|
||||
preRelease: Beta
|
||||
version: "1.34"
|
||||
|
||||
Reference in New Issue
Block a user