xa changed

This commit is contained in:
yedf2 2021-08-03 14:57:13 +08:00
parent 2a36d597d7
commit a35d48cf0f
4 changed files with 21 additions and 5 deletions

View File

@ -34,8 +34,8 @@ func PanicIfFailure(res interface{}, err error) {
} }
} }
// CheckUserResponse 检查Response返回错误 // CheckResponse 检查Response返回错误
func CheckUserResponse(resp *resty.Response, err error) error { func CheckResponse(resp *resty.Response, err error) error {
if err == nil && resp != nil { if err == nil && resp != nil {
if resp.IsError() { if resp.IsError() {
return errors.New(resp.String()) return errors.New(resp.String())
@ -46,6 +46,18 @@ func CheckUserResponse(resp *resty.Response, err error) error {
return err return err
} }
// CheckResult 检查Result返回错误
func CheckResult(res interface{}, err error) error {
resp, ok := res.(*resty.Response)
if ok {
return CheckResponse(resp, err)
}
if res != nil && strings.Contains(common.MustMarshalString(res), "FAILURE") {
return ErrFailure
}
return err
}
// CheckDtmResponse check the response of dtm, if not ok ,generate error // CheckDtmResponse check the response of dtm, if not ok ,generate error
func CheckDtmResponse(resp *resty.Response, err error) error { func CheckDtmResponse(resp *resty.Response, err error) error {
if err != nil { if err != nil {
@ -135,3 +147,6 @@ var ErrFailure = errors.New("transaction FAILURE")
// ResultSuccess 表示返回成功,可以进行下一步 // ResultSuccess 表示返回成功,可以进行下一步
var ResultSuccess = common.M{"dtm_result": "SUCCESS"} var ResultSuccess = common.M{"dtm_result": "SUCCESS"}
// ResultFailure 表示返回失败,要求回滚
var ResultFailure = common.M{"dtm_result": "FAILURE"}

View File

@ -95,6 +95,7 @@ func (xc *XaClient) XaLocalTransaction(c *gin.Context, xaFunc XaLocalFunc) (ret
return return
} }
ret, rerr = xaFunc(db, xa) ret, rerr = xaFunc(db, xa)
rerr = CheckResult(ret, rerr)
if rerr != nil { if rerr != nil {
return return
} }
@ -143,5 +144,5 @@ func (x *Xa) CallBranch(body interface{}, url string) (*resty.Response, error) {
"branch_type": "action", "branch_type": "action",
}). }).
Post(url) Post(url)
return resp, CheckUserResponse(resp, err) return resp, CheckResponse(resp, err)
} }

View File

@ -56,6 +56,6 @@ func xaRollback(t *testing.T) {
}) })
assert.Error(t, err) assert.Error(t, err)
WaitTransProcessed(gid) WaitTransProcessed(gid)
assert.Equal(t, []string{"succeed", "prepared", "succeed", "prepared"}, getBranchesStatus(gid)) assert.Equal(t, []string{"succeed", "prepared"}, getBranchesStatus(gid))
assert.Equal(t, "failed", getTransStatus(gid)) assert.Equal(t, "failed", getTransStatus(gid))
} }

View File

@ -44,7 +44,7 @@ func QsFireRequest() string {
func qsAdjustBalance(uid int, amount int) (interface{}, error) { func qsAdjustBalance(uid int, amount int) (interface{}, error) {
_, err := common.SdbExec(sdbGet(), "update dtm_busi.user_account set balance = balance + ? where user_id = ?", amount, uid) _, err := common.SdbExec(sdbGet(), "update dtm_busi.user_account set balance = balance + ? where user_id = ?", amount, uid)
return M{"dtm_result": "SUCCESS"}, err return dtmcli.ResultSuccess, err
} }
func qsAddRoute(app *gin.Engine) { func qsAddRoute(app *gin.Engine) {