From bfa04856aaa92878de1a1e1c868b9bd3b5f9042e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E7=A5=A5=E8=B6=85?= Date: Wed, 16 Nov 2022 09:01:41 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=8C=E6=AD=A5=E5=9F=9F=E5=90=8D=E8=A7=A3?= =?UTF-8?q?=E6=9E=90=E6=97=B6=E8=87=AA=E5=8A=A8=E5=89=94=E9=99=A4=E7=9B=B8?= =?UTF-8?q?=E5=90=8C=E7=9A=84=E8=8A=82=E7=82=B9A=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/rpc/services/service_dns_domain.go | 11 ++++++++++- internal/tasks/dns_task_executor.go | 9 +++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/internal/rpc/services/service_dns_domain.go b/internal/rpc/services/service_dns_domain.go index debb8453..2c2de1bc 100644 --- a/internal/rpc/services/service_dns_domain.go +++ b/internal/rpc/services/service_dns_domain.go @@ -470,6 +470,7 @@ func (this *DNSDomainService) findClusterDNSChanges(cluster *models.NodeCluster, // 新增的节点域名 var nodeKeys = []string{} + var addingNodeRecordKeysMap = map[string]bool{} // clusterDnsName_type_ip_route for _, node := range nodes { ipAddresses, err := models.SharedNodeIPAddressDAO.FindNodeAccessAndUpIPAddresses(tx, int64(node.Id), nodeconfigs.NodeRoleNode) if err != nil { @@ -499,7 +500,7 @@ func (this *DNSDomainService) findClusterDNSChanges(cluster *models.NodeCluster, if net.ParseIP(ip) == nil { continue } - key := ip + "_" + route + var key = ip + "_" + route nodeKeys = append(nodeKeys, key) record, ok := nodeRecordMapping[key] if !ok { @@ -507,6 +508,14 @@ func (this *DNSDomainService) findClusterDNSChanges(cluster *models.NodeCluster, if utils.IsIPv6(ip) { recordType = dnstypes.RecordTypeAAAA } + + // 避免添加重复的记录 + var fullKey = clusterDnsName + "_" + recordType + "_" + ip + "_" + route + if addingNodeRecordKeysMap[fullKey] { + continue + } + addingNodeRecordKeysMap[fullKey] = true + result = append(result, maps.Map{ "action": "create", "record": &dnstypes.Record{ diff --git a/internal/tasks/dns_task_executor.go b/internal/tasks/dns_task_executor.go index 36f6c255..26c2e429 100644 --- a/internal/tasks/dns_task_executor.go +++ b/internal/tasks/dns_task_executor.go @@ -361,6 +361,7 @@ func (this *DNSTaskExecutor) doCluster(taskId int64, clusterId int64) error { return err } var isChanged = false + var addingNodeRecordKeysMap = map[string]bool{} // clusterDnsName_type_ip_route for _, node := range nodes { routes, err := node.DNSRouteCodesForDomainId(domainId) if err != nil { @@ -398,6 +399,14 @@ func (this *DNSTaskExecutor) doCluster(taskId int64, clusterId int64) error { if utils.IsIPv6(ip) { recordType = dnstypes.RecordTypeAAAA } + + // 避免添加重复的记录 + var fullKey = clusterDNSName + "_" + recordType + "_" + ip + "_" + route + if addingNodeRecordKeysMap[fullKey] { + continue + } + addingNodeRecordKeysMap[fullKey] = true + err = manager.AddRecord(domain, &dnstypes.Record{ Id: "", Name: clusterDNSName,