mirror of
https://github.com/fluencelabs/tendermint
synced 2025-08-01 04:31:57 +00:00
ignore ErrAlreadyStarted when starting addrbook in PEXReactor
This commit is contained in:
@@ -70,7 +70,7 @@ func (r *PEXReactor) OnStart() error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
err := r.book.Start()
|
err := r.book.Start()
|
||||||
if err != nil {
|
if err != nil && err != cmn.ErrAlreadyStarted {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
go r.ensurePeersRoutine()
|
go r.ensurePeersRoutine()
|
||||||
|
@@ -62,13 +62,11 @@ func TestPEXReactorAddRemovePeer(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestPEXReactorRunning(t *testing.T) {
|
func TestPEXReactorRunning(t *testing.T) {
|
||||||
require := require.New(t)
|
|
||||||
|
|
||||||
N := 3
|
N := 3
|
||||||
switches := make([]*Switch, N)
|
switches := make([]*Switch, N)
|
||||||
|
|
||||||
dir, err := ioutil.TempDir("", "pex_reactor")
|
dir, err := ioutil.TempDir("", "pex_reactor")
|
||||||
require.Nil(err)
|
require.Nil(t, err)
|
||||||
defer os.RemoveAll(dir) // nolint: errcheck
|
defer os.RemoveAll(dir) // nolint: errcheck
|
||||||
book := NewAddrBook(dir+"addrbook.json", false)
|
book := NewAddrBook(dir+"addrbook.json", false)
|
||||||
book.SetLogger(log.TestingLogger())
|
book.SetLogger(log.TestingLogger())
|
||||||
@@ -96,7 +94,7 @@ func TestPEXReactorRunning(t *testing.T) {
|
|||||||
// start switches
|
// start switches
|
||||||
for _, s := range switches {
|
for _, s := range switches {
|
||||||
err := s.Start() // start switch and reactors
|
err := s.Start() // start switch and reactors
|
||||||
require.Nil(err)
|
require.Nil(t, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
assertSomePeersWithTimeout(t, switches, 10*time.Millisecond, 10*time.Second)
|
assertSomePeersWithTimeout(t, switches, 10*time.Millisecond, 10*time.Second)
|
||||||
|
@@ -1,12 +1,13 @@
|
|||||||
package p2p
|
package p2p
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
"math/rand"
|
"math/rand"
|
||||||
"net"
|
"net"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/pkg/errors"
|
||||||
|
|
||||||
crypto "github.com/tendermint/go-crypto"
|
crypto "github.com/tendermint/go-crypto"
|
||||||
cfg "github.com/tendermint/tendermint/config"
|
cfg "github.com/tendermint/tendermint/config"
|
||||||
cmn "github.com/tendermint/tmlibs/common"
|
cmn "github.com/tendermint/tmlibs/common"
|
||||||
@@ -174,17 +175,13 @@ func (sw *Switch) SetNodePrivKey(nodePrivKey crypto.PrivKeyEd25519) {
|
|||||||
|
|
||||||
// OnStart implements BaseService. It starts all the reactors, peers, and listeners.
|
// OnStart implements BaseService. It starts all the reactors, peers, and listeners.
|
||||||
func (sw *Switch) OnStart() error {
|
func (sw *Switch) OnStart() error {
|
||||||
if err := sw.BaseService.OnStart(); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
// Start reactors
|
// Start reactors
|
||||||
for _, reactor := range sw.reactors {
|
for _, reactor := range sw.reactors {
|
||||||
err := reactor.Start()
|
err := reactor.Start()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return errors.Wrapf(err, "failed to start %v", reactor)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Start listeners
|
// Start listeners
|
||||||
for _, listener := range sw.listeners {
|
for _, listener := range sw.listeners {
|
||||||
go sw.listenerRoutine(listener)
|
go sw.listenerRoutine(listener)
|
||||||
@@ -194,7 +191,6 @@ func (sw *Switch) OnStart() error {
|
|||||||
|
|
||||||
// OnStop implements BaseService. It stops all listeners, peers, and reactors.
|
// OnStop implements BaseService. It stops all listeners, peers, and reactors.
|
||||||
func (sw *Switch) OnStop() {
|
func (sw *Switch) OnStop() {
|
||||||
sw.BaseService.OnStop()
|
|
||||||
// Stop listeners
|
// Stop listeners
|
||||||
for _, listener := range sw.listeners {
|
for _, listener := range sw.listeners {
|
||||||
listener.Stop()
|
listener.Stop()
|
||||||
|
Reference in New Issue
Block a user