• Kubernetes Submit Queue's avatar
    Merge pull request #32807 from jingxu97/stateupdateNeeded-9-15 · 0a4316f1
    Kubernetes Submit Queue authored
    Automatic merge from submit-queue
    
    Fix race condition in setting node statusUpdateNeeded flag
    
    This PR fixes the race condition in setting node statusUpdateNeeded flag
    in master's attachdetach controller. This flag is used to indicate
    whether a node status has been updated by the node_status_updater or
    not. When updater finishes update a node status, it is set to false.
    When the node status is changed such as volume is detached or new volume
    is attached to the node, the flag is set to true so that updater can
    update the status again. The previous workflow has a race condition as
    follows
    1. updater gets the currently attached volume list from the node which needs to be
    updated.
    2. A new volume A is attached to the same node right after 1 and set the
    flag to TRUE
    3. updater updates the node attached volume list (which does not include volume A) and then set the flag to FALSE.
    The result is that volume A will be never added to the attached volume
    list so at node side, this volume is never attached.
    
    So in this PR, the flag is set to FALSE when updater tries to get the
    attached volume list (as in an atomic operation). So in the above
    example, after step 2, the flag will be TRUE again, in step 3, updater
    does not set the flag if updates is sucessful. So after that, flag is
    still TRUE and in next round of update, the node status will be updated.
    0a4316f1
Name
Last commit
Last update
..
attachdetach Loading commit data...
persistentvolume Loading commit data...