From 12ce66dee25af7734c8550869f4a9f53b0ddb514 Mon Sep 17 00:00:00 2001 From: Till Faelligen Date: Mon, 5 Oct 2020 18:21:05 +0200 Subject: [PATCH] Reuse existing database connections --- internal/sqlutil/trace.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/internal/sqlutil/trace.go b/internal/sqlutil/trace.go index 23359b500..254b15c62 100644 --- a/internal/sqlutil/trace.go +++ b/internal/sqlutil/trace.go @@ -96,10 +96,16 @@ func trackGoID(query string) { logrus.Warnf("unsafe goid: SQL executed not on an ExclusiveWriter: %s", q) } +var dbConns = make(map[string]*sql.DB) + // Open opens a database specified by its database driver name and a driver-specific data source name, // usually consisting of at least a database name and connection information. Includes tracing driver // if DENDRITE_TRACE_SQL=1 func Open(dbProperties *config.DatabaseOptions) (*sql.DB, error) { + if conn, ok := dbConns[string(dbProperties.ConnectionString)]; ok { + logrus.Debug("Reusing existing database connection") + return conn, nil + } var err error var driverName, dsn string switch { @@ -134,6 +140,7 @@ func Open(dbProperties *config.DatabaseOptions) (*sql.DB, error) { db.SetMaxIdleConns(dbProperties.MaxIdleConns()) db.SetConnMaxLifetime(dbProperties.ConnMaxLifetime()) } + dbConns[string(dbProperties.ConnectionString)] = db return db, nil }