• Kubernetes Submit Queue's avatar
    Merge pull request #60831 from resouer/fix-race · 8c00efe6
    Kubernetes Submit Queue authored
    Automatic merge from submit-queue (batch tested with PRs 60574, 60666, 60831, 60877, 60357). 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 data race in node lifecycle controller
    
    **What this PR does / why we need it**:
    Encountered this bug during fixing: https://github.com/kubernetes/kubernetes/pull/60753
    
    There's a data race for `zoneNoExecuteTainter `.
    
    ```
    --- PASS: TestTaintNodeByCondition (5.72s)
    PASS
    ==================
    WARNING: DATA RACE
    Write at 0x00c421a8d2f0 by goroutine 1472:
      runtime.mapassign_faststr()
          /usr/local/go/src/runtime/hashmap_fast.go:598 +0x0
      k8s.io/kubernetes/pkg/controller/nodelifecycle.(*Controller).addPodEvictorForNewZone()
          /root/code/kubernetes/src/k8s.io/kubernetes/_output/local/go/src/k8s.io/kubernetes/pkg/controller/nodelifecycle/node_lifecycle_controller.go:1053 +0x37d
      k8s.io/kubernetes/pkg/controller/nodelifecycle.(*Controller).monitorNodeStatus()
          
    
    Previous read at 0x00c421a8d2f0 by goroutine 1471:
      runtime.mapiterinit()
          /usr/local/go/src/runtime/hashmap.go:709 +0x0
      k8s.io/kubernetes/pkg/controller/nodelifecycle.(*Controller).doNoExecuteTaintingPass()
          /root/code/kubernetes/src/k8s.io/kubernetes/_output/local/go/src/k8s.io/kubernetes/pkg/controller/nodelifecycle/node_lifecycle_controller.go:459 +0xec
      k8s.io/kubernetes/pkg/controller/nodelifecycle.(*Controller).(k8s.io/kubernetes/pkg/controller/nodelifecycle.doNoExecuteTaintingPass)-fm()
    ```
    
    **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 #
    
    **Special notes for your reviewer**:
    
    **Release note**:
    
    ```release-note
    Fix data race in node lifecycle controller
    ```
    8c00efe6
node_lifecycle_controller.go 44.3 KB