From b405df3fab05b4addbe68fe1d46a8629c0e1b8cb Mon Sep 17 00:00:00 2001 From: zepatrik Date: Fri, 27 May 2022 16:52:35 +0200 Subject: [PATCH] fix: add lock to registering instrumented drivers --- connection_instrumented.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/connection_instrumented.go b/connection_instrumented.go index 0118e848..435b50db 100644 --- a/connection_instrumented.go +++ b/connection_instrumented.go @@ -4,6 +4,7 @@ import ( "database/sql" "database/sql/driver" "fmt" + "sync" mysqld "github.com/go-sql-driver/mysql" "github.com/gobuffalo/pop/v6/logging" @@ -14,6 +15,8 @@ import ( const instrumentedDriverName = "instrumented-sql-driver" +var sqlDriverLock = sync.Mutex{} + func instrumentDriver(deets *ConnectionDetails, defaultDriverName string) (driverName, dialect string, err error) { driverName = defaultDriverName if deets.Driver != "" { @@ -56,6 +59,9 @@ func instrumentDriver(deets *ConnectionDetails, defaultDriverName string) (drive newDriverName = instrumentedDriverName + "-" + nameSQLite3 } + sqlDriverLock.Lock() + defer sqlDriverLock.Unlock() + var found bool for _, n := range sql.Drivers() { if n == newDriverName {