diff options
author | Ganesh Vanahalli <ganesh.vanahalli@algorand.com> | 2022-08-04 11:12:47 -0400 |
---|---|---|
committer | Ganesh Vanahalli <ganesh.vanahalli@algorand.com> | 2022-08-04 11:12:47 -0400 |
commit | 1325c49b224d50ad4992e3430ad3bfa81cfbea1d (patch) | |
tree | a33b83b3caf26074edb5e5e7766b9b09c1634c9d | |
parent | 7471a39ec8562f51bac2fbdd753ea588c13bf4a2 (diff) |
updated peerSelectorexport-functions-from-catchup
-rw-r--r-- | catchup/peerSelector.go | 21 | ||||
-rw-r--r-- | catchup/service.go | 18 | ||||
-rw-r--r-- | catchup/service_test.go | 16 |
3 files changed, 21 insertions, 34 deletions
diff --git a/catchup/peerSelector.go b/catchup/peerSelector.go index c3ea8075f..75af85883 100644 --- a/catchup/peerSelector.go +++ b/catchup/peerSelector.go @@ -24,6 +24,7 @@ import ( "github.com/algorand/go-deadlock" + "github.com/algorand/go-algorand/config" "github.com/algorand/go-algorand/crypto" "github.com/algorand/go-algorand/network" ) @@ -80,12 +81,6 @@ type peerClass struct { peerClass network.PeerOption } -// PeerClassExported exports peerClass struct -type PeerClassExported struct { - InitialRank int - PeerClass network.PeerOption -} - // the peersRetriever is a subset of the network.GossipNode used to ensure that we can create an instance of the PeerSelector // for testing purposes, providing just the above function. type peersRetriever interface { @@ -274,17 +269,9 @@ func (hs *historicStats) push(value int, counter uint64, class peerClass) (avera return bounded } -// MakePeerSelectorExported exports makePeerSelector function -func MakePeerSelectorExported(net peersRetriever, initialPeersClasses []PeerClassExported) *PeerSelector { - var peerClasses []peerClass - for _, v := range initialPeersClasses { - peerClasses = append(peerClasses, peerClass{initialRank: v.InitialRank, peerClass: v.PeerClass}) - } - selector := &PeerSelector{ - net: net, - peerClasses: peerClasses, - } - return selector +// NewPeerSelector exports makePeerSelector function using createPeerSelector +func NewPeerSelector(net peersRetriever, cfg config.Local, pipelineFetch bool) *PeerSelector { + return createPeerSelector(net, cfg, pipelineFetch) } // makePeerSelector creates a PeerSelector, given a peersRetriever and peerClass array. diff --git a/catchup/service.go b/catchup/service.go index de27d870d..993bb5f0b 100644 --- a/catchup/service.go +++ b/catchup/service.go @@ -425,7 +425,7 @@ func (s *Service) pipelinedFetch(seedLookback uint64) { close(completed) }() - peerSelector := s.createPeerSelector(true) + peerSelector := createPeerSelector(s.net, s.cfg, true) if _, err := peerSelector.GetNextPeer(); err == errPeerSelectorNoPeerPoolsAvailable { s.log.Debugf("pipelinedFetch: was unable to obtain a peer to retrieve the block from") @@ -653,7 +653,7 @@ func (s *Service) fetchRound(cert agreement.Certificate, verifier *agreement.Asy } blockHash := bookkeeping.BlockHash(cert.Proposal.BlockDigest) // semantic digest (i.e., hash of the block header), not byte-for-byte digest - peerSelector := s.createPeerSelector(false) + peerSelector := createPeerSelector(s.net, s.cfg, false) for s.ledger.LastRound() < cert.Round { psp, getPeerErr := peerSelector.GetNextPeer() if getPeerErr != nil { @@ -755,11 +755,11 @@ func (s *Service) handleUnsupportedRound(nextUnsupportedRound basics.Round) { } } -func (s *Service) createPeerSelector(pipelineFetch bool) *PeerSelector { +func createPeerSelector(net peersRetriever, cfg config.Local, pipelineFetch bool) *PeerSelector { var peerClasses []peerClass - if s.cfg.EnableCatchupFromArchiveServers { + if cfg.EnableCatchupFromArchiveServers { if pipelineFetch { - if s.cfg.NetAddress != "" { // Relay node + if cfg.NetAddress != "" { // Relay node peerClasses = []peerClass{ {initialRank: peerRankInitialFirstPriority, peerClass: network.PeersConnectedOut}, {initialRank: peerRankInitialSecondPriority, peerClass: network.PeersPhonebookArchivers}, @@ -774,7 +774,7 @@ func (s *Service) createPeerSelector(pipelineFetch bool) *PeerSelector { } } } else { - if s.cfg.NetAddress != "" { // Relay node + if cfg.NetAddress != "" { // Relay node peerClasses = []peerClass{ {initialRank: peerRankInitialFirstPriority, peerClass: network.PeersConnectedOut}, {initialRank: peerRankInitialSecondPriority, peerClass: network.PeersConnectedIn}, @@ -791,7 +791,7 @@ func (s *Service) createPeerSelector(pipelineFetch bool) *PeerSelector { } } else { if pipelineFetch { - if s.cfg.NetAddress != "" { // Relay node + if cfg.NetAddress != "" { // Relay node peerClasses = []peerClass{ {initialRank: peerRankInitialFirstPriority, peerClass: network.PeersConnectedOut}, {initialRank: peerRankInitialSecondPriority, peerClass: network.PeersPhonebookRelays}, @@ -804,7 +804,7 @@ func (s *Service) createPeerSelector(pipelineFetch bool) *PeerSelector { } } } else { - if s.cfg.NetAddress != "" { // Relay node + if cfg.NetAddress != "" { // Relay node peerClasses = []peerClass{ {initialRank: peerRankInitialFirstPriority, peerClass: network.PeersConnectedOut}, {initialRank: peerRankInitialSecondPriority, peerClass: network.PeersConnectedIn}, @@ -818,5 +818,5 @@ func (s *Service) createPeerSelector(pipelineFetch bool) *PeerSelector { } } } - return makePeerSelector(s.net, peerClasses) + return makePeerSelector(net, peerClasses) } diff --git a/catchup/service_test.go b/catchup/service_test.go index d34aa31e1..8787d5310 100644 --- a/catchup/service_test.go +++ b/catchup/service_test.go @@ -832,7 +832,7 @@ func TestCreatePeerSelector(t *testing.T) { cfg.NetAddress = "someAddress" s := MakeService(logging.Base(), cfg, &httpTestPeerSource{}, new(mockedLedger), &mockedAuthenticator{errorRound: int(0 + 1)}, nil, nil) - ps := s.createPeerSelector(true) + ps := createPeerSelector(s.net, s.cfg, true) require.Equal(t, 4, len(ps.peerClasses)) require.Equal(t, peerRankInitialFirstPriority, ps.peerClasses[0].initialRank) require.Equal(t, peerRankInitialSecondPriority, ps.peerClasses[1].initialRank) @@ -848,7 +848,7 @@ func TestCreatePeerSelector(t *testing.T) { cfg.EnableCatchupFromArchiveServers = true cfg.NetAddress = "" s = MakeService(logging.Base(), cfg, &httpTestPeerSource{}, new(mockedLedger), &mockedAuthenticator{errorRound: int(0 + 1)}, nil, nil) - ps = s.createPeerSelector(true) + ps = createPeerSelector(s.net, s.cfg, true) require.Equal(t, 3, len(ps.peerClasses)) require.Equal(t, peerRankInitialFirstPriority, ps.peerClasses[0].initialRank) require.Equal(t, peerRankInitialSecondPriority, ps.peerClasses[1].initialRank) @@ -862,7 +862,7 @@ func TestCreatePeerSelector(t *testing.T) { cfg.EnableCatchupFromArchiveServers = true cfg.NetAddress = "someAddress" s = MakeService(logging.Base(), cfg, &httpTestPeerSource{}, new(mockedLedger), &mockedAuthenticator{errorRound: int(0 + 1)}, nil, nil) - ps = s.createPeerSelector(false) + ps = createPeerSelector(s.net, s.cfg, false) require.Equal(t, 4, len(ps.peerClasses)) require.Equal(t, peerRankInitialFirstPriority, ps.peerClasses[0].initialRank) @@ -879,7 +879,7 @@ func TestCreatePeerSelector(t *testing.T) { cfg.EnableCatchupFromArchiveServers = true cfg.NetAddress = "" s = MakeService(logging.Base(), cfg, &httpTestPeerSource{}, new(mockedLedger), &mockedAuthenticator{errorRound: int(0 + 1)}, nil, nil) - ps = s.createPeerSelector(false) + ps = createPeerSelector(s.net, s.cfg, false) require.Equal(t, 3, len(ps.peerClasses)) require.Equal(t, peerRankInitialFirstPriority, ps.peerClasses[0].initialRank) @@ -894,7 +894,7 @@ func TestCreatePeerSelector(t *testing.T) { cfg.EnableCatchupFromArchiveServers = false cfg.NetAddress = "someAddress" s = MakeService(logging.Base(), cfg, &httpTestPeerSource{}, new(mockedLedger), &mockedAuthenticator{errorRound: int(0 + 1)}, nil, nil) - ps = s.createPeerSelector(true) + ps = createPeerSelector(s.net, s.cfg, true) require.Equal(t, 3, len(ps.peerClasses)) require.Equal(t, peerRankInitialFirstPriority, ps.peerClasses[0].initialRank) @@ -909,7 +909,7 @@ func TestCreatePeerSelector(t *testing.T) { cfg.EnableCatchupFromArchiveServers = false cfg.NetAddress = "" s = MakeService(logging.Base(), cfg, &httpTestPeerSource{}, new(mockedLedger), &mockedAuthenticator{errorRound: int(0 + 1)}, nil, nil) - ps = s.createPeerSelector(true) + ps = createPeerSelector(s.net, s.cfg, true) require.Equal(t, 2, len(ps.peerClasses)) require.Equal(t, peerRankInitialFirstPriority, ps.peerClasses[0].initialRank) @@ -922,7 +922,7 @@ func TestCreatePeerSelector(t *testing.T) { cfg.EnableCatchupFromArchiveServers = false cfg.NetAddress = "someAddress" s = MakeService(logging.Base(), cfg, &httpTestPeerSource{}, new(mockedLedger), &mockedAuthenticator{errorRound: int(0 + 1)}, nil, nil) - ps = s.createPeerSelector(false) + ps = createPeerSelector(s.net, s.cfg, false) require.Equal(t, 3, len(ps.peerClasses)) require.Equal(t, peerRankInitialFirstPriority, ps.peerClasses[0].initialRank) @@ -937,7 +937,7 @@ func TestCreatePeerSelector(t *testing.T) { cfg.EnableCatchupFromArchiveServers = false cfg.NetAddress = "" s = MakeService(logging.Base(), cfg, &httpTestPeerSource{}, new(mockedLedger), &mockedAuthenticator{errorRound: int(0 + 1)}, nil, nil) - ps = s.createPeerSelector(false) + ps = createPeerSelector(s.net, s.cfg, false) require.Equal(t, 2, len(ps.peerClasses)) require.Equal(t, peerRankInitialFirstPriority, ps.peerClasses[0].initialRank) |