NET-891: Send deleted node peer update when expired (#2763)

* send deleted node peer update when expired

* set default expiration to 100 years

* pruge expired nodes

* send mq node delete update before deleting node

* initalise to new var

* revert expiration time interval
This commit is contained in:
Abhishek K 2024-01-12 16:01:40 +05:30 committed by GitHub
parent 5bf30b2c10
commit 718f739b7d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 14 additions and 11 deletions

View file

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

14
main.go
View file

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

View file

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