修复删除节点时不能自动同步DNS的问题

This commit is contained in:
刘祥超
2022-11-26 19:02:08 +08:00
parent 173ac5a8aa
commit 3d3228fe96
4 changed files with 26 additions and 13 deletions

View File

@@ -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 生成服务任务

View File

@@ -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
} }

View File

@@ -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
} }

View File

@@ -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