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

Race condition on emitting metrics #1554

Open
ankur22 opened this issue Nov 29, 2024 · 0 comments
Open

Race condition on emitting metrics #1554

ankur22 opened this issue Nov 29, 2024 · 0 comments
Labels
bug Something isn't working

Comments

@ankur22
Copy link
Collaborator

ankur22 commented Nov 29, 2024

Brief summary

In very rare cases, the browser module can be emitting a metric when in fact k6 is shutting down. This is mostly reproducible in tests (grafana/k6#4082, and the test in #1552).

go test -race -count 20 -run ^TestSelectOption$ github.com/grafana/xk6-browser/tests
==================
WARNING: DATA RACE
Write at 0x00c000352470 by goroutine 3934:
  runtime.closechan()
      /home/user/.go/src/runtime/chan.go:397 +0x0
  go.k6.io/k6/cmd.(*cmdRun).run.func11()
      /home/user/go/pkg/mod/go.k6.io/[email protected]/cmd/run.go:274 +0xc5
  runtime.deferreturn()
      /home/user/.go/src/runtime/panic.go:605 +0x5d
  go.k6.io/k6/cmd.(*cmdRun).run-fm()
      <autogenerated>:1 +0x64
  github.com/spf13/cobra.(*Command).execute()
      /home/user/go/pkg/mod/github.com/spf13/[email protected]/command.go:856 +0xbbd
  github.com/spf13/cobra.(*Command).ExecuteC()
      /home/user/go/pkg/mod/github.com/spf13/[email protected]/command.go:974 +0x617
  github.com/spf13/cobra.(*Command).Execute()
      /home/user/go/pkg/mod/github.com/spf13/[email protected]/command.go:902 +0x24c
  go.k6.io/k6/cmd.(*rootCommand).execute()
      /home/user/go/pkg/mod/go.k6.io/[email protected]/cmd/root.go:108 +0x228
  go.k6.io/k6/cmd.ExecuteWithGlobalState()
      /home/user/go/pkg/mod/go.k6.io/[email protected]/cmd/root.go:137 +0x2b
  github.com/grafana/xk6-browser/tests.TestSelectOption()
      /home/user/projects/grafana/k6/xk6-browser/tests/locator_test.go:757 +0x3b1
  testing.tRunner()
      /home/user/.go/src/testing/testing.go:1690 +0x226
  testing.(*T).Run.gowrap1()
      /home/user/.go/src/testing/testing.go:1743 +0x44

Previous read at 0x00c000352470 by goroutine 4009:
  runtime.chansend()
      /home/user/.go/src/runtime/chan.go:171 +0x0
  go.k6.io/k6/metrics.PushIfNotDone()
      /home/user/go/pkg/mod/go.k6.io/[email protected]/metrics/sample.go:135 +0x1106
  github.com/grafana/xk6-browser/common.(*NetworkManager).emitResponseMetrics()
      /home/user/projects/grafana/k6/xk6-browser/common/network_manager.go:266 +0xe48
  github.com/grafana/xk6-browser/common.(*NetworkManager).onLoadingFinished.func1()
      /home/user/projects/grafana/k6/xk6-browser/common/network_manager.go:408 +0x68
  github.com/grafana/xk6-browser/common.(*NetworkManager).onLoadingFinished()
      /home/user/projects/grafana/k6/xk6-browser/common/network_manager.go:412 +0x521
  github.com/grafana/xk6-browser/common.(*NetworkManager).handleEvents()
      /home/user/projects/grafana/k6/xk6-browser/common/network_manager.go:362 +0x184
  github.com/grafana/xk6-browser/common.(*NetworkManager).initEvents.func1()
      /home/user/projects/grafana/k6/xk6-browser/common/network_manager.go:343 +0x38

Goroutine 3934 (running) created at:
  testing.(*T).Run()
      /home/user/.go/src/testing/testing.go:1743 +0x825
  testing.runTests.func1()
      /home/user/.go/src/testing/testing.go:2168 +0x85
  testing.tRunner()
      /home/user/.go/src/testing/testing.go:1690 +0x226
  testing.runTests()
      /home/user/.go/src/testing/testing.go:2166 +0x8be
  testing.(*M).Run()
      /home/user/.go/src/testing/testing.go:2034 +0xf17
  main.main()
      _testmain.go:307 +0x164

Goroutine 4009 (finished) created at:
  github.com/grafana/xk6-browser/common.(*NetworkManager).initEvents()
      /home/user/projects/grafana/k6/xk6-browser/common/network_manager.go:342 +0x2e6
  github.com/grafana/xk6-browser/common.NewNetworkManager()
      /home/user/projects/grafana/k6/xk6-browser/common/network_manager.go:115 +0x597
  github.com/grafana/xk6-browser/common.NewFrameSession()
      /home/user/projects/grafana/k6/xk6-browser/common/frame_session.go:125 +0x5c6
  github.com/grafana/xk6-browser/common.NewPage()
      /home/user/projects/grafana/k6/xk6-browser/common/page.go:284 +0xcaa
  github.com/grafana/xk6-browser/common.(*Browser).onAttachedToTarget()
      /home/user/projects/grafana/k6/xk6-browser/common/browser.go:317 +0x5c8
  github.com/grafana/xk6-browser/common.(*Browser).initEvents.func1()
      /home/user/projects/grafana/k6/xk6-browser/common/browser.go:234 +0x464
==================
--- FAIL: TestSelectOption (0.45s)
    testing.go:1399: race detected during execution of test
FAIL
FAIL    github.com/grafana/xk6-browser/tests    9.212s
FAIL

xk6-browser version

v1.9.1

OS

NA

Chrome version

NA

Docker version and image (if applicable)

No response

Steps to reproduce the problem

Run the test in #1552 with the -race flag.

Expected behaviour

Test passes with no errors.

Actual behaviour

A race condition was found.

@ankur22 ankur22 added the bug Something isn't working label Nov 29, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

1 participant