• Kubernetes Submit Queue's avatar
    Merge pull request #66106 from cofyc/fix64626 · cc1d0e20
    Kubernetes Submit Queue authored
    Automatic merge from submit-queue (batch tested with PRs 66011, 66111, 66106, 66039, 65745). 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>.
    
    Fix TestVolumeBinding out of sync errors
    
    **What this PR does / why we need it**:
    
    Invalidate `CheckVolumeBinding` predicate cache on PV update. 
    
    CheckVolumeBinding predicate calls SchedulerVolumeBinder.FindPodVolumes which will cache PVs in PodBindingCache. When PV got updated, we should invalidate cache, otherwise PVAssumeCache.Assume will fail with out of sync error.
    
    **Which issue(s) this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close the issue(s) when PR gets merged)*:
    Fixes #64626
    
    **Special notes for your reviewer**:
    
    When a PV is created, these operations happen asynchronously:
    
    - [pvcontroller.1] pv controller will update PV status from empty to `Available`
    - [scheduler.1] scheduler will find matching PVs and cache them in PodBindingCache in `CheckVolumeBinding` predicate
    - [scheduler.2] scheduler will assume matching PVs from PodBindingCache
    
    If [pvcontroller.1] happens between [scheduler.1] and [scheduler.2], and `CheckVolumeBinding` predicate result is cached in [scheduler.1], then scheduler will always use stale PodBindingCache in [scheduler.2] which [will cause out-of-sync error](https://github.com/kubernetes/kubernetes/blob/v1.12.0-alpha.0/pkg/controller/volume/persistentvolume/scheduler_assume_cache.go#L277) because resource version is old.
    
    **Release note**:
    
    ```release-note
    NONE
    ```
    cc1d0e20
Name
Last commit
Last update
.github Loading commit data...
Godeps Loading commit data...
api Loading commit data...
build Loading commit data...
cluster Loading commit data...
cmd Loading commit data...
docs Loading commit data...
hack Loading commit data...
logo Loading commit data...
pkg Loading commit data...
plugin Loading commit data...
staging Loading commit data...
test Loading commit data...
third_party Loading commit data...
translations Loading commit data...
vendor Loading commit data...
.bazelrc Loading commit data...
.generated_files Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
.kazelcfg.json Loading commit data...
BUILD.bazel Loading commit data...
CHANGELOG-1.10.md Loading commit data...
CHANGELOG-1.11.md Loading commit data...
CHANGELOG-1.2.md Loading commit data...
CHANGELOG-1.3.md Loading commit data...
CHANGELOG-1.4.md Loading commit data...
CHANGELOG-1.5.md Loading commit data...
CHANGELOG-1.6.md Loading commit data...
CHANGELOG-1.7.md Loading commit data...
CHANGELOG-1.8.md Loading commit data...
CHANGELOG-1.9.md Loading commit data...
CHANGELOG.md Loading commit data...
CONTRIBUTING.md Loading commit data...
LICENSE Loading commit data...
Makefile Loading commit data...
Makefile.generated_files Loading commit data...
OWNERS Loading commit data...
OWNERS_ALIASES Loading commit data...
README.md Loading commit data...
SECURITY_CONTACTS Loading commit data...
SUPPORT.md Loading commit data...
WORKSPACE Loading commit data...
code-of-conduct.md Loading commit data...