refact RemoveDeletedKinds to eliminate questions about interating over mutated maps

Kubernetes-commit: ab429a3120deafb64104d113ca86274e73b18314
This commit is contained in:
David Eads 2021-03-03 16:02:08 -05:00 committed by Kubernetes Publisher
parent 04ee9b3397
commit e4ff37f227
1 changed files with 4 additions and 2 deletions

View File

@ -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)