Merge pull request #123634 from liggitt/handler-race
Fix discovery v2 conversion registration data race
This commit is contained in:
		@@ -37,9 +37,10 @@ func TestConversionRoundTrip(t *testing.T) {
 | 
				
			|||||||
	scheme := runtime.NewScheme()
 | 
						scheme := runtime.NewScheme()
 | 
				
			||||||
	err := v2beta1scheme.AddToScheme(scheme)
 | 
						err := v2beta1scheme.AddToScheme(scheme)
 | 
				
			||||||
	require.NoError(t, err)
 | 
						require.NoError(t, err)
 | 
				
			||||||
	v2scheme.SchemeBuilder.Register(v2scheme.RegisterConversions)
 | 
					 | 
				
			||||||
	err = v2scheme.AddToScheme(scheme)
 | 
						err = v2scheme.AddToScheme(scheme)
 | 
				
			||||||
	require.NoError(t, err)
 | 
						require.NoError(t, err)
 | 
				
			||||||
 | 
						err = v2scheme.RegisterConversions(scheme)
 | 
				
			||||||
 | 
						require.NoError(t, err)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	fuzzer := fuzz.NewWithSeed(2374375)
 | 
						fuzzer := fuzz.NewWithSeed(2374375)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -151,10 +151,10 @@ type priorityInfo struct {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
func NewResourceManager(path string) ResourceManager {
 | 
					func NewResourceManager(path string) ResourceManager {
 | 
				
			||||||
	scheme := runtime.NewScheme()
 | 
						scheme := runtime.NewScheme()
 | 
				
			||||||
	// Register conversion for apidiscovery
 | 
					 | 
				
			||||||
	apidiscoveryv2.SchemeBuilder.Register(apidiscoveryv2conversion.RegisterConversions)
 | 
					 | 
				
			||||||
	utilruntime.Must(apidiscoveryv2.AddToScheme(scheme))
 | 
						utilruntime.Must(apidiscoveryv2.AddToScheme(scheme))
 | 
				
			||||||
	utilruntime.Must(apidiscoveryv2beta1.AddToScheme(scheme))
 | 
						utilruntime.Must(apidiscoveryv2beta1.AddToScheme(scheme))
 | 
				
			||||||
 | 
						// Register conversion for apidiscovery
 | 
				
			||||||
 | 
						utilruntime.Must(apidiscoveryv2conversion.RegisterConversions(scheme))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	codecs := serializer.NewCodecFactory(scheme)
 | 
						codecs := serializer.NewCodecFactory(scheme)
 | 
				
			||||||
	rdm := &resourceDiscoveryManager{
 | 
						rdm := &resourceDiscoveryManager{
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -32,6 +32,7 @@ import (
 | 
				
			|||||||
	fuzz "github.com/google/gofuzz"
 | 
						fuzz "github.com/google/gofuzz"
 | 
				
			||||||
	"github.com/stretchr/testify/assert"
 | 
						"github.com/stretchr/testify/assert"
 | 
				
			||||||
	"github.com/stretchr/testify/require"
 | 
						"github.com/stretchr/testify/require"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	apidiscoveryv2 "k8s.io/api/apidiscovery/v2"
 | 
						apidiscoveryv2 "k8s.io/api/apidiscovery/v2"
 | 
				
			||||||
	apidiscoveryv2beta1 "k8s.io/api/apidiscovery/v2beta1"
 | 
						apidiscoveryv2beta1 "k8s.io/api/apidiscovery/v2beta1"
 | 
				
			||||||
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
						metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
				
			||||||
@@ -50,10 +51,10 @@ var codecs = runtimeserializer.NewCodecFactory(scheme)
 | 
				
			|||||||
const discoveryPath = "/apis"
 | 
					const discoveryPath = "/apis"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func init() {
 | 
					func init() {
 | 
				
			||||||
	// Register conversion for apidiscovery
 | 
					 | 
				
			||||||
	apidiscoveryv2.SchemeBuilder.Register(apidiscoveryv2conversion.RegisterConversions)
 | 
					 | 
				
			||||||
	utilruntime.Must(apidiscoveryv2.AddToScheme(scheme))
 | 
						utilruntime.Must(apidiscoveryv2.AddToScheme(scheme))
 | 
				
			||||||
	utilruntime.Must(apidiscoveryv2beta1.AddToScheme(scheme))
 | 
						utilruntime.Must(apidiscoveryv2beta1.AddToScheme(scheme))
 | 
				
			||||||
 | 
						// Register conversion for apidiscovery
 | 
				
			||||||
 | 
						utilruntime.Must(apidiscoveryv2conversion.RegisterConversions(scheme))
 | 
				
			||||||
	codecs = runtimeserializer.NewCodecFactory(scheme)
 | 
						codecs = runtimeserializer.NewCodecFactory(scheme)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -187,10 +187,10 @@ func NewDiscoveryManager(
 | 
				
			|||||||
	target discoveryendpoint.ResourceManager,
 | 
						target discoveryendpoint.ResourceManager,
 | 
				
			||||||
) DiscoveryAggregationController {
 | 
					) DiscoveryAggregationController {
 | 
				
			||||||
	discoveryScheme := runtime.NewScheme()
 | 
						discoveryScheme := runtime.NewScheme()
 | 
				
			||||||
	// Register conversion for apidiscovery
 | 
					 | 
				
			||||||
	apidiscoveryv2.SchemeBuilder.Register(apidiscoveryv2conversion.RegisterConversions)
 | 
					 | 
				
			||||||
	utilruntime.Must(apidiscoveryv2.AddToScheme(discoveryScheme))
 | 
						utilruntime.Must(apidiscoveryv2.AddToScheme(discoveryScheme))
 | 
				
			||||||
	utilruntime.Must(apidiscoveryv2beta1.AddToScheme(discoveryScheme))
 | 
						utilruntime.Must(apidiscoveryv2beta1.AddToScheme(discoveryScheme))
 | 
				
			||||||
 | 
						// Register conversion for apidiscovery
 | 
				
			||||||
 | 
						utilruntime.Must(apidiscoveryv2conversion.RegisterConversions(discoveryScheme))
 | 
				
			||||||
	codecs := serializer.NewCodecFactory(discoveryScheme)
 | 
						codecs := serializer.NewCodecFactory(discoveryScheme)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return &discoveryManager{
 | 
						return &discoveryManager{
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user