NET-1154:fix stale node issue on multinet when deleting host (#2940)

* fix stale node issue on multinet when deleting host

* fix stale node when deleting host or uninstall
This commit is contained in:
Max Ma 2024-06-03 08:28:21 +02:00 committed by GitHub
parent 5ea2c9f9ed
commit 35a8528030
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 10 additions and 17 deletions

View file

@ -304,17 +304,17 @@ func deleteHost(w http.ResponseWriter, r *http.Request) {
slog.Error("failed to remove host credentials from EMQX", "id", currHost.ID, "error", err)
}
}
if err = logic.RemoveHost(currHost, forceDelete); err != nil {
logger.Log(0, r.Header.Get("user"), "failed to delete a host:", err.Error())
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
return
}
if err = mq.HostUpdate(&models.HostUpdate{
Action: models.DeleteHost,
Host: *currHost,
}); err != nil {
logger.Log(0, r.Header.Get("user"), "failed to send delete host update: ", currHost.ID.String(), err.Error())
}
if err = logic.RemoveHost(currHost, forceDelete); err != nil {
logger.Log(0, r.Header.Get("user"), "failed to delete a host:", err.Error())
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
return
}
apiHostData := currHost.ConvertNMHostToAPI()
logger.Log(2, r.Header.Get("user"), "removed host", currHost.Name)

View file

@ -396,20 +396,13 @@ func DissasociateNodeFromHost(n *models.Node, h *models.Host) error {
if len(h.Nodes) == 0 {
return fmt.Errorf("no nodes present in given host")
}
index := -1
nList := []string{}
for i := range h.Nodes {
if h.Nodes[i] == n.ID.String() {
index = i
break
if h.Nodes[i] != n.ID.String() {
nList = append(nList, h.Nodes[i])
}
}
if index < 0 {
if len(h.Nodes) == 0 {
return fmt.Errorf("node %s, not found in host, %s", n.ID.String(), h.ID.String())
}
} else {
h.Nodes = RemoveStringSlice(h.Nodes, index)
}
h.Nodes = nList
go func() {
if servercfg.IsPro {
if clients, err := GetNetworkExtClients(n.Network); err != nil {
@ -434,7 +427,7 @@ func DisassociateAllNodesFromHost(hostID string) error {
for _, nodeID := range host.Nodes {
node, err := GetNodeByID(nodeID)
if err != nil {
logger.Log(0, "failed to get host node", err.Error())
logger.Log(0, "failed to get host node, node id:", nodeID, err.Error())
continue
}
if err := DeleteNode(&node, true); err != nil {