mirror of
https://github.com/kubernetes/kubernetes.git
synced 2026-04-28 17:50:30 -04:00
Automatic merge from submit-queue (batch tested with PRs 62432, 62868, 63040). If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>. scheduler: fix race condition in equivalence cache **What this PR does / why we need it**: This adds an equivalence cache test to exercise the race condition observed in https://github.com/kubernetes/kubernetes/issues/62921 and then fixes the race. The `Cache` interface needed a new method to check whether a `NodeInfo` is stale, and `genericScheduler` needed some plumbing to make the `Cache` object available to `podFitsOnNode()`. The solution is, right before writing to the eCache, check the scheduler cache to see if the current `NodeInfo` object is out of date. If the node is out of date, then don't write to the eCache. If the `NodeInfo` is stale, it is because of a cache update that should also invalidate the eCache entry. That invalidation either happens before `podFitsOnNode()` acquires the eCache lock (original bug, so we don't do the write) or blocks until we release that lock (removing the potentially bad entry). Fixes #62921 **Special notes for your reviewer**: **Release note**: equivalence cache is still alpha, so no release note. ```release-note NONE ``` /sig scheduling /assign bsalalamat /assign resouer |
||
|---|---|---|
| .. | ||
| apiserver | ||
| auth | ||
| benchmark/jsonify | ||
| client | ||
| configmap | ||
| daemonset | ||
| defaulttolerationseconds | ||
| deployment | ||
| etcd | ||
| evictions | ||
| examples | ||
| framework | ||
| garbagecollector | ||
| ipamperf | ||
| master | ||
| metrics | ||
| objectmeta | ||
| openshift | ||
| pods | ||
| quota | ||
| replicaset | ||
| replicationcontroller | ||
| scale | ||
| scheduler | ||
| scheduler_perf | ||
| secrets | ||
| serviceaccount | ||
| statefulset | ||
| storageclasses | ||
| tls | ||
| ttlcontroller | ||
| util | ||
| volume | ||
| benchmark-controller.json | ||
| BUILD | ||
| doc.go | ||
| utils.go | ||