summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGanesh Vanahalli <ganesh.vanahalli@algorand.com>2022-08-04 11:12:47 -0400
committerGanesh Vanahalli <ganesh.vanahalli@algorand.com>2022-08-04 11:12:47 -0400
commit1325c49b224d50ad4992e3430ad3bfa81cfbea1d (patch)
treea33b83b3caf26074edb5e5e7766b9b09c1634c9d
parent7471a39ec8562f51bac2fbdd753ea588c13bf4a2 (diff)
updated peerSelectorexport-functions-from-catchup
-rw-r--r--catchup/peerSelector.go21
-rw-r--r--catchup/service.go18
-rw-r--r--catchup/service_test.go16
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)