From 619c839dcec34a02743be9e494f8b673e168b5a2 Mon Sep 17 00:00:00 2001 From: Benjamin Wenger <ben@elixxir.ioo> Date: Tue, 9 Mar 2021 13:32:17 -0800 Subject: [PATCH] made the number of parallel node registrations configurable and made it default of 8 to speed up registration with a large network --- interfaces/params/network.go | 3 +++ network/manager.go | 2 +- network/node/register.go | 15 ++++++++++----- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/interfaces/params/network.go b/interfaces/params/network.go index f3de8ea10..b73efc7a3 100644 --- a/interfaces/params/network.go +++ b/interfaces/params/network.go @@ -21,6 +21,8 @@ type Network struct { // Longest delay between network events for Health tracker to denote that // the network is in a bad state NetworkHealthTimeout time.Duration + //Number of parallel node registration the client is capable of + ParallelNodeRegistrations uint Rounds Messages @@ -36,6 +38,7 @@ func GetDefaultNetwork() Network { RegNodesBufferLen: 500, NetworkHealthTimeout: 30 * time.Second, E2EParams: GetDefaultE2ESessionParams(), + ParallelNodeRegistrations: 8, } n.Rounds = GetDefaultRounds() n.Messages = GetDefaultMessage() diff --git a/network/manager.go b/network/manager.go index 8e929f2e9..a9c9f1ea3 100644 --- a/network/manager.go +++ b/network/manager.go @@ -124,7 +124,7 @@ func (m *manager) Follow(report interfaces.ClientErrorReport) (stoppable.Stoppab // Node Updates multi.Add(node.StartRegistration(m.Instance, m.Session, m.Rng, - m.Comms, m.NodeRegistration)) // Adding/Keys + m.Comms, m.NodeRegistration, m.param.ParallelNodeRegistrations)) // Adding/Keys //TODO-remover //m.runners.Add(StartNodeRemover(m.Context)) // Removing diff --git a/network/node/register.go b/network/node/register.go index 9393ec97e..fa1690aa2 100644 --- a/network/node/register.go +++ b/network/node/register.go @@ -41,14 +41,20 @@ type RegisterNodeCommsInterface interface { } func StartRegistration(instance *network.Instance, session *storage.Session, rngGen *fastRNG.StreamGenerator, comms RegisterNodeCommsInterface, - c chan network.NodeGateway) stoppable.Stoppable { - stop := stoppable.NewSingle("NodeRegistration") + c chan network.NodeGateway, numParallel uint) stoppable.Stoppable { + + multi := stoppable.NewMulti("NodeRegistrations") instance.SetAddGatewayChan(c) - go registerNodes(session, rngGen, comms, stop, c) + for i:=uint(0);i<numParallel;i++{ + stop := stoppable.NewSingle(fmt.Sprintf("NodeRegistration %d", i)) + + go registerNodes(session, rngGen, comms, stop, c) + multi.Add(stop) + } - return stop + return multi } func registerNodes(session *storage.Session, rngGen *fastRNG.StreamGenerator, comms RegisterNodeCommsInterface, @@ -74,7 +80,6 @@ func registerNodes(session *storage.Session, rngGen *fastRNG.StreamGenerator, co case <-t.C: } } - } //registerWithNode serves as a helper for RegisterWithNodes -- GitLab