From 85e73b3d7f2b9bf5f4cdb98845fbdf9349b9adc6 Mon Sep 17 00:00:00 2001 From: yedf2 <120050102@qq.com> Date: Thu, 11 Aug 2022 16:16:20 +0800 Subject: [PATCH] xa rollback called before connection close --- client/dtmcli/dtmimp/db_special.go | 4 ++++ client/dtmcli/dtmimp/trans_xa_base.go | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/client/dtmcli/dtmimp/db_special.go b/client/dtmcli/dtmimp/db_special.go index 2f20f17..d9128b1 100644 --- a/client/dtmcli/dtmimp/db_special.go +++ b/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), diff --git a/client/dtmcli/dtmimp/trans_xa_base.go b/client/dtmcli/dtmimp/trans_xa_base.go index d936b6a..a77b616 100644 --- a/client/dtmcli/dtmimp/trans_xa_base.go +++ b/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 {