• Anthony Yeh's avatar
    GC: Fix re-adoption race when orphaning dependents. · b4b8fdbc
    Anthony Yeh authored
    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).
    b4b8fdbc
controller_ref_manager.go 14.2 KB