mirror of
https://github.com/ipfs/kubo.git
synced 2025-09-10 05:52:20 +08:00
reprovide: wait a minute before reproviding
Many times, a node will start up only to shut down immediately. In these cases, reproviding is costly to both the node, and the rest of the network. Also note: the probability of a node being up another minute increases with uptime. TODO: maybe this should be 5 * time.Minute
This commit is contained in:
@ -30,7 +30,10 @@ func NewReprovider(rsys routing.IpfsRouting, bstore blocks.Blockstore) *Reprovid
|
||||
}
|
||||
|
||||
func (rp *Reprovider) ProvideEvery(ctx context.Context, tick time.Duration) {
|
||||
after := time.After(0)
|
||||
// dont reprovide immediately.
|
||||
// may have just started the daemon and shutting it down immediately.
|
||||
// probability( up another minute | uptime ) increases with uptime.
|
||||
after := time.After(time.Minute)
|
||||
for {
|
||||
select {
|
||||
case <-ctx.Done():
|
||||
|
@ -32,7 +32,7 @@ func loadIndirPin(d ds.Datastore, k ds.Key) (*indirectPin, error) {
|
||||
keys = append(keys, k)
|
||||
refcnt[k] = v
|
||||
}
|
||||
log.Debugf("indirPin keys: %#v", keys)
|
||||
// log.Debugf("indirPin keys: %#v", keys)
|
||||
|
||||
return &indirectPin{blockset: set.SimpleSetFromKeys(keys), refCounts: refcnt}, nil
|
||||
}
|
||||
|
@ -82,10 +82,14 @@ func bootstrap(t *testing.T, ctx context.Context, dhts []*IpfsDHT) {
|
||||
// 100 sync https://gist.github.com/jbenet/6c59e7c15426e48aaedd
|
||||
// probably because results compound
|
||||
|
||||
var cfg BootstrapConfig
|
||||
cfg = DefaultBootstrapConfig
|
||||
cfg.Queries = 3
|
||||
|
||||
start := rand.Intn(len(dhts)) // randomize to decrease bias.
|
||||
for i := range dhts {
|
||||
dht := dhts[(start+i)%len(dhts)]
|
||||
dht.runBootstrap(ctx, 3)
|
||||
dht.runBootstrap(ctx, cfg)
|
||||
}
|
||||
cancel()
|
||||
}
|
||||
@ -356,11 +360,15 @@ func TestPeriodicBootstrap(t *testing.T) {
|
||||
signal := make(chan time.Time)
|
||||
allSignals := []chan time.Time{}
|
||||
|
||||
var cfg BootstrapConfig
|
||||
cfg = DefaultBootstrapConfig
|
||||
cfg.Queries = 5
|
||||
|
||||
// kick off periodic bootstrappers with instrumented signals.
|
||||
for _, dht := range dhts {
|
||||
s := make(chan time.Time)
|
||||
allSignals = append(allSignals, s)
|
||||
dht.BootstrapOnSignal(5, s)
|
||||
dht.BootstrapOnSignal(cfg, s)
|
||||
}
|
||||
go amplify(signal, allSignals)
|
||||
|
||||
|
Reference in New Issue
Block a user