From a62d07ce2aaf669b3cf48d8c4a23134fe0515d9c Mon Sep 17 00:00:00 2001 From: Dan Mace Date: Mon, 27 Nov 2017 16:50:29 -0500 Subject: [PATCH] Add a GC deadlock note --- pkg/controller/garbagecollector/garbagecollector.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pkg/controller/garbagecollector/garbagecollector.go b/pkg/controller/garbagecollector/garbagecollector.go index 79006a4fabc..dad94e6e97e 100644 --- a/pkg/controller/garbagecollector/garbagecollector.go +++ b/pkg/controller/garbagecollector/garbagecollector.go @@ -205,6 +205,9 @@ func (gc *GarbageCollector) Sync(discoveryClient discovery.DiscoveryInterface, p utilruntime.HandleError(fmt.Errorf("failed to sync resource monitors: %v", err)) return } + // TODO: WaitForCacheSync can block forever during normal operation. Could + // pass a timeout channel, but we have to consider the implications of + // un-pausing the GC with a partially synced graph builder. if !controller.WaitForCacheSync("garbage collector", stopCh, gc.dependencyGraphBuilder.IsSynced) { utilruntime.HandleError(fmt.Errorf("timed out waiting for dependency graph builder sync during GC sync")) return