From 19890c209f9557c5922ab751d3c1a8a93a2348c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E7=A5=A5=E8=B6=85?= Date: Sun, 28 May 2023 15:13:15 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=81=A5=E5=BA=B7=E6=A3=80?= =?UTF-8?q?=E6=9F=A5=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/tasks/health_check_task.go | 22 ++++++++++++++++++++++ internal/tasks/health_check_task_test.go | 17 +++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 internal/tasks/health_check_task_test.go 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) + } +}