Skip to content

Commit 7db8eaf

Browse files
Liuhaaidustinxie
authored andcommitted
[p2p] Fix p2p agent start (#3580)
1 parent 2048392 commit 7db8eaf

File tree

3 files changed

+23
-24
lines changed

3 files changed

+23
-24
lines changed

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ require (
1515
github.com/grpc-ecosystem/go-grpc-middleware v1.2.0
1616
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0
1717
github.com/iotexproject/go-fsm v1.0.0
18-
github.com/iotexproject/go-p2p v0.3.4
18+
github.com/iotexproject/go-p2p v0.3.5
1919
github.com/iotexproject/go-pkgs v0.1.12
2020
github.com/iotexproject/iotex-address v0.2.8
2121
github.com/iotexproject/iotex-antenna-go/v2 v2.5.1

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -442,8 +442,8 @@ github.com/iotexproject/go-ethereum v0.4.0 h1:3GX+vZTI6KeazPabaw3oyLpPl1dOuyJyqq
442442
github.com/iotexproject/go-ethereum v0.4.0/go.mod h1:pJNuIUYfX5+JKzSD/BTdNsvJSZ1TJqmz0dVyXMAbf6M=
443443
github.com/iotexproject/go-fsm v1.0.0 h1:Zrg9JnNDUZg4Anpj6oa0Tk4+sXbHTpJzI0v5/Cj5N6A=
444444
github.com/iotexproject/go-fsm v1.0.0/go.mod h1:t3aYXtCCcQxyS7oduQZyuUpPnVI4ddFTwbAagHN7fT0=
445-
github.com/iotexproject/go-p2p v0.3.4 h1:V+Hq4K4lbEI9gAjHqKLpzS4lqCPqjeosRY/LnIpCVhU=
446-
github.com/iotexproject/go-p2p v0.3.4/go.mod h1:P32N/mwLUWMQ/okMcNLlfBO7iD5ITyBOvN41roKdPdg=
445+
github.com/iotexproject/go-p2p v0.3.5 h1:F71XxYQtR25youD+dCXnMgtfiCKGUFh8KDIqU7u5xOk=
446+
github.com/iotexproject/go-p2p v0.3.5/go.mod h1:P32N/mwLUWMQ/okMcNLlfBO7iD5ITyBOvN41roKdPdg=
447447
github.com/iotexproject/go-pkgs v0.1.5-0.20210604060651-be5ee19f2575/go.mod h1:ttXhcwrtODyh7JozpJlCml09CjP0pcKqTe2B0MbTGc8=
448448
github.com/iotexproject/go-pkgs v0.1.6/go.mod h1:E+Fl0XQZz56EzXFajFET2yFoRGsIbL6wQooVIkSim3o=
449449
github.com/iotexproject/go-pkgs v0.1.12 h1:WQcGDHxC9d2gv7r+8aBK7IgechL0XflimRkh+xN+ybI=

p2p/agent.go

Lines changed: 20 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -333,13 +333,20 @@ func (p *agent) Start(ctx context.Context) error {
333333
return err
334334
}
335335
host.JoinOverlay()
336+
p.host = host
336337

337338
// connect to bootstrap nodes
338-
p.host = host
339-
if err := p.joinP2P(ctx); err != nil {
340-
log.L().Error("fail to join p2p network", zap.Error(err))
339+
if err := p.connectBootNode(ctx); err != nil {
340+
log.L().Error("fail to connect bootnode", zap.Error(err))
341341
return err
342342
}
343+
if err := p.host.AdvertiseAsync(); err != nil {
344+
return err
345+
}
346+
if err := p.host.FindPeersAsync(); err != nil {
347+
return err
348+
}
349+
343350
close(ready)
344351

345352
// check network connectivity every 60 blocks, and reconnect in case of disconnection
@@ -484,22 +491,10 @@ func (p *agent) BlockPeer(pidStr string) {
484491
p.host.BlockPeer(pid)
485492
}
486493

487-
func (p *agent) joinP2P(ctx context.Context) error {
494+
func (p *agent) connectBootNode(ctx context.Context) error {
488495
if len(p.cfg.BootstrapNodes) == 0 {
489496
return nil
490497
}
491-
if err := p.connectBootNode(ctx); err != nil {
492-
return err
493-
}
494-
// it might take a few seconds to establish handshake with bootstrap
495-
if err := p.host.Advertise(); err != nil {
496-
return err
497-
}
498-
p.host.FindPeers(ctx)
499-
return nil
500-
}
501-
502-
func (p *agent) connectBootNode(ctx context.Context) error {
503498
var errNum, connNum, desiredConnNum int
504499
conn := make(chan struct{}, len(p.cfg.BootstrapNodes))
505500
connErrChan := make(chan error, len(p.cfg.BootstrapNodes))
@@ -550,13 +545,17 @@ func (p *agent) reconnect() {
550545
if len(p.host.ConnectedPeers()) == 0 || p.qosMetrics.lostConnection() {
551546
log.L().Info("network lost, try re-connecting.")
552547
p.host.ClearBlocklist()
553-
if err := p.joinP2P(context.Background()); err != nil {
554-
log.L().Error("fail to join p2p network", zap.Error(err))
548+
if err := p.connectBootNode(context.Background()); err != nil {
549+
log.L().Error("fail to connect bootnode", zap.Error(err))
550+
return
551+
}
552+
if err := p.host.AdvertiseAsync(); err != nil {
553+
log.L().Error("fail to advertise", zap.Error(err))
554+
return
555555
}
556-
return
557556
}
558-
if err := p.host.FindPeers(context.Background()); err != nil {
559-
log.L().Error("fail to find peers", zap.Error(err))
557+
if err := p.host.FindPeersAsync(); err != nil {
558+
log.L().Error("fail to find peer", zap.Error(err))
560559
}
561560
}
562561

0 commit comments

Comments
 (0)