Merge pull request #3217 from gravitl/failover_mutex

Failover mutex
This commit is contained in:
Abhishek K 2024-11-23 18:18:36 +04:00 committed by GitHub
commit dbb44c2867
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 13 additions and 1 deletions

View file

@ -219,6 +219,14 @@ func failOverME(w http.ResponseWriter, r *http.Request) {
)
return
}
if peerNode.IsFailOver {
logic.ReturnErrorResponse(
w,
r,
logic.FormatError(errors.New("peer is acting as failover"), "badrequest"),
)
return
}
if node.IsRelayed && node.RelayedBy == peerNode.ID.String() {
logic.ReturnErrorResponse(
w,

View file

@ -3,6 +3,7 @@ package logic
import (
"errors"
"net"
"sync"
"github.com/google/uuid"
"github.com/gravitl/netmaker/logger"
@ -11,8 +12,11 @@ import (
"golang.org/x/exp/slog"
)
func SetFailOverCtx(failOverNode, victimNode, peerNode models.Node) error {
var failOverCtxMutex = &sync.RWMutex{}
func SetFailOverCtx(failOverNode, victimNode, peerNode models.Node) error {
failOverCtxMutex.Lock()
defer failOverCtxMutex.Unlock()
if peerNode.FailOverPeers == nil {
peerNode.FailOverPeers = make(map[string]struct{})
}