Browse Source

fix duplicate updatebranch

pull/330/head
yedf2 4 years ago
parent
commit
d7793bed7b
  1. 19
      dtmsvr/svr.go

19
dtmsvr/svr.go

@ -99,18 +99,23 @@ func updateBranchAsync() {
flushBranchs := func() { flushBranchs := func() {
defer dtmutil.RecoverPanic(nil) defer dtmutil.RecoverPanic(nil)
updates := []TransBranch{} updates := []TransBranch{}
exists := map[string]bool{}
started := time.Now() started := time.Now()
checkInterval := 20 * time.Millisecond checkInterval := 20 * time.Millisecond
for time.Since(started) < UpdateBranchAsyncInterval-checkInterval && len(updates) < 20 { for time.Since(started) < UpdateBranchAsyncInterval-checkInterval && len(updates) < 20 {
select { select {
case updateBranch := <-updateBranchAsyncChan: case updateBranch := <-updateBranchAsyncChan:
updates = append(updates, TransBranch{ k := updateBranch.gid + updateBranch.branchID + "-" + updateBranch.op
Gid: updateBranch.gid, if !exists[k] {
BranchID: updateBranch.branchID, exists[k] = true
Op: updateBranch.op, updates = append(updates, TransBranch{
Status: updateBranch.status, Gid: updateBranch.gid,
FinishTime: updateBranch.finishTime, BranchID: updateBranch.branchID,
}) Op: updateBranch.op,
Status: updateBranch.status,
FinishTime: updateBranch.finishTime,
})
}
case <-time.After(checkInterval): case <-time.After(checkInterval):
} }
} }

Loading…
Cancel
Save