• Kubernetes Submit Queue's avatar
    Merge pull request #42938 from enisoc/orphan-race · 47320fd3
    Kubernetes Submit Queue authored
    Automatic merge from submit-queue
    
    GC: Fix re-adoption race when orphaning dependents.
    
    **What this PR does / why we need it**:
    
    The GC expects that once it sees a controller with a non-nil
    DeletionTimestamp, that controller will not attempt any adoption.
    There was a known race condition that could cause a controller to
    re-adopt something orphaned by the GC, because the controller is using a
    cached value of its own spec from before DeletionTimestamp was set.
    
    This fixes that race by doing an uncached quorum read of the controller
    spec just before the first adoption attempt. It's important that this
    read occurs after listing potential orphans. Note that this uncached
    read is skipped if no adoptions are attempted (i.e. at steady state).
    
    **Which issue this PR fixes**:
    
    Fixes #42639
    
    **Special notes for your reviewer**:
    
    **Release note**:
    ```release-note
    ```
    
    cc @kubernetes/sig-apps-pr-reviews
    47320fd3
Name
Last commit
Last update
..
bootstrap Loading commit data...
certificates Loading commit data...
cloud Loading commit data...
cronjob Loading commit data...
daemon Loading commit data...
deployment Loading commit data...
disruption Loading commit data...
endpoint Loading commit data...
garbagecollector Loading commit data...
job Loading commit data...
namespace Loading commit data...
node Loading commit data...
podautoscaler Loading commit data...
podgc Loading commit data...
replicaset Loading commit data...
replication Loading commit data...
resourcequota Loading commit data...
route Loading commit data...
service Loading commit data...
serviceaccount Loading commit data...
statefulset Loading commit data...
ttl Loading commit data...
volume Loading commit data...
.import-restrictions Loading commit data...
BUILD Loading commit data...
OWNERS Loading commit data...
client_builder.go Loading commit data...
controller_ref_manager.go Loading commit data...
controller_utils.go Loading commit data...
controller_utils_test.go Loading commit data...
doc.go Loading commit data...
lookup_cache.go Loading commit data...