@@ -24,6 +24,7 @@ import (
2424 "github.com/libp2p/go-libp2p-kad-dht/fullrt"
2525 dht_pb "github.com/libp2p/go-libp2p-kad-dht/pb"
2626 dhtprovider "github.com/libp2p/go-libp2p-kad-dht/provider"
27+ "github.com/libp2p/go-libp2p-kad-dht/provider/buffered"
2728 rds "github.com/libp2p/go-libp2p-kad-dht/provider/datastore"
2829 ddhtprovider "github.com/libp2p/go-libp2p-kad-dht/provider/dual"
2930 routinghelpers "github.com/libp2p/go-libp2p-routing-helpers"
@@ -303,14 +304,22 @@ func SweepingProviderOpt(cfg *config.Config) fx.Option {
303304 Repo repo.Repo
304305 }
305306 sweepingReprovider := fx .Provide (func (in providerInput ) (DHTProvider , * rds.ResettableKeyStore , error ) {
306- keyStore , err := rds .NewResettableKeyStore (in .Repo .Datastore (),
307+ ds := in .Repo .Datastore ()
308+ keyStore , err := rds .NewResettableKeyStore (ds ,
307309 rds .WithPrefixBits (16 ),
308310 rds .WithDatastorePrefix ("/provider/keystore" ),
309311 rds .WithBatchSize (int (cfg .Reprovider .Sweep .KeyStoreBatchSize .WithDefault (config .DefaultReproviderSweepKeyStoreBatchSize ))),
310312 )
311313 if err != nil {
312314 return & NoopProvider {}, nil , err
313315 }
316+
317+ bufferedProviderOpts := []buffered.Option {
318+ buffered .WithBatchSize (1 << 10 ),
319+ buffered .WithDsName ("bprov" ),
320+ buffered .WithIdleWriteTime (time .Minute ),
321+ }
322+
314323 var impl dhtImpl
315324 switch inDht := in .DHT .(type ) {
316325 case * dht.IpfsDHT :
@@ -335,8 +344,7 @@ func SweepingProviderOpt(cfg *config.Config) fx.Option {
335344 if err != nil {
336345 return nil , nil , err
337346 }
338- _ = prov
339- return prov , keyStore , nil
347+ return buffered .New (prov , ds , bufferedProviderOpts ... ), keyStore , nil
340348 }
341349 case * fullrt.FullRT :
342350 if inDht != nil {
@@ -376,7 +384,10 @@ func SweepingProviderOpt(cfg *config.Config) fx.Option {
376384 }
377385
378386 prov , err := dhtprovider .New (opts ... )
379- return prov , keyStore , err
387+ if err != nil {
388+ return & NoopProvider {}, nil , err
389+ }
390+ return buffered .New (prov , ds , bufferedProviderOpts ... ), keyStore , nil
380391 })
381392
382393 type keystoreInput struct {
0 commit comments