From 7f34a2dac888785c4f16e00059023a2b7702d43c Mon Sep 17 00:00:00 2001 From: Nathan VanBenschoten Date: Thu, 22 Oct 2015 21:50:06 -0400 Subject: [PATCH] database/sql: use RWMutex for driver registration Change-Id: I0f494c9f17cb6bb0cf5e7214cf033fdbd48f27f7 Reviewed-on: https://go-review.googlesource.com/16240 Reviewed-by: Brad Fitzpatrick Run-TryBot: Brad Fitzpatrick TryBot-Result: Gobot Gobot --- src/database/sql/sql.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/database/sql/sql.go b/src/database/sql/sql.go index f3fed953ad..31e9605309 100644 --- a/src/database/sql/sql.go +++ b/src/database/sql/sql.go @@ -24,7 +24,7 @@ import ( ) var ( - driversMu sync.Mutex + driversMu sync.RWMutex drivers = make(map[string]driver.Driver) ) @@ -52,8 +52,8 @@ func unregisterAllDrivers() { // Drivers returns a sorted list of the names of the registered drivers. func Drivers() []string { - driversMu.Lock() - defer driversMu.Unlock() + driversMu.RLock() + defer driversMu.RUnlock() var list []string for name := range drivers { list = append(list, name) @@ -465,9 +465,9 @@ var connectionRequestQueueSize = 1000000 // function should be called just once. It is rarely necessary to // close a DB. func Open(driverName, dataSourceName string) (*DB, error) { - driversMu.Lock() + driversMu.RLock() driveri, ok := drivers[driverName] - driversMu.Unlock() + driversMu.RUnlock() if !ok { return nil, fmt.Errorf("sql: unknown driver %q (forgotten import?)", driverName) } -- 2.48.1