From 0e9cdf76ad2e21166dd5b72f7b0c2450d648c906 Mon Sep 17 00:00:00 2001 From: Jordan Liggitt Date: Fri, 1 Mar 2024 19:29:39 -0500 Subject: [PATCH] Fix discovery v2 conversion registration data race --- .../k8s.io/apiserver/pkg/apis/apidiscovery/v2/fuzzer_test.go | 3 ++- .../apiserver/pkg/endpoints/discovery/aggregated/handler.go | 4 ++-- .../pkg/endpoints/discovery/aggregated/handler_test.go | 5 +++-- .../kube-aggregator/pkg/apiserver/handler_discovery.go | 4 ++-- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/staging/src/k8s.io/apiserver/pkg/apis/apidiscovery/v2/fuzzer_test.go b/staging/src/k8s.io/apiserver/pkg/apis/apidiscovery/v2/fuzzer_test.go index add2deeebe9..44bc038d92f 100644 --- a/staging/src/k8s.io/apiserver/pkg/apis/apidiscovery/v2/fuzzer_test.go +++ b/staging/src/k8s.io/apiserver/pkg/apis/apidiscovery/v2/fuzzer_test.go @@ -37,9 +37,10 @@ func TestConversionRoundTrip(t *testing.T) { scheme := runtime.NewScheme() err := v2beta1scheme.AddToScheme(scheme) require.NoError(t, err) - v2scheme.SchemeBuilder.Register(v2scheme.RegisterConversions) err = v2scheme.AddToScheme(scheme) require.NoError(t, err) + err = v2scheme.RegisterConversions(scheme) + require.NoError(t, err) fuzzer := fuzz.NewWithSeed(2374375) diff --git a/staging/src/k8s.io/apiserver/pkg/endpoints/discovery/aggregated/handler.go b/staging/src/k8s.io/apiserver/pkg/endpoints/discovery/aggregated/handler.go index f4676d29061..338be85a287 100644 --- a/staging/src/k8s.io/apiserver/pkg/endpoints/discovery/aggregated/handler.go +++ b/staging/src/k8s.io/apiserver/pkg/endpoints/discovery/aggregated/handler.go @@ -151,10 +151,10 @@ type priorityInfo struct { func NewResourceManager(path string) ResourceManager { scheme := runtime.NewScheme() - // Register conversion for apidiscovery - apidiscoveryv2.SchemeBuilder.Register(apidiscoveryv2conversion.RegisterConversions) utilruntime.Must(apidiscoveryv2.AddToScheme(scheme)) utilruntime.Must(apidiscoveryv2beta1.AddToScheme(scheme)) + // Register conversion for apidiscovery + utilruntime.Must(apidiscoveryv2conversion.RegisterConversions(scheme)) codecs := serializer.NewCodecFactory(scheme) rdm := &resourceDiscoveryManager{ diff --git a/staging/src/k8s.io/apiserver/pkg/endpoints/discovery/aggregated/handler_test.go b/staging/src/k8s.io/apiserver/pkg/endpoints/discovery/aggregated/handler_test.go index 2a41e4a93f0..354620f816a 100644 --- a/staging/src/k8s.io/apiserver/pkg/endpoints/discovery/aggregated/handler_test.go +++ b/staging/src/k8s.io/apiserver/pkg/endpoints/discovery/aggregated/handler_test.go @@ -32,6 +32,7 @@ import ( fuzz "github.com/google/gofuzz" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + apidiscoveryv2 "k8s.io/api/apidiscovery/v2" apidiscoveryv2beta1 "k8s.io/api/apidiscovery/v2beta1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -50,10 +51,10 @@ var codecs = runtimeserializer.NewCodecFactory(scheme) const discoveryPath = "/apis" func init() { - // Register conversion for apidiscovery - apidiscoveryv2.SchemeBuilder.Register(apidiscoveryv2conversion.RegisterConversions) utilruntime.Must(apidiscoveryv2.AddToScheme(scheme)) utilruntime.Must(apidiscoveryv2beta1.AddToScheme(scheme)) + // Register conversion for apidiscovery + utilruntime.Must(apidiscoveryv2conversion.RegisterConversions(scheme)) codecs = runtimeserializer.NewCodecFactory(scheme) } diff --git a/staging/src/k8s.io/kube-aggregator/pkg/apiserver/handler_discovery.go b/staging/src/k8s.io/kube-aggregator/pkg/apiserver/handler_discovery.go index 5e2f4f93c4b..c65454e7e54 100644 --- a/staging/src/k8s.io/kube-aggregator/pkg/apiserver/handler_discovery.go +++ b/staging/src/k8s.io/kube-aggregator/pkg/apiserver/handler_discovery.go @@ -187,10 +187,10 @@ func NewDiscoveryManager( target discoveryendpoint.ResourceManager, ) DiscoveryAggregationController { discoveryScheme := runtime.NewScheme() - // Register conversion for apidiscovery - apidiscoveryv2.SchemeBuilder.Register(apidiscoveryv2conversion.RegisterConversions) utilruntime.Must(apidiscoveryv2.AddToScheme(discoveryScheme)) utilruntime.Must(apidiscoveryv2beta1.AddToScheme(discoveryScheme)) + // Register conversion for apidiscovery + utilruntime.Must(apidiscoveryv2conversion.RegisterConversions(discoveryScheme)) codecs := serializer.NewCodecFactory(discoveryScheme) return &discoveryManager{