mirror of
https://github.com/tendermint/tendermint.git
synced 2026-08-17 04:36:11 +00:00
p2p: peer store and dialing changes (0.35.x backport) (#8740)
* p2p: peer store and dialing changes (cherry picked from commit9dbb135152) * reduce persistent peer max (cherry picked from commitb213a2766f) * don't gossip inactive peers (cherry picked from commitcc28ce298f) * fix small case (cherry picked from commit56a91642dc) * fix error message (cherry picked from commit86db59f53b) * remove seed flag (cherry picked from commit000aa05485) * reduce logging level (cherry picked from commit4e2bc8f51e) * make const (cherry picked from commite3068b50b2) * update comment (cherry picked from commit31bd396c88) * cleanup (cherry picked from commiteddb23b5af) * oops * overflows (cherry picked from commit4c8651026a) * Update internal/p2p/peermanager.go Co-authored-by: M. J. Fromberger <michael.j.fromberger@gmail.com> (cherry picked from commitf23f6e1089) * Update internal/p2p/peermanager.go Co-authored-by: M. J. Fromberger <michael.j.fromberger@gmail.com> (cherry picked from commit1c02758eaf) * comment (cherry picked from commit9f604fd2ef) * test: new scoring (cherry picked from commit930fd7f2be) * fix scoring test (cherry picked from commit9abc55f3a0) * cleanup peer manager * fix panic * add metrics * fix compile * fix test * default metrics to noop * noop metrics * update metrics (cherry picked from commit720600ef62) * rename metrics * actually shuffle peers more * fix up advertise (cherry picked from commit8195c97590) * add max dialing attempts * connection tracking * comments mostly (cherry picked from commit053ecd9b8c) * Apply suggestions from code review Co-authored-by: M. J. Fromberger <michael.j.fromberger@gmail.com> * comments * fix lint * cr feedback * fixup cherrypick * make wb happy * more comments * fixup * fix lint * iota fix * add skip * cleanup * remove comment * fix rand * fix rand * use numaddresses correctly * advertise fixes * remove some things * cleanup comment * more fixes * toml * fix comment * fix spell * dec limit * fixes * up the attmept max * cr feedback * probablistic test * fix spell * add metrics for peers stored on startup * p2p: peer score should not wrap around (#8790) (cherry picked from commit4d820ff4f5) # Conflicts: # internal/p2p/peermanager.go * fix * wake more * wake if we need to Co-authored-by: M. J. Fromberger <michael.j.fromberger@gmail.com>
This commit is contained in:
co-authored by
M. J. Fromberger
parent
25d724b920
commit
83526cacbc
+2
-2
@@ -265,7 +265,7 @@ func makeNode(cfg *config.Config,
|
||||
p2pLogger := logger.With("module", "p2p")
|
||||
transport := createTransport(p2pLogger, cfg)
|
||||
|
||||
peerManager, peerCloser, err := createPeerManager(cfg, dbProvider, p2pLogger, nodeKey.ID)
|
||||
peerManager, peerCloser, err := createPeerManager(cfg, dbProvider, p2pLogger, nodeKey.ID, nodeMetrics.p2p)
|
||||
closers = append(closers, peerCloser)
|
||||
if err != nil {
|
||||
return nil, combineCloseError(
|
||||
@@ -561,7 +561,7 @@ func makeSeedNode(cfg *config.Config,
|
||||
p2pLogger := logger.With("module", "p2p")
|
||||
transport := createTransport(p2pLogger, cfg)
|
||||
|
||||
peerManager, closer, err := createPeerManager(cfg, dbProvider, p2pLogger, nodeKey.ID)
|
||||
peerManager, closer, err := createPeerManager(cfg, dbProvider, p2pLogger, nodeKey.ID, p2pMetrics)
|
||||
if err != nil {
|
||||
return nil, combineCloseError(
|
||||
fmt.Errorf("failed to create peer manager: %w", err),
|
||||
|
||||
+12
-1
@@ -457,6 +457,7 @@ func createPeerManager(
|
||||
dbProvider config.DBProvider,
|
||||
p2pLogger log.Logger,
|
||||
nodeID types.NodeID,
|
||||
metrics *p2p.Metrics,
|
||||
) (*p2p.PeerManager, closer, error) {
|
||||
|
||||
selfAddr, err := p2p.ParseNodeAddress(nodeID.AddressString(cfg.P2P.ExternalAddress))
|
||||
@@ -487,6 +488,14 @@ func createPeerManager(
|
||||
maxConns = 64
|
||||
}
|
||||
|
||||
var maxOutgoingConns uint16
|
||||
switch {
|
||||
case cfg.P2P.MaxOutgoingConnections > 0:
|
||||
maxOutgoingConns = cfg.P2P.MaxOutgoingConnections
|
||||
default:
|
||||
maxOutgoingConns = maxConns / 2
|
||||
}
|
||||
|
||||
privatePeerIDs := make(map[types.NodeID]struct{})
|
||||
for _, id := range tmstrings.SplitAndTrimEmpty(cfg.P2P.PrivatePeerIDs, ",", " ") {
|
||||
privatePeerIDs[types.NodeID(id)] = struct{}{}
|
||||
@@ -497,13 +506,15 @@ func createPeerManager(
|
||||
options := p2p.PeerManagerOptions{
|
||||
SelfAddress: selfAddr,
|
||||
MaxConnected: maxConns,
|
||||
MaxOutgoingConnections: maxOutgoingConns,
|
||||
MaxConnectedUpgrade: maxUpgradeConns,
|
||||
MaxPeers: maxUpgradeConns + 2*maxConns,
|
||||
MaxPeers: maxUpgradeConns + 4*maxConns,
|
||||
MinRetryTime: 250 * time.Millisecond,
|
||||
MaxRetryTime: 30 * time.Minute,
|
||||
MaxRetryTimePersistent: 5 * time.Minute,
|
||||
RetryTimeJitter: 5 * time.Second,
|
||||
PrivatePeers: privatePeerIDs,
|
||||
Metrics: metrics,
|
||||
}
|
||||
|
||||
peers := []p2p.NodeAddress{}
|
||||
|
||||
Reference in New Issue
Block a user