in tcc/fence/service/service.go [94:119]
func (T TestTCCServiceBusiness) Commit(ctx context.Context, businessActionContext *tm.BusinessActionContext) (b bool, err error) {
db, err := sql.Open(DriverName, Url)
if err != nil {
return false, fmt.Errorf("database connect failed, msg :%s", err.Error())
}
defer db.Close()
tx, err := db.Begin()
if err != nil {
return false, fmt.Errorf("transaction begin failed, msg :%s", err.Error())
}
defer func() {
if err != nil {
err = fmt.Errorf("business method throw error: %s, rollback result: %s", err, tx.Rollback())
return
}
b, err = true, tx.Commit()
}()
err = fence.WithFence(ctx, tx, func() error {
log.Infof("TestTCCServiceBusiness Commit, param %v", businessActionContext)
return nil
})
return
}