From 70fb342c481f51df6ff7d27ba16dbedc3cb6534a Mon Sep 17 00:00:00 2001 From: chenk008 Date: Mon, 8 Apr 2024 11:09:27 +0800 Subject: [PATCH] Fix: StorageObjectCountTracker is nil, apf estimator got ObjectCountNotFoundErr Kubernetes-commit: 4abc2b387b188d694e369e05c08effce9d23e7e7 --- pkg/server/options/etcd.go | 2 +- pkg/server/options/etcd_test.go | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/pkg/server/options/etcd.go b/pkg/server/options/etcd.go index a1fc3168c..a3516cf88 100644 --- a/pkg/server/options/etcd.go +++ b/pkg/server/options/etcd.go @@ -396,7 +396,7 @@ func (f *StorageFactoryRestOptionsFactory) GetRESTOptions(resource schema.GroupR EnableGarbageCollection: f.Options.EnableGarbageCollection, ResourcePrefix: f.StorageFactory.ResourcePrefix(resource), CountMetricPollPeriod: f.Options.StorageConfig.CountMetricPollPeriod, - StorageObjectCountTracker: f.Options.StorageConfig.StorageObjectCountTracker, + StorageObjectCountTracker: storageConfig.StorageObjectCountTracker, } if f.Options.EnableWatchCache { diff --git a/pkg/server/options/etcd_test.go b/pkg/server/options/etcd_test.go index f24077a34..f5bf81f25 100644 --- a/pkg/server/options/etcd_test.go +++ b/pkg/server/options/etcd_test.go @@ -430,3 +430,18 @@ func healthChecksAreEqual(t *testing.T, want []string, healthChecks []healthz.He t.Errorf("%s checks are not equal, missing=%q, extra=%q", checkerType, wantSet.Difference(gotSet).List(), gotSet.Difference(wantSet).List()) } } + +func TestRestOptionsStorageObjectCountTracker(t *testing.T) { + serverConfig := server.NewConfig(codecs) + etcdOptions := &EtcdOptions{} + if err := etcdOptions.ApplyTo(serverConfig); err != nil { + t.Fatalf("Failed to apply etcd options error: %v", err) + } + restOptions, err := serverConfig.RESTOptionsGetter.GetRESTOptions(schema.GroupResource{Group: "", Resource: ""}) + if err != nil { + t.Fatal(err) + } + if restOptions.StorageConfig.StorageObjectCountTracker != serverConfig.StorageObjectCountTracker { + t.Errorf("There are different StorageObjectCountTracker in restOptions and serverConfig") + } +}