From 1e2c4f29d4d5bad17fbb879d8540c50ce9e8be27 Mon Sep 17 00:00:00 2001 From: GoEdgeLab Date: Mon, 18 Apr 2022 18:35:57 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A6=82=E6=9E=9C=E6=9C=8D=E5=8A=A1=E5=8F=98?= =?UTF-8?q?=E6=9B=B4=E9=9B=86=E7=BE=A4=E5=89=8D=E5=90=8E=E5=9F=9F=E5=90=8D?= =?UTF-8?q?ID=E4=B8=80=E8=87=B4=EF=BC=8C=E5=88=99=E4=B8=8D=E6=89=A7?= =?UTF-8?q?=E8=A1=8C=E5=88=A0=E9=99=A4=E6=93=8D=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/tasks/dns_task_executor.go | 48 ++++++++++++++++------------- 1 file changed, 27 insertions(+), 21 deletions(-) diff --git a/internal/tasks/dns_task_executor.go b/internal/tasks/dns_task_executor.go index 3934b68e..dad27244 100644 --- a/internal/tasks/dns_task_executor.go +++ b/internal/tasks/dns_task_executor.go @@ -132,29 +132,39 @@ func (this *DNSTaskExecutor) doServer(taskId int64, oldClusterId int64, serverId var recordName = serverDNS.DnsName var recordType = dnstypes.RecordTypeCNAME + // 新的DNS设置 + manager, newDomainId, domain, clusterDNSName, dnsConfig, err := this.findDNSManager(tx, int64(serverDNS.ClusterId)) + if err != nil { + return err + } + // 如果集群发生了变化,则从老的集群中删除 if oldClusterId > 0 && int64(serverDNS.ClusterId) != oldClusterId { oldManager, oldDomainId, oldDomain, _, _, err := this.findDNSManager(tx, oldClusterId) if err != nil { return err } - if oldManager != nil { - oldRecord, err := oldManager.QueryRecord(oldDomain, recordName, recordType) - if err != nil { - return err - } - if oldRecord != nil { - // 删除记录 - err = oldManager.DeleteRecord(oldDomain, oldRecord) + + // 如果域名发生了变化 + if oldDomainId != newDomainId { + if oldManager != nil { + oldRecord, err := oldManager.QueryRecord(oldDomain, recordName, recordType) if err != nil { return err } + if oldRecord != nil { + // 删除记录 + err = oldManager.DeleteRecord(oldDomain, oldRecord) + if err != nil { + return err + } - // 更新域名中记录缓存 - // 这里不创建域名更新任务,而是直接更新,避免影响其他任务的执行 - err = this.doDomain(oldDomainId) - if err != nil { - return err + // 更新域名中记录缓存 + // 这里不创建域名更新任务,而是直接更新,避免影响其他任务的执行 + err = this.doDomain(oldDomainId) + if err != nil { + return err + } } } } @@ -164,10 +174,6 @@ func (this *DNSTaskExecutor) doServer(taskId int64, oldClusterId int64, serverId } // 处理新的集群 - manager, domainId, domain, clusterDNSName, dnsConfig, err := this.findDNSManager(tx, int64(serverDNS.ClusterId)) - if err != nil { - return err - } if manager == nil { isOk = true return nil @@ -191,7 +197,7 @@ func (this *DNSTaskExecutor) doServer(taskId int64, oldClusterId int64, serverId if err != nil { return err } - err = dnsmodels.SharedDNSTaskDAO.CreateDomainTask(tx, domainId, dnsmodels.DNSTaskTypeDomainChange) + err = dnsmodels.SharedDNSTaskDAO.CreateDomainTask(tx, newDomainId, dnsmodels.DNSTaskTypeDomainChange) if err != nil { return err } @@ -200,7 +206,7 @@ func (this *DNSTaskExecutor) doServer(taskId int64, oldClusterId int64, serverId isOk = true } else { // 是否已存在 - exist, err := dnsmodels.SharedDNSDomainDAO.ExistDomainRecord(tx, domainId, recordName, recordType, recordRoute, recordValue) + exist, err := dnsmodels.SharedDNSDomainDAO.ExistDomainRecord(tx, newDomainId, recordName, recordType, recordRoute, recordValue) if err != nil { return err } @@ -225,7 +231,7 @@ func (this *DNSTaskExecutor) doServer(taskId int64, oldClusterId int64, serverId if err != nil { return err } - err = dnsmodels.SharedDNSTaskDAO.CreateDomainTask(tx, domainId, dnsmodels.DNSTaskTypeDomainChange) + err = dnsmodels.SharedDNSTaskDAO.CreateDomainTask(tx, newDomainId, dnsmodels.DNSTaskTypeDomainChange) if err != nil { return err } @@ -243,7 +249,7 @@ func (this *DNSTaskExecutor) doServer(taskId int64, oldClusterId int64, serverId return err } - err = dnsmodels.SharedDNSTaskDAO.CreateDomainTask(tx, domainId, dnsmodels.DNSTaskTypeDomainChange) + err = dnsmodels.SharedDNSTaskDAO.CreateDomainTask(tx, newDomainId, dnsmodels.DNSTaskTypeDomainChange) if err != nil { return err }