🐛 [dashboard v0.3.7] cron: 修复一些计划任务数据问题

This commit is contained in:
naiba
2021-01-23 15:32:04 +08:00
parent d88c34da4e
commit ed8dc18caa
4 changed files with 26 additions and 19 deletions

View File

@@ -75,13 +75,13 @@ func (ma *memberAPI) delete(c *gin.Context) {
err = dao.DB.Delete(&model.MonitorHistory{}, "monitor_id = ?", id).Error
}
case "cron":
err = dao.DB.Delete(&model.Cron{}, "id = ?", id).Error
if err == nil {
dao.CronLock.RLock()
defer dao.CronLock.RUnlock()
if dao.Crons[id].CronID != 0 {
dao.Cron.Remove(dao.Crons[id].CronID)
cr := dao.Crons[id]
if cr != nil && cr.CronID != 0 {
dao.Cron.Remove(cr.CronID)
}
delete(dao.Crons, id)
}
@@ -264,13 +264,15 @@ func (ma *memberAPI) addOrEditCron(c *gin.Context) {
return
}
if cr.CronID != 0 {
dao.Cron.Remove(cr.CronID)
dao.ServerLock.Lock()
defer dao.ServerLock.Unlock()
crOld := dao.Crons[cr.ID]
if crOld != nil && crOld.CronID != 0 {
dao.Cron.Remove(crOld.CronID)
}
cr.CronID, err = dao.Cron.AddFunc(cr.Scheduler, func() {
dao.ServerLock.RLock()
defer dao.ServerLock.RUnlock()
for j := 0; j < len(cr.Servers); j++ {
if dao.ServerList[cr.Servers[j]].TaskStream != nil {
dao.ServerList[cr.Servers[j]].TaskStream.Send(&pb.Task{
@@ -284,6 +286,9 @@ func (ma *memberAPI) addOrEditCron(c *gin.Context) {
}
})
delete(dao.Crons, cr.ID)
dao.Crons[cr.ID] = &cr
c.JSON(http.StatusOK, model.Response{
Code: http.StatusOK,
})