mirror of
https://github.com/fluencelabs/go-libp2p-kad-dht
synced 2025-05-28 21:51:20 +00:00
AddrManager: use addr manager with smarter TTLs
This addr manager should seriously help with the addrsplosion problem.
This commit is contained in:
parent
202d58a73a
commit
dacbe3cf89
14
dht_test.go
14
dht_test.go
@ -55,7 +55,7 @@ func setupDHTS(ctx context.Context, n int, t *testing.T) ([]ma.Multiaddr, []peer
|
||||
for i := 0; i < n; i++ {
|
||||
dhts[i] = setupDHT(ctx, t)
|
||||
peers[i] = dhts[i].self
|
||||
addrs[i] = dhts[i].peerstore.Addresses(dhts[i].self)[0]
|
||||
addrs[i] = dhts[i].peerstore.Addrs(dhts[i].self)[0]
|
||||
}
|
||||
|
||||
return addrs, peers, dhts
|
||||
@ -64,12 +64,12 @@ func setupDHTS(ctx context.Context, n int, t *testing.T) ([]ma.Multiaddr, []peer
|
||||
func connect(t *testing.T, ctx context.Context, a, b *IpfsDHT) {
|
||||
|
||||
idB := b.self
|
||||
addrB := b.peerstore.Addresses(idB)
|
||||
addrB := b.peerstore.Addrs(idB)
|
||||
if len(addrB) == 0 {
|
||||
t.Fatal("peers setup incorrectly: no local address")
|
||||
}
|
||||
|
||||
a.peerstore.AddAddresses(idB, addrB)
|
||||
a.peerstore.AddAddrs(idB, addrB, peer.TempAddrTTL)
|
||||
if err := a.Connect(ctx, idB); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@ -754,20 +754,20 @@ func TestConnectCollision(t *testing.T) {
|
||||
dhtA := setupDHT(ctx, t)
|
||||
dhtB := setupDHT(ctx, t)
|
||||
|
||||
addrA := dhtA.peerstore.Addresses(dhtA.self)[0]
|
||||
addrB := dhtB.peerstore.Addresses(dhtB.self)[0]
|
||||
addrA := dhtA.peerstore.Addrs(dhtA.self)[0]
|
||||
addrB := dhtB.peerstore.Addrs(dhtB.self)[0]
|
||||
|
||||
peerA := dhtA.self
|
||||
peerB := dhtB.self
|
||||
|
||||
errs := make(chan error)
|
||||
go func() {
|
||||
dhtA.peerstore.AddAddress(peerB, addrB)
|
||||
dhtA.peerstore.AddAddr(peerB, addrB, peer.TempAddrTTL)
|
||||
err := dhtA.Connect(ctx, peerB)
|
||||
errs <- err
|
||||
}()
|
||||
go func() {
|
||||
dhtB.peerstore.AddAddress(peerA, addrA)
|
||||
dhtB.peerstore.AddAddr(peerA, addrA, peer.TempAddrTTL)
|
||||
err := dhtB.Connect(ctx, peerA)
|
||||
errs <- err
|
||||
}()
|
||||
|
@ -238,7 +238,7 @@ func (dht *IpfsDHT) handleAddProvider(ctx context.Context, p peer.ID, pmes *pb.M
|
||||
log.Infof("received provider %s for %s (addrs: %s)", p, key, pi.Addrs)
|
||||
if pi.ID != dht.self { // dont add own addrs.
|
||||
// add the received addresses to our peerstore.
|
||||
dht.peerstore.AddPeerInfo(pi)
|
||||
dht.peerstore.AddAddrs(pi.ID, pi.Addrs, peer.ProviderAddrTTL)
|
||||
}
|
||||
dht.providers.AddProvider(key, p)
|
||||
}
|
||||
|
@ -100,7 +100,7 @@ func (dht *IpfsDHT) closerPeersSingle(ctx context.Context, key u.Key, p peer.ID)
|
||||
for _, pbp := range pmes.GetCloserPeers() {
|
||||
pid := peer.ID(pbp.GetId())
|
||||
if pid != dht.self { // dont add self
|
||||
dht.peerstore.AddAddresses(pid, pbp.Addresses())
|
||||
dht.peerstore.AddAddrs(pid, pbp.Addresses(), peer.TempAddrTTL)
|
||||
out = append(out, pid)
|
||||
}
|
||||
}
|
||||
|
2
query.go
2
query.go
@ -253,7 +253,7 @@ func (r *dhtQueryRunner) queryPeer(cg ctxgroup.ContextGroup, p peer.ID) {
|
||||
}
|
||||
|
||||
// add their addresses to the dialer's peerstore
|
||||
r.query.dht.peerstore.AddPeerInfo(next)
|
||||
r.query.dht.peerstore.AddAddrs(next.ID, next.Addrs, peer.TempAddrTTL)
|
||||
r.addPeerToQuery(cg.Context(), next.ID)
|
||||
log.Debugf("PEERS CLOSER -- worker for: %v added %v (%v)", p, next.ID, next.Addrs)
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user