Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: fix race condition in start controllers #1941

Merged
merged 3 commits into from Mar 31, 2022

Conversation

mozillazg
Copy link
Contributor

What this PR does / why we need it:

// use default value if DestBufferSize not specified
if cs.DestBufferSize == 0 {
cs.DestBufferSize = defaultBufferSize
}

Before:

==================
WARNING: DATA RACE
Read at 0x00c00004f118 by goroutine 226:
  sigs.k8s.io/controller-runtime/pkg/source.(*Channel).Start()
      /go/src/github.com/open-policy-agent/gatekeeper/vendor/sigs.k8s.io/controller-runtime/pkg/source/source.go:252 +0xd3
  sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Start.func2()
      /go/src/github.com/open-policy-agent/gatekeeper/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:180 +0x942
  sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Start()
      /go/src/github.com/open-policy-agent/gatekeeper/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:234 +0x2b5
  sigs.k8s.io/controller-runtime/pkg/manager.(*runnableGroup).reconcile.func1()
      /go/src/github.com/open-policy-agent/gatekeeper/vendor/sigs.k8s.io/controller-runtime/pkg/manager/runnable_group.go:218 +0x1cb
  sigs.k8s.io/controller-runtime/pkg/manager.(*runnableGroup).reconcile·dwrap·12()
      /go/src/github.com/open-policy-agent/gatekeeper/vendor/sigs.k8s.io/controller-runtime/pkg/manager/runnable_group.go:221 +0x47

Previous write at 0x00c00004f118 by goroutine 335:
  sigs.k8s.io/controller-runtime/pkg/source.(*Channel).Start()
      /go/src/github.com/open-policy-agent/gatekeeper/vendor/sigs.k8s.io/controller-runtime/pkg/source/source.go:253 +0xec
  sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Start.func2()
      /go/src/github.com/open-policy-agent/gatekeeper/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:180 +0x942
  sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Start()
      /go/src/github.com/open-policy-agent/gatekeeper/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:234 +0x2b5
  sigs.k8s.io/controller-runtime/pkg/manager.(*runnableGroup).reconcile.func1()
      /go/src/github.com/open-policy-agent/gatekeeper/vendor/sigs.k8s.io/controller-runtime/pkg/manager/runnable_group.go:218 +0x1cb
  sigs.k8s.io/controller-runtime/pkg/manager.(*runnableGroup).reconcile·dwrap·12()
      /go/src/github.com/open-policy-agent/gatekeeper/vendor/sigs.k8s.io/controller-runtime/pkg/manager/runnable_group.go:221 +0x47

Goroutine 226 (running) created at:
  sigs.k8s.io/controller-runtime/pkg/manager.(*runnableGroup).reconcile()
      /go/src/github.com/open-policy-agent/gatekeeper/vendor/sigs.k8s.io/controller-runtime/pkg/manager/runnable_group.go:202 +0x23c
  sigs.k8s.io/controller-runtime/pkg/manager.(*runnableGroup).Start.func1·dwrap·11()
      /go/src/github.com/open-policy-agent/gatekeeper/vendor/sigs.k8s.io/controller-runtime/pkg/manager/runnable_group.go:131 +0x39

Goroutine 335 (running) created at:
  sigs.k8s.io/controller-runtime/pkg/manager.(*runnableGroup).reconcile()
      /go/src/github.com/open-policy-agent/gatekeeper/vendor/sigs.k8s.io/controller-runtime/pkg/manager/runnable_group.go:202 +0x23c
  sigs.k8s.io/controller-runtime/pkg/manager.(*runnableGroup).Start.func1·dwrap·11()
      /go/src/github.com/open-policy-agent/gatekeeper/vendor/sigs.k8s.io/controller-runtime/pkg/manager/runnable_group.go:131 +0x39
==================
    core.go:90: ...
    testing.go:1152: race detected during execution of test
--- FAIL: Test_Tracker (1.69s)

After:

--- PASS: Test_Tracker (1.68s)

Which issue(s) this PR fixes (optional, using fixes #<issue number>(, fixes #<issue_number>, ...) format, will close the issue(s) when the PR gets merged):

#1929

Special notes for your reviewer:

Signed-off-by: mozillazg <mozillazg101@gmail.com>
@codecov-commenter
Copy link

codecov-commenter commented Mar 26, 2022

Codecov Report

Merging #1941 (a24dce5) into master (6c58cad) will increase coverage by 0.04%.
The diff coverage is 0.00%.

@@            Coverage Diff             @@
##           master    #1941      +/-   ##
==========================================
+ Coverage   53.23%   53.28%   +0.04%     
==========================================
  Files         100      100              
  Lines        8986     8986              
==========================================
+ Hits         4784     4788       +4     
+ Misses       3809     3806       -3     
+ Partials      393      392       -1     
Flag Coverage Δ
unittests 53.28% <0.00%> (+0.04%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files Coverage Δ
pkg/mutation/schema/schema.go 80.76% <0.00%> (ø)
pkg/watch/replay.go 81.25% <0.00%> (+2.27%) ⬆️

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 06d3f78...a24dce5. Read the comment docs.

@mozillazg mozillazg changed the title Fix race condition in start controllers fix: fix race condition in start controllers Mar 26, 2022
@mozillazg mozillazg closed this Mar 26, 2022
@mozillazg mozillazg reopened this Mar 26, 2022
Copy link
Contributor

@maxsmythe maxsmythe left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the fix! LGTM

Copy link
Member

@ritazh ritazh left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM
Thanks @mozillazg!

@ritazh ritazh merged commit e5acd56 into open-policy-agent:master Mar 31, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants