From 3d3228fe96d55994906a61722b16a10d35aada40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E7=A5=A5=E8=B6=85?= Date: Sat, 26 Nov 2022 19:02:08 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=88=A0=E9=99=A4=E8=8A=82?= =?UTF-8?q?=E7=82=B9=E6=97=B6=E4=B8=8D=E8=83=BD=E8=87=AA=E5=8A=A8=E5=90=8C?= =?UTF-8?q?=E6=AD=A5DNS=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/db/models/dns/dns_task_dao.go | 4 ++-- internal/db/models/node_dao.go | 8 +++++++- internal/db/models/node_ip_address_dao.go | 2 +- internal/tasks/dns_task_executor.go | 25 +++++++++++++++-------- 4 files changed, 26 insertions(+), 13 deletions(-) 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