Skip to content

Commit

Permalink
fix: 避免rds任务交叉运行
Browse files Browse the repository at this point in the history
  • Loading branch information
Qu Xuan committed Apr 24, 2020
1 parent 69ae7ca commit 5754fe9
Showing 1 changed file with 27 additions and 0 deletions.
27 changes: 27 additions & 0 deletions pkg/compute/models/dbinstances.go
Original file line number Diff line number Diff line change
Expand Up @@ -776,6 +776,15 @@ func (self *SDBInstance) AllowPerformSyncstatus(ctx context.Context, userCred mc
}

func (self *SDBInstance) PerformSyncstatus(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, data jsonutils.JSONObject) (jsonutils.JSONObject, error) {
var openTask = true
count, err := taskman.TaskManager.QueryTasksOfObject(self, time.Now().Add(-3*time.Minute), &openTask).CountWithError()
if err != nil {
return nil, err
}
if count > 0 {
return nil, httperrors.NewBadRequestError("DBInstance has %d task active, can't sync status", count)
}

return nil, StartResourceSyncStatusTask(ctx, userCred, self, "DBInstanceSyncStatusTask", "")
}

Expand All @@ -784,6 +793,15 @@ func (self *SDBInstance) AllowPerformSync(ctx context.Context, userCred mcclient
}

func (self *SDBInstance) PerformSync(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, data jsonutils.JSONObject) (jsonutils.JSONObject, error) {
var openTask = true
count, err := taskman.TaskManager.QueryTasksOfObject(self, time.Now().Add(-3*time.Minute), &openTask).CountWithError()
if err != nil {
return nil, err
}
if count > 0 {
return nil, httperrors.NewBadRequestError("DBInstance has %d task active, can't sync status", count)
}

return nil, self.StartDBInstanceSyncTask(ctx, userCred, jsonutils.NewDict(), "")
}

Expand All @@ -792,6 +810,15 @@ func (self *SDBInstance) AllowPerformSyncStatus(ctx context.Context, userCred mc
}

func (self *SDBInstance) PerformSyncStatus(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, data jsonutils.JSONObject) (jsonutils.JSONObject, error) {
var openTask = true
count, err := taskman.TaskManager.QueryTasksOfObject(self, time.Now().Add(-3*time.Minute), &openTask).CountWithError()
if err != nil {
return nil, err
}
if count > 0 {
return nil, httperrors.NewBadRequestError("DBInstance has %d task active, can't sync status", count)
}

return nil, StartResourceSyncStatusTask(ctx, userCred, self, "DBInstanceSyncStatusTask", "")
}

Expand Down

0 comments on commit 5754fe9

Please sign in to comment.