81-seperate-synchronisation-into-independent-process

- nil dereference due to concurrency issues (the method shouldn't be
  concurrent)
This commit is contained in:
Tim Beatham 2024-01-04 21:16:33 +00:00
parent a0e7a4a644
commit 1f8d229076
4 changed files with 22 additions and 15 deletions

View File

@ -22,7 +22,7 @@ type Route struct {
// Destination the route is advertising
Destination string
// Path to the destination
Path []string
Path []string
}
// GetDestination implements mesh.Route.

View File

@ -107,7 +107,7 @@ func NewCtrlServer(params *NewCtrlServerParams) (*MeshCtrlServer, error) {
logging.Log.WriteErrorf(err.Error())
}
return nil
return err
}, 1)
heartbeatTimer := lib.NewTimer(func() error {

View File

@ -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
// consistently hash to evenly spread the distribution of traffic
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)
peers := lib.Filter(lib.MapValues(mesh.GetNodes()), func(p MeshNode) bool {

View File

@ -63,11 +63,6 @@ func (s *SyncerImpl) Sync(correspondingMesh mesh.MeshProvider) (bool, error) {
}
before := time.Now()
err := s.meshManager.GetRouteManager().UpdateRoutes()
if err != nil {
logging.Log.WriteErrorf(err.Error())
}
publicKey := s.meshManager.GetPublicKey()
nodeNames := correspondingMesh.GetPeers()
@ -231,12 +226,19 @@ func (s *SyncerImpl) SyncMeshes() error {
if hasChanges {
logging.Log.WriteInfof("updating the WireGuard configuration")
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 {
logging.Log.WriteInfof("failed to update config %w", err)
}
return nil
return err
}
type NewSyncerParams struct {