Browse Source

use XaDB for xa local transaction

pull/251/head
yedf2 4 years ago
parent
commit
24e183830d
  1. 2
      dtmcli/dtmimp/trans_xa_base.go
  2. 10
      dtmcli/dtmimp/utils.go

2
dtmcli/dtmimp/trans_xa_base.go

@ -33,7 +33,7 @@ func XaHandlePhase2(gid string, dbConf DBConf, branchID string, op string) error
// XaHandleLocalTrans public handler of LocalTransaction via http/grpc
func XaHandleLocalTrans(xa *TransBase, dbConf DBConf, cb func(*sql.DB) error) (rerr error) {
xaBranch := xa.Gid + "-" + xa.BranchID
db, rerr := StandaloneDB(dbConf)
db, rerr := XaDB(dbConf)
if rerr != nil {
return
}

10
dtmcli/dtmimp/utils.go

@ -176,6 +176,16 @@ func StandaloneDB(conf DBConf) (*sql.DB, error) {
return sql.Open(conf.Driver, dsn)
}
// XaDB return a standalone db instance for xa
func XaDB(conf DBConf) (*sql.DB, error) {
dsn := GetDsn(conf)
if conf.Driver == DBTypeMysql {
dsn += "&autocommit=0"
}
logger.Infof("opening standalone %s: %s", conf.Driver, strings.Replace(dsn, conf.Password, "****", 1))
return sql.Open(conf.Driver, dsn)
}
// DBExec use raw db to exec
func DBExec(db DB, sql string, values ...interface{}) (affected int64, rerr error) {
if sql == "" {

Loading…
Cancel
Save