mirror of
https://github.com/tim-beatham/smegmesh.git
synced 2025-06-25 22:41:24 +02:00
81-seperate-synchronisation-into-independent-process
- nil dereference due to concurrency issues (the method shouldn't be concurrent)
This commit is contained in:
parent
a0e7a4a644
commit
1f8d229076
@ -22,7 +22,7 @@ type Route struct {
|
|||||||
// Destination the route is advertising
|
// Destination the route is advertising
|
||||||
Destination string
|
Destination string
|
||||||
// Path to the destination
|
// Path to the destination
|
||||||
Path []string
|
Path []string
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetDestination implements mesh.Route.
|
// GetDestination implements mesh.Route.
|
||||||
|
@ -107,7 +107,7 @@ func NewCtrlServer(params *NewCtrlServerParams) (*MeshCtrlServer, error) {
|
|||||||
logging.Log.WriteErrorf(err.Error())
|
logging.Log.WriteErrorf(err.Error())
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return err
|
||||||
}, 1)
|
}, 1)
|
||||||
|
|
||||||
heartbeatTimer := lib.NewTimer(func() error {
|
heartbeatTimer := lib.NewTimer(func() error {
|
||||||
|
@ -120,7 +120,12 @@ func (m *WgMeshConfigApplyer) convertMeshNode(params convertMeshNodeParams) (*wg
|
|||||||
// getRoutes: finds the routes with the least hop distance. If more than one route exists
|
// getRoutes: finds the routes with the least hop distance. If more than one route exists
|
||||||
// consistently hash to evenly spread the distribution of traffic
|
// consistently hash to evenly spread the distribution of traffic
|
||||||
func (m *WgMeshConfigApplyer) getRoutes(meshProvider MeshProvider) (map[string][]routeNode, error) {
|
func (m *WgMeshConfigApplyer) getRoutes(meshProvider MeshProvider) (map[string][]routeNode, error) {
|
||||||
mesh, _ := meshProvider.GetMesh()
|
mesh, err := meshProvider.GetMesh()
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
routes := make(map[string][]routeNode)
|
routes := make(map[string][]routeNode)
|
||||||
|
|
||||||
peers := lib.Filter(lib.MapValues(mesh.GetNodes()), func(p MeshNode) bool {
|
peers := lib.Filter(lib.MapValues(mesh.GetNodes()), func(p MeshNode) bool {
|
||||||
|
@ -63,11 +63,6 @@ func (s *SyncerImpl) Sync(correspondingMesh mesh.MeshProvider) (bool, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
before := time.Now()
|
before := time.Now()
|
||||||
err := s.meshManager.GetRouteManager().UpdateRoutes()
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
logging.Log.WriteErrorf(err.Error())
|
|
||||||
}
|
|
||||||
|
|
||||||
publicKey := s.meshManager.GetPublicKey()
|
publicKey := s.meshManager.GetPublicKey()
|
||||||
nodeNames := correspondingMesh.GetPeers()
|
nodeNames := correspondingMesh.GetPeers()
|
||||||
@ -231,12 +226,19 @@ func (s *SyncerImpl) SyncMeshes() error {
|
|||||||
if hasChanges {
|
if hasChanges {
|
||||||
logging.Log.WriteInfof("updating the WireGuard configuration")
|
logging.Log.WriteInfof("updating the WireGuard configuration")
|
||||||
err = s.meshManager.ApplyConfig()
|
err = s.meshManager.ApplyConfig()
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
logging.Log.WriteErrorf("failed to update config %s", err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
|
err = s.meshManager.GetRouteManager().UpdateRoutes()
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
logging.Log.WriteErrorf("update routes failed %s", err.Error())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if err != nil {
|
return err
|
||||||
logging.Log.WriteInfof("failed to update config %w", err)
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type NewSyncerParams struct {
|
type NewSyncerParams struct {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user