Browse Source

xa rollback called before connection close

pull/340/head
yedf2 4 years ago
parent
commit
85e73b3d7f
  1. 4
      client/dtmcli/dtmimp/db_special.go
  2. 3
      client/dtmcli/dtmimp/trans_xa_base.go

4
client/dtmcli/dtmimp/db_special.go

@ -28,6 +28,9 @@ func (*mysqlDBSpecial) GetPlaceHoldSQL(sql string) string {
}
func (*mysqlDBSpecial) GetXaSQL(command string, xid string) string {
if command == "abort" {
command = "rollback"
}
return fmt.Sprintf("xa %s '%s'", command, xid)
}
@ -45,6 +48,7 @@ func (*postgresDBSpecial) GetXaSQL(command string, xid string) string {
return map[string]string{
"end": "",
"start": "begin",
"abort": "rollback",
"prepare": fmt.Sprintf("prepare transaction '%s'", xid),
"commit": fmt.Sprintf("commit prepared '%s'", xid),
"rollback": fmt.Sprintf("rollback prepared '%s'", xid),

3
client/dtmcli/dtmimp/trans_xa_base.go

@ -42,7 +42,8 @@ func XaHandleLocalTrans(xa *TransBase, dbConf DBConf, cb func(*sql.DB) error) (r
_, err := DBExec(dbConf.Driver, db, GetDBSpecial(dbConf.Driver).GetXaSQL("prepare", xaBranch))
return err
}, func() error {
return nil
_, err := DBExec(dbConf.Driver, db, GetDBSpecial(dbConf.Driver).GetXaSQL("abort", xaBranch))
return err
})
_, rerr = DBExec(dbConf.Driver, db, GetDBSpecial(dbConf.Driver).GetXaSQL("start", xaBranch))
if rerr != nil {

Loading…
Cancel
Save