Patrick Ohly
501a7678b3
test/utils: avoid data race during parallel create
The client-go Create call writes into the object that it gets passed. Each call
therefore needs its own copy when invoked in parallel.
Seen in
go test -v -timeout=0 -bench=.*/SchedulingBasic/5000Nodes -race ./test/integration/scheduler_perf
WARNING: DATA RACE
Read at 0x00c003fa5b00 by goroutine 45227:
k8s.io/apimachinery/pkg/apis/meta/v1.(*TypeMeta).GroupVersionKind()
/nvme/gopath/src/k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/meta.go:126 +0x84
k8s.io/apimachinery/pkg/runtime.WithVersionEncoder.Encode()
/nvme/gopath/src/k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/runtime/helper.go:231 +0x176
k8s.io/apimachinery/pkg/runtime.(*WithVersionEncoder).Encode()
<autogenerated>:1 +0xfb
k8s.io/apimachinery/pkg/runtime.Encode()
/nvme/gopath/src/k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/runtime/codec.go:50 +0xb3
k8s.io/client-go/rest.(*Request).Body()
/nvme/gopath/src/k8s.io/kubernetes/vendor/k8s.io/client-go/rest/request.go:469 +0x884
k8s.io/client-go/kubernetes/typed/core/v1.(*pods).Create()
/nvme/gopath/src/k8s.io/kubernetes/vendor/k8s.io/client-go/kubernetes/typed/core/v1/pod.go:126 +0x264
k8s.io/kubernetes/test/utils.CreatePodWithRetries.func1()
/nvme/gopath/src/k8s.io/kubernetes/test/utils/create_resources.go:61 +0x111
k8s.io/apimachinery/pkg/util/wait.ConditionFunc.WithContext.func1()
/nvme/gopath/src/k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:222 +0x30
k8s.io/apimachinery/pkg/util/wait.runConditionWithCrashProtectionWithContext()
/nvme/gopath/src/k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:262 +0x7b
k8s.io/apimachinery/pkg/util/wait.runConditionWithCrashProtection()
/nvme/gopath/src/k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:255 +0x5c
k8s.io/apimachinery/pkg/util/wait.ExponentialBackoff()
/nvme/gopath/src/k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:431 +0x67
k8s.io/kubernetes/test/utils.RetryWithExponentialBackOff()
/nvme/gopath/src/k8s.io/kubernetes/test/utils/create_resources.go:53 +0x1be
k8s.io/kubernetes/test/utils.CreatePodWithRetries()
/nvme/gopath/src/k8s.io/kubernetes/test/utils/create_resources.go:70 +0x1bf
k8s.io/kubernetes/test/utils.makeCreatePod()
/nvme/gopath/src/k8s.io/kubernetes/test/utils/runners.go:1339 +0x68
k8s.io/kubernetes/test/utils.CreatePod.func1()
/nvme/gopath/src/k8s.io/kubernetes/test/utils/runners.go:1349 +0xab
k8s.io/client-go/util/workqueue.ParallelizeUntil.func1()
/nvme/gopath/src/k8s.io/kubernetes/vendor/k8s.io/client-go/util/workqueue/parallelizer.go:90 +0x1c1
Previous write at 0x00c003fa5b00 by goroutine 45250:
k8s.io/apimachinery/pkg/apis/meta/v1.(*TypeMeta).SetGroupVersionKind()
/nvme/gopath/src/k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/meta.go:121 +0x1cc
k8s.io/apimachinery/pkg/runtime.WithVersionEncoder.Encode()
/nvme/gopath/src/k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/runtime/helper.go:241 +0x408
k8s.io/apimachinery/pkg/runtime.(*WithVersionEncoder).Encode()
<autogenerated>:1 +0xfb
k8s.io/apimachinery/pkg/runtime.Encode()
/nvme/gopath/src/k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/runtime/codec.go:50 +0xb3
k8s.io/client-go/rest.(*Request).Body()
/nvme/gopath/src/k8s.io/kubernetes/vendor/k8s.io/client-go/rest/request.go:469 +0x884
k8s.io/client-go/kubernetes/typed/core/v1.(*pods).Create()
/nvme/gopath/src/k8s.io/kubernetes/vendor/k8s.io/client-go/kubernetes/typed/core/v1/pod.go:126 +0x264
k8s.io/kubernetes/test/utils.CreatePodWithRetries.func1()
/nvme/gopath/src/k8s.io/kubernetes/test/utils/create_resources.go:61 +0x111
k8s.io/apimachinery/pkg/util/wait.ConditionFunc.WithContext.func1()
/nvme/gopath/src/k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:222 +0x30
k8s.io/apimachinery/pkg/util/wait.runConditionWithCrashProtectionWithContext()
/nvme/gopath/src/k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:262 +0x7b
k8s.io/apimachinery/pkg/util/wait.runConditionWithCrashProtection()
/nvme/gopath/src/k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:255 +0x5c
k8s.io/apimachinery/pkg/util/wait.ExponentialBackoff()
/nvme/gopath/src/k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:431 +0x67
k8s.io/kubernetes/test/utils.RetryWithExponentialBackOff()
/nvme/gopath/src/k8s.io/kubernetes/test/utils/create_resources.go:53 +0x1be
k8s.io/kubernetes/test/utils.CreatePodWithRetries()
/nvme/gopath/src/k8s.io/kubernetes/test/utils/create_resources.go:70 +0x1bf
k8s.io/kubernetes/test/utils.makeCreatePod()
/nvme/gopath/src/k8s.io/kubernetes/test/utils/runners.go:1339 +0x68
k8s.io/kubernetes/test/utils.CreatePod.func1()
/nvme/gopath/src/k8s.io/kubernetes/test/utils/runners.go:1349 +0xab
k8s.io/client-go/util/workqueue.ParallelizeUntil.func1()
/nvme/gopath/src/k8s.io/kubernetes/vendor/k8s.io/client-go/util/workqueue/parallelizer.go:90 +0x1c1
2023-02-16 08:44:42 +01:00
..
2022-09-10 17:56:23 +02:00
2022-12-16 20:14:04 +01:00
2022-10-28 15:43:48 +02:00
2022-07-26 13:14:05 -04:00
2023-01-27 17:24:00 +01:00
2021-02-28 15:17:29 -08:00
2022-09-10 17:56:23 +02:00
2022-07-26 13:14:05 -04:00
2019-10-01 09:46:45 -04:00
2022-10-21 17:14:56 -07:00
2022-11-05 00:13:43 +08:00
2022-09-21 22:39:47 +00:00
2020-05-16 07:54:27 -04:00
2021-10-12 14:52:19 +02:00
2019-02-26 11:05:32 -08:00
2018-04-27 11:12:10 -04:00
2021-06-24 09:43:09 +08:00
2020-02-07 18:16:47 -08:00
2020-02-08 12:30:21 -05:00
2023-02-16 08:44:42 +01:00
2022-02-03 05:32:12 +08:00
2021-05-28 16:00:05 +08:00