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

contrib/database/sql: Fix race condition when registering drivers #1450

Merged
merged 2 commits into from
Sep 21, 2022
Merged

contrib/database/sql: Fix race condition when registering drivers #1450

merged 2 commits into from
Sep 21, 2022

Commits on Aug 29, 2022

  1. contrib/database/sql: Fix race condition when registering drivers

    Library failing when registering drivers in parallel on different goroutines.
    
    Internal `driverRegistry` wasn't goroutine safe, causing race conditions with
    multiple writes in the internal maps.
    
    ```
    $ go test -race -run TestRegister
    
    WARNING: DATA RACE
    Write at 0x00c000254000 by goroutine 9:
      runtime.mapaccessK()
          /opt/homebrew/Cellar/go/1.19/libexec/src/runtime/map.go:518 +0x1ec
      gopkg.in/DataDog/dd-trace-go.v1/contrib/database/sql.(*driverRegistry).add()
          /Users/rafael.justo/dev/go/src/github.com/rafaeljusto/dd-trace-go/contrib/database/sql/sql.go:60 +0x144
      gopkg.in/DataDog/dd-trace-go.v1/contrib/database/sql.TestRegister.func1()
          /Users/rafael.justo/dev/go/src/github.com/rafaeljusto/dd-trace-go/contrib/database/sql/sql_test.go:282 +0x54
      gopkg.in/DataDog/dd-trace-go.v1/contrib/database/sql.TestRegister.func2()
          /Users/rafael.justo/dev/go/src/github.com/rafaeljusto/dd-trace-go/contrib/database/sql/sql_test.go:285 +0x44
    
    Previous write at 0x00c000254000 by goroutine 15:
      runtime.mapaccessK()
          /opt/homebrew/Cellar/go/1.19/libexec/src/runtime/map.go:518 +0x1ec
      gopkg.in/DataDog/dd-trace-go.v1/contrib/database/sql.(*driverRegistry).add()
          /Users/rafael.justo/dev/go/src/github.com/rafaeljusto/dd-trace-go/contrib/database/sql/sql.go:60 +0x144
      gopkg.in/DataDog/dd-trace-go.v1/contrib/database/sql.TestRegister.func1()
          /Users/rafael.justo/dev/go/src/github.com/rafaeljusto/dd-trace-go/contrib/database/sql/sql_test.go:282 +0x54
      gopkg.in/DataDog/dd-trace-go.v1/contrib/database/sql.TestRegister.func2()
          /Users/rafael.justo/dev/go/src/github.com/rafaeljusto/dd-trace-go/contrib/database/sql/sql_test.go:285 +0x44
    ```
    rafaeljusto committed Aug 29, 2022
    Configuration menu
    Copy the full SHA
    207dd8e View commit details
    Browse the repository at this point in the history

Commits on Sep 21, 2022

  1. Configuration menu
    Copy the full SHA
    c056d79 View commit details
    Browse the repository at this point in the history