Ver Fonte

NET-507 suggested changes

* Possible fix for zombie nodes upon node deletion from the UI.

* Suggested changes implemented for expired nodes deletion go routine.
Farukh Khan há 2 anos atrás
pai
commit
d15db1d16e
2 ficheiros alterados com 6 adições e 6 exclusões
  1. 4 4
      controllers/hosts.go
  2. 2 2
      logic/nodes.go

+ 4 - 4
controllers/hosts.go

@@ -328,13 +328,13 @@ func deleteHostFromNetwork(w http.ResponseWriter, r *http.Request) {
 		// unset all the relayed nodes
 		logic.SetRelayedNodes(false, node.ID.String(), node.RelayedNodes)
 	}
-	node.Action = models.NODE_DELETE
-	node.PendingDelete = true
-	logger.Log(1, "deleting  node", node.ID.String(), "from host", currHost.Name)
-	if err := logic.DeleteNode(node, forceDelete); err != nil {
+	logger.Log(1, "deleting node", node.ID.String(), "from host", currHost.Name)
+	if err := logic.DeleteNode(node, false); err != nil {
 		logic.ReturnErrorResponse(w, r, logic.FormatError(fmt.Errorf("failed to delete node"), "internal"))
 		return
 	}
+	node.Action = models.NODE_DELETE
+	node.PendingDelete = true
 	// notify node change
 	runUpdates(node, false)
 	go func() { // notify of peer change

+ 2 - 2
logic/nodes.go

@@ -451,7 +451,6 @@ func DeleteExpiredNodes(ctx context.Context, peerUpdate chan *models.Node) {
 	for {
 		select {
 		case <-ctx.Done():
-			close(peerUpdate)
 			return
 		case <-time.After(time.Hour):
 			// Delete Expired Nodes Every Hour
@@ -462,11 +461,12 @@ func DeleteExpiredNodes(ctx context.Context, peerUpdate chan *models.Node) {
 			}
 			for _, node := range allnodes {
 				if time.Now().After(node.ExpirationDateTime) {
-					if err := DeleteNode(&node, true); err != nil {
+					if err := DeleteNode(&node, false); err != nil {
 						slog.Error("error deleting expired node", "nodeid", node.ID.String(), "error", err.Error())
 						continue
 					}
 					node.Action = models.NODE_DELETE
+					node.PendingDelete = true
 					peerUpdate <- &node
 					slog.Info("deleting expired node", "nodeid", node.ID.String())
 				}