• Mike Danese's avatar
    Fix a race in the scheduler. · 62c3ec96
    Mike Danese authored
    Loop over priorityConfigs seperately. The node loop can only safely
    modify result[i][index]. Before this change it sometimes modified
    result[i] concurrently with other loops.
    
    Fixes: 71649676
    
    ==================== Test output for //pkg/scheduler/core:go_default_test:
    ==================
    WARNING: DATA RACE
    Read at 0x00c0005e8ed0 by goroutine 22:
      k8s.io/kubernetes/pkg/scheduler/core.PrioritizeNodes.func2()
          pkg/scheduler/core/generic_scheduler.go:667 +0x2ea
      k8s.io/kubernetes/vendor/k8s.io/client-go/util/workqueue.ParallelizeUntil.func1()
          staging/src/k8s.io/client-go/util/workqueue/parallelizer.go:65 +0x9e
    
    Previous write at 0x00c0005e8ed0 by goroutine 21:
      k8s.io/kubernetes/pkg/scheduler/core.PrioritizeNodes.func2()
          pkg/scheduler/core/generic_scheduler.go:668 +0x450
      k8s.io/kubernetes/vendor/k8s.io/client-go/util/workqueue.ParallelizeUntil.func1()
          staging/src/k8s.io/client-go/util/workqueue/parallelizer.go:65 +0x9e
    
    Goroutine 22 (running) created at:
      k8s.io/kubernetes/vendor/k8s.io/client-go/util/workqueue.ParallelizeUntil()
          staging/src/k8s.io/client-go/util/workqueue/parallelizer.go:57 +0x1a3
      k8s.io/kubernetes/pkg/scheduler/core.PrioritizeNodes()
          pkg/scheduler/core/generic_scheduler.go:682 +0x592
      k8s.io/kubernetes/pkg/scheduler/core.(*genericScheduler).Schedule()
          pkg/scheduler/core/generic_scheduler.go:186 +0x77d
      k8s.io/kubernetes/pkg/scheduler/core.TestGenericScheduler.func1()
          pkg/scheduler/core/generic_scheduler_test.go:464 +0x91f
      testing.tRunner()
          GOROOT/src/testing/testing.go:827 +0x162
    
    Goroutine 21 (running) created at:
      k8s.io/kubernetes/vendor/k8s.io/client-go/util/workqueue.ParallelizeUntil()
          staging/src/k8s.io/client-go/util/workqueue/parallelizer.go:57 +0x1a3
      k8s.io/kubernetes/pkg/scheduler/core.PrioritizeNodes()
          pkg/scheduler/core/generic_scheduler.go:682 +0x592
      k8s.io/kubernetes/pkg/scheduler/core.(*genericScheduler).Schedule()
          pkg/scheduler/core/generic_scheduler.go:186 +0x77d
      k8s.io/kubernetes/pkg/scheduler/core.TestGenericScheduler.func1()
          pkg/scheduler/core/generic_scheduler_test.go:464 +0x91f
      testing.tRunner()
          GOROOT/src/testing/testing.go:827 +0x162
    ==================
    --- FAIL: TestGenericScheduler (0.01s)
        --- FAIL: TestGenericScheduler/test_6 (0.00s)
            testing.go:771: race detected during execution of test
        testing.go:771: race detected during execution of test
    FAIL
    62c3ec96
Name
Last commit
Last update
..
api Loading commit data...
apis Loading commit data...
auth Loading commit data...
capabilities Loading commit data...
client Loading commit data...
cloudprovider Loading commit data...
controller Loading commit data...
credentialprovider Loading commit data...
features Loading commit data...
fieldpath Loading commit data...
generated Loading commit data...
kubeapiserver Loading commit data...
kubectl Loading commit data...
kubelet Loading commit data...
kubemark Loading commit data...
master Loading commit data...
printers Loading commit data...
probe Loading commit data...
proxy Loading commit data...
quota Loading commit data...
registry Loading commit data...
routes Loading commit data...
scheduler Loading commit data...
security Loading commit data...
securitycontext Loading commit data...
serviceaccount Loading commit data...
ssh Loading commit data...
util Loading commit data...
version Loading commit data...
volume Loading commit data...
watch/json Loading commit data...
windows/service Loading commit data...
.import-restrictions Loading commit data...
BUILD Loading commit data...
OWNERS Loading commit data...
customers.yaml Loading commit data...