From 2982043b0b19000588c9f74c4c56c456891100f9 Mon Sep 17 00:00:00 2001 From: wuqinqiang <1185079673@qq.com> Date: Wed, 24 Nov 2021 10:12:56 +0800 Subject: [PATCH] fix:to change update_time --- dtmsvr/dtmsvr.go | 2 +- dtmsvr/trans_status.go | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/dtmsvr/dtmsvr.go b/dtmsvr/dtmsvr.go index 08ba01b..206bbb8 100644 --- a/dtmsvr/dtmsvr.go +++ b/dtmsvr/dtmsvr.go @@ -84,7 +84,7 @@ func updateBranchAsync() { for len(updates) > 0 { dbr := dbGet().Clauses(clause.OnConflict{ OnConstraint: "trans_branch_op_pkey", - DoUpdates: clause.AssignmentColumns([]string{"status", "finish_time"}), + DoUpdates: clause.AssignmentColumns([]string{"status", "finish_time","update_time"}), }).Create(updates) dtmimp.Logf("flushed %d branch status to db. affected: %d", len(updates), dbr.RowsAffected) if dbr.Error != nil { diff --git a/dtmsvr/trans_status.go b/dtmsvr/trans_status.go index b79d41c..ecb2538 100644 --- a/dtmsvr/trans_status.go +++ b/dtmsvr/trans_status.go @@ -46,20 +46,22 @@ func (t *TransGlobal) changeStatus(db *common.DB, status string) *gorm.DB { } func (t *TransGlobal) changeBranchStatus(db *common.DB, b *TransBranch, status string) { + now := time.Now() if common.DtmConfig.UpdateBranchSync > 0 || t.updateBranchSync { err := db.Transaction(func(tx *gorm.DB) error { dbr := tx.Clauses(clause.Locking{Strength: "UPDATE"}).Model(&TransGlobal{}).Where("gid=? and status=?", t.Gid, t.Status).Find(&[]TransGlobal{}) checkAffected(dbr) // check TransGlobal is not modified dbr = tx.Model(b).Updates(map[string]interface{}{ "status": status, - "finish_time": time.Now(), + "finish_time": now, + "update_time": now, }) checkAffected(dbr) return dbr.Error }) e2p(err) } else { // 为了性能优化,把branch的status更新异步化 - updateBranchAsyncChan <- branchStatus{id: b.ID, status: status} + updateBranchAsyncChan <- branchStatus{id: b.ID, status: status, finishTime: &now} } b.Status = status }