Fix deadlock in watch cache

This commit is contained in:
Wojciech Tyczynski 2016-02-05 08:31:55 +01:00
parent 2e7993e057
commit d3639aff73

View File

@ -220,13 +220,13 @@ func (w *watchCache) WaitUntilFreshAndList(resourceVersion uint64) ([]interface{
}() }()
w.RLock() w.RLock()
defer w.RUnlock()
for w.resourceVersion < resourceVersion { for w.resourceVersion < resourceVersion {
if w.clock.Since(startTime) >= MaximumListWait { if w.clock.Since(startTime) >= MaximumListWait {
return nil, 0, fmt.Errorf("time limit exceeded while waiting for resource version %v (current value: %v)", resourceVersion, w.resourceVersion) return nil, 0, fmt.Errorf("time limit exceeded while waiting for resource version %v (current value: %v)", resourceVersion, w.resourceVersion)
} }
w.cond.Wait() w.cond.Wait()
} }
defer w.RUnlock()
return w.store.List(), w.resourceVersion, nil return w.store.List(), w.resourceVersion, nil
} }