update reprovider dep

This commit is contained in:
guillaumemichel 2025-06-11 11:03:39 +02:00 committed by gammazero
parent caa37ccf15
commit 302cfa81ae
4 changed files with 56 additions and 17 deletions

View File

@ -17,6 +17,7 @@ import (
"github.com/ipfs/kubo/config"
"github.com/ipfs/kubo/core/node/libp2p"
"github.com/ipfs/kubo/p2p"
"github.com/libp2p/go-libp2p-kad-dht/reprovider"
pubsub "github.com/libp2p/go-libp2p-pubsub"
"github.com/libp2p/go-libp2p-pubsub/timecache"
"github.com/libp2p/go-libp2p/core/peer"
@ -365,16 +366,17 @@ func Online(bcfg *BuildCfg, cfg *config.Config, userResourceOverrides rcmgr.Part
fx.Provide(p2p.New),
LibP2P(bcfg, cfg, userResourceOverrides),
OnlineProviders(
isProviderEnabled,
cfg.Reprovider.Strategy.WithDefault(config.DefaultReproviderStrategy),
cfg.Reprovider.Interval.WithDefault(config.DefaultReproviderInterval),
cfg.Routing.AcceleratedDHTClient.WithDefault(config.DefaultAcceleratedDHTClient),
int(cfg.Provider.WorkerCount.WithDefault(config.DefaultProviderWorkerCount)),
),
KadProvider(
// OnlineProviders(
// isProviderEnabled,
// cfg.Reprovider.Strategy.WithDefault(config.DefaultReproviderStrategy),
// cfg.Reprovider.Interval.WithDefault(config.DefaultReproviderInterval),
// cfg.Routing.AcceleratedDHTClient.WithDefault(config.DefaultAcceleratedDHTClient),
// int(cfg.Provider.WorkerCount.WithDefault(config.DefaultProviderWorkerCount)),
// ),
SweepingReprovider(
isProviderEnabled,
cfg.Reprovider.Strategy.WithDefault(config.DefaultReproviderStrategy),
reprovider.WithReprovideInterval(cfg.Reprovider.Interval.WithDefault(config.DefaultReproviderInterval)),
),
)
}

View File

@ -18,8 +18,12 @@ import (
"github.com/ipfs/kubo/config"
"github.com/ipfs/kubo/repo"
irouting "github.com/ipfs/kubo/routing"
dht "github.com/libp2p/go-libp2p-kad-dht"
dht_pb "github.com/libp2p/go-libp2p-kad-dht/pb"
"github.com/libp2p/go-libp2p-kad-dht/reprovider"
"github.com/libp2p/go-libp2p/core/host"
peer "github.com/libp2p/go-libp2p/core/peer"
"github.com/libp2p/go-libp2p/core/routing"
ma "github.com/multiformats/go-multiaddr"
mh "github.com/multiformats/go-multihash"
"go.uber.org/fx"
)
@ -166,7 +170,20 @@ func OnlineProviders(provide bool, providerStrategy string, reprovideInterval ti
)
}
func KadProvider(provide bool, reprovideStrategy string, d *dht.IpfsDHT, opts ...reprovider.Option) fx.Option {
type kadClient interface {
GetClosestPeers(context.Context, string) ([]peer.ID, error)
Provide(context.Context, cid.Cid, bool) error
Context() context.Context
Host() host.Host
MessageSender() dht_pb.MessageSender
}
type kadClientWithAddrsFilter interface {
kadClient
FilteredAddrs() []ma.Multiaddr
}
func SweepingReprovider(provide bool, reprovideStrategy string, opts ...reprovider.Option) fx.Option {
if !provide {
return OfflineProviders()
}
@ -180,10 +197,32 @@ func KadProvider(provide bool, reprovideStrategy string, d *dht.IpfsDHT, opts ..
return fx.Options(
keyProvider,
fx.Provide(func(d *dht.IpfsDHT, keyProvider provider.KeyChanFunc, opts ...reprovider.Option) (provider.Provider, error) {
fx.Provide(func(router routing.Routing, keyProvider provider.KeyChanFunc, opts ...reprovider.Option) (provider.Provider, error) {
ctx := context.Background()
dhtClient, ok := router.(kadClient)
if !ok {
return nil, errors.New("reprovide sweep only available for normal and accelerated DHT clients")
}
var selfAddrs func() []ma.Multiaddr
if client, addrsFilter := dhtClient.(kadClientWithAddrsFilter); addrsFilter {
selfAddrs = client.FilteredAddrs
} else {
// Accelerated DHT doesn't have an address filter
selfAddrs = dhtClient.Host().Addrs
}
opts = append(opts,
reprovider.WithPeerID(dhtClient.Host().ID()),
reprovider.WithRouter(dhtClient),
reprovider.WithSelfAddrs(selfAddrs),
reprovider.WithMessageSender(dhtClient.MessageSender()),
reprovider.WithAddLocalRecord(func(h mh.Multihash) error { return dhtClient.Provide(ctx, cid.NewCidV1(cid.Raw, h), false) }),
)
// Create DHT Sweeping Reprovider
r, err := reprovider.NewDHTReprovider(d, opts...)
r, err := reprovider.NewReprovider(dhtClient.Context(), opts...)
if err != nil {
return nil, err
}

2
go.mod
View File

@ -53,7 +53,7 @@ require (
github.com/libp2p/go-doh-resolver v0.5.0
github.com/libp2p/go-libp2p v0.43.0
github.com/libp2p/go-libp2p-http v0.5.0
github.com/libp2p/go-libp2p-kad-dht v0.33.1
github.com/libp2p/go-libp2p-kad-dht v0.33.2-0.20250611084458-65bebac64139
github.com/libp2p/go-libp2p-pubsub v0.14.2
github.com/libp2p/go-libp2p-kbucket v0.7.1-0.20250514131430-6bb8b16e312b
github.com/libp2p/go-libp2p-pubsub-router v0.6.0

6
go.sum
View File

@ -514,10 +514,8 @@ github.com/libp2p/go-libp2p-gostream v0.6.0 h1:QfAiWeQRce6pqnYfmIVWJFXNdDyfiR/qk
github.com/libp2p/go-libp2p-gostream v0.6.0/go.mod h1:Nywu0gYZwfj7Jc91PQvbGU8dIpqbQQkjWgDuOrFaRdA=
github.com/libp2p/go-libp2p-http v0.5.0 h1:+x0AbLaUuLBArHubbbNRTsgWz0RjNTy6DJLOxQ3/QBc=
github.com/libp2p/go-libp2p-http v0.5.0/go.mod h1:glh87nZ35XCQyFsdzZps6+F4HYI6DctVFY5u1fehwSg=
github.com/libp2p/go-libp2p-kad-dht v0.33.1-0.20250610105912-ff841c59c823 h1:EJmqq+Gk8HBMbujYWpGIhcHsBp/8HMjX/lDoH3ewLQU=
github.com/libp2p/go-libp2p-kad-dht v0.33.1-0.20250610105912-ff841c59c823/go.mod h1:Eg8zjv+vgX738Qc3oTGaQQPztO5hV4eguvkNGwkILUw=
github.com/libp2p/go-libp2p-kad-dht v0.33.1-0.20250610130939-fedd1008dd90 h1:xP58qI1rxEj1RDaC6CnfSH0sPWfsVz73KmJhqbMRxc4=
github.com/libp2p/go-libp2p-kad-dht v0.33.1-0.20250610130939-fedd1008dd90/go.mod h1:Eg8zjv+vgX738Qc3oTGaQQPztO5hV4eguvkNGwkILUw=
github.com/libp2p/go-libp2p-kad-dht v0.33.2-0.20250611084458-65bebac64139 h1:u1/4EtZc/8faeg7o+L4BSnAHJQD73Ogia5oTMBLrf2Q=
github.com/libp2p/go-libp2p-kad-dht v0.33.2-0.20250611084458-65bebac64139/go.mod h1:aclSBU9n3XgL5VucPNW2eanQtLYvRHaFVTx1L/Rz0Nw=
github.com/libp2p/go-libp2p-kbucket v0.3.1/go.mod h1:oyjT5O7tS9CQurok++ERgc46YLwEpuGoFq9ubvoUOio=
github.com/libp2p/go-libp2p-kbucket v0.7.1-0.20250514131430-6bb8b16e312b h1:qh7OgCwt5AjJohJH+oXKZw6iDeIWKJOZaLXwkxrW0WQ=
github.com/libp2p/go-libp2p-kbucket v0.7.1-0.20250514131430-6bb8b16e312b/go.mod h1:3CofRbwJbTybT8WVM2z/h5dj2FPNar6YLyxUc4Tmv1E=