• 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
.github Loading commit data...
Godeps Loading commit data...
api Loading commit data...
build Loading commit data...
cluster Loading commit data...
cmd Loading commit data...
docs Loading commit data...
hack Loading commit data...
logo Loading commit data...
pkg Loading commit data...
plugin Loading commit data...
staging Loading commit data...
test Loading commit data...
third_party Loading commit data...
translations Loading commit data...
vendor Loading commit data...
.bazelrc Loading commit data...
.generated_files Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
.kazelcfg.json Loading commit data...
BUILD.bazel Loading commit data...
CHANGELOG-1.10.md Loading commit data...
CHANGELOG-1.11.md Loading commit data...
CHANGELOG-1.12.md Loading commit data...
CHANGELOG-1.13.md Loading commit data...
CHANGELOG-1.2.md Loading commit data...
CHANGELOG-1.3.md Loading commit data...
CHANGELOG-1.4.md Loading commit data...
CHANGELOG-1.5.md Loading commit data...
CHANGELOG-1.6.md Loading commit data...
CHANGELOG-1.7.md Loading commit data...
CHANGELOG-1.8.md Loading commit data...
CHANGELOG-1.9.md Loading commit data...
CHANGELOG.md Loading commit data...
CONTRIBUTING.md Loading commit data...
LICENSE Loading commit data...
Makefile Loading commit data...
Makefile.generated_files Loading commit data...
OWNERS Loading commit data...
OWNERS_ALIASES Loading commit data...
README.md Loading commit data...
SECURITY_CONTACTS Loading commit data...
SUPPORT.md Loading commit data...
WORKSPACE Loading commit data...
code-of-conduct.md Loading commit data...