mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-16 07:13:53 +00:00
k8s.io/apiserver: apply storage object count tracker implicitly
This commit is contained in:
parent
08579e8a8a
commit
f351c6d1ec
@ -402,12 +402,13 @@ func buildGenericConfig(
|
|||||||
} else {
|
} else {
|
||||||
s.Etcd.StorageConfig.Transport.TracerProvider = oteltrace.NewNoopTracerProvider()
|
s.Etcd.StorageConfig.Transport.TracerProvider = oteltrace.NewNoopTracerProvider()
|
||||||
}
|
}
|
||||||
if lastErr = s.Etcd.Complete(genericConfig.StorageObjectCountTracker, genericConfig.DrainedNotify(), genericConfig.AddPostStartHook); lastErr != nil {
|
if lastErr = s.Etcd.Complete(genericConfig.DrainedNotify(), genericConfig.AddPostStartHook); lastErr != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
storageFactoryConfig := kubeapiserver.NewStorageFactoryConfig()
|
storageFactoryConfig := kubeapiserver.NewStorageFactoryConfig()
|
||||||
storageFactoryConfig.APIResourceConfig = genericConfig.MergedResourceConfig
|
storageFactoryConfig.APIResourceConfig = genericConfig.MergedResourceConfig
|
||||||
|
storageFactoryConfig.StorageConfig.StorageObjectCountTracker = genericConfig.StorageObjectCountTracker
|
||||||
storageFactory, lastErr = storageFactoryConfig.Complete(s.Etcd).New()
|
storageFactory, lastErr = storageFactoryConfig.Complete(s.Etcd).New()
|
||||||
if lastErr != nil {
|
if lastErr != nil {
|
||||||
return
|
return
|
||||||
|
@ -88,13 +88,13 @@ func setUp(t *testing.T) (*etcd3testing.EtcdTestServer, Config, *assert.Assertio
|
|||||||
}
|
}
|
||||||
|
|
||||||
storageFactoryConfig := kubeapiserver.NewStorageFactoryConfig()
|
storageFactoryConfig := kubeapiserver.NewStorageFactoryConfig()
|
||||||
|
storageConfig.StorageObjectCountTracker = config.GenericConfig.StorageObjectCountTracker
|
||||||
resourceEncoding := resourceconfig.MergeResourceEncodingConfigs(storageFactoryConfig.DefaultResourceEncoding, storageFactoryConfig.ResourceEncodingOverrides)
|
resourceEncoding := resourceconfig.MergeResourceEncodingConfigs(storageFactoryConfig.DefaultResourceEncoding, storageFactoryConfig.ResourceEncodingOverrides)
|
||||||
storageFactory := serverstorage.NewDefaultStorageFactory(*storageConfig, "application/vnd.kubernetes.protobuf", storageFactoryConfig.Serializer, resourceEncoding, DefaultAPIResourceConfigSource(), nil)
|
storageFactory := serverstorage.NewDefaultStorageFactory(*storageConfig, "application/vnd.kubernetes.protobuf", storageFactoryConfig.Serializer, resourceEncoding, DefaultAPIResourceConfigSource(), nil)
|
||||||
|
|
||||||
etcdOptions := options.NewEtcdOptions(storageConfig)
|
etcdOptions := options.NewEtcdOptions(storageConfig)
|
||||||
// unit tests don't need watch cache and it leaks lots of goroutines with etcd testing functions during unit tests
|
// unit tests don't need watch cache and it leaks lots of goroutines with etcd testing functions during unit tests
|
||||||
etcdOptions.EnableWatchCache = false
|
etcdOptions.EnableWatchCache = false
|
||||||
if err := etcdOptions.Complete(config.GenericConfig.StorageObjectCountTracker, config.GenericConfig.DrainedNotify(), config.GenericConfig.AddPostStartHook); err != nil {
|
if err := etcdOptions.Complete(config.GenericConfig.DrainedNotify(), config.GenericConfig.AddPostStartHook); err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
err := etcdOptions.ApplyWithStorageFactoryTo(storageFactory, config.GenericConfig)
|
err := etcdOptions.ApplyWithStorageFactoryTo(storageFactory, config.GenericConfig)
|
||||||
|
@ -38,7 +38,6 @@ import (
|
|||||||
serverstorage "k8s.io/apiserver/pkg/server/storage"
|
serverstorage "k8s.io/apiserver/pkg/server/storage"
|
||||||
"k8s.io/apiserver/pkg/storage/storagebackend"
|
"k8s.io/apiserver/pkg/storage/storagebackend"
|
||||||
storagefactory "k8s.io/apiserver/pkg/storage/storagebackend/factory"
|
storagefactory "k8s.io/apiserver/pkg/storage/storagebackend/factory"
|
||||||
flowcontrolrequest "k8s.io/apiserver/pkg/util/flowcontrol/request"
|
|
||||||
"k8s.io/klog/v2"
|
"k8s.io/klog/v2"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -216,7 +215,6 @@ func (s *EtcdOptions) AddFlags(fs *pflag.FlagSet) {
|
|||||||
// up objects that must be created once and reused across multiple invocations such as storage transformers.
|
// up objects that must be created once and reused across multiple invocations such as storage transformers.
|
||||||
// This method mutates the receiver (EtcdOptions). It must never mutate the inputs.
|
// This method mutates the receiver (EtcdOptions). It must never mutate the inputs.
|
||||||
func (s *EtcdOptions) Complete(
|
func (s *EtcdOptions) Complete(
|
||||||
storageObjectCountTracker flowcontrolrequest.StorageObjectCountTracker,
|
|
||||||
stopCh <-chan struct{},
|
stopCh <-chan struct{},
|
||||||
addPostStartHook func(name string, hook server.PostStartHookFunc) error,
|
addPostStartHook func(name string, hook server.PostStartHookFunc) error,
|
||||||
) error {
|
) error {
|
||||||
@ -283,8 +281,6 @@ func (s *EtcdOptions) Complete(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
s.StorageConfig.StorageObjectCountTracker = storageObjectCountTracker
|
|
||||||
|
|
||||||
s.complete = true
|
s.complete = true
|
||||||
|
|
||||||
// nolint:govet // The only code path where closeTransformers does not get called is when it gets stored in dynamicTransformers.
|
// nolint:govet // The only code path where closeTransformers does not get called is when it gets stored in dynamicTransformers.
|
||||||
@ -297,7 +293,12 @@ func (s *EtcdOptions) ApplyTo(c *server.Config) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
return s.ApplyWithStorageFactoryTo(&SimpleStorageFactory{StorageConfig: s.StorageConfig}, c)
|
storageConfig := s.StorageConfig
|
||||||
|
if storageConfig.StorageObjectCountTracker == nil {
|
||||||
|
storageConfig.StorageObjectCountTracker = c.StorageObjectCountTracker
|
||||||
|
}
|
||||||
|
|
||||||
|
return s.ApplyWithStorageFactoryTo(&SimpleStorageFactory{StorageConfig: storageConfig}, c)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ApplyWithStorageFactoryTo mutates the provided server.Config. It must never mutate the receiver (EtcdOptions).
|
// ApplyWithStorageFactoryTo mutates the provided server.Config. It must never mutate the receiver (EtcdOptions).
|
||||||
|
@ -306,7 +306,7 @@ func TestKMSHealthzEndpoint(t *testing.T) {
|
|||||||
EncryptionProviderConfigAutomaticReload: tc.reload,
|
EncryptionProviderConfigAutomaticReload: tc.reload,
|
||||||
SkipHealthEndpoints: tc.skipHealth,
|
SkipHealthEndpoints: tc.skipHealth,
|
||||||
}
|
}
|
||||||
if err := etcdOptions.Complete(serverConfig.StorageObjectCountTracker, serverConfig.DrainedNotify(), serverConfig.AddPostStartHook); err != nil {
|
if err := etcdOptions.Complete(serverConfig.DrainedNotify(), serverConfig.AddPostStartHook); err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
if err := etcdOptions.ApplyTo(serverConfig); err != nil {
|
if err := etcdOptions.ApplyTo(serverConfig); err != nil {
|
||||||
@ -345,7 +345,7 @@ func TestReadinessCheck(t *testing.T) {
|
|||||||
t.Run(tc.name, func(t *testing.T) {
|
t.Run(tc.name, func(t *testing.T) {
|
||||||
serverConfig := server.NewConfig(codecs)
|
serverConfig := server.NewConfig(codecs)
|
||||||
etcdOptions := &EtcdOptions{SkipHealthEndpoints: tc.skipHealth}
|
etcdOptions := &EtcdOptions{SkipHealthEndpoints: tc.skipHealth}
|
||||||
if err := etcdOptions.Complete(serverConfig.StorageObjectCountTracker, serverConfig.DrainedNotify(), serverConfig.AddPostStartHook); err != nil {
|
if err := etcdOptions.Complete(serverConfig.DrainedNotify(), serverConfig.AddPostStartHook); err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
if err := etcdOptions.ApplyTo(serverConfig); err != nil {
|
if err := etcdOptions.ApplyTo(serverConfig); err != nil {
|
||||||
|
@ -101,7 +101,7 @@ func (o *RecommendedOptions) AddFlags(fs *pflag.FlagSet) {
|
|||||||
// ApplyTo adds RecommendedOptions to the server configuration.
|
// ApplyTo adds RecommendedOptions to the server configuration.
|
||||||
// pluginInitializers can be empty, it is only need for additional initializers.
|
// pluginInitializers can be empty, it is only need for additional initializers.
|
||||||
func (o *RecommendedOptions) ApplyTo(config *server.RecommendedConfig) error {
|
func (o *RecommendedOptions) ApplyTo(config *server.RecommendedConfig) error {
|
||||||
if err := o.Etcd.Complete(config.Config.StorageObjectCountTracker, config.Config.DrainedNotify(), config.Config.AddPostStartHook); err != nil {
|
if err := o.Etcd.Complete(config.Config.DrainedNotify(), config.Config.AddPostStartHook); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if err := o.Etcd.ApplyTo(&config.Config); err != nil {
|
if err := o.Etcd.ApplyTo(&config.Config); err != nil {
|
||||||
|
Loading…
Reference in New Issue
Block a user