From 1f52bc4ce98140573159dbba8bd0056dd3b427a8 Mon Sep 17 00:00:00 2001 From: yedongfu Date: Wed, 26 May 2021 10:07:23 +0800 Subject: [PATCH] alone use close --- common/types.go | 28 ++++++++++++++++++++++------ xa.go | 10 +--------- 2 files changed, 23 insertions(+), 15 deletions(-) diff --git a/common/types.go b/common/types.go index cdd9539..741d6ac 100644 --- a/common/types.go +++ b/common/types.go @@ -3,7 +3,7 @@ package common import ( "database/sql" "fmt" - "strings" + "regexp" "time" "github.com/sirupsen/logrus" @@ -81,10 +81,15 @@ func GetDsn(conf map[string]string) string { return fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&parseTime=true&loc=Local", conf["user"], conf["password"], conf["host"], conf["port"], conf["database"]) } +func ReplaceDsnPassword(dsn string) string { + reg := regexp.MustCompile(`:(.*)@`) + return reg.ReplaceAllString(dsn, "****") +} + func DbGet(conf map[string]string) *MyDb { dsn := GetDsn(conf) if dbs[dsn] == nil { - logrus.Printf("connecting %s", strings.Replace(dsn, conf["password"], "****", 1)) + logrus.Printf("connecting %s", ReplaceDsnPassword(dsn)) db1, err := gorm.Open(mysql.Open(dsn), &gorm.Config{ SkipDefaultTransaction: true, }) @@ -95,14 +100,25 @@ func DbGet(conf map[string]string) *MyDb { return dbs[dsn] } -func DbAlone(conf map[string]string) (*MyDb, *sql.DB) { - logrus.Printf("opening alone mysql: %s", GetDsn(conf)) - mdb, err := sql.Open("mysql", GetDsn(conf)) +type MyConn struct { + Conn *sql.DB + Dsn string +} + +func (conn *MyConn) Close() { + logrus.Printf("closing alone mysql: %s", ReplaceDsnPassword(conn.Dsn)) + conn.Conn.Close() +} + +func DbAlone(conf map[string]string) (*MyDb, *MyConn) { + dsn := GetDsn(conf) + logrus.Printf("opening alone mysql: %s", ReplaceDsnPassword(dsn)) + mdb, err := sql.Open("mysql", dsn) PanicIfError(err) gormDB, err := gorm.Open(mysql.New(mysql.Config{ Conn: mdb, }), &gorm.Config{}) PanicIfError(err) gormDB.Use(&tracePlugin{}) - return &MyDb{DB: gormDB}, mdb + return &MyDb{DB: gormDB}, &MyConn{Conn: mdb, Dsn: dsn} } diff --git a/xa.go b/xa.go index 1e5a2d2..1acda53 100644 --- a/xa.go +++ b/xa.go @@ -6,7 +6,6 @@ import ( "strings" "github.com/gin-gonic/gin" - "github.com/sirupsen/logrus" "github.com/yedf/dtm/common" ) @@ -41,7 +40,6 @@ func XaClientNew(server string, mysqlConf map[string]string, app *gin.Engine, ca common.MustUnmarshal(b, &req) tx, my := common.DbAlone(xa.Conf) defer func() { - logrus.Printf("closing conn %v", xa.Conf) my.Close() }() if req.Action == "commit" { @@ -59,13 +57,7 @@ func (xa *XaClient) XaLocalTransaction(gid string, transFunc XaLocalFunc) (rerr defer common.Panic2Error(&rerr) branch := common.GenGid() tx, my := common.DbAlone(xa.Conf) - defer func() { - logrus.Printf("closing conn %v", xa.Conf) - my.Close() - }() - // tx1 := db.Session(&gorm.Session{SkipDefaultTransaction: true}) - // common.PanicIfError(tx1.Error) - // tx := common.MyDb{DB: tx1} + defer func() { my.Close() }() tx.Must().Exec(fmt.Sprintf("XA start '%s'", branch)) err := transFunc(tx) common.PanicIfError(err)