mirror of
				https://github.com/TeaOSLab/EdgeAPI.git
				synced 2025-11-04 07:50:25 +08:00 
			
		
		
		
	DNS解析发生变化时立即触发同步任务
This commit is contained in:
		@@ -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,9 +66,19 @@ func (this *DNSTaskDAO) CreateDNSTask(tx *dbs.Tx, clusterId int64, serverId int6
 | 
				
			|||||||
		"error":     "",
 | 
							"error":     "",
 | 
				
			||||||
		"version":   time.Now().UnixNano(),
 | 
							"version":   time.Now().UnixNano(),
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// 通知更新
 | 
				
			||||||
 | 
						select {
 | 
				
			||||||
 | 
						case DNSTasksNotifier <- true:
 | 
				
			||||||
 | 
						default:
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// CreateClusterTask 生成集群变更任务
 | 
					// CreateClusterTask 生成集群变更任务
 | 
				
			||||||
func (this *DNSTaskDAO) CreateClusterTask(tx *dbs.Tx, clusterId int64, taskType DNSTaskType) error {
 | 
					func (this *DNSTaskDAO) CreateClusterTask(tx *dbs.Tx, clusterId int64, taskType DNSTaskType) error {
 | 
				
			||||||
	return this.CreateDNSTask(tx, clusterId, 0, 0, 0, "", taskType)
 | 
						return this.CreateDNSTask(tx, clusterId, 0, 0, 0, "", taskType)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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())
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user