updated serverUpdate check

This commit is contained in:
0xdcarns 2022-02-16 21:10:02 -05:00
parent 922ebcb4ab
commit 43b6b8c6cb

View file

@ -5,6 +5,7 @@ import (
"fmt" "fmt"
"net/http" "net/http"
"strings" "strings"
"sync"
"github.com/gorilla/mux" "github.com/gorilla/mux"
"github.com/gravitl/netmaker/database" "github.com/gravitl/netmaker/database"
@ -434,7 +435,7 @@ func uncordonNode(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusOK) w.WriteHeader(http.StatusOK)
json.NewEncoder(w).Encode("SUCCESS") json.NewEncoder(w).Encode("SUCCESS")
mq.NodeUpdate(&node) runUpdates(&node, false)
} }
// == EGRESS == // == EGRESS ==
@ -624,42 +625,45 @@ func deleteNode(w http.ResponseWriter, r *http.Request) {
func runUpdates(node *models.Node, ifaceDelta bool) { func runUpdates(node *models.Node, ifaceDelta bool) {
go func() { // don't block http response go func() { // don't block http response
if isServer(node) { // don't publish to server node err := logic.TimerCheckpoint()
if err != nil {
logger.Log(3, "error occurred on timer,", err.Error())
}
if err := runServerUpdate(node, ifaceDelta); err != nil { if err := runServerUpdate(node, ifaceDelta); err != nil {
logger.Log(1, "error running server update", err.Error()) logger.Log(1, "error running server update", err.Error())
} }
} else { // publish node update if not server // publish node update if not server
if err := mq.NodeUpdate(node); err != nil { if err := mq.NodeUpdate(node); err != nil {
logger.Log(1, "error publishing node update to node", node.Name, node.ID, err.Error()) logger.Log(1, "error publishing node update to node", node.Name, node.ID, err.Error())
} }
}
}() }()
} }
// updates local peers for a server on a given node's network // updates local peers for a server on a given node's network
func runServerUpdate(serverNode *models.Node, ifaceDelta bool) error { func runServerUpdate(node *models.Node, ifaceDelta bool) error {
var mutex sync.Mutex
err := logic.TimerCheckpoint() mutex.Lock()
if err != nil { defer mutex.Unlock()
logger.Log(3, "error occurred on timer,", err.Error())
}
if servercfg.IsClientMode() != "on" { if servercfg.IsClientMode() != "on" {
return nil return nil
} }
if ifaceDelta { if !isServer(node) && ifaceDelta {
if err := mq.PublishPeerUpdate(serverNode); err != nil { ifaceDelta = false
}
currentServerNode, err := logic.GetNetworkServerLocal(node.Network)
if err != nil {
return err
}
if ifaceDelta && logic.IsLeader(&currentServerNode) {
if err := mq.PublishPeerUpdate(&currentServerNode); err != nil {
logger.Log(1, "failed to publish peer update "+err.Error()) logger.Log(1, "failed to publish peer update "+err.Error())
} }
} }
var currentServerNode, getErr = logic.GetNetworkServerLeader(serverNode.Network) if err := logic.ServerUpdate(&currentServerNode, ifaceDelta); err != nil {
if err != nil {
return getErr
}
if err = logic.ServerUpdate(&currentServerNode, ifaceDelta); err != nil {
logger.Log(1, "server node:", currentServerNode.ID, "failed update") logger.Log(1, "server node:", currentServerNode.ID, "failed update")
return err return err
} }