diff --git a/staging/src/k8s.io/apiserver/pkg/storage/cacher.go b/staging/src/k8s.io/apiserver/pkg/storage/cacher.go index 5cc9e93e152..13f7cf29438 100644 --- a/staging/src/k8s.io/apiserver/pkg/storage/cacher.go +++ b/staging/src/k8s.io/apiserver/pkg/storage/cacher.go @@ -639,6 +639,11 @@ func forgetWatcher(c *Cacher, index int, triggerValue string, triggerSupported b if lock { c.Lock() defer c.Unlock() + } else { + // false is currently passed only if we are forcing watcher to close due + // to its unresponsiveness and blocking other watchers. + // TODO: Get this information in cleaner way. + glog.V(1).Infof("Forcing watcher close due to unresponsiveness: %v", c.objectType.String()) } // It's possible that the watcher is already not in the structure (e.g. in case of // simulaneous Stop() and terminateAllWatchers(), but it doesn't break anything. diff --git a/staging/src/k8s.io/apiserver/pkg/storage/time_budget.go b/staging/src/k8s.io/apiserver/pkg/storage/time_budget.go index 0febb794b90..e619ec66054 100644 --- a/staging/src/k8s.io/apiserver/pkg/storage/time_budget.go +++ b/staging/src/k8s.io/apiserver/pkg/storage/time_budget.go @@ -23,7 +23,7 @@ import ( const ( refreshPerSecond = 50 * time.Millisecond - maxBudget = 250 * time.Millisecond + maxBudget = 100 * time.Millisecond ) // timeBudget implements a budget of time that you can use and is