diff --git a/logic/nodes.go b/logic/nodes.go index 17d04a2d..273adba0 100644 --- a/logic/nodes.go +++ b/logic/nodes.go @@ -475,13 +475,8 @@ func DeleteExpiredNodes(ctx context.Context, peerUpdate chan *models.Node) { return } for _, node := range allnodes { + node := node if time.Now().After(node.ExpirationDateTime) { - 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()) } diff --git a/main.go b/main.go index b8b9be7a..f2ec4fcb 100644 --- a/main.go +++ b/main.go @@ -168,9 +168,19 @@ func runMessageQueue(wg *sync.WaitGroup, ctx context.Context) { go logic.ManageZombies(ctx, peerUpdate) go logic.DeleteExpiredNodes(ctx, peerUpdate) for nodeUpdate := range peerUpdate { - if err := mq.NodeUpdate(nodeUpdate); err != nil { - logger.Log(0, "failed to send peer update for deleted node: ", nodeUpdate.ID.String(), err.Error()) + if nodeUpdate == nil { + continue } + node := nodeUpdate + node.Action = models.NODE_DELETE + node.PendingDelete = true + if err := mq.NodeUpdate(node); err != nil { + logger.Log(0, "failed to send peer update for deleted node: ", node.ID.String(), err.Error()) + } + if err := logic.DeleteNode(node, true); err != nil { + slog.Error("error deleting expired node", "nodeid", node.ID.String(), "error", err.Error()) + } + go mq.PublishDeletedNodePeerUpdate(node) } }() <-ctx.Done() diff --git a/models/node.go b/models/node.go index 174d651c..05f1b4d5 100644 --- a/models/node.go +++ b/models/node.go @@ -14,8 +14,6 @@ import ( const ( // NODE_SERVER_NAME - the default server name NODE_SERVER_NAME = "netmaker" - // TEN_YEARS_IN_SECONDS - ten years in seconds - TEN_YEARS_IN_SECONDS = 315670000000000000 // MAX_NAME_LENGTH - max name length of node MAX_NAME_LENGTH = 62 // == ACTIONS == (can only be set by server) @@ -354,7 +352,7 @@ func (node *Node) SetLastPeerUpdate() { // Node.SetExpirationDateTime - sets node expiry time func (node *Node) SetExpirationDateTime() { if node.ExpirationDateTime.IsZero() { - node.ExpirationDateTime = time.Now().Add(TEN_YEARS_IN_SECONDS) + node.ExpirationDateTime = time.Now().AddDate(100, 1, 0) } }