diff --git a/pkg/network/discovery.go b/pkg/network/discovery.go index 65b0b8f36..1daebe189 100644 --- a/pkg/network/discovery.go +++ b/pkg/network/discovery.go @@ -107,6 +107,7 @@ func (d *DefaultDiscovery) RegisterBadAddr(addr string) { } else { d.badAddrs[addr] = true delete(d.unconnectedAddrs, addr) + delete(d.goodAddrs, addr) } d.lock.Unlock() } @@ -150,6 +151,7 @@ func (d *DefaultDiscovery) GoodPeers() []string { func (d *DefaultDiscovery) RegisterGoodAddr(s string) { d.lock.Lock() d.goodAddrs[s] = true + delete(d.badAddrs, s) d.lock.Unlock() } diff --git a/pkg/network/discovery_test.go b/pkg/network/discovery_test.go index 9105cdc0b..9f4314a21 100644 --- a/pkg/network/discovery_test.go +++ b/pkg/network/discovery_test.go @@ -134,14 +134,14 @@ func TestDefaultDiscoverer(t *testing.T) { time.Sleep(time.Second) } assert.Equal(t, len(set1), len(d.BadPeers())) - assert.Equal(t, len(set1), len(d.GoodPeers())) + assert.Equal(t, 0, len(d.GoodPeers())) assert.Equal(t, 0, len(d.UnconnectedPeers())) // Re-adding bad addresses is a no-op. d.BackFill(set1...) assert.Equal(t, 0, len(d.UnconnectedPeers())) assert.Equal(t, len(set1), len(d.BadPeers())) - assert.Equal(t, len(set1), len(d.GoodPeers())) + assert.Equal(t, 0, len(d.GoodPeers())) require.Equal(t, 0, d.PoolCount()) // Close should work and subsequent RequestRemote is a no-op.