1
0
mirror of https://github.com/ipfs/kubo.git synced 2025-06-30 18:13:54 +08:00

retry publishing IPNS records every 5 minutes on failure

This way, if we *happen* to be offline while attempting a publish, we don't wait
the full interval.

License: MIT
Signed-off-by: Steven Allen <steven@stebalien.com>
This commit is contained in:
Steven Allen
2017-11-29 15:27:49 -08:00
parent d8de88c4b6
commit 40b3a72498

View File

@ -28,6 +28,7 @@ var log = logging.Logger("ipns-repub")
var DefaultRebroadcastInterval = time.Hour * 4
var InitialRebroadcastDelay = time.Minute * 1
var FailureRetryInterval = time.Minute * 5
const DefaultRecordLifetime = time.Hour * 24
@ -56,17 +57,17 @@ func NewRepublisher(r routing.ValueStore, ds ds.Datastore, self ic.PrivKey, ks k
}
func (rp *Republisher) Run(proc goprocess.Process) {
tick := time.NewTicker(rp.Interval)
defer tick.Stop()
delayCh := time.After(InitialRebroadcastDelay)
timer := time.NewTimer(InitialRebroadcastDelay)
defer timer.Stop()
for {
select {
case <-delayCh:
delayCh = tick.C
case <-timer.C:
timer.Reset(rp.Interval)
err := rp.republishEntries(proc)
if err != nil {
log.Error("Republisher failed to republish: ", err)
timer.Reset(FailureRetryInterval)
}
case <-proc.Closing():
return