You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Bug description
When calling obj.DeepCopy() on one of the generated API types concurrently, the go race detector throws some warnings about a data race.
Affected product area (please put an X in all that apply)
[ ] Configuration Infrastructure
[ ] Docs
[ ] Installation
[ ] Networking
[ ] Performance and Scalability
[ ] Policies and Telemetry
[ ] Security
[ ] Test and Release
[X] User Experience
Expected behavior
Expected to call obj.DeepCopy() concurrently without any data race issues. This works with k8s.io/api types.
Steps to reproduce the bug
Here's a small reproducer. Run this with the -race flag: go run -race main.go
package main
import (
networking_v1beta1 "istio.io/client-go/pkg/apis/networking/v1beta1"
// core_v1 "k8s.io/api/core/v1"
)
func main() {
const iterations = 10000
done := make(chan struct{})
obj := &networking_v1beta1.VirtualService{}
// obj := &core_v1.Service{}
go func() {
for i := 0; i < iterations; i++ {
obj.DeepCopy()
}
done <- struct{}{}
}()
go func() {
for i := 0; i < iterations; i++ {
obj.DeepCopy()
}
done <- struct{}{}
}()
<-done
<-done
}
output:
==================
WARNING: DATA RACE
Read at 0x00c0001c5e48 by goroutine 7:
istio.io/client-go/pkg/apis/networking/v1beta1.(*VirtualService).DeepCopyInto()
/home/nrfox/go/pkg/mod/istio.io/client-go@v1.20.0/pkg/apis/networking/v1beta1/zz_generated.deepcopy.gen.go:353 +0x44
istio.io/client-go/pkg/apis/networking/v1beta1.(*VirtualService).DeepCopy()
/home/nrfox/go/pkg/mod/istio.io/client-go@v1.20.0/pkg/apis/networking/v1beta1/zz_generated.deepcopy.gen.go:367 +0xa4
main.main.func1()
/home/nrfox/Developer/redhat/kiali/testingmain/main.go:16 +0xaf
Previous write at 0x00c0001c5e48 by goroutine 8:
sync/atomic.StoreInt64()
/usr/local/go/src/runtime/race_amd64.s:237 +0xb
sync/atomic.StorePointer()
/usr/local/go/src/runtime/atomic_pointer.go:72 +0x44
istio.io/api/networking/v1beta1.(*VirtualService).ProtoReflect()
/home/nrfox/go/pkg/mod/istio.io/api@v1.20.0-beta.0.0.20231031143729-871b2914253f/networking/v1beta1/virtual_service.pb.go:374 +0x7c
google.golang.org/protobuf/proto.Clone()
/home/nrfox/go/pkg/mod/google.golang.org/protobuf@v1.31.0/proto/merge.go:53 +0x44
istio.io/api/networking/v1beta1.(*VirtualService).DeepCopyInto()
/home/nrfox/go/pkg/mod/istio.io/api@v1.20.0-beta.0.0.20231031143729-871b2914253f/networking/v1beta1/virtual_service_deepcopy.gen.go:10 +0x164
istio.io/client-go/pkg/apis/networking/v1beta1.(*VirtualService).DeepCopyInto()
/home/nrfox/go/pkg/mod/istio.io/client-go@v1.20.0/pkg/apis/networking/v1beta1/zz_generated.deepcopy.gen.go:356 +0x145
istio.io/client-go/pkg/apis/networking/v1beta1.(*VirtualService).DeepCopy()
/home/nrfox/go/pkg/mod/istio.io/client-go@v1.20.0/pkg/apis/networking/v1beta1/zz_generated.deepcopy.gen.go:367 +0xa4
main.main.func2()
/home/nrfox/Developer/redhat/kiali/testingmain/main.go:22 +0xaf
Goroutine 7 (running) created at:
main.main()
/home/nrfox/Developer/redhat/kiali/testingmain/main.go:14 +0x136
Goroutine 8 (running) created at:
main.main()
/home/nrfox/Developer/redhat/kiali/testingmain/main.go:20 +0x1de
==================
Found 1 data race(s)
exit status 66
You can comment out the VirtualService obj and uncomment the Service object to see the behavior with a k8s.io/api type. There are no data race errors.
Version (include the output of istioctl version --remote and kubectl version)
From my go.mod
Bug description
When calling
obj.DeepCopy()
on one of the generated API types concurrently, the go race detector throws some warnings about a data race.Affected product area (please put an X in all that apply)
[ ] Configuration Infrastructure
[ ] Docs
[ ] Installation
[ ] Networking
[ ] Performance and Scalability
[ ] Policies and Telemetry
[ ] Security
[ ] Test and Release
[X] User Experience
Expected behavior
Expected to call
obj.DeepCopy()
concurrently without any data race issues. This works withk8s.io/api
types.Steps to reproduce the bug
Here's a small reproducer. Run this with the
-race
flag:go run -race main.go
output:
You can comment out the
VirtualService
obj and uncomment theService
object to see the behavior with ak8s.io/api
type. There are no data race errors.Version (include the output of
istioctl version --remote
andkubectl version
)From my
go.mod
How was Istio installed?
N/A
Environment where bug was observed (cloud vendor, OS, etc)
N/A
The text was updated successfully, but these errors were encountered: