DNS解析发生变化时立即触发同步任务

This commit is contained in:
GoEdgeLab
2023-03-18 16:53:08 +08:00
parent 55d832cde9
commit eb512f1e69
2 changed files with 20 additions and 2 deletions

View File

@@ -19,6 +19,8 @@ const (
DNSTaskTypeDomainChange DNSTaskType = "domainChange" DNSTaskTypeDomainChange DNSTaskType = "domainChange"
) )
var DNSTasksNotifier = make(chan bool, 2)
type DNSTaskDAO dbs.DAO type DNSTaskDAO dbs.DAO
func NewDNSTaskDAO() *DNSTaskDAO { func NewDNSTaskDAO() *DNSTaskDAO {
@@ -64,7 +66,17 @@ func (this *DNSTaskDAO) CreateDNSTask(tx *dbs.Tx, clusterId int64, serverId int6
"error": "", "error": "",
"version": time.Now().UnixNano(), "version": time.Now().UnixNano(),
}) })
return err if err != nil {
return err
}
// 通知更新
select {
case DNSTasksNotifier <- true:
default:
}
return nil
} }
// CreateClusterTask 生成集群变更任务 // CreateClusterTask 生成集群变更任务

View File

@@ -39,7 +39,13 @@ func NewDNSTaskExecutor(duration time.Duration) *DNSTaskExecutor {
} }
func (this *DNSTaskExecutor) Start() { 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() err := this.Loop()
if err != nil { if err != nil {
this.logErr("DNSTaskExecutor", err.Error()) this.logErr("DNSTaskExecutor", err.Error())