mirror of
				https://github.com/TeaOSLab/EdgeAPI.git
				synced 2025-11-05 00:11:55 +08:00 
			
		
		
		
	修复删除节点时不能自动同步DNS的问题
This commit is contained in:
		@@ -78,8 +78,8 @@ func (this *DNSTaskDAO) CreateClusterRemoveTask(tx *dbs.Tx, clusterId int64, dom
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// CreateNodeTask 生成节点任务
 | 
					// CreateNodeTask 生成节点任务
 | 
				
			||||||
func (this *DNSTaskDAO) CreateNodeTask(tx *dbs.Tx, nodeId int64, taskType DNSTaskType) error {
 | 
					func (this *DNSTaskDAO) CreateNodeTask(tx *dbs.Tx, clusterId int64, nodeId int64, taskType DNSTaskType) error {
 | 
				
			||||||
	return this.CreateDNSTask(tx, 0, 0, nodeId, 0, "", taskType)
 | 
						return this.CreateDNSTask(tx, clusterId, 0, nodeId, 0, "", taskType)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// CreateServerTask 生成服务任务
 | 
					// CreateServerTask 生成服务任务
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1839,6 +1839,12 @@ func (this *NodeDAO) DeleteNodeFromCluster(tx *dbs.Tx, nodeId int64, clusterId i
 | 
				
			|||||||
		return nil
 | 
							return nil
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// 提前通知DNS更新,因为后面集群会有变化
 | 
				
			||||||
 | 
						err = this.NotifyDNSUpdate(tx, nodeId)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	var node = one.(*Node)
 | 
						var node = one.(*Node)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	var secondaryClusterIds = []int64{}
 | 
						var secondaryClusterIds = []int64{}
 | 
				
			||||||
@@ -2127,7 +2133,7 @@ func (this *NodeDAO) NotifyDNSUpdate(tx *dbs.Tx, nodeId int64) error {
 | 
				
			|||||||
		if len(dnsInfo.DnsName) == 0 || dnsInfo.DnsDomainId <= 0 {
 | 
							if len(dnsInfo.DnsName) == 0 || dnsInfo.DnsDomainId <= 0 {
 | 
				
			||||||
			continue
 | 
								continue
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		err = dns.SharedDNSTaskDAO.CreateNodeTask(tx, nodeId, dns.DNSTaskTypeNodeChange)
 | 
							err = dns.SharedDNSTaskDAO.CreateNodeTask(tx, clusterId, nodeId, dns.DNSTaskTypeNodeChange)
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			return err
 | 
								return err
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -604,7 +604,7 @@ func (this *NodeIPAddressDAO) NotifyUpdate(tx *dbs.Tx, addressId int64) error {
 | 
				
			|||||||
	var role = address.(*NodeIPAddress).Role
 | 
						var role = address.(*NodeIPAddress).Role
 | 
				
			||||||
	switch role {
 | 
						switch role {
 | 
				
			||||||
	case nodeconfigs.NodeRoleNode:
 | 
						case nodeconfigs.NodeRoleNode:
 | 
				
			||||||
		err = dns.SharedDNSTaskDAO.CreateNodeTask(tx, nodeId, dns.DNSTaskTypeNodeChange)
 | 
							err = dns.SharedDNSTaskDAO.CreateNodeTask(tx, 0, nodeId, dns.DNSTaskTypeNodeChange)
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			return err
 | 
								return err
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -72,7 +72,7 @@ func (this *DNSTaskExecutor) loop() error {
 | 
				
			|||||||
				}
 | 
									}
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		case dnsmodels.DNSTaskTypeNodeChange:
 | 
							case dnsmodels.DNSTaskTypeNodeChange:
 | 
				
			||||||
			err = this.doNode(taskId, int64(task.NodeId))
 | 
								err = this.doNode(taskId, int64(task.ClusterId), int64(task.NodeId))
 | 
				
			||||||
			if err != nil {
 | 
								if err != nil {
 | 
				
			||||||
				err = dnsmodels.SharedDNSTaskDAO.UpdateDNSTaskError(nil, taskId, err.Error())
 | 
									err = dnsmodels.SharedDNSTaskDAO.UpdateDNSTaskError(nil, taskId, err.Error())
 | 
				
			||||||
				if err != nil {
 | 
									if err != nil {
 | 
				
			||||||
@@ -269,8 +269,8 @@ func (this *DNSTaskExecutor) doServer(taskId int64, oldClusterId int64, serverId
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// 修改节点相关记录
 | 
					// 修改节点相关记录
 | 
				
			||||||
func (this *DNSTaskExecutor) doNode(taskId int64, nodeId int64) error {
 | 
					func (this *DNSTaskExecutor) doNode(taskId int64, nodeClusterId int64, nodeId int64) error {
 | 
				
			||||||
	isOk := false
 | 
						var isOk = false
 | 
				
			||||||
	defer func() {
 | 
						defer func() {
 | 
				
			||||||
		if isOk {
 | 
							if isOk {
 | 
				
			||||||
			err := dnsmodels.SharedDNSTaskDAO.UpdateDNSTaskDone(nil, taskId)
 | 
								err := dnsmodels.SharedDNSTaskDAO.UpdateDNSTaskDone(nil, taskId)
 | 
				
			||||||
@@ -291,15 +291,22 @@ func (this *DNSTaskExecutor) doNode(taskId int64, nodeId int64) error {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// 转交给cluster统一处理
 | 
						// 转交给cluster统一处理
 | 
				
			||||||
	clusterIds, err := models.SharedNodeDAO.FindEnabledAndOnNodeClusterIds(tx, nodeId)
 | 
						if nodeClusterId > 0 {
 | 
				
			||||||
	if err != nil {
 | 
							err = dnsmodels.SharedDNSTaskDAO.CreateClusterTask(tx, nodeClusterId, dnsmodels.DNSTaskTypeClusterChange)
 | 
				
			||||||
		return err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	for _, clusterId := range clusterIds {
 | 
					 | 
				
			||||||
		err = dnsmodels.SharedDNSTaskDAO.CreateClusterTask(tx, clusterId, dnsmodels.DNSTaskTypeClusterChange)
 | 
					 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			return err
 | 
								return err
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
						} else {
 | 
				
			||||||
 | 
							clusterIds, err := models.SharedNodeDAO.FindEnabledAndOnNodeClusterIds(tx, nodeId)
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								return err
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							for _, clusterId := range clusterIds {
 | 
				
			||||||
 | 
								err = dnsmodels.SharedDNSTaskDAO.CreateClusterTask(tx, clusterId, dnsmodels.DNSTaskTypeClusterChange)
 | 
				
			||||||
 | 
								if err != nil {
 | 
				
			||||||
 | 
									return err
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	isOk = true
 | 
						isOk = true
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user