connectionOpener is a goroutine that contain a loop forever, if I'm right.
func Open(driverName, dataSourceName string) (*DB, error) {....go db.connectionOpener()return db, nil}func (db *DB) connectionOpener() {for _ = range db.openerCh {
connectionOpener is a goroutine that contain a loop forever, if I'm right.
func Open(driverName, dataSourceName string) (*DB, error) {....go db.connectionOpener()return db, nil}
func (db *DB) connectionOpener() {for _ = range db.openerCh {
db.openNewConnection()}}
-------Therefore, simple code will cause goroutine leak. :DB.Open()...DB.Close()......DB.Open()...DB.Close()