Browse Source

add peers if no failover present

0xdcarns 2 years ago
parent
commit
4f7583e2ec
3 changed files with 21 additions and 3 deletions
  1. 6 2
      ee/logic/failover.go
  2. 14 0
      logic/nodes.go
  3. 1 1
      logic/peers.go

+ 6 - 2
ee/logic/failover.go

@@ -80,11 +80,15 @@ func setFailoverNode(failoverNode, node *models.Node) error {
 	return logic.UpdateNode(&nodeToUpdate, node)
 	return logic.UpdateNode(&nodeToUpdate, node)
 }
 }
 
 
+// WipeFailover - removes the failover peers of given node (ID)
 func WipeFailover(nodeid string) error {
 func WipeFailover(nodeid string) error {
 	metrics, err := logic.GetMetrics(nodeid)
 	metrics, err := logic.GetMetrics(nodeid)
 	if err != nil {
 	if err != nil {
 		return err
 		return err
 	}
 	}
-	metrics.FailoverPeers = make(map[string]string)
-	return logic.UpdateMetrics(nodeid, metrics)
+	if metrics != nil {
+		metrics.FailoverPeers = make(map[string]string)
+		return logic.UpdateMetrics(nodeid, metrics)
+	}
+	return nil
 }
 }

+ 14 - 0
logic/nodes.go

@@ -250,6 +250,20 @@ func ValidateNode(node *models.Node, isUpdate bool) error {
 	return err
 	return err
 }
 }
 
 
+// IsFailoverPresent - checks if a node is marked as a failover in given network
+func IsFailoverPresent(network string) bool {
+	netNodes, err := GetNetworkNodes(network)
+	if err != nil {
+		return false
+	}
+	for i := range netNodes {
+		if netNodes[i].Failover == "yes" {
+			return true
+		}
+	}
+	return false
+}
+
 // CreateNode - creates a node in database
 // CreateNode - creates a node in database
 func CreateNode(node *models.Node) error {
 func CreateNode(node *models.Node) error {
 
 

+ 1 - 1
logic/peers.go

@@ -95,7 +95,7 @@ func GetPeerUpdate(node *models.Node) (models.PeerUpdate, error) {
 		if isP2S && peer.IsHub != "yes" {
 		if isP2S && peer.IsHub != "yes" {
 			continue
 			continue
 		}
 		}
-		if len(metrics.FailoverPeers[peer.ID]) > 0 {
+		if len(metrics.FailoverPeers[peer.ID]) > 0 && IsFailoverPresent(node.Network) {
 			logger.Log(2, "peer", peer.Name, peer.PrimaryAddress(), "was found to be in failover peers list for node", node.Name, node.PrimaryAddress())
 			logger.Log(2, "peer", peer.Name, peer.PrimaryAddress(), "was found to be in failover peers list for node", node.Name, node.PrimaryAddress())
 			continue
 			continue
 		}
 		}