diff --git a/backend/golang/matrix-middle-service/cmd/service/main.go b/backend/golang/matrix-middle-service/cmd/service/main.go index b45e1cc..89660df 100644 --- a/backend/golang/matrix-middle-service/cmd/service/main.go +++ b/backend/golang/matrix-middle-service/cmd/service/main.go @@ -40,5 +40,6 @@ func Main() { quit := make(chan os.Signal, 1) signal.Notify(quit, os.Interrupt) <-quit - app.Shutdown() + + defer app.Shutdown() } diff --git a/backend/golang/matrix-middle-service/internel/app/app.go b/backend/golang/matrix-middle-service/internel/app/app.go index e41b039..48ea54a 100644 --- a/backend/golang/matrix-middle-service/internel/app/app.go +++ b/backend/golang/matrix-middle-service/internel/app/app.go @@ -64,7 +64,11 @@ func Shutdown() { return } - logger.Log().Infof("关闭服务") + fib.Exec(func() { + database.Close() + }) + + logger.Log().Info("关闭服务") timeout := 5 * time.Second err := app.ShutdownWithTimeout(timeout) if err != nil { diff --git a/backend/golang/matrix-middle-service/main.go b/backend/golang/matrix-middle-service/main.go index fe9f2a6..6435ec5 100644 --- a/backend/golang/matrix-middle-service/main.go +++ b/backend/golang/matrix-middle-service/main.go @@ -2,7 +2,7 @@ package main import ( "matrix-middle-service/cmd/service" - _ "matrix-middle-service/pkg/database/mysql" + _ "matrix-middle-service/pkg/database/driver/mysql" _ "matrix-middle-service/pkg/logger" ) diff --git a/backend/golang/matrix-middle-service/pkg/database/database.go b/backend/golang/matrix-middle-service/pkg/database/database.go index dbc4aa9..b3aa95e 100644 --- a/backend/golang/matrix-middle-service/pkg/database/database.go +++ b/backend/golang/matrix-middle-service/pkg/database/database.go @@ -23,7 +23,6 @@ func Init(conf []interface{}) { for _, item := range conf { dst := config.DataSourcesType[any]{} _ = mapstructure.Decode(item, &dst) - logger.Log().Infof("%+v", dst) fn, ok := SupportDataSources[dst.Type] if !ok { @@ -51,3 +50,10 @@ func Open() (err error) { } return } + +func Close() { + for _, driver := range drivers { + _ = driver.Close() + } + return +} diff --git a/backend/golang/matrix-middle-service/pkg/database/driver/mysql/mysql.go b/backend/golang/matrix-middle-service/pkg/database/driver/mysql/mysql.go index d468cc7..4e75895 100644 --- a/backend/golang/matrix-middle-service/pkg/database/driver/mysql/mysql.go +++ b/backend/golang/matrix-middle-service/pkg/database/driver/mysql/mysql.go @@ -26,12 +26,12 @@ func init() { database.Register("mysql", func(c config.DataSourcesType[any]) database.DataBase { mc := &conf.Config{} _ = mapstructure.Decode(c.Config, &mc) - logger.Log().Infof("%+v,%+v,%+v", c.Enable, mc.Name(), mc.DataSources) if dbEngine != nil { _ = dbEngine.Close() } + logger.Log().Debug("[mysql] 数据源初始化") var err error dbEngine, err = xorm.NewEngineGroup("mysql", mc.DataSources) if err != nil { @@ -53,10 +53,12 @@ type db struct { } func (d *db) Close() error { + logger.Log().Debug("[mysql] 关闭数据库连接") return d.db.Close() } func (d *db) Open() (err error) { + logger.Log().Debug("[mysql] 连接数据库") // 自动创建数据库 for _, dsn := range d.config.DataSources { dbName := ParseSqlConnDBName(dsn) @@ -69,8 +71,8 @@ func (d *db) Open() (err error) { err = d.db.Ping() if err != nil { - logger.Log().Fatal(err) + logger.Log().Fatalf("[mysql] 数据库连接失败, %s", err) } - + logger.Log().Debug("[mysql] 数据库连接成功") return }