Closed
Description
I got a race condition error when I was trying to run my tests with -race
flag.
The problem is with controllerManager.waitForRunnable. Based on this document, Add
and Wait
methods of WaitGroup
should be called in the same goroutine.
controllerManager
calls the WaitGroup.Add
method In the controllerManager.StartRunnable method, and calls the WaitGroup.Wait
method in the controllerManager.waitForRunnableToEnd method, While waitForRunnableToEnd
and StartRunnable
are running in different goroutines.
This log may help you, It's for v0.8.3:
WARNING: DATA RACE
Write at 0x00c00038e6a8 by goroutine 86:
internal/race.Write()
/usr/local/go/src/internal/race/race.go:41 +0x125
sync.(*WaitGroup).Wait()
/usr/local/go/src/sync/waitgroup.go:128 +0x126
sigs.k8s.io/controller-runtime/pkg/manager.(*controllerManager).waitForRunnableToEnd.func2()
/home/ali/Developer/Go/pkg/mod/sigs.k8s.io/controller-runtime@v0.8.3/pkg/manager/internal.go:567 +0x44
Previous read at 0x00c00038e6a8 by goroutine 166:
internal/race.Read()
/usr/local/go/src/internal/race/race.go:37 +0x206
sync.(*WaitGroup).Add()
/usr/local/go/src/sync/waitgroup.go:71 +0x219
sigs.k8s.io/controller-runtime/pkg/manager.(*controllerManager).startRunnable()
/home/ali/Developer/Go/pkg/mod/sigs.k8s.io/controller-runtime@v0.8.3/pkg/manager/internal.go:678 +0x4e
sigs.k8s.io/controller-runtime/pkg/manager.(*controllerManager).serveMetrics()
/home/ali/Developer/Go/pkg/mod/sigs.k8s.io/controller-runtime@v0.8.3/pkg/manager/internal.go:384 +0x31b
Goroutine 86 (running) created at:
sigs.k8s.io/controller-runtime/pkg/manager.(*controllerManager).waitForRunnableToEnd()
/home/ali/Developer/Go/pkg/mod/sigs.k8s.io/controller-runtime@v0.8.3/pkg/manager/internal.go:566 +0xcb
sigs.k8s.io/controller-runtime/pkg/manager.(*controllerManager).engageStopProcedure()
/home/ali/Developer/Go/pkg/mod/sigs.k8s.io/controller-runtime@v0.8.3/pkg/manager/internal.go:548 +0x376
sigs.k8s.io/controller-runtime/pkg/manager.(*controllerManager).Start.func1()
/home/ali/Developer/Go/pkg/mod/sigs.k8s.io/controller-runtime@v0.8.3/pkg/manager/internal.go:449 +0x46
sigs.k8s.io/controller-runtime/pkg/manager.(*controllerManager).Start()
/home/ali/Developer/Go/pkg/mod/sigs.k8s.io/controller-runtime@v0.8.3/pkg/manager/internal.go:499 +0x575
Goroutine 166 (running) created at:
sigs.k8s.io/controller-runtime/pkg/manager.(*controllerManager).Start()
/home/ali/Developer/Go/pkg/mod/sigs.k8s.io/controller-runtime@v0.8.3/pkg/manager/internal.go:473 +0x61b
Metadata
Metadata
Assignees
Labels
No labels