From 6d3b14b4683f1537e7d40f2f35272603978a0524 Mon Sep 17 00:00:00 2001 From: Darren Shepherd Date: Fri, 6 Sep 2019 16:30:04 -0700 Subject: [PATCH] Check cache is synced first before sleeping If a cache was already synced, cache.WaitForCacheSync would always take 100ms to complete because the PollUntil method will sleep first before checking the condition. Switching to PollImmediateUntil will ensure already synced caches will return immediately. For code that has, for example, 20 informers, the time to check the cache was in sync would take at least 2 seconds, but with this change it can be as fast as you can actually load the data. Signed-off-by: Darren Shepherd Kubernetes-commit: 8a58f332dd62b68ae22c67585002defe6aeb4b04 --- tools/cache/shared_informer.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/cache/shared_informer.go b/tools/cache/shared_informer.go index c37423b6..f59a0852 100644 --- a/tools/cache/shared_informer.go +++ b/tools/cache/shared_informer.go @@ -209,7 +209,7 @@ func WaitForNamedCacheSync(controllerName string, stopCh <-chan struct{}, cacheS // if the controller should shutdown // callers should prefer WaitForNamedCacheSync() func WaitForCacheSync(stopCh <-chan struct{}, cacheSyncs ...InformerSynced) bool { - err := wait.PollUntil(syncedPollPeriod, + err := wait.PollImmediateUntil(syncedPollPeriod, func() (bool, error) { for _, syncFunc := range cacheSyncs { if !syncFunc() {