diff --git a/dtmcli/barrier.go b/dtmcli/barrier.go index 31ee7ac..4a97a55 100644 --- a/dtmcli/barrier.go +++ b/dtmcli/barrier.go @@ -98,14 +98,14 @@ func ThroughBarrierCall(db *sql.DB, transInfo *TransInfo, busiCall BusiFunc) (re currentAffected, rerr := insertBarrier(tx, ti.TransType, ti.Gid, ti.BranchID, ti.BranchType, ti.BranchType) logrus.Printf("originAffected: %d currentAffected: %d", originAffected, currentAffected) if (ti.BranchType == "cancel" || ti.BranchType == "compensate") && originAffected > 0 { // 这个是空补偿,返回成功 - res = common.MS{"dtm_result": "SUCCESS"} + res = ResultSuccess return } else if currentAffected == 0 { // 插入不成功 var result sql.NullString err := common.StxQueryRow(tx, "select result from dtm_barrier.barrier where trans_type=? and gid=? and branch_id=? and branch_type=? and reason=?", ti.TransType, ti.Gid, ti.BranchID, ti.BranchType, ti.BranchType).Scan(&result) if err == sql.ErrNoRows { // 这个是悬挂操作,返回失败,AP收到这个返回,会尽快回滚 - res = common.MS{"dtm_result": "FAILURE"} + res = ResultFailure return } if err != nil { @@ -117,7 +117,7 @@ func ThroughBarrierCall(db *sql.DB, transInfo *TransInfo, busiCall BusiFunc) (re return } // 数据库里没有上次的结果,属于重复空补偿,直接返回成功 - res = common.MS{"dtm_result": "SUCCESS"} + res = ResultSuccess return } res, rerr = busiCall(tx) diff --git a/dtmsvr/api.go b/dtmsvr/api.go index 0ca9511..e614354 100644 --- a/dtmsvr/api.go +++ b/dtmsvr/api.go @@ -6,6 +6,7 @@ import ( "github.com/gin-gonic/gin" "github.com/yedf/dtm/common" + "github.com/yedf/dtm/dtmcli" "gorm.io/gorm" "gorm.io/gorm/clause" ) @@ -28,7 +29,7 @@ func prepare(c *gin.Context) (interface{}, error) { t := TransFromContext(c) t.Status = "prepared" t.saveNew(dbGet()) - return M{"dtm_result": "SUCCESS"}, nil + return dtmcli.ResultSuccess, nil } func submit(c *gin.Context) (interface{}, error) { @@ -41,7 +42,7 @@ func submit(c *gin.Context) (interface{}, error) { t.Status = "submitted" t.saveNew(db) go t.Process(db) - return M{"dtm_result": "SUCCESS"}, nil + return dtmcli.ResultSuccess, nil } func abort(c *gin.Context) (interface{}, error) { @@ -52,7 +53,7 @@ func abort(c *gin.Context) (interface{}, error) { return M{"dtm_result": "FAILURE", "message": fmt.Sprintf("trans type: %s current status %s, cannot abort", dbt.TransType, dbt.Status)}, nil } go dbt.Process(db) - return M{"dtm_result": "SUCCESS"}, nil + return dtmcli.ResultSuccess, nil } func registerXaBranch(c *gin.Context) (interface{}, error) { @@ -73,7 +74,7 @@ func registerXaBranch(c *gin.Context) (interface{}, error) { e2p(err) global := TransGlobal{Gid: branch.Gid} global.touch(db, config.TransCronInterval) - return M{"dtm_result": "SUCCESS"}, nil + return dtmcli.ResultSuccess, nil } func registerTccBranch(c *gin.Context) (interface{}, error) { @@ -104,7 +105,7 @@ func registerTccBranch(c *gin.Context) (interface{}, error) { e2p(err) global := TransGlobal{Gid: branch.Gid} global.touch(dbGet(), config.TransCronInterval) - return M{"dtm_result": "SUCCESS"}, nil + return dtmcli.ResultSuccess, nil } func query(c *gin.Context) (interface{}, error) { diff --git a/examples/main_saga_barrier.go b/examples/main_saga_barrier.go index da2b61b..9c50fa8 100644 --- a/examples/main_saga_barrier.go +++ b/examples/main_saga_barrier.go @@ -33,7 +33,7 @@ func SagaBarrierAddRoute(app *gin.Engine) { func sagaBarrierAdjustBalance(sdb *sql.Tx, uid int, amount int) (interface{}, error) { _, err := common.StxExec(sdb, "update dtm_busi.user_account set balance = balance + ? where user_id = ?", amount, uid) - return common.MS{"dtm_result": "SUCCESS"}, err + return dtmcli.ResultSuccess, err } diff --git a/examples/main_tcc_barrier.go b/examples/main_tcc_barrier.go index 4831b1d..e494f28 100644 --- a/examples/main_tcc_barrier.go +++ b/examples/main_tcc_barrier.go @@ -56,7 +56,7 @@ func adjustBalance(sdb *sql.Tx, uid int, amount int) (interface{}, error) { if err == nil && affected == 0 { return nil, fmt.Errorf("update 0 rows") } - return common.MS{"dtm_result": "SUCCESS"}, err + return dtmcli.ResultSuccess, err } // TCC下,转入 diff --git a/examples/main_xa.go b/examples/main_xa.go index 7af6752..b07ae83 100644 --- a/examples/main_xa.go +++ b/examples/main_xa.go @@ -30,7 +30,7 @@ func XaFireRequest() string { gid := dtmcli.MustGenGid(DtmServer) _, err := XaClient.XaGlobalTransaction(gid, func(xa *dtmcli.Xa) (*resty.Response, error) { resp, err := xa.CallBranch(&TransReq{Amount: 30}, Busi+"/TransOutXa") - if dtmcli.IsFailure(resp, err) { + if err != nil { return resp, err } return xa.CallBranch(&TransReq{Amount: 30}, Busi+"/TransInXa") @@ -42,19 +42,19 @@ func XaFireRequest() string { func xaTransIn(c *gin.Context) (interface{}, error) { return XaClient.XaLocalTransaction(c, func(db *sql.DB, xa *dtmcli.Xa) (interface{}, error) { if reqFrom(c).TransInResult == "FAILURE" { - return M{"dtm_result": "FAILURE"}, nil + return dtmcli.ResultFailure, nil } _, err := common.SdbExec(db, "update dtm_busi.user_account set balance=balance+? where user_id=?", reqFrom(c).Amount, 2) - return M{"dtm_result": "SUCCESS"}, err + return dtmcli.ResultSuccess, err }) } func xaTransOut(c *gin.Context) (interface{}, error) { return XaClient.XaLocalTransaction(c, func(db *sql.DB, xa *dtmcli.Xa) (interface{}, error) { if reqFrom(c).TransOutResult == "FAILURE" { - return M{"dtm_result": "FAILURE"}, nil + return dtmcli.ResultFailure, nil } _, err := common.SdbExec(db, "update dtm_busi.user_account set balance=balance-? where user_id=?", reqFrom(c).Amount, 1) - return M{"dtm_result": "SUCCESS"}, err + return dtmcli.ResultSuccess, err }) }