From ab56c7451ae31cf167a003ab8bde8c521aeb8018 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E7=A5=A5=E8=B6=85?= Date: Sat, 18 Mar 2023 16:53:08 +0800 Subject: [PATCH] =?UTF-8?q?DNS=E8=A7=A3=E6=9E=90=E5=8F=91=E7=94=9F?= =?UTF-8?q?=E5=8F=98=E5=8C=96=E6=97=B6=E7=AB=8B=E5=8D=B3=E8=A7=A6=E5=8F=91?= =?UTF-8?q?=E5=90=8C=E6=AD=A5=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/db/models/dns/dns_task_dao.go | 14 +++++++++++++- internal/tasks/dns_task_executor.go | 8 +++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/internal/db/models/dns/dns_task_dao.go b/internal/db/models/dns/dns_task_dao.go index 0b02eef6..f599c524 100644 --- a/internal/db/models/dns/dns_task_dao.go +++ b/internal/db/models/dns/dns_task_dao.go @@ -19,6 +19,8 @@ const ( DNSTaskTypeDomainChange DNSTaskType = "domainChange" ) +var DNSTasksNotifier = make(chan bool, 2) + type DNSTaskDAO dbs.DAO func NewDNSTaskDAO() *DNSTaskDAO { @@ -64,7 +66,17 @@ func (this *DNSTaskDAO) CreateDNSTask(tx *dbs.Tx, clusterId int64, serverId int6 "error": "", "version": time.Now().UnixNano(), }) - return err + if err != nil { + return err + } + + // 通知更新 + select { + case DNSTasksNotifier <- true: + default: + } + + return nil } // CreateClusterTask 生成集群变更任务 diff --git a/internal/tasks/dns_task_executor.go b/internal/tasks/dns_task_executor.go index f53f7b06..8190b6f4 100644 --- a/internal/tasks/dns_task_executor.go +++ b/internal/tasks/dns_task_executor.go @@ -39,7 +39,13 @@ func NewDNSTaskExecutor(duration time.Duration) *DNSTaskExecutor { } func (this *DNSTaskExecutor) Start() { - for range this.ticker.C { + for { + select { + case <-this.ticker.C: + case <-dnsmodels.DNSTasksNotifier: + time.Sleep(3 * time.Second) // 人为延长N秒,等待可能的几个任务合并 + } + err := this.Loop() if err != nil { this.logErr("DNSTaskExecutor", err.Error())