Skip to content

Commit 48957c0

Browse files
committed
feat(go): use single db handle; use connection pool;
1 parent 0b03b2c commit 48957c0

File tree

3 files changed

+32
-25
lines changed

3 files changed

+32
-25
lines changed

database/postgres.go

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
package database
22

33
import (
4+
"context"
45
"database/sql"
56
"errors"
67
"fmt"
8+
"github.com/gravitl/netmaker/db"
9+
"time"
710

811
"github.com/gravitl/netmaker/servercfg"
912
_ "github.com/lib/pq"
@@ -34,15 +37,18 @@ func getPGConnString() string {
3437
}
3538

3639
func initPGDB() error {
37-
connString := getPGConnString()
40+
gormDB := db.FromContext(db.WithContext(context.TODO()))
41+
3842
var dbOpenErr error
39-
PGDB, dbOpenErr = sql.Open("postgres", connString)
43+
PGDB, dbOpenErr = gormDB.DB()
4044
if dbOpenErr != nil {
4145
return dbOpenErr
4246
}
43-
dbOpenErr = PGDB.Ping()
4447

45-
return dbOpenErr
48+
PGDB.SetMaxOpenConns(5)
49+
PGDB.SetConnMaxLifetime(time.Hour)
50+
51+
return PGDB.Ping()
4652
}
4753

4854
func pgCreateTable(tableName string) error {
@@ -134,7 +140,7 @@ func pgFetchRecords(tableName string) (map[string]string, error) {
134140
}
135141

136142
func pgCloseDB() {
137-
PGDB.Close()
143+
//PGDB.Close()
138144
}
139145

140146
func pgIsConnected() bool {

database/sqlite.go

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
package database
22

33
import (
4+
"context"
45
"database/sql"
56
"errors"
6-
"os"
7-
"path/filepath"
7+
"github.com/gravitl/netmaker/db"
8+
"time"
89

910
_ "github.com/mattn/go-sqlite3" // need to blank import this package
1011
)
@@ -29,21 +30,17 @@ var SQLITE_FUNCTIONS = map[string]interface{}{
2930
}
3031

3132
func initSqliteDB() error {
32-
// == create db file if not present ==
33-
if _, err := os.Stat("data"); os.IsNotExist(err) {
34-
os.Mkdir("data", 0700)
35-
}
36-
dbFilePath := filepath.Join("data", dbFilename)
37-
if _, err := os.Stat(dbFilePath); os.IsNotExist(err) {
38-
os.Create(dbFilePath)
39-
}
40-
// == "connect" the database ==
33+
gormDB := db.FromContext(db.WithContext(context.TODO()))
34+
4135
var dbOpenErr error
42-
SqliteDB, dbOpenErr = sql.Open("sqlite3", dbFilePath)
36+
SqliteDB, dbOpenErr = gormDB.DB()
4337
if dbOpenErr != nil {
4438
return dbOpenErr
4539
}
46-
SqliteDB.SetMaxOpenConns(1)
40+
41+
SqliteDB.SetMaxOpenConns(5)
42+
SqliteDB.SetConnMaxLifetime(time.Hour)
43+
4744
return nil
4845
}
4946

@@ -134,7 +131,7 @@ func sqliteFetchRecords(tableName string) (map[string]string, error) {
134131
}
135132

136133
func sqliteCloseDB() {
137-
SqliteDB.Close()
134+
//SqliteDB.Close()
138135
}
139136

140137
func sqliteConnected() bool {

main.go

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ import (
77
"encoding/json"
88
"flag"
99
"fmt"
10+
"github.com/gravitl/netmaker/db"
11+
"github.com/gravitl/netmaker/schema"
1012
"os"
1113
"os/signal"
1214
"path/filepath"
@@ -18,15 +20,13 @@ import (
1820
"github.com/gravitl/netmaker/config"
1921
controller "github.com/gravitl/netmaker/controllers"
2022
"github.com/gravitl/netmaker/database"
21-
"github.com/gravitl/netmaker/db"
2223
"github.com/gravitl/netmaker/functions"
2324
"github.com/gravitl/netmaker/logger"
2425
"github.com/gravitl/netmaker/logic"
2526
"github.com/gravitl/netmaker/migrate"
2627
"github.com/gravitl/netmaker/models"
2728
"github.com/gravitl/netmaker/mq"
2829
"github.com/gravitl/netmaker/netclient/ncutils"
29-
"github.com/gravitl/netmaker/schema"
3030
"github.com/gravitl/netmaker/servercfg"
3131
"github.com/gravitl/netmaker/serverctl"
3232
_ "go.uber.org/automaxprocs"
@@ -102,15 +102,19 @@ func initialize() { // Client Mode Prereq Check
102102
logger.FatalLog("error: must set NODE_ID, currently blank")
103103
}
104104

105-
if err = database.InitializeDatabase(); err != nil {
106-
logger.FatalLog("Error connecting to database: ", err.Error())
107-
}
108105
// initialize sql schema db.
109106
err = db.InitializeDB(schema.ListModels()...)
110107
if err != nil {
111-
logger.FatalLog("Error connecting to v1 database: ", err.Error())
108+
logger.FatalLog("error connecting to database: ", err.Error())
112109
}
110+
113111
logger.Log(0, "database successfully connected")
112+
113+
// initialize kv schema db.
114+
if err = database.InitializeDatabase(); err != nil {
115+
logger.FatalLog("error initializing database: ", err.Error())
116+
}
117+
114118
initializeUUID()
115119
//initialize cache
116120
_, _ = logic.GetNetworks()

0 commit comments

Comments
 (0)