Browse Source

timeout bug fixed

pull/44/head
yedf2 4 years ago
parent
commit
0344170242
  1. 1
      dtmsvr/api.go
  2. 2
      dtmsvr/trans.go
  3. 4
      test/barrier_tcc_test.go

1
dtmsvr/api.go

@ -42,6 +42,7 @@ func svcAbort(t *TransGlobal) (interface{}, error) {
if t.TransType != "xa" && t.TransType != "tcc" || dbt.Status != dtmcli.StatusPrepared && dbt.Status != dtmcli.StatusAborting {
return M{"dtm_result": dtmcli.ResultFailure, "message": fmt.Sprintf("trans type: '%s' current status '%s', cannot abort", dbt.TransType, dbt.Status)}, nil
}
dbt.changeStatus(db, dtmcli.StatusAborting)
return dbt.Process(db), nil
}

2
dtmsvr/trans.go

@ -77,7 +77,7 @@ func (t *TransGlobal) changeStatus(db *common.DB, status string) *gorm.DB {
func (t *TransGlobal) isTimeout() bool {
timeout := t.TimeoutToFail
if t.TimeoutToFail == 0 && t.TransType != "saga" && t.TransType != "msg" {
if t.TimeoutToFail == 0 && t.TransType != "saga" {
timeout = config.TimeoutToFail
}
if timeout == 0 {

4
test/barrier_tcc_test.go

@ -102,10 +102,10 @@ func tccBarrierDisorder(t *testing.T) {
finishedChan <- "1"
}()
dtmcli.Logf("cron to timeout and then call cancel")
go CronTransOnce()
go cronTransOnceForwardNow(300)
time.Sleep(100 * time.Millisecond)
dtmcli.Logf("cron to timeout and then call cancelled twice")
CronTransOnce()
cronTransOnceForwardNow(300)
timeoutChan <- "wake"
timeoutChan <- "wake"
<-finishedChan

Loading…
Cancel
Save