fix(region): init scalinggroup controller in correct order

This commit is contained in:
rainzm
2022-02-23 20:13:18 +08:00
parent 1538ee7669
commit 89ee7ea7f2
+19 -15
View File
@@ -40,6 +40,7 @@ import (
"yunion.io/x/onecloud/pkg/mcclient/modules"
"yunion.io/x/onecloud/pkg/util/httputils"
"yunion.io/x/onecloud/pkg/util/logclient"
"yunion.io/x/onecloud/pkg/util/nopanic"
)
type SASController struct {
@@ -86,9 +87,6 @@ var ASController = new(SASController)
func (asc *SASController) Init(options options.SASControllerOptions, cronm *cronman.SCronJobManager) {
asc.options = options
cronm.AddJobAtIntervalsWithStartRun("CheckTimer", time.Duration(options.TimerInterval)*time.Second, asc.Timer, true)
cronm.AddJobAtIntervalsWithStartRun("CheckScale", time.Duration(options.CheckScaleInterval)*time.Second, asc.CheckScale, true)
cronm.AddJobAtIntervalsWithStartRun("CheckInstanceHealth", time.Duration(options.CheckHealthInterval)*time.Minute, asc.CheckInstanceHealth, true)
asc.timerQueue = make(chan struct{}, 20)
asc.scalingQueue = make(chan struct{}, options.ConcurrentUpper)
asc.scalingGroupSet = &SLockedSet{set: sets.NewString()}
@@ -104,19 +102,25 @@ func (asc *SASController) Init(options options.SASControllerOptions, cronm *cron
sgQ.AppendField(sggSubQ.Field("total"))
asc.scalingSql = sgQ
cronm.AddJobAtIntervalsWithStartRun("CheckTimer", time.Duration(options.TimerInterval)*time.Second, asc.Timer, true)
cronm.AddJobAtIntervalsWithStartRun("CheckScale", time.Duration(options.CheckScaleInterval)*time.Second, asc.CheckScale, true)
cronm.AddJobAtIntervalsWithStartRun("CheckInstanceHealth", time.Duration(options.CheckHealthInterval)*time.Minute, asc.CheckInstanceHealth, true)
// check all scaling activity
log.Infof("check and update scaling activities...")
sas := make([]models.SScalingActivity, 0, 10)
q := models.ScalingActivityManager.Query().Equals("status", compute.SA_STATUS_EXEC)
err := db.FetchModelObjects(models.ScalingActivityManager, q, &sas)
if err != nil {
log.Errorf("unable to check and update scaling activities")
return
}
for i := range sas {
sas[i].SetFailed("", "As the service restarts, the status becomes unknown")
}
log.Infof("check and update scalngactivities complete")
nopanic.Run(func() {
log.Infof("check and update scaling activities...")
sas := make([]models.SScalingActivity, 0, 10)
q := models.ScalingActivityManager.Query().Equals("status", compute.SA_STATUS_EXEC)
err := db.FetchModelObjects(models.ScalingActivityManager, q, &sas)
if err != nil {
log.Errorf("unable to check and update scaling activities")
return
}
for i := range sas {
sas[i].SetFailed("", "As the service restarts, the status becomes unknown")
}
log.Infof("check and update scalngactivities complete")
})
}
func (asc *SASController) PreScale(group *models.SScalingGroup, userCred mcclient.TokenCredential) bool {