diff --git a/internal/tasks/health_check_task.go b/internal/tasks/health_check_task.go index 9022f610..fb163611 100644 --- a/internal/tasks/health_check_task.go +++ b/internal/tasks/health_check_task.go @@ -72,12 +72,18 @@ func (this *HealthCheckTask) Loop() error { for _, cluster := range clusters { var clusterId = int64(cluster.Id) + if !cluster.IsOn { + this.stopClusterTask(clusterId) + continue + } + // 检查当前集群上是否有服务,如果尚没有部署服务,则直接跳过 countServers, err := models.SharedServerDAO.CountAllEnabledServersWithNodeClusterId(nil, clusterId) if err != nil { return err } if countServers == 0 { + this.stopClusterTask(clusterId) continue } @@ -86,8 +92,16 @@ func (this *HealthCheckTask) Loop() error { err = json.Unmarshal(cluster.HealthCheck, config) if err != nil { this.logErr("HealthCheckTask", err.Error()) + this.stopClusterTask(clusterId) continue } + if !config.IsOn { + this.stopClusterTask(clusterId) + continue + } + } else { + this.stopClusterTask(clusterId) + continue } task, ok := this.tasksMap[clusterId] @@ -112,3 +126,11 @@ func (this *HealthCheckTask) Loop() error { return nil } + +func (this *HealthCheckTask) stopClusterTask(clusterId int64) { + var task = this.tasksMap[clusterId] + if task != nil { + task.Stop() + delete(this.tasksMap, clusterId) + } +} diff --git a/internal/tasks/health_check_task_test.go b/internal/tasks/health_check_task_test.go new file mode 100644 index 00000000..1c60e896 --- /dev/null +++ b/internal/tasks/health_check_task_test.go @@ -0,0 +1,17 @@ +// Copyright 2023 GoEdge CDN goedge.cdn@gmail.com. All rights reserved. Official site: https://goedge.cn . + +package tasks_test + +import ( + "github.com/TeaOSLab/EdgeAPI/internal/tasks" + "testing" + "time" +) + +func TestNewHealthCheckTask(t *testing.T) { + var task = tasks.NewHealthCheckTask(1 * time.Minute) + err := task.Loop() + if err != nil { + t.Fatal(err) + } +}