Skip to content

Commit 13b5eff

Browse files
authored
Merge pull request kubernetes#86514 from yutedz/linear-rm-dead
Perform dead storage removal linearly
2 parents 10dc4a0 + 9bc862e commit 13b5eff

File tree

1 file changed

+9
-17
lines changed

1 file changed

+9
-17
lines changed

staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/customresource_handler.go

Lines changed: 9 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -526,29 +526,21 @@ func (r *crdHandler) removeDeadStorage() {
526526
r.customStorageLock.Lock()
527527
defer r.customStorageLock.Unlock()
528528

529-
oldInfos := []*crdInfo{}
530529
storageMap := r.customStorage.Load().(crdStorageMap)
531530
// Copy because we cannot write to storageMap without a race
532-
// as it is used without locking elsewhere
533-
storageMap2 := storageMap.clone()
534-
for uid, s := range storageMap2 {
535-
found := false
536-
for _, crd := range allCustomResourceDefinitions {
537-
if crd.UID == uid {
538-
found = true
539-
break
540-
}
541-
}
542-
if !found {
543-
klog.V(4).Infof("Removing dead CRD storage for %s/%s", s.spec.Group, s.spec.Names.Kind)
544-
oldInfos = append(oldInfos, s)
545-
delete(storageMap2, uid)
531+
storageMap2 := make(crdStorageMap)
532+
for _, crd := range allCustomResourceDefinitions {
533+
if _, ok := storageMap[crd.UID]; ok {
534+
storageMap2[crd.UID] = storageMap[crd.UID]
546535
}
547536
}
548537
r.customStorage.Store(storageMap2)
549538

550-
for _, s := range oldInfos {
551-
go r.tearDown(s)
539+
for uid, crdInfo := range storageMap {
540+
if _, ok := storageMap2[uid]; !ok {
541+
klog.V(4).Infof("Removing dead CRD storage for %s/%s", crdInfo.spec.Group, crdInfo.spec.Names.Kind)
542+
go r.tearDown(crdInfo)
543+
}
552544
}
553545
}
554546

0 commit comments

Comments
 (0)