mirror of
https://github.com/gravitl/netmaker.git
synced 2025-10-05 16:57:51 +08:00
NET-507 (#2506)
* NET-507 * Fixed server restart changing the node expiration date to the defaults. * Removed expired nodes removal from zombie cleanup routine. * Added a new expired nodes deletion routine which removes expired nodes every hour. * NET-507 suggested changes * Possible fix for zombie nodes upon node deletion from the UI. * Suggested changes implemented for expired nodes deletion go routine. * NET-507 typo fix * typo fix for DeleteNode purge parameter
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package logic
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
@@ -20,6 +21,7 @@ import (
|
||||
"github.com/gravitl/netmaker/models"
|
||||
"github.com/gravitl/netmaker/servercfg"
|
||||
"github.com/gravitl/netmaker/validation"
|
||||
"golang.org/x/exp/slog"
|
||||
)
|
||||
|
||||
var (
|
||||
@@ -444,6 +446,35 @@ func GetAllNodesAPI(nodes []models.Node) []models.ApiNode {
|
||||
return apiNodes[:]
|
||||
}
|
||||
|
||||
// DeleteExpiredNodes - goroutine which deletes nodes which are expired
|
||||
func DeleteExpiredNodes(ctx context.Context, peerUpdate chan *models.Node) {
|
||||
for {
|
||||
select {
|
||||
case <-ctx.Done():
|
||||
return
|
||||
case <-time.After(time.Hour):
|
||||
// Delete Expired Nodes Every Hour
|
||||
allnodes, err := GetAllNodes()
|
||||
if err != nil {
|
||||
slog.Error("failed to retrieve all nodes", "error", err.Error())
|
||||
return
|
||||
}
|
||||
for _, node := range allnodes {
|
||||
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())
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// == PRO ==
|
||||
|
||||
func updateProNodeACLS(node *models.Node) error {
|
||||
|
Reference in New Issue
Block a user