From d89f58fcc8a5e84e32417d413962ee70e7db488a Mon Sep 17 00:00:00 2001 From: Dan Mace Date: Mon, 27 Nov 2017 16:11:47 -0500 Subject: [PATCH] Fix GC sync race condition Remove faulty diff detection logic from GC sync which leads to a race condition: If the GC's discovery client is returning a fully up to date view of server resources during the very first GC sync, the sync function will never sync monitors or reset the REST mapper unless discovery changes again. This causes REST mapping to fail for any custom types already present in discovery. --- pkg/controller/garbagecollector/garbagecollector.go | 6 ------ 1 file changed, 6 deletions(-) diff --git a/pkg/controller/garbagecollector/garbagecollector.go b/pkg/controller/garbagecollector/garbagecollector.go index 462bed79fc0..236b3bc1b3c 100644 --- a/pkg/controller/garbagecollector/garbagecollector.go +++ b/pkg/controller/garbagecollector/garbagecollector.go @@ -173,12 +173,6 @@ func (gc *GarbageCollector) Sync(discoveryClient discovery.DiscoveryInterface, p // Get the current resource list from discovery. newResources := GetDeletableResources(discoveryClient) - // Detect first or abnormal sync and try again later. - if oldResources == nil || len(oldResources) == 0 { - oldResources = newResources - return - } - // Decide whether discovery has reported a change. if reflect.DeepEqual(oldResources, newResources) { glog.V(5).Infof("no resource updates from discovery, skipping garbage collector sync")