diff --git a/internal/db/models/dns/dns_task_dao.go b/internal/db/models/dns/dns_task_dao.go index c433e079..21ef68ec 100644 --- a/internal/db/models/dns/dns_task_dao.go +++ b/internal/db/models/dns/dns_task_dao.go @@ -78,8 +78,8 @@ func (this *DNSTaskDAO) CreateClusterRemoveTask(tx *dbs.Tx, clusterId int64, dom } // CreateNodeTask 生成节点任务 -func (this *DNSTaskDAO) CreateNodeTask(tx *dbs.Tx, nodeId int64, taskType DNSTaskType) error { - return this.CreateDNSTask(tx, 0, 0, nodeId, 0, "", taskType) +func (this *DNSTaskDAO) CreateNodeTask(tx *dbs.Tx, clusterId int64, nodeId int64, taskType DNSTaskType) error { + return this.CreateDNSTask(tx, clusterId, 0, nodeId, 0, "", taskType) } // CreateServerTask 生成服务任务 diff --git a/internal/db/models/node_dao.go b/internal/db/models/node_dao.go index 0fc72295..eb064a4d 100644 --- a/internal/db/models/node_dao.go +++ b/internal/db/models/node_dao.go @@ -1839,6 +1839,12 @@ func (this *NodeDAO) DeleteNodeFromCluster(tx *dbs.Tx, nodeId int64, clusterId i return nil } + // 提前通知DNS更新,因为后面集群会有变化 + err = this.NotifyDNSUpdate(tx, nodeId) + if err != nil { + return err + } + var node = one.(*Node) 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 { continue } - err = dns.SharedDNSTaskDAO.CreateNodeTask(tx, nodeId, dns.DNSTaskTypeNodeChange) + err = dns.SharedDNSTaskDAO.CreateNodeTask(tx, clusterId, nodeId, dns.DNSTaskTypeNodeChange) if err != nil { return err } diff --git a/internal/db/models/node_ip_address_dao.go b/internal/db/models/node_ip_address_dao.go index 853580df..3ab3f5b7 100644 --- a/internal/db/models/node_ip_address_dao.go +++ b/internal/db/models/node_ip_address_dao.go @@ -604,7 +604,7 @@ func (this *NodeIPAddressDAO) NotifyUpdate(tx *dbs.Tx, addressId int64) error { var role = address.(*NodeIPAddress).Role switch role { case nodeconfigs.NodeRoleNode: - err = dns.SharedDNSTaskDAO.CreateNodeTask(tx, nodeId, dns.DNSTaskTypeNodeChange) + err = dns.SharedDNSTaskDAO.CreateNodeTask(tx, 0, nodeId, dns.DNSTaskTypeNodeChange) if err != nil { return err } diff --git a/internal/tasks/dns_task_executor.go b/internal/tasks/dns_task_executor.go index 26c2e429..fde35a9e 100644 --- a/internal/tasks/dns_task_executor.go +++ b/internal/tasks/dns_task_executor.go @@ -72,7 +72,7 @@ func (this *DNSTaskExecutor) loop() error { } } case dnsmodels.DNSTaskTypeNodeChange: - err = this.doNode(taskId, int64(task.NodeId)) + err = this.doNode(taskId, int64(task.ClusterId), int64(task.NodeId)) if err != nil { err = dnsmodels.SharedDNSTaskDAO.UpdateDNSTaskError(nil, taskId, err.Error()) 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 { - isOk := false +func (this *DNSTaskExecutor) doNode(taskId int64, nodeClusterId int64, nodeId int64) error { + var isOk = false defer func() { if isOk { err := dnsmodels.SharedDNSTaskDAO.UpdateDNSTaskDone(nil, taskId) @@ -291,15 +291,22 @@ func (this *DNSTaskExecutor) doNode(taskId int64, nodeId int64) error { } // 转交给cluster统一处理 - 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 nodeClusterId > 0 { + err = dnsmodels.SharedDNSTaskDAO.CreateClusterTask(tx, nodeClusterId, dnsmodels.DNSTaskTypeClusterChange) if err != nil { 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