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())