From ab429a3120deafb64104d113ca86274e73b18314 Mon Sep 17 00:00:00 2001 From: David Eads Date: Wed, 3 Mar 2021 16:02:08 -0500 Subject: [PATCH] refact RemoveDeletedKinds to eliminate questions about interating over mutated maps --- staging/src/k8s.io/apiserver/pkg/server/deleted_kinds.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/staging/src/k8s.io/apiserver/pkg/server/deleted_kinds.go b/staging/src/k8s.io/apiserver/pkg/server/deleted_kinds.go index 27a3f5ba2ae..e9aed99ed6b 100644 --- a/staging/src/k8s.io/apiserver/pkg/server/deleted_kinds.go +++ b/staging/src/k8s.io/apiserver/pkg/server/deleted_kinds.go @@ -153,7 +153,8 @@ type removedInterface interface { // versionedResourcesStorageMap mirrors the field on APIGroupInfo, it's a map from version to resource to the storage. func (e *resourceExpirationEvaluator) RemoveDeletedKinds(groupName string, versioner runtime.ObjectVersioner, versionedResourcesStorageMap map[string]map[string]rest.Storage) { versionsToRemove := sets.NewString() - for apiVersion, versionToResource := range versionedResourcesStorageMap { + for apiVersion := range sets.StringKeySet(versionedResourcesStorageMap) { + versionToResource := versionedResourcesStorageMap[apiVersion] resourcesToRemove := sets.NewString() for resourceName, resourceServingInfo := range versionToResource { if !e.shouldServe(schema.GroupVersion{Group: groupName, Version: apiVersion}, versioner, resourceServingInfo) { @@ -167,8 +168,9 @@ func (e *resourceExpirationEvaluator) RemoveDeletedKinds(groupName string, versi } klog.V(1).Infof("Removing resource %v.%v.%v because it is time to stop serving it per APILifecycle.", resourceName, apiVersion, groupName) - delete(versionedResourcesStorageMap[apiVersion], resourceName) + delete(versionToResource, resourceName) } + versionedResourcesStorageMap[apiVersion] = versionToResource if len(versionedResourcesStorageMap[apiVersion]) == 0 { versionsToRemove.Insert(apiVersion)